我的问题是我有一个5节点的Hadoop集群,集群上的文件需要350 GB。我正在运行一个Pig脚本,它连接三个不同的文件并加入它们。 每次运行最少30分钟完成所有地图任务,然后6小时完成减少任务,所有这些减少任务在最佳情况下最终失败。在最糟糕的情况下,我的hadop卡住,由namenode导致安全模式导致它没有足够的空间(超出配额)。
由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 :(得分:0)
你的脚本看起来很好。您要加入的文件大小是多少?
加入是一个代价高昂的运营商。您可以使用复制,倾斜,合并连接Pig来优化连接。仔细阅读这些联接文档,然后根据文件大小和要求进行应用。