wiki:cs/Hadoop

Version 3 (modified by xkocinc, 6 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. Opis používání systému Disco, implementaci systému MapReduce?, najdete zde.

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í

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