Version 1 (modified by 11 years ago) (diff) | ,
---|
Hadoop
Tento manuál popisuje jednoduché použití systému Hadoop v CZPJ. Správa tohoto systému je popsána níže #service|níže.
Manuál
Začátek
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
musí na nich být někdo aktivně přihlášený, což zajistí příkaz
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 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í
- http://alba:50070 - web démonu NameNode (spravujícího HDFS)
- http://alba:50030 - web démonu JobTracker (spravujícího úlohy)
Nahrání dat do HDFS
hadoop dfs -put /corpora/vert/bnc/bnc.vert my_bnc.vert
Vytvoří v HDFS adresář /user/<tvuj_login>
a uloží soubor bnc.vert
jako /user/<tvuj_login>/my_bnc.vert
. Viz příkaz:
hadoop dfs -ls my_bnc.vert
Spouštění úloh typu roura
Pomocí nadstavby Hadoop Streaming a frontendu /corpora/programy/hadpipe.sh
.
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 '<doc'
, nebo -t '</doc>'
. Při použití -t '</doc>'
je třeba dát na začátek roury sed 's/<doc /<\/doc>\n<doc /'
.
Desamb
# Nakopirujeme nejaka data do HDFS cut -f1 /corpora/vert/czes/czes10M.vert | hadoop dfs -put - czes10M.vert # a spustime desamb /corpora/programy/hadpipe.sh -d '<doc' -s 4 /home/hadoopnlp/stat/desamb.utf8.sh czes10M.vert czes10M.tagged
Desamb spouštějte s parametry -d '<doc' -s 4
(vyzkoušeno na !CzTenTenu2). Znamenají, že po 4 KiB bude na nejbližším '<doc' začínat nový split. Na některých datech totiž výpočet nedoběhne do konce, takže je dobré dávat malé vstupy, aby (po nevyhnutelném násilném ukončení výpočtu) byly co nejmenší ztráty.
Set
/corpora/programy/hadpipe.sh -d '<doc' /home/hadoopnlp/bin/setmarx.sh czes10M.tagged czes10M.set
Počet pozic v korpusu
echo -e '#!/bin/sh\ngrep -cv "^<"' > /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
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 * <počet jader>.
Hadoop Streaming odděluje mezi Map a Reduce klíč a hodnotu na znaku <TAB>. Např. při sčítání bigramů rozdělených znakem <TAB> je potřeba zadat hadpipe.sh
s parametrem -k 2
.
Výstupní data
Jsou v HDFS v souborech <vystupni_adresar>/part-<cislo>
. 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
hadoop job -kill <job-id> #Napriklad hadoop dfs -kill job_201212191726_0001
<job-id>
najdete na webu JobTrackeru.
Řešení problémů
Logy démonů jsou v /tmp/hadoop-logs
na všech strojích, logy úloh v /tmp/hadoop-logs/userlogs
.
Přístupová práva
Adresář /user/<tvuj_login>
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/<tvuj_login>
Právo čtení pro všechny se hodí při prohlížení HDFS na webu.
Správa systému
Konfigurace
Adresář s konfiguračními soubory: /home/hadoopnlp/conf
.
Seznam podřízených uzlů: /home/hadoopnlp/conf/slaves
.
Restart clusteru
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ů
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í
[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