2015-01-29 5 views
0

моя проблема в том, что у меня есть 5 узлов Hadoop-кластера, файлы на кластере занимают 350 ГБ. Я запускаю скрипт Pig, который объединяет три разных файла и соединяет их. Задача запускается каждый раз, менее 30 минут, чтобы выполнить все задачи карты, а затем 6 часов для завершения задач сокращения, все из которых уменьшают задачи в лучшем случае в конце. В худшем случае мой hadop застрял, вызванный namenode, который идет в safemode, потому что у него недостаточно места (превышена квота).Hadoop tmp directory получает огромное

Проблема, вызванная каталогом tmp, который занимает пространство зала (7TB !!). Мой сценарий выглядит следующим образом:

info_file = LOAD '$info' as (name, size, type,generation,streamId); 
chunks_file = LOAD '$chunk' as (fp, size); 
relation_file = LOAD '$relation' as (fp, filename); 

chunks_relation = JOIN chunks_file BY fp, relation_file BY fp; 
chunks_files= JOIN chunks_relation BY $3, info_file BY $0; 

result = FOREACH chunks_files GENERATE $0,$1,$3,$5,$6,$7,$8; 
STORE result INTO '$out'; 

Любая идея ??

ответ

0

Ваш сценарий выглядит отлично. Каков размер файлов, с которыми вы соединяетесь?

Присоединяйтесь к дорогостоящему оператору в любом месте. Вы можете оптимизировать соединения, используя реплицированные, перекошенные, объединить joinsin Pig. Просмотрите эту документацию один раз и примените в соответствии с вашими размерами и требованиями.

https://bluewatersql.wordpress.com/category/Pig/

+0

Вы имеете в виду, что это нормально, если 3-файл, который вместе 20 Гб, будет занимать более 7 ТБ, каждый присоединиться? – Bafla13

 Смежные вопросы

  • Нет связанных вопросов^_^