Changes between Initial Version and Version 1 of cs/Disco


Ignore:
Timestamp:
Mar 13, 2014, 4:23:56 PM (7 years ago)
Author:
xkocinc
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • cs/Disco

    v1 v1  
     1= Disco = #Disco-1
     2Open source implementace systému MapReduce vyvinutá v [http://research.nokia.com/ Nokia Research Center].
     3
     4== Požadavky == #Po.2BAX4-adavky
     5 * přístup na stroj alba
     6 * Python 2.7.3
     7
     8== Konfigurace clusteru == #Konfigurace_clusteru
     9 Master:: alba
     10 Slaves:: aura asteriaXX nymfeXX
     11
     12Na stroji aura je spouštěn Python 2.7.3 z modulu `pythn-2.7.3` (chybějící `o` není chyba!!!) - nastaveno v `/home/hadoopnlp/.bashrc` kvůli defaultní verzi 2.6.6.
     13
     14== Příklad použití - četnosti slov v textu ==
     15 * Uložte si následující zdroják do `$YOUR_DIR/count_words.py`
     16
     17{{{
     18[https://nlp.fi.muni.cz/cs/Disco#CA-00e712e83cb8133634ce8d6aa0a6fd0d6b049553_1 1] #!/usr/bin/python
     19[https://nlp.fi.muni.cz/cs/Disco#CA-00e712e83cb8133634ce8d6aa0a6fd0d6b049553_2 2] import sys
     20[https://nlp.fi.muni.cz/cs/Disco#CA-00e712e83cb8133634ce8d6aa0a6fd0d6b049553_3 3] from disco.core import Disco, result_iterator
     21[https://nlp.fi.muni.cz/cs/Disco#CA-00e712e83cb8133634ce8d6aa0a6fd0d6b049553_4 4] from disco.func import sum_combiner
     22[https://nlp.fi.muni.cz/cs/Disco#CA-00e712e83cb8133634ce8d6aa0a6fd0d6b049553_5 5] master = "disco://neptun02"
     23[https://nlp.fi.muni.cz/cs/Disco#CA-00e712e83cb8133634ce8d6aa0a6fd0d6b049553_6 6] def fun_map(line, params):
     24[https://nlp.fi.muni.cz/cs/Disco#CA-00e712e83cb8133634ce8d6aa0a6fd0d6b049553_7 7]         for word in line.split():
     25[https://nlp.fi.muni.cz/cs/Disco#CA-00e712e83cb8133634ce8d6aa0a6fd0d6b049553_8 8]                 yield word, 1
     26[https://nlp.fi.muni.cz/cs/Disco#CA-00e712e83cb8133634ce8d6aa0a6fd0d6b049553_9 9] def fun_reduce(iter, out, params):
     27[https://nlp.fi.muni.cz/cs/Disco#CA-00e712e83cb8133634ce8d6aa0a6fd0d6b049553_10 10]         stats = {}
     28[https://nlp.fi.muni.cz/cs/Disco#CA-00e712e83cb8133634ce8d6aa0a6fd0d6b049553_11 11]         for word, count in iter:
     29[https://nlp.fi.muni.cz/cs/Disco#CA-00e712e83cb8133634ce8d6aa0a6fd0d6b049553_12 12]                 stats[word] = stats.get(word, 0) + int(count)
     30[https://nlp.fi.muni.cz/cs/Disco#CA-00e712e83cb8133634ce8d6aa0a6fd0d6b049553_13 13]         for word, total in stats.iteritems():
     31[https://nlp.fi.muni.cz/cs/Disco#CA-00e712e83cb8133634ce8d6aa0a6fd0d6b049553_14 14]                 out.add(word, total)
     32[https://nlp.fi.muni.cz/cs/Disco#CA-00e712e83cb8133634ce8d6aa0a6fd0d6b049553_15 15] results = Disco(master).new_job(name='nlplab-test:count_words',
     33[https://nlp.fi.muni.cz/cs/Disco#CA-00e712e83cb8133634ce8d6aa0a6fd0d6b049553_16 16]                                      input=sys.argv[1:],
     34[https://nlp.fi.muni.cz/cs/Disco#CA-00e712e83cb8133634ce8d6aa0a6fd0d6b049553_17 17]                                      map=fun_map,
     35[https://nlp.fi.muni.cz/cs/Disco#CA-00e712e83cb8133634ce8d6aa0a6fd0d6b049553_18 18]                                      reduce=fun_reduce).wait()
     36[https://nlp.fi.muni.cz/cs/Disco#CA-00e712e83cb8133634ce8d6aa0a6fd0d6b049553_19 19] for word, total in result_iterator(results):
     37[https://nlp.fi.muni.cz/cs/Disco#CA-00e712e83cb8133634ce8d6aa0a6fd0d6b049553_20 20]         print word, total
     38
     39}}}
     40 * Podívejte se na [http://neptun02:8989/index.html status]. Pokud svítí některý stroj červeně, zkuste:
     41
     42{{{
     43ssh nymfeXX mkdir -p /tmp/disco_root/ddfs
     44}}}
     45
     46Chvilku počkejte, a pokud nepomohlo, odstraňte ho v [http://alba:8989/config.html nastavení] kliknutím na `remove` a `save table`.
     47
     48 * Na stroji `neptun02`:
     49
     50{{{
     51export PATH="$PATH:/home/xhancar/dp/disco/bin"
     52export PYTHONPATH="$PYTHONPATH:/home/xhancar/dp/disco/lib"
     53ddfs push data:test /home/xhancar/dp/bigdata/x*
     54}}}
     55 * Potom můžete na všech strojích v labu, kde je Python 2.6 (např. na `neptunXX`), spustit `count_words.py`:
     56
     57{{{
     58export PYTHONPATH="$PYTHONPATH:/home/xhancar/dp/disco/lib"
     59chmod u+x $YOUR_DIR/count_words.py
     60$YOUR_DIR/count_words.py data:test > results
     61}}}
     62== Debugování ==
     63Základ je parameter `show` v `job.wait(show=True)`
     64
     65Ve vzdáleně běžících funkcích (map, reduce, ...) nepište nic na STDOUT a výstupy na STDERR by měly mít [http://disco.readthedocs.org/en/0.4.4/howto/worker.html#message-format tento formát].
     66
     67Pokud je problém jen na určitém stroji: Spustit tam master (`disco start`), nechat jako slave pouze `localhost` a spustit úlohu tam.