我的问题是,我有一个5节点hadoop集群,集群上的文件需要350gb。我正在运行一个pig脚本,它连接三个不同的文件并连接它们。作业每次运行不到30分钟完成所有map任务,然后6小时完成reduce任务,这些reduce任务最后都以失败告终。在最坏的情况下,我的hadoop被卡住了,原因是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';
有什么想法吗??
1条答案
按热度按时间lc8prwob1#
你的剧本看起来不错。您要加入的文件的大小是多少?
join在任何地方都是一个昂贵的运营商。您可以通过在pig中使用replicated、skew、merge join来优化连接。浏览这些连接文档一次,并根据您的文件大小和要求进行应用。
https://bluewatersql.wordpress.com/category/pig/