【问题标题】:Performance tuning for Amazon EMR / Hive processing large number of files in S3Amazon EMR / Hive 在 S3 中处理大量文件的性能调整
【发布时间】:2014-05-21 16:37:37
【问题描述】:

我正在尝试将 Amazon EMR 与 Hive 结合使用来处理由广告跟踪服务器生成的大量日志文件。性能比我预期的差很多,希望有人可以指点我改进。

跟踪服务器每隔几分钟将日志文件上传到按天分区的 S3 文件夹(例如,“2014-05-20”)。每天大约上传 3,000 个文件,每个文件大约 20k。

使用 Hive,我成功创建了引用 S3 中数据的外部表,并为 30 天的日志文件设置了分区。我已验证分区工作正常,简单查询(例如,“SELECT * FROM click WHERE dt='2014-05-19' LIMIT 10)工作正常并快速响应。

我正在将数据加载到临时 HDFS 表中以供后续查询。为此,我运行了一个本质上是这样的 HQL 作业(请注意,click 是 S3 中的外部表):

CREATE TABLE tmp_click (
    clickId string,
    -- ...
    dt string
)
STORED AS SEQUENCEFILE;

INSERT OVERWRITE TABLE tmp_click
    SELECT 
        clickId, 
            -- ...
            k.dt
    FROM
        click k
    WHERE
        k.dt >= '${START_DAY}' AND
        k.dt <=  '${END_DAY}'
;

此操作需要一个多小时,其中 25 个 xlarge 实例作为核心/任务节点工作。鉴于这里基本上没有进行任何处理——它只是复制数据,对吧? ——我觉得一定有什么我错过了。任何人都可以给我任何调查的提示吗?

我考虑过大量文件(约 3,000 天)或日志文件的压缩 (gz) 可能是问题,但我无法控制输入。

【问题讨论】:

    标签: hive amazon-emr


    【解决方案1】:

    您的查询必须同时处理 S3N 协议,在 S3 中列出文件并处理压缩。尝试使用 s3distcp 更快地将文件从 S3 复制到 HDFS,然后使用复制的文件创建一个表。

    【讨论】:

      猜你喜欢
      • 2018-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多