如何在Apache TEZ中增加Mappers和Reducer

时间:2015-03-02 23:00:55

标签: mapreduce hive yarn hiveql hdinsight

我知道这个简单的问题,我需要一些来自这个社区的查询的帮助,当我用ORC格式创建PartitionTable时,当我尝试从非分区表转储数据时指向2 GB文件的210列,我看Mapper的数量是2,reducer是2。有没有办法增加Mapper和reducer。我的假设是我们不能设置Mapper和reducer的数量,如MR 1.0 ,它基于设置,如纱线容器大小,Mapper最小内存和最大内存。任何人都可以建议我TEz计算映射器和减速器。保持内存大小设置的最佳价值是什么,这样我就不会遇到:Java堆空间,Java Out of Memory问题。我的文件大小可能增长到100GB。请帮帮我。

2 个答案:

答案 0 :(得分:1)

您仍然可以在Yarn中设置映射器和缩减器的数量。你试过吗?如果是这样,请回到这里。

Yarn更改了底层执行机制,但#mappers和#reducers正在描述作业要求 - 而不是作业资源的分配方式(纱线和mrv1的不同之处)。

传统Map / Reduce具有硬编码的地图编号并减少“插槽”。正如你所说 - Yarn使用容器 - 这是每个应用程序。纱线因此更加灵活。但在这两种情况下,#mappers和#reducers都是作业的 输入 。而且在这两种情况下,映射器和缩减器的实际数量可能与请求的数量不同。 #reducers通常是

  • (a)正是所要求的数字
  • (b)恰好是一个减速器 - 即如果工作需要它,如总排序

答案 1 :(得分:1)

对于内存设置,如果您使用带有tez的配置单元,则以下2个设置将对您有用:

1)hive.tez.container.size - 这是将使用的Yarn Container的大小(以MB为单位的值)。

2)hive.tez.java.opts - 这是用于每个任务的java opts。如果容器大小设置为1024 MB,请将java opts设置为类似“-Xmx800m”而不是“-Xmx1024m”。 YARN会杀死使用比指定容器大小更多内存的进程,并且假定java进程的内存占用量通常超过指定的Xmx值,将Xmx设置为与容器大小通常会导致问题的值相同。