Amazon web services 从S3读取许多小文件的速度非常慢
在AWS EMR上,通过Hive或Pig将许多小文件(大于200000,4KB)从S3存储桶加载到HDFS非常慢。似乎只有一个映射器被用来获取数据,尽管我不能准确地找出瓶颈在哪里 清管器代码样本Amazon web services 从S3读取许多小文件的速度非常慢,amazon-web-services,amazon-s3,hive,apache-pig,elastic-map-reduce,Amazon Web Services,Amazon S3,Hive,Apache Pig,Elastic Map Reduce,在AWS EMR上,通过Hive或Pig将许多小文件(大于200000,4KB)从S3存储桶加载到HDFS非常慢。似乎只有一个映射器被用来获取数据,尽管我不能准确地找出瓶颈在哪里 清管器代码样本 data = load 's3://data-bucket/' USING PigStorage(',') AS (line:chararray) CREATE EXTERNAL TABLE data (value STRING) LOCATION 's3://data-bucket/'; 配置
data = load 's3://data-bucket/' USING PigStorage(',') AS (line:chararray)
CREATE EXTERNAL TABLE data (value STRING) LOCATION 's3://data-bucket/';
配置单元代码示例
data = load 's3://data-bucket/' USING PigStorage(',') AS (line:chararray)
CREATE EXTERNAL TABLE data (value STRING) LOCATION 's3://data-bucket/';
是否有任何已知的设置可以加快进程或增加用于获取数据的映射器的数量
我尝试了以下方法,但没有任何明显的效果:
- 增加#任务节点
- 设置hive.optimize.s3.query=true
- 手动设置#映射器
- 将实例类型从中等增加到xlarge
// to set mapper = nb block size. Set to true for one per file.
SET pig.noSplitCombination false;
// set size to have SUM(size) / X = wanted number of mappers
SET pig.maxCombinedSplitSize 250000000;
请提供这些案例的指标谢谢您的回答,但我的问题中已经提到了您的两个选项。1)我知道s3distcp是一个选项,虽然我只能通过大量参数调整来获得这些“承诺”的性能增益,但它似乎不是很优化,但仍然很好。2) 这正是我想要的,但pig似乎只运行一个映射作业来获取数据,而且速度非常慢。。。