1

我是 EMR 的新手,过去几天我一直在努力解决一些问题。第一个是我要处理的日志已经压缩为 .gz,我想知道这些类型的文件是否能够被 emr 拆分,以便多个映射器可以处理文件。另外我一直在阅读输入文件不会被拆分,除非它们是 5gb,我的文件不是那么大,所以这是否意味着它们只会被一个实例处理?

我的另一个问题可能看起来相对愚蠢,但是否可以使用 emr+streaming 并在 s3 以外的某个地方输入?必须从 CDN 下载日志,然后将它们上传到我的 s3 存储桶以在它们上运行 mapreduce,这似乎是多余的。现在我让它们下载到我的服务器然后我的服务器将它们上传到s3,有没有办法切断中间人并让它直接进入s3,或者从我的服务器上运行输入?

4

1 回答 1

3

已经压缩为 .gz 并且我想知道这些类型的文件是否能够被 emr 拆分,以便一个以上的映射器可以处理一个文件

唉,不,直接的 gzip 文件是不可分割的。一种选择是更频繁地滚动日志文件;这个非常简单的解决方案适用于某些人,尽管它有点笨拙。

另外我一直在阅读输入文件不会被拆分,除非它们是 5gb,

绝对不是这种情况。如果一个文件是可拆分的,你有很多关于如何拆分它的选项,例如配置mapred.max.split.size。我发现 [1] 很好地描述了可用的选项。

是否可以使用 emr+streaming 并在 s3 以外的地方输入?

是的。Elastic MapReduce 现在支持 VPC,因此您可以直接连接到 CDN [2]

[1] http://www.scribd.com/doc/23046928/Hadoop-Performance-Tuning

[2] http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/EnvironmentConfig_VPC.html?r=146

于 2011-12-30T18:07:15.527 回答