Pig LOAD语句的具体内存限制?

时间:2013-10-20 17:51:39

标签: memory hadoop apache-pig

简单问题:

Pig LOAD语句的内存限制是什么?

更详细的问题:

有没有办法将可用的物理资源(磁盘,RAM,CPU)与Pig LOAD语句可以处理的目录的最大大小相关联?

情境:

一项研究项目正在使用Pig脚本,该脚本试图在下面复制的单个Pig LOAD语句中加载包含12,000多个文件,总大小为891GB的目录。这些文件是gzip压缩文件,以原始文本描述网页集合。运行时,作业似乎每次都会崩溃/挂起/冻结我们的群集。由于我们都是Hadoop的新手,因此怀疑是资源和配置,直到我最终能够查看代码。

-- load data from I_WATS_DIR 
Orig = LOAD '$I_WATS_DIR' USING org.archive.hadoop.ArchiveJSONViewLoader('Envelope.ARC-Header-    Metadata.Target-URI','var2...','var3...','var4...{1,2,3,4} as
(src:chararray,timestamp:chararray,html_base:chararray,relative:chararray,path:chararray,text:chararray,alt:chararray); 

详细信息:

CLUSTER

1个前端节点,16个内核,64GB RAM,128GB交换,NameNode

3个计算节点,16个核心,128GB RAM,128GB交换,DataNode

TEST JOB 1

上面引用的相同脚本,加载带有1个文件的目录

驻留内存报告为1.2GB

输入:138MB

输出:207MB

减少输入记录:1,630,477

持续时间:4分11秒

TEST JOB 2

相同的脚本,17个文件

驻留内存:16.4GB

输入:3.5GB

输出:1.3GB

减少输入记录:10,648,807

持续时间:6分48秒

TEST JOB 3

相同的脚本,51个文件

驻留内存:41.4GB

输入:10.9GB

输出:未录制

减少输入记录:31,968,331

持续时间:6分18秒

最后的想法:

这是一个4节点集群,其上没有其他任何东西在运行,完全专用于Cloudera Hadoop CDH4,仅运行此1个作业。希望这是人们需要回答我原始问题的所有信息!我强烈怀疑某种文件解析循环一次加载1个文件是解决方案,但我对Pig的了解甚至比我对Hadoop的了解要少。我确实有编程/开发背景,但在这种情况下,我是系统管理员,而不是研究员或程序员。

1 个答案:

答案 0 :(得分:0)

根据您对群集的描述以及推送它的数据量,听起来在作业的地图/随机播放阶段您的空间不足。临时数据通过网络发送,未压缩,然后写入reducer上的磁盘,然后在reduce阶段进行处理。您可以尝试的一件事是通过将mapred.map.compress.output设置为true(并指定所需的编解码器)来压缩映射器的输出。

但是只有四个节点,我怀疑你只是想立刻做太多。如果可以,请尝试将您的工作分成多个步骤。例如,如果您正在执行标准单词计数示例,请对数据的一小部分进行单词计数,然后运行第二个计算这些计数的MR程序。