0

我的问题是我有一个 5 节点的 Hadoop 集群,集群上的文件需要 350 GB。我正在运行一个 Pig 脚本,它连接三个不同的文件并加入它们。该作业每次运行不到 30 分钟即可完成所有 map 任务,然后 6 小时完成 reduce 任务,所有这些 reduce 任务在最好的情况下最终都会失败。在最坏的情况下,我的 hadoop 卡住了,这是由于进入安全模式的名称节点导致它没有足够的空间(超出配额)。

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';

任何想法 ??

4

1 回答 1

0

你的脚本看起来不错。您要加入的文件的大小是多少?

Join 在任何地方都是一个昂贵的运营商。您可以使用 Pig 中的复制、倾斜、合并连接来优化连接。浏览这些连接文档一次,然后根据您的文件大小和要求进行申请。

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

于 2015-01-30T19:07:14.467 回答