amazon web服务—从s3读取许多小文件的速度非常慢

hpxqektj  于 2021-06-25  发布在  Pig
关注(0)|答案(1)|浏览(667)

在aws emr上通过hive或pig将许多小文件(>200000,4kbyte)从s3 bucket加载到hdfs非常慢。似乎只有一个Map器被用来获取数据,尽管我不能确切地找出瓶颈在哪里。
清管器代码示例

data = load 's3://data-bucket/'  USING PigStorage(',') AS (line:chararray)

配置单元代码示例

CREATE EXTERNAL TABLE data (value STRING) LOCATION  's3://data-bucket/';

是否有任何已知的设置可以加快进程或增加用于获取数据的Map器的数量?
我尝试了以下方法,但没有任何明显的效果:
增加#任务节点
设置hive.optimize.s3.query=true
手动设置#Map器
将示例类型从中型增加到xlarge
我知道s3distcp会加快进程,但我只能通过做很多调整(包括设置#workerthreads)来获得更好的性能,我更喜欢直接在pig/hive脚本中更改参数。

afdcj2ne

afdcj2ne1#

您可以:
在作业开始之前,使用distcp合并文件:http://snowplowanalytics.com/blog/2013/05/30/dealing-with-hadoops-small-files-problem/
有一个Pig脚本,可以为你做,一次。
如果你想通过pig来实现,你需要知道有多少Map器被生成。您可以使用以下参数:

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

请提供这些案例的指标

相关问题