【发布时间】:2015-08-19 02:20:02
【问题描述】:
通过 AWS EMR 上的 Hive 或 Pig 从 S3 存储桶将许多小文件(>200000,4kbyte)加载到 HDFS 非常慢。似乎只有一个映射器用于获取数据,但我无法准确确定瓶颈在哪里。
猪代码示例
data = load 's3://data-bucket/' USING PigStorage(',') AS (line:chararray)
Hive 代码示例
CREATE EXTERNAL TABLE data (value STRING) LOCATION 's3://data-bucket/';
是否有任何已知设置可以加快处理速度或增加用于获取数据的映射器数量?
我尝试了以下没有任何明显效果:
- 增加#Task 节点
- 设置 hive.optimize.s3.query=true
- 手动设置#mappers
- 将实例类型从中等增加到 xlarge
我知道 s3distcp 会加快进程,但我只能通过进行大量调整(包括设置#workerThreads)来获得更好的性能,并且更喜欢直接在我的 PIG/Hive 脚本中更改参数。
【问题讨论】:
标签: amazon-web-services amazon-s3 hive apache-pig elastic-map-reduce