= Hadoop = #Hadoop Tento manuál popisuje jednoduché použití systému Hadoop v CZPJ. Správa tohoto systému je popsána [[#service|níže]]. Open source implementaci systému MapReduce se jménem Disco najdete [[Disco|zde]]. == Manuál == #manual === Začátek === #top {{{ export PATH="$PATH:/packages/run.64/hadoop-0.20.2-cdh3u1/bin" export HADOOP_HOME="/packages/run.64/hadoop-0.20.2-cdh3u1" export HADOOP_CONF_DIR="/home/hadoopnlp/conf" }}} Je potřeba být ve skupině `hadoopnlp` (viz příkaz `groups`). Jsou tam všichni členové CZPJ. ==== Jak udržet nymfy přes noc v chodu ==== #nightrun musí na nich být někdo aktivně přihlášený, což zajistí příkaz [http://nlp.fi.muni.cz/cs/Hadoop# Přepnout zobrazení čísel řádků] {{{ cssh nymfe{01..86} }}} (nechat spuštěné cssh kolem 22:00 h zabrání automatickému vypnutí) To samé platí v pátek kolem 20:00h, ale pokud chceme nechat úlohu běžet přes víkend, je potřeba to napsat na [mailto:unix@fi.muni.cz] a cssh musí běžet i v sobotu a v neděli kolem 22:00. V pracovní dny by měly výpočty skončit do 7:00, nejpozději do 7:30. === Webová rozhraní === #web * [http://alba:50070/ http://alba:50070] - web démonu !NameNode (spravujícího HDFS) * [http://alba:50030/ http://alba:50030] - web démonu !JobTracker (spravujícího úlohy) === Nahrání dat do HDFS === #loadhdfs {{{ hadoop dfs -put /corpora/vert/bnc/bnc.vert my_bnc.vert }}} Vytvoří v HDFS adresář `/user/` a uloží soubor `bnc.vert` jako `/user//my_bnc.vert`. Viz příkaz: {{{ hadoop dfs -ls my_bnc.vert }}} === Spouštění úloh typu roura === #pipe Pomocí nadstavby [http://hadoop.apache.org/docs/r1.2.1/streaming.html Hadoop Streaming] a frontendu `/corpora/programy/hadpipe.sh`. [http://cs.wikipedia.org/wiki/Roura_%28Unix%29 Roura] musí být jeden soubor. Ten je zkopírován na všechny uzly clusteru a spuštěn. Pokud volá další programy, musí tyto fungovat na všech uzlech clusteru. Aby se zpracoval dokument jako celek, je nutné spustit `hadpipe.sh` s parametrem `-d ''`. Při použití `-t ''` je třeba dát na začátek roury `sed 's/\n /tmp/token_count.sh echo -e '#!/bin/sh\npaste -sd+ | bc' > /tmp/sum.sh /corpora/programy/hadpipe.sh -r /tmp/sum.sh /tmp/token_count.sh czes10M.vert tcount hadoop dfs -cat tcount/part-* }}} ==== Četnosti pozic v korpusu ==== #freqcorpus {{{ echo -e '#!/bin/sh\ngrep -v "^<"' > /tmp/tokens.sh echo -e '#!/bin/sh\nuniq -c' > /tmp/uniqc.sh /corpora/programy/hadpipe.sh -c 0.95 -r /tmp/uniqc.sh /tmp/tokens.sh czes10M.vert counts hadoop dfs -cat counts/part-* }}} Parametr `-c 0.95` nastavuje počet reducerů 0.95 * . Hadoop Streaming odděluje mezi Map a Reduce klíč a hodnotu na znaku . Např. při sčítání bigramů rozdělených znakem je potřeba zadat `hadpipe.sh` s parametrem `-k 2`. === Výstupní data === #output Jsou v HDFS v souborech `/part-`. Pro jejich kopírování slouží: {{{ hadoop dfs -getmerge czes10M.tagged /tmp/czes10M.tagged }}} nebo {{{ hadoop dfs -cat my_czes.tagged/part-* | less }}} === Zabití úlohy === #kill {{{ hadoop job -kill #Napriklad hadoop dfs -kill job_201212191726_0001 }}} `` najdete na [http://alba:50030/ webu JobTrackeru]. === Řešení problémů === #problems Logy démonů jsou v `/tmp/hadoop-logs` na všech strojích, logy úloh v `/tmp/hadoop-logs/userlogs`. === Přístupová práva === #rights Adresář `/user/` má přístupová práva `drwxrwxr-x`. Pokud nechceš, aby ostatní mohli přepisovat Tvá data, zadej: {{{ [http://nlp.fi.muni.cz/cs/Hadoop#CA-4b494de2cc18ef7cf4c8be33147ceec930af60d0_1 1] hadoop dfs -chmod g-w /user/ }}} Právo čtení pro všechny se hodí při prohlížení [http://alba:50070/nn_browsedfscontent.jsp HDFS na webu]. == Správa systému == #service === Konfigurace === #konfig Adresář s konfiguračními soubory: `/home/hadoopnlp/conf`. Seznam podřízených uzlů: `/home/hadoopnlp/conf/slaves`. ==== Restart clusteru ==== #restart jako uživatel `hadoopnlp`. {{{ [http://nlp.fi.muni.cz/cs/HadoopAdmin#CA-8fdd76c399cc467ea734def3e4e0cc49086f82f3_1 1] stop-all.sh && start-all.sh }}} ==== Restart clusteru s vymazáním dat a logů ==== #restart2 Jako uživatel `hadoopnlp`. {{{ [http://nlp.fi.muni.cz/cs/HadoopAdmin#CA-b1be983b52128b49db09a69809ac2dad488ca631_1 1] reset_hadoop.sh }}} ==== Restart clusteru s mazáním a novou konfigurací ==== #restart3 {{{ [http://nlp.fi.muni.cz/cs/HadoopAdmin#CA-b05e0bda1a14a99cd401b350cd50abe1e774f8f9_1 1] # 14 uzlu z B130, kde neni nkdo prihlaseny [http://nlp.fi.muni.cz/cs/HadoopAdmin#CA-b05e0bda1a14a99cd401b350cd50abe1e774f8f9_2 2] stop-all.sh && available_nymfes.sh -bf | head -14 > ~/conf/slaves && echo y | reset_hadoop.sh }}}