Потоковая передача Hadoop с помощью Sequencefile очень медленная - PullRequest
0 голосов
/ 30 мая 2018

У меня есть задача потоковой передачи hadoop с python.Это сработало, но один из 32 картографов работает очень медленно.Я думаю, что проблема заключается в некотором искажении данных, но я не знаю, где проблема.

Вот журнал задач hadoop, первый маппер очень и очень медленный.

task_1520332877638_567306_m_000000      Records R/W=11327/11207 > map
task_1520332877638_567306_m_000001      Records R/W=786/783
task_1520332877638_567306_m_000002      Records R/W=854/851
task_1520332877638_567306_m_000003      Records R/W=850/847
task_1520332877638_567306_m_000004      Records R/W=812/809
task_1520332877638_567306_m_000005      Records R/W=802/799
task_1520332877638_567306_m_000006      Records R/W=854/851
task_1520332877638_567306_m_000007      Records R/W=822/819
task_1520332877638_567306_m_000008      Records R/W=888/885
task_1520332877638_567306_m_000009      Records R/W=1030/871
task_1520332877638_567306_m_000010      Records R/W=894/891
task_1520332877638_567306_m_000011      Records R/W=850/847
task_1520332877638_567306_m_000012      Records R/W=832/829
task_1520332877638_567306_m_000013      Records R/W=804/801
task_1520332877638_567306_m_000014      Records R/W=838/835
task_1520332877638_567306_m_000015      Records R/W=856/853
task_1520332877638_567306_m_000016      Records R/W=852/849
task_1520332877638_567306_m_000017      Records R/W=884/881
task_1520332877638_567306_m_000018      Records R/W=928/925
task_1520332877638_567306_m_000019      Records R/W=896/893

Команда задания: она также очень медленная, если включить спекулятивное выполнение.

hadoop jar \
     /usr/local/hadoop/hadoop-2.6.0-EDH-0u1-SNAPSHOT-HA-SECURITY/share/hadoop/tools/lib/hadoop-streaming-2.6.0-EDH-0u1-SNAPSHOT.jar \
    -D stream.map.input=typedbytes \
    -D stream.map.output=typedbytes \
    -D stream.reduce.input=typedbytes \
    -D stream.reduce.output=text \
    -D mapred.job.queue.name=root.default \
    -D mapred.map.tasks.speculative.execution=false \
    -inputformat org.apache.hadoop.mapred.SequenceFileAsBinaryInputFormat \
    -mapper "sh map.sh" \
    -reducer "sh reduce.sh" \
    -input xxx \
    -output xxx ......

Входной файл - это один файл последовательности с текстовым ключом и двоичным значением.

Этот файл входной последовательности генерируется MRзадание только с одним редуктором и классом множественного выхода.

-rw-rwx---+  3 lmt lmt      3.9 G 2018-05-24 19:53 inputfile

Есть ошибки?

Спасибо за помощь.

1 Ответ

0 голосов
/ 31 мая 2018

Я наконец нашел причину.

размеры значений в файлах последовательностей не равны, некоторые из них очень большие, а другие тихо малы - из-за перекоса данных.

...