【问题标题】:Hive Query Number of mappers always 1Hive 查询映射器的数量始终为 1
【发布时间】:2014-01-02 10:03:11
【问题描述】:

我试图在一个分区上运行一个简单的查询,该分区有大约 200-300k 条记录,所有这些都是 120 字节的小文件。

我正在使用自定义 INPUTFORMAT 读取文件内容,然后查询另一个 s3 文件以获取实际数据。每个文件对应一个记录。

查询大约需要 6 小时才能完成。我在 EMR 上使用由 10 台 m2.4xlarge 类型的机器组成的集群。

查看日志,在启动作业和启动 map reduce 任务之间有一个小时的延迟。此外,映射器/任务的数量仅显示为 1。

 Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 0

我有什么遗漏吗?看起来根本没有并行执行。 我尝试设置以下属性,但没有任何改进:

mapreduce.job.counters.limit 1000
mapred.tasktracker.tasks.maximum 1000
mapred.tasktracker.map.tasks.maximum 100
mapred.tasktracker.reduce.tasks.maximum 95
mapred.map.tasks 100
mapred.child.java.opts -Xmx15048m
namenide-heap-size 15048

下面是表格和查询详情。

CREATE EXTERNAL TABLE IF NOT EXISTS sample(
         x string,
         y date,
     )
       PARTITIONED BY (date STRING)
       ROW FORMAT SERDE "com.gts.hive.analytics.store.serde.CustomSerDe"
       STORED AS INPUTFORMAT 'com.gts.hive.analytics.store.formats.mapred.GZipJsonFileInputFormat2'
       OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
       LOCATION 's3n://xyzlocation/';

ALTER TABLE sample ADD IF NOT EXISTS PARTITION(date='2013-12-31-07');

select x from sample;

【问题讨论】:

  • 集群中有多少个映射器?您在哪里设置了上面列出的所有属性(在 *-site.xml 文件中?)您没有提供信息来帮助解决为什么延迟一小时:例如是否有其他工作正在运行 - jobtracker 对正在运行的工作有什么看法? JT 对可用的 mapper/reducer 插槽有什么看法?
  • 在集群设置期间启动这些步骤时,我通过 API 传递所有这些属性。无论有没有这些设置,都没有任何改进。集群上没有运行其他作业。 1 小时的延迟与分区中的记录数成正比。我尝试了一个包含 100 条记录的示例分区,在这种情况下没有延迟。但是一旦记录数增加,延迟就会越来越多。 jobtracker 显示有 800 个可用的 map /reduce 插槽。但在整个作业执行期间只有 1 个插槽在使用。
  • JT 说集群拥有多少个 map/reduce 槽?
  • 我有 1 个主节点,8 个核心节点。 JT 显示 800 个 map 槽和 800 个 reduce 槽打开。
  • 您已经击中了大部分项目。只有其他我能想到的:设置 mapreduce.input.fileinputformat.split.maxsize=8000000 并检查您的 InputFormat。

标签: mapreduce hive elastic-map-reduce


【解决方案1】:

gzip 不可拆分,任何 gzip 数据的 Hadoop 处理都将导致一个映射器。您可以使用可拆分的压缩格式,例如 bzip。更多信息请访问http://comphadoop.weebly.com/

【讨论】:

    【解决方案2】:

    您可以尝试在查询末尾简单地添加cluster by rand(),我不太明白为什么,但似乎joingroup bycluster by 等为地图启用了某种洗牌-只有工作。否则减速器的数量会自动强制为 1。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-04
      • 1970-01-01
      • 2020-04-16
      相关资源
      最近更新 更多