New VirtualStudy design

By Daniel Gabryś on Lipiec 31st, 2013

We would like to welcome you at our newly redesigned website. Our new website, is not only a new domain, bigger and expanded offer of high quality trainings available for free, at a small fee or for a monthly charge, as well as our newly designed graphical branding.

Continue Reading

Błąd podczas dodawania rezerwacji DHCP „The DHCP server received a message from a client that is not valid”

By Łukasz Skalikow on Lipiec 31st, 2013

Jeśli podczas tworzenia rezerwacji DHCP na serwerze z systemem Windows Server zobaczycie poniższe dwa komunikaty, wiedzcie, że jest to jest to Wasza wina! Nie dajcie się jednak sprowokować. Jest to jeden z tych drobnych błędów, które … Więcej →

Post Błąd podczas dodawania rezerwacji DHCP „The DHCP server received a message from a client that is not valid” pojawił się poraz pierwszy w Porady Windows, Linux, Sieci, IT w firmie – Spece.IT.

Microsoft Dynamics CRM Update Rollup 11 Critical Update – czyli Microsoft słucha rynku i ugina się pod Klientami

By Jakub (Kuba) Skałbania on Lipiec 31st, 2013

Wow, co za news! Niestety trochę późno, ale lepiej późno niż wcale. Trochę w tajemnicy przed światem Microsoft pracował nad pewnym „zestawem poprawek”.

Continue Reading

Exchange 2013 Cumulative Update 2 wydany ponownie.

By Pawel Partyka MSFT on Lipiec 30th, 2013

29 lipca został wycofany z Download Center, Exchange 2013 Cumulative Update 2 (15.0.712.22) i zastąpiony jego nową wersją (15.0.712.24). Można go pobrać z Download Center . Ma to związek z problemem, który wystąpił w ostatnim CU, dotyczącym możliwej utraty uprawnień na folderach publicznych w przypadku przeniesienia skrzynki Public Folder (http://blogs.technet.com/b/exchange/archive/2013/07/12/e2013-rtm-cu2-issue-public-folder-permissions-loss-after-pf-mailbox-move.aspx). Nowy Cumulative Update 2 jest pełną instalacją serwera Exchange 2013, która nie zawiera już powyższego problemu.

Cumulative Update 2 (wersja: 15.0.712.24) może być zainstalowany na serwerze Exchange 2013 RTM, CU1 i CU2 w wersji 15.0.712.22. Uwaga: przed instalacją nowego CU2 nie należy odinstalowywać istniejącego Cumulative Update, ponieważ spowoduje to odinstalowanie całego serwera Exchange.

Exchange 2013 Cumulative Update 2 wydany ponownie.

By Pawel Partyka MSFT on Lipiec 30th, 2013

29 lipca został wycofany z Download Center, Exchange 2013 Cumulative Update 2 (15.0.712.22) i zastąpiony jego nową wersją (15.0.712.24). Można go pobrać z Download Center . Ma to związek z problemem, który wystąpił w ostatnim CU, dotyczącym możliwej utraty uprawnień na folderach publicznych w przypadku przeniesienia skrzynki Public Folder (http://blogs.technet.com/b/exchange/archive/2013/07/12/e2013-rtm-cu2-issue-public-folder-permissions-loss-after-pf-mailbox-move.aspx). Nowy Cumulative Update 2 jest pełną instalacją serwera Exchange 2013, która nie zawiera już powyższego problemu.

Cumulative Update 2 (wersja: 15.0.712.24) może być zainstalowany na serwerze Exchange 2013 RTM, CU1 i CU2 w wersji 15.0.712.22. Uwaga: przed instalacją nowego CU2 nie należy odinstalowywać istniejącego Cumulative Update, ponieważ spowoduje to odinstalowanie całego serwera Exchange.

Kurs Zabbix cz. 14: Konfiguracja Panelu Administracyjnego

By Arkadiusz Siczek on Lipiec 30th, 2013

Gdy już mamy wykonane czynności z wcześniejszych rozdziałów, kolejnym krokiem jest konfiguracja panelu administracyjnego Zabbixa, który jest dostępny poprzez przeglądarkę internetową.

Jeżeli nie zrobiliśmy tego wcześniej, uruchamiamy teraz usługę Zabbixa za pomocą polecenia:

service zabbix-server start

Przez przeglądarkę internetową wchodzimy na adres naszego Zabbixa. Adres to:

http://<adres IP serwera>/zabbix/

Ponieważ w rozdziale 11 (http://blog.askomputer.pl/kurs-zabbix-cz-11-instalacja-centos/),  mojemu serwerowi nadałem adres IP 192.168.1.110 to moim linkiem będzie:

http://192.168.1.110/zabbix/

Pojawi się następująca plansza:

 

Klikamy „next”. Aplikacja sprawdzi czy nasz serwer spełnia wymagania:

Ponownie klikamy „next”.

W następnym oknie konfigurujemy połaczenie z bazą danych:

1) Podajemy typ silnika bazy. W tym przypadku jest to MySQL.

2) Nazwę serwera bazy. W tym przypadku baza jest zainstalowana na tym samym serwerze co usługa Zabbixa, więc podajemy „localhost”.

3) Port połaczenia z bazą danych. 0 oznacza domyślny port połaczenia. My nic nie zmienialiśmy, więc taką cyfrę podajemy.

4) Nazwa bazy danych. W tym wypadku jest to „Zabbix”.

5) Podajemy użytkownika, który będzie się łaczył do bazy. My nadaliśmy wcześniej uprawnienia do bazy użytkownikowi „zabbix@localhost”, więc podajemy „Zabbix”.

6) Hasło użytkownika Zabbix.

Możemy teraz kliknąc klawisz „Test connection” w celu sprawdzenia poprawnosci konfiguracji.

Połaczenie wykonane poprawnie:

W tym oknie konfigurujemy połaczenie z serwerem Zabbixa:

Podajemy nazwę hosta oraz port, za pomocą którego usługa będzie się komunikować.

Podsumowanie instalacji:

Kończymy klikając „Finish”.

 

Możemy się teraz zalogować do systemu i korzystać z interfejsu:

Domyślny login : admin
Domyślne hasło : zabbix

To tyle na dzisiaj. W kolejnej serii kursu zajmiemy się problemami jakie czasami powstają i uniemożliwiają uruchomienie strony WWW Zabbixa.

Monitoring serwerów, sieci oraz witryn WWW

Poprzednie części:

http://blog.askomputer.pl/kursmonitorowanie-sieci-informatycznej-za-pomoca-narzedzia-zabbix/

 

Krótka historia o tym jak straciłem 320GB danych

By szulcu on Lipiec 30th, 2013

Wśród informatyków często można usłyszeć powiedzenie, że ludzie dzielą się na osoby, które tworzą kopie zapasowe i te, które dopiero będą. Dużo osób nie wykonuje kopii wcale albo nawet nie wie czym jest kopia zapasowa. W przypadku awarii dysku twardego...

Aktualizacja Exchange 2013 CU2

By Konrad Sagala on Lipiec 30th, 2013

Microsoft wydał poprawioną wersję CU2 dla Exchange 2013 – oryginalna wersja pakietu czyściła uprawnienia folderów publicznych przy przeniesieniu skrzynki folderów publicznych między bazami.

Przy okazji Microsoft zmienił nazewnictwo pakietu – zamiast nic nie mówiącego Exchange-x64.exe, można odczytać teraz nr artykułu z opisem poprawki.

na bezdrożach…

By nExoR on Lipiec 30th, 2013

Exchange 2013 CU2 ponownie wydany (KB2859928)

By Remigiusz Szatkowski on Lipiec 30th, 2013

W dniu wczorajszym 29.07.2013 Exchange Team poinformował o wydaniu nowej wersji CU2 dla Exchange 2013 RTM.

Nowa wersja została wydana w związku z problemami pojawiającymi się po instalacji CU2 przy obsłudze folderów publicznych, dlatego jest zalecane zainstalowanie najnowszej wersji CU2.
Pisaliśmy o tym w poście:

Exchange 2013 CU2 powoduje zmianę uprawnień przy przeniesieniu Public Folder Mailbox

 

Nowe wydanie CU2 ma numer wersji: 15.0.712.24 (KB2859928)

Możecie go pobrać ze strony Microsoft Download Center:

 Cumulative Update 2 for Exchange Server 2013 (KB2859928)

(…)
Read the rest of Exchange 2013 CU2 ponownie wydany (KB2859928) (567 words)


© Remigiusz Szatkowski for ExchangeBlog, 2013. |
Permalink |
No comment |
Add to
del.icio.us

Post tags: , , , ,

Feed enhanced by Better Feed from Ozh

technet subs wycofywane…

By nExoR on Lipiec 30th, 2013

dostałem takiego niefajnego maila, że technet subsciptions są wycofywane. pozostają subskrypcie MSDN oraz Technet Evaluation Center. jako MCT mam właśnie technet subs i jest to jeden z ważniejszych powodów, dla których warto tytuł utrzymywać – możliwość budowania labów na dowolnych wersjach systemów, od NT4.5, z dowolnymi wersjami – czy to exchange 2oo3 czy stary office, wielokrotnie pozwolił mi się dobrze przygotować do wdrożenia czy szkolenia. na TEC jest bardzo ograniczona liczba produktów i nie ma tych starych…

kontaktowałem się w tej sprawie z wsparciem. mój mail przebył długą drogę, jak piłeczka odbijany między działami i krajami, aż w końcu dostałem finalną odpowiedź:

As the TechNet subscription program is being retired this will also be removed from the MCT benefits.

As our colleagues have already confirmed, there will not be an equivalent subscription offering made available within the MCT program or for regular subscribers.

Of course we understand that you as a Trainer require access to equivalent test software. The general aim is to focus on growing free offerings – including evaluation resources through the TechNet Evaluation Center, expert-led learning through the Microsoft Virtual Academy, and community-moderated technical support through the TechNet Forums.

These give you access to a wide range of products for evaluations of up to 180 days. The exact future content of the evaluation center cannot be confirmed at this point.”

): to nie jest dobra wiadomość.

eN.

No to czas na kolejną przeprowadzkę…

By Paweł Goleń on Lipiec 29th, 2013

Desperate times call for desperate measures. Cóż, ich zbójeckie prawo.

Big Data – HADOOP i inne diabły – Part I

By Maciej Lelusz on Lipiec 29th, 2013

Apache HADOOP. Niektórzy mawiają, że przekleństwo naszych czasów inni, że błogosławieństwo… a może zwykły postęp? Nieokiełznane parcie do przodu, niezaspokojona ciekawość i wieczne pytania jak, gdzie i kiedy. Może i faktycznie trochę w tym zniewolenia, ale odpowiedzmy sobie na pytanie, kiedy, ostatnio tak naprawdę byliśmy wolni?

Za podstawę naszej maszyny-zagłady-prywatności wziąłem sobie Ubuntu 12.04 LTS. Wydaje mi się, że wybór padł trochę z przekory, gdyż słowo „ubuntu” w języku plemion Zulu i Xhosa zamieszkujących południową Afrykę oznacza „człowieczeństwo wobec innych”, a rajskie jabłko przecież też było czerwone i słodkie.

Po zainstalowaniu Ubuntu 12.04 LTS jesteśmy zmuszeni do ręcznej instalacji Javy. Na początku trzeba ją pobrać z strony Oracle:

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

Następnie czeka nas przeniesienie plików Javy w odpowiednie miejsca i aktualizacja informacji systemowych, robimy to za pomocą następujących komend:

tar -xvf jdk-7u25-linux-x64.gz

mkdir -p /usr/lib/jvm/jdk1.7.0

mv jdk1.7.0_25/* /usr/lib/jvm/jdk1.7.0/

update-alternatives –install „/usr/bin/java” „java” „/usr/lib/jvm/jdk1.7.0/bin/java” 1

update-alternatives –install „/usr/bin/javac” „javac” „/usr/lib/jvm/jdk1.7.0/bin/javac” 1

update-alternatives –install „/usr/bin/javaws” „javaws” „/usr/lib/jvm/jdk1.7.0/bin/javaws” 1

Voile! Java na pokładzie, aby sprawdzić czy na pewno nam wyszło należy wywołać komendę:

root@u-hadoop-01:/home/ml# java -version

java version „1.7.0_25″

Java(TM) SE Runtime Environment (build 1.7.0_25-b15)

Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)

Jeżeli uzyskujecie podobny rezultat to znaczy, że wszytko się udało i Java zadziałała prawidłowo, a co za tym idzie rozgrzewkę mamy za sobą – czas na diabła pod postacią żółtego, pociesznego słonika. Oto na scenie przed Państwem… HADOOP!

Dodajemy użytkownika, na którym będą uruchomione procesy hadoopa. Oczywiście, jeżeli lubisz i uważasz, że wszystko lepiej działa na koncie roota, nie mam zamiaru cię przekonywać i możesz pominąć ten krok.

addgroup hadoop

adduser –ingroup hadoop hduser

Węzły klastra porozumiewają się ze sobą za pomocą certyfikatów RSA (bez hasła), które musimy wygenerować, oraz przenieść do folderu odpowiedzialnego za składowanie kluczy do automatycznego logowania. Można to zrobić tak:

root@u-hadoop-01:/home/ml# su – hduser

hduser@u-hadoop-01:~$ ssh-keygen -t rsa -P „”

Generating public/private rsa key pair.

Enter file in which to save the key (/home/hduser/.ssh/id_rsa):

Created directory ‚/home/hduser/.ssh’.

Your identification has been saved in /home/hduser/.ssh/id_rsa.

Your public key has been saved in /home/hduser/.ssh/id_rsa.pub.

The key fingerprint is:

1c:7m:6e:5n:0t:7a:6r:8n:2a:fp:6o:el:dk:3a hduser@u-hadoop-01

The key’s randomart image is:

+——–[ RSA 2048]——–+

|      zatancz    |

|      ze mna     |

|       polke     |

|        c me   n |

|            ta   |

|                r|

|               n |

|               ą |

|                 |

+—————————————————+

hduser@u-hadoop-01:~$ cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

Następnie wyłączamy IPv6 dla całego serwera, co implikuje również wyłączenie go dla HADOOP’a. Dzięki temu będziemy ograniczeni tylko do jednej wersji IP i zdecydowanie łatwiej będzie nam szukać ewentualnych problemów podczas jego działania. Jeżeli korzystasz z IPv6 to po pierwsze gratulacje, po drugie napisz do mnie maila z oferta współpracy

nano /etc/sysctl.conf

 

net.ipv6.conf.all.disable_ipv6 = 1

net.ipv6.conf.default.disable_ipv6 = 1

net.ipv6.conf.lo.disable_ipv6 = 1

 

reboot

Tak, jest konieczny. Po wykonaniu restartu serwera pobieramy i rozpakowujemy, oraz relokujemy pliki HADOOP’a na naszym systemie:

wget http://ftp.ps.pl/pub/apache/hadoop/core/stable/hadoop-1.1.2.tar.gz

tar -xvf hadoop-1.1.2.tar.gz

mv hadoop-1.1.2 /usr/local/

cd /usr/local/

ln -s hadoop-1.1.2/ hadoop

chown -R hduser:hadoop hadoop*

Następnie musimy zaktualizować plik $HOME/.bashrc dla użytkownika hduser i dodać informacje o Javie:

root@u-hadoop-01:/usr/local# nano /home/hduser/.bashrc

export HADOOP_PREFIX=/usr/local/hadoop

export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true

export JAVA_HOME=/usr/lib/jvm/jdk1.7.0/

Oraz w celu ułatwienia sobie życia poustawiać sobie powłokę:

unalias fs &> /dev/null

alias fs=”hadoop fs”

unalias hls &> /dev/null

alias hls=”fs -ls”

To w zasadzie wszystko, jeśli chodzi o instalację. Pozostaje tylko wstępna konfiguracja i już za chwilę będziemy mieli działający jedno węzłowy klaster Tak więc, na początku organizacja configów, tak aby nie szukać ich po całym systemie:

cd /etc/

ln -s /usr/local/hadoop/conf/ hadoop

Następnie przechodzimy do edycji pliku hadoop-env.sh, gdzie jak sama nazwa wskazuje będziemy edytować zmienne środowiskowe samego systemy HADOOP:

nano /etc/hadoop/hadoop-env.sh

 

# The java implementation to use.  Required.

export JAVA_HOME=/usr/lib/jvm/jdk1.7.0/

Kolejnym krokiem jest dodanie folderu tmp dla Demona… chyba pierwszy raz nie mogę się bardziej zgodzić z nazwą „demon” niż w tym przypadku:

mkdir -p /opt/hadoop/tmp

chown hduser:hadoop /opt/hadoop/tmp

chmod 750 /opt/hadoop/tmp

Teraz czeka nas edycja plików konfiguracyjnych, wypadałoby aby wyglądały one podobnie, oczywiście możecie je dowolnie zmieniać, to jest bardzo podstawowa konfiguracja:

nano /etc/hadoop/core-site.xml

 

<?xml version=”1.0″?>

<?xml-stylesheet type=”text/xsl” href=”configuration.xsl”?>

<!– Put site-specific property overrides in this file. –>

<configuration>

<property>

<name>hadoop.tmp.dir</name>

<value>/opt/hadoop/tmp</value>

</property>

<property>

<name>fs.default.name</name>

<value>hdfs://localhost:54310</value>

</property>

</configuration>

 

nano /etc/hadoop/mapred-site.xml

 

<?xml version=”1.0″?>

<?xml-stylesheet type=”text/xsl” href=”configuration.xsl”?>

<!– Put site-specific property overrides in this file. –>

<configuration>

<property>

<name>mapred.job.tracker</name>

<value>localhost:54311</value>

</property>

</configuration>

 

nano /etc/hadoop/hdfs-site.xml

 

<?xml version=”1.0″?>

<?xml-stylesheet type=”text/xsl” href=”configuration.xsl”?>

<!– Put site-specific property overrides in this file. –>

<configuration>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

</configuration>

Konfiguracja za nami. Czas na to co tygryski lubią najbardziej – formatowanie. Operację formatowania HDFS’a wykonuje się następująco:

root@u-hadoop-01:/# su – hduser

hduser@u-hadoop-01:~$ /usr/local/hadoop/bin/hadoop namenode -format

13/06/30 21:04:31 INFO namenode.NameNode: STARTUP_MSG:

/************************************************************

STARTUP_MSG: Starting NameNode

STARTUP_MSG:   host = u-hadoop-01/127.0.1.1

STARTUP_MSG:   args = [-format]

STARTUP_MSG:   version = 1.1.2

STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.1 -r 1440782; compiled by ‚hortonfo’ on Thu Jan 31 02:03:24 UTC 2013

************************************************************/

13/06/30 21:04:31 INFO util.GSet: VM type       = 64-bit

13/06/30 21:04:31 INFO util.GSet: 2% max memory = 19.33375 MB

13/06/30 21:04:31 INFO util.GSet: capacity      = 2^21 = 2097152 entries

13/06/30 21:04:31 INFO util.GSet: recommended=2097152, actual=2097152

13/06/30 21:04:32 INFO namenode.FSNamesystem: fsOwner=hduser

13/06/30 21:04:32 INFO namenode.FSNamesystem: supergroup=supergroup

13/06/30 21:04:32 INFO namenode.FSNamesystem: isPermissionEnabled=true

13/06/30 21:04:32 INFO namenode.FSNamesystem: dfs.block.invalidate.limit=100

13/06/30 21:04:32 INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s)

13/06/30 21:04:32 INFO namenode.NameNode: Caching file names occuring more than 10 times

13/06/30 21:04:33 INFO common.Storage: Image file of size 112 saved in 0 seconds.

13/06/30 21:04:33 INFO namenode.FSEditLog: closing edit log: position=4, editlog=/opt/hadoop/tmp/dfs/name/current/edits

13/06/30 21:04:33 INFO namenode.FSEditLog: close success: truncate to 4, editlog=/opt/hadoop/tmp/dfs/name/current/edits

13/06/30 21:04:33 INFO common.Storage: Storage directory /opt/hadoop/tmp/dfs/name has been successfully formatted.

13/06/30 21:04:33 INFO namenode.NameNode: SHUTDOWN_MSG:

/************************************************************

SHUTDOWN_MSG: Shutting down NameNode at u-hadoop-01/127.0.1.1

************************************************************/

Jeżeli uzyskaliście podobny rezultat jak ja powyżej to znaczy, że Wasz klaster jest gotowy do działania i należy go odpalić przy pomocy:

hduser@u-hadoop-01:~$ /usr/local/hadoop/bin/start-all.sh

starting namenode, logging to /usr/local/hadoop-1.1.2/libexec/../logs/hadoop-hduser-namenode-u-hadoop-01.out

localhost: starting datanode, logging to /usr/local/hadoop-1.1.2/libexec/../logs/hadoop-hduser-datanode-u-hadoop-01.out

localhost: starting secondarynamenode, logging to /usr/local/hadoop-1.1.2/libexec/../logs/hadoop-hduser-secondarynamenode-u-hadoop-01.out

starting jobtracker, logging to /usr/local/hadoop-1.1.2/libexec/../logs/hadoop-hduser-jobtracker-u-hadoop-01.out

localhost: starting tasktracker, logging to /usr/local/hadoop-1.1.2/libexec/../logs/hadoop-hduser-tasktracker-u-hadoop-01.out

Aby sprawdzić, czy się uruchomił należy wykonać netsata i poszukać procesów Javy:

hduser@u-hadoop-01:~$ netstat -npea | grep -i java

(Not all processes could be identified, non-owned process info

will not be shown, you would have to be root to see it all.)

tcp        0      0 0.0.0.0:50030           0.0.0.0:*               LISTEN      1001       12334       3014/java

tcp        0      0 0.0.0.0:47218           0.0.0.0:*               LISTEN      1001       12009       3014/java

tcp        0      0 0.0.0.0:37971           0.0.0.0:*               LISTEN      1001       11144       2429/java

tcp        0      0 0.0.0.0:50070           0.0.0.0:*               LISTEN      1001       11484       2429/java

tcp        0      0 127.0.0.1:54310         0.0.0.0:*               LISTEN      1001       11288       2429/java

tcp        0      0 127.0.0.1:54311         0.0.0.0:*               LISTEN      1001       12328       3014/java

tcp        0      0 127.0.0.1:54311         127.0.0.1:43254         ESTABLISHED 1001       12347       3014/java

tcp        0      0 127.0.0.1:54310         127.0.0.1:51719         ESTABLISHED 1001       11757       2429/java

tcp6       0      0 :::50060                :::*                    LISTEN      1001       12604       3243/java

tcp6       0      0 :::50010                :::*                    LISTEN      1001       11923       2685/java

tcp6       0      0 :::50075                :::*                    LISTEN      1001       11951       2685/java

tcp6       0      0 :::42459                :::*                    LISTEN      1001       11499       2685/java

tcp6       0      0 127.0.0.1:44447         :::*                    LISTEN      1001       12336       3243/java

tcp6       0      0 :::50020                :::*                    LISTEN      1001       12099       2685/java

tcp6       0      0 :::38020                :::*                    LISTEN      1001       11954       2938/java

tcp6       0      0 :::50090                :::*                    LISTEN      1001       12324       2938/java

tcp6       0      0 127.0.0.1:51719         127.0.0.1:54310         ESTABLISHED 1001       11756       2685/java

tcp6       0      0 127.0.0.1:43254         127.0.0.1:54311         ESTABLISHED 1001       12342       3243/java

unix  2      [ ]         STREAM     CONNECTED     12348    3014/java

unix  2      [ ]         STREAM     CONNECTED     12344    3243/java

unix  2      [ ]         STREAM     CONNECTED     12337    3243/java

unix  2      [ ]         STREAM     CONNECTED     12318    2938/java

unix  2      [ ]         STREAM     CONNECTED     12007    3014/java

unix  2      [ ]         STREAM     CONNECTED     11952    2938/java

unix  2      [ ]         STREAM     CONNECTED     11774    2685/java

unix  2      [ ]         STREAM     CONNECTED     11497    2685/java

unix  2      [ ]         STREAM     CONNECTED     11220    2429/java

unix  2      [ ]         STREAM     CONNECTED     11142    2429/java

hduser@u-hadoop-01:~$

Klaster zatrzymuje się następująco:

hduser@u-hadoop-01:~$ /usr/local/hadoop/bin/stop-all.sh

stopping jobtracker

localhost: stopping tasktracker

stopping namenode

localhost: stopping datanode

localhost: stopping secondarynamenode

Zazwyczaj w środowisku testowym pracuje jako root, tak więc łatwiej mi korzystać z poleceń uruchamianych od razu w SUDO na użytkowniku hduser:

sudo -u hduser /usr/local/hadoop/bin/start-all.sh

sudo -u hduser /usr/local/hadoop/bin/stop-all.sh

Tak więc nasz klaster HADOOP jest w pełni skonfigurowany I działa. Naturalnie rodzi się pytanie jak coś na niego wrzucić!? Robimy to komendą:

su hduser

/usr/local/hadoop/bin/start-all.sh

cd /home/hduser/

wget http://upload.wikimedia.org/wikipedia/en/d/d6/Doop.png

/usr/local/hadoop/bin/hadoop dfs -copyFromLocal /home/hduser/Doop.png /user/hduser/Doop.png

Aby sprawdzić czy plik jest na HADOOP’ie wykonujemy komendę:

bin/hadoop dfs -ls /user/hduser

Tak, więc nasz mikro HADOOP działa… Tylko, po co? W następnym odcinku przeprawa z instalacją FUSE-HDFS i próba montażu po NFS do vSphere. Zapraszam!

Artykuły powiązane:

Świeża krew

By marta.karas on Lipiec 29th, 2013

Witam!

Nazywam się Marta Karaś i jestem nowym członkiem załogi bloga Askomputer. Urodziłam się we Wrocławiu, a od 18 roku życia mieszkam na Warszawskim Mokotowie. W 2012 roku ukończyłam Politologię na Uniwersytecie Warszawskim.

Moją funkcją na blogu będzie korekta tekstów, kontakt z czytelnikami oraz reklamodawcami. W przypadku osób chętnych nawiązaniem współpracy z naszym blogiem lub zamieszczeniem u nas reklamy zapraszam do kontaktu pod adresem:

marta.karas@askomputer.pl

Pozdrawiam i zachęcam do lektury 

Useful things about data recovery that every DBA should know. Part 3 — Three differential backups tricks

By Marcin Szeliga on Lipiec 29th, 2013

In this article we are going to answers those questions:

1. Is differential backup a cumulative, or an incremental one?

2. Why you really should take a full backup just before switching any file group to read-only?

3. Do you really need a full backup to restart a broken log backup chain?

If you missed previous parts of this series, you would find them there:

· Useful things about data recovery that every DBA should know. Part 1 — To what point in time full backup is being restored?

· Useful things about data recovery that every DBA should know. Part 2 — What does a full backup contain?

In SQL Server differential backups are cumulative

The first question is by far the easiest to answer — all you have to do is:

1. Create a database with three file groups. In this case, there is only one file in each filegroup and all three filgroups are put on the same hard drive. However, following Microsoft recommendations, the primary filegroup is not a default one (this is really important if you are using an Enterprise Edition):

CREATE DATABASE [Test]
 ON  PRIMARY 
( NAME = N'TestPrimary', FILENAME = N'C:Program FilesMicrosoft SQL ServerMSSQL11.MSSQLSERVERMSSQLDATATestPrimary.mdf' , SIZE = 5120KB , FILEGROWTH = 1024KB ), 
 FILEGROUP [SECONDARY] 
( NAME = N'TestSecondary', FILENAME = N'C:Program FilesMicrosoft SQL ServerMSSQL11.MSSQLSERVERMSSQLDATATestSecondary.ndf'' , SIZE = 5120KB , FILEGROWTH = 1024KB ), 
 FILEGROUP [TERTIARY] 
( NAME = N'TestTertiary', FILENAME = N''C:Program FilesMicrosoft SQL ServerMSSQL11.MSSQLSERVERMSSQLDATATestTertiary.ndf' , SIZE = 5120KB , FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'Test_log', FILENAME = N'C:Program FilesMicrosoft SQL ServerMSSQL11.MSSQLSERVERMSSQLDATATest_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)
GO

USE [Test]
GO
ALTER DATABASE [Test] MODIFY FILEGROUP [SECONDARY] DEFAULT
GO

2. Create a table in each non-primary filegroup and take a full database backup (the initial backup that will switch this database into a truly full recovery mode):

CREATE TABLE Tab1 
(Col1 int IDENTITY PRIMARY KEY,
Col2 char(1000) default 'a')
ON SECONDARY;

CREATE TABLE Tab2 
(Col1 int IDENTITY PRIMARY KEY,
Col2 char(1000) default 'a')
ON TERTIARY;

BACKUP DATABASE [Test]
TO DISK ='TestFull.bak'
WITH INIT;  
GO

3. Insert some rows into a first table (the table that is stored in the second filegroup) and take a differential backup:

INSERT INTO Tab1
DEFAULT VALUES;
GO 50

BACKUP DATABASE [Test]
TO DISK ='TestDiff.bak'
WITH DIFFERENTIAL, INIT;  
GO
------
Processed 72 pages for database ''Test'', file ''TestPrimary'' on file 1.
Processed 32 pages for database ''Test'', file ''TestSecondary'' on file 1.
Processed 8 pages for database ''Test'', file ''TestTertiary'' on file 1.
Processed 2 pages for database ''Test'', file ''Test_log'' on file 1.
BACKUP DATABASE WITH DIFFERENTIAL successfully processed 114 pages in 0.009 seconds (98.198 MB/sec).

As you can see, this backup contains 72 pages from the primary filegroup, 32 pages from the secondary and 8 pages from the last filegroup.

4. Now let me insert the same number of rows into the second table (the one stored in the third filegroup), and take another differential backup:

INSERT INTO Tab2
DEFAULT VALUES;
GO 50

BACKUP DATABASE [Test]
TO DISK ='TestDiff.bak'
WITH DIFFERENTIAL;  
GO
------
Processed 72 pages for database ''Test'', file ''TestPrimary'' on file 2.
Processed 32 pages for database ''Test'', file ''TestSecondary'' on file 2.
Processed 32 pages for database ''Test'', file ''TestTertiary'' on file 2.
Processed 1 pages for database ''Test'', file ''Test_log'' on file 2.
BACKUP DATABASE WITH DIFFERENTIAL successfully processed 137 pages in 0.016 seconds (66.528 MB/sec).

This backup contains all pages modified since the last full backup was taken, not the previous differential. In this case, all pages allocated to both tables were backed up.

Note. The sixth page in each data file is the first DIFF map page — a page used to track extents modified since the last full backup was taken. To see those pages, execute the following commands (the second file is always a log file, which is why I skipped the fileId 2):

DBCC TRACEON (3604);
GO
DBCC PAGE ('Test',1,6,3);
DBCC PAGE ('Test',3,6,3);
DBCC PAGE ('Test',4,6,3);
GO

In my case, the DIFF bitmaps look like this:

For the first file:

DIFF_MAP: Extent Alloc Status @0x000000001B28A0C2

(1:0) – (1:16) = CHANGED

(1:24) – (1:40) = NOT CHANGED

(1:48) – (1:64) = CHANGED

(1:72) – = NOT CHANGED

(1:80) – = CHANGED

(1:88) – (1:128) = NOT CHANGED

(1:136) – = CHANGED

(1:144) – = NOT CHANGED

(1:152) – = CHANGED

(1:160) – (1:632) = NOT CHANGED

For the second one:

DIFF_MAP: Extent Alloc Status @0x000000001B28A0C2

(3:0) – (3:24) = CHANGED

(3:32) – (3:632) = NOT CHANGED

And for the last one:

DIFF_MAP: Extent Alloc Status @0x000000001B28A0C2

(4:0) – (4:24) = CHANGED

(4:32) – (4:632) = NOT CHANGED

Those bitmaps are reset to NOT CHANGED values when a full backup is taken. Therefore, if I take another differential backup, it will contain exactly the same pages as the previous one:

BACKUP DATABASE [Test]
TO DISK ='TestDiff.bak'
WITH DIFFERENTIAL; 
GO
------
Processed 72 pages for database ''Test'', file ''TestPrimary'' on file 4.
Processed 32 pages for database ''Test'', file ''TestSecondary'' on file 4.
Processed 32 pages for database ''Test'', file ''TestTertiary'' on file 4.
Processed 1 pages for database ''Test'', file ''Test_log'' on file 4.
BACKUP DATABASE WITH DIFFERENTIAL successfully processed 137 pages in 0.010 seconds (106.396 MB/sec).

Though, after the full backup was taken, the differential one will contains only the first extent of each file (the one where file metadata is stored):

BACKUP DATABASE [Test]
TO DISK ='TestFull.bak';
GO

BACKUP DATABASE [Test]
TO DISK ='TestDiff.bak'
WITH DIFFERENTIAL; 
GO
------
Processed 40 pages for database ''Test'', file ''TestPrimary'' on file 5.
Processed 8 pages for database ''Test'', file ''TestSecondary'' on file 5.
Processed 8 pages for database ''Test'', file ''TestTertiary'' on file 5.
Processed 1 pages for database ''Test'', file ''Test_log'' on file 5.
BACKUP DATABASE WITH DIFFERENTIAL successfully processed 57 pages in 0.014 seconds (31.808 MB/sec).

Lesson learned — In SQL Server a differential backup is cumulative. What this means is that the consecutive differential backup will be larger (or at least, the same size) as the previous one, and when all database extents are modified, the differential backup will be as large as the full one.

Note. If a transaction is rolled back, two changes happened to the corresponding page — first, the original statement (i.e. INSERT) is executed, and then the SQL Server has to compensate this change (i.e. executes DELETE statement). As a result, the extent that contains this page will be added to the next differential backup.

Take a full backup before switching a filgroup to read-only

The reason to do this should be clear by now, but let me show you what I mean. First, I insert another 50 rows into the second table and then switch the third filegroup (the second table is stored in this filegroup) into read-only mode:

INSERT INTO Tab2
DEFAULT VALUES;
GO 50

ALTER DATABASE [Test] 
MODIFY FILEGROUP [TERTIARY] READONLY;
GO

Then the differential backup is taken:

BACKUP DATABASE [Test]
TO DISK ='TestDiff.bak'
WITH DIFFERENTIAL; 
GO
-----
Processed 80 pages for database ''Test'', file ''TestPrimary'' on file 6.
Processed 8 pages for database ''Test'', file ''TestSecondary'' on file 6.
Processed 24 pages for database ''Test'', file ''TestTertiary'' on file 6.
Processed 1 pages for database ''Test'', file ''Test_log'' on file 6.

The newly used pages from the third filegroup were added to this backup, as expected. But even if the full backup is taken, the differential backup will still contains the same pages:

BACKUP DATABASE [Test]
TO DISK ='TestFull.bak';
GO

BACKUP DATABASE [Test]
TO DISK ='TestDiff.bak'
WITH DIFFERENTIAL; 
GO
-------
Processed 40 pages for database ''Test'', file ''TestPrimary'' on file 7.
Processed 8 pages for database ''Test'', file ''TestSecondary'' on file 7.
Processed 24 pages for database ''Test'', file ''TestTertiary'' on file 7.
Processed 1 pages for database ''Test'', file ''Test_log'' on file 7.
BACKUP DATABASE WITH DIFFERENTIAL successfully processed 73 pages in 0.008 seconds (71.289 MB/sec).

Yes, you guessed correctly — the file in which the DIFF bitmap is stored was set to read-only, so SQL Server would not be able to reset it during a full backup. And the only solution is to switch this filegroup to the read-write, take a full backup, and switch it back to read-only mode:

ALTER DATABASE [Test] 
MODIFY FILEGROUP [TERTIARY] READWRITE;
GO

BACKUP DATABASE [Test]
TO DISK ='TestFull.bak';
GO

ALTER DATABASE [Test] 
MODIFY FILEGROUP [TERTIARY] READONLY;
GO

From now on, the differential database backups will not contain pages that had changed before a full backup was taken:

BACKUP DATABASE [Test]
TO DISK ='TestDiff.bak'
WITH DIFFERENTIAL, INIT; 
GO
-----
Processed 40 pages for database ''Test'', file ''TestPrimary'' on file 1.
Processed 8 pages for database ''Test'', file ''TestSecondary'' on file 1.
Processed 8 pages for database ''Test'', file ''TestTertiary'' on file 1.
Processed 1 pages for database ''Test'', file ''Test_log'' on file 1.
BACKUP DATABASE WITH DIFFERENTIAL successfully processed 81 pages in 0.027 seconds (23.202 MB/sec).

Lesson learned — As a general rule, you should take a full database backup just before any part of this database will be switched into read-only mode.

Broken log chain backup can be restored using a differential backup

A log chain starts with a full backup of the database. In other word, a restore sequence always must be started with a full backup. This kind of log backup chain will be broken if:

· A database is switched from the FULL or BULK_LOGGED recovery models into the SIMPLE recovery model

· A database is reverted from a snapshot.

· A transaction log backup is taken with the WITH NO_LOG or WITH TRUNCATE_ONLY option (In SQL Server 2005 and previous version only).

But this does not mean that an already established log chain backup has to be restored with a full database backup as well. To see this, switch the Test database to SIMPLE and back to FULL recovery model:

ALTER DATABASE [Test]
SET RECOVERY SIMPLE;
GO

ALTER DATABASE [Test]
SET RECOVERY FULL;
GO

And now try to take a log backup:

BACKUP LOG [Test]
TO DISK ='TestLog.bak'
WITH INIT; 
GO
------
Msg 4214, Level 16, State 1, Line 7
BACKUP LOG cannot be performed because there is no current database backup.
Msg 3013, Level 16, State 1, Line 7
BACKUP LOG is terminating abnormally.

However, after a differential backup was taken, the log chain backup is restored, and a log backup can be executed:

BACKUP DATABASE [Test]
TO DISK ='TestDiff.bak'
WITH DIFFERENTIAL, INIT; 
GO

BACKUP LOG [Test]
TO DISK ='TestLog.bak'
WITH INIT; 
GO
-------
Processed 1 pages for database ''Test'', file ''Test_log'' on file 1.
BACKUP LOG successfully processed 1 pages in 0.003 seconds (0.488 MB/sec).

Lesson learned — By restoring a broken log chain backup from a differential backup you can save a enormous amount of time.

Hope this clarify the whole thing

Share this article …