Changes between Initial Version and Version 1 of cs/Hadoop


Ignore:
Timestamp:
Mar 11, 2014, 1:05:17 PM (7 years ago)
Author:
xkocinc
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • cs/Hadoop

    v1 v1  
     1= Hadoop = #Hadoop
     2Tento manuál popisuje jednoduché použití systému Hadoop v CZPJ. Správa tohoto systému je popsána [[#service|níže #service|níže]].
     3
     4== Manuál == #manual
     5=== Začátek === #top
     6{{{
     7export PATH="$PATH:/packages/run.64/hadoop-0.20.2-cdh3u1/bin"
     8export HADOOP_HOME="/packages/run.64/hadoop-0.20.2-cdh3u1"
     9export HADOOP_CONF_DIR="/home/hadoopnlp/conf"
     10}}}
     11Je potřeba být ve skupině `hadoopnlp` (viz příkaz `groups`). Jsou tam všichni členové CZPJ.
     12
     13==== Jak udržet nymfy přes noc v chodu ==== #nightrun
     14musí na nich být někdo aktivně přihlášený, což zajistí příkaz
     15
     16[http://nlp.fi.muni.cz/cs/Hadoop# Přepnout zobrazení čísel řádků]
     17
     18{{{
     19cssh nymfe{01..86}
     20}}}
     21(nechat spuštěné cssh kolem 22:00 h zabrání automatickému vypnutí)
     22
     23To 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.
     24
     25V pracovní dny by měly výpočty skončit do 7:00, nejpozději do 7:30.
     26
     27=== Webová rozhraní === #web
     28 * [http://alba:50070/ http://alba:50070] - web démonu !NameNode (spravujícího HDFS)
     29
     30 * [http://alba:50030/ http://alba:50030] - web démonu !JobTracker (spravujícího úlohy)
     31
     32=== Nahrání dat do HDFS === #loadhdfs
     33{{{
     34hadoop dfs -put /corpora/vert/bnc/bnc.vert my_bnc.vert
     35}}}
     36Vytvoří v HDFS adresář `/user/<tvuj_login>` a uloží soubor `bnc.vert` jako `/user/<tvuj_login>/my_bnc.vert`. Viz příkaz:
     37
     38{{{
     39hadoop dfs -ls my_bnc.vert
     40}}}
     41=== Spouštění úloh typu roura === #pipe
     42Pomocí nadstavby [http://hadoop.apache.org/docs/r1.2.1/streaming.html Hadoop Streaming] a frontendu `/corpora/programy/hadpipe.sh`.
     43
     44[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.
     45
     46Aby 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 /'`.
     47
     48==== Desamb ==== #desamb
     49{{{
     50# Nakopirujeme nejaka data do HDFS
     51cut -f1 /corpora/vert/czes/czes10M.vert | hadoop dfs -put - czes10M.vert
     52# a spustime desamb
     53/corpora/programy/hadpipe.sh -d '<doc' -s 4 /home/hadoopnlp/stat/desamb.utf8.sh czes10M.vert czes10M.tagged
     54}}}
     55Desamb 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.
     56
     57==== Set ==== #Set
     58{{{
     59/corpora/programy/hadpipe.sh -d '<doc' /home/hadoopnlp/bin/setmarx.sh czes10M.tagged czes10M.set
     60}}}
     61==== Počet pozic v korpusu ==== #sumcorpus
     62{{{
     63echo -e '#!/bin/sh\ngrep -cv "^<"' > /tmp/token_count.sh
     64echo -e '#!/bin/sh\npaste -sd+ | bc' > /tmp/sum.sh
     65/corpora/programy/hadpipe.sh -r /tmp/sum.sh /tmp/token_count.sh  czes10M.vert tcount
     66hadoop dfs -cat tcount/part-*
     67}}}
     68==== Četnosti pozic v korpusu ==== #freqcorpus
     69{{{
     70echo -e '#!/bin/sh\ngrep -v "^<"' > /tmp/tokens.sh
     71echo -e '#!/bin/sh\nuniq -c' > /tmp/uniqc.sh
     72/corpora/programy/hadpipe.sh -c 0.95 -r /tmp/uniqc.sh /tmp/tokens.sh  czes10M.vert counts
     73hadoop dfs -cat counts/part-*
     74}}}
     75Parametr `-c 0.95` nastavuje počet reducerů 0.95 * <počet jader>.
     76
     77Hadoop 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`.
     78
     79=== Výstupní data === #output
     80Jsou v HDFS v souborech `<vystupni_adresar>/part-<cislo>`. Pro jejich kopírování slouží:
     81
     82{{{
     83hadoop dfs -getmerge czes10M.tagged /tmp/czes10M.tagged
     84}}}
     85nebo
     86
     87{{{
     88hadoop dfs -cat my_czes.tagged/part-* | less
     89}}}
     90=== Zabití úlohy === #kill
     91{{{
     92hadoop job -kill <job-id>
     93#Napriklad
     94hadoop dfs -kill job_201212191726_0001
     95}}}
     96`<job-id>` najdete na [http://alba:50030/ webu JobTrackeru].
     97
     98=== Řešení problémů === #problems
     99Logy démonů jsou v `/tmp/hadoop-logs` na všech strojích, logy úloh v `/tmp/hadoop-logs/userlogs`.
     100
     101=== Přístupová práva === #rights
     102Adresář `/user/<tvuj_login>` má přístupová práva `drwxrwxr-x`. Pokud nechceš, aby ostatní mohli přepisovat Tvá data, zadej:
     103
     104{{{
     105[http://nlp.fi.muni.cz/cs/Hadoop#CA-4b494de2cc18ef7cf4c8be33147ceec930af60d0_1 1] hadoop dfs -chmod g-w /user/<tvuj_login>
     106}}}
     107Právo čtení pro všechny se hodí při prohlížení [http://alba:50070/nn_browsedfscontent.jsp HDFS na webu].
     108
     109== Správa systému == #service
     110=== Konfigurace === #konfig
     111Adresář s konfiguračními soubory: `/home/hadoopnlp/conf`.
     112
     113Seznam podřízených uzlů: `/home/hadoopnlp/conf/slaves`.
     114
     115==== Restart clusteru ==== #restart
     116jako uživatel `hadoopnlp`.
     117
     118{{{
     119[http://nlp.fi.muni.cz/cs/HadoopAdmin#CA-8fdd76c399cc467ea734def3e4e0cc49086f82f3_1 1] stop-all.sh && start-all.sh
     120}}}
     121
     122==== Restart clusteru s vymazáním dat a logů ==== #restart2
     123Jako uživatel `hadoopnlp`.
     124
     125{{{
     126[http://nlp.fi.muni.cz/cs/HadoopAdmin#CA-b1be983b52128b49db09a69809ac2dad488ca631_1 1] reset_hadoop.sh
     127}}}
     128
     129==== Restart clusteru s mazáním a novou konfigurací ==== #restart3
     130
     131{{{
     132[http://nlp.fi.muni.cz/cs/HadoopAdmin#CA-b05e0bda1a14a99cd401b350cd50abe1e774f8f9_1 1] # 14 uzlu z B130, kde neni nkdo prihlaseny
     133[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
     134}}}
     135