我知道这个简单的问题,我需要一些来自这个社区的查询的帮助,当我用ORC格式创建PartitionTable时,当我尝试从非分区表转储数据时指向2 GB文件的210列,我看Mapper的数量是2,reducer是2。有没有办法增加Mapper和reducer。我的假设是我们不能设置Mapper和reducer的数量,如MR 1.0 ,它基于设置,如纱线容器大小,Mapper最小内存和最大内存。任何人都可以建议我TEz计算映射器和减速器。保持内存大小设置的最佳价值是什么,这样我就不会遇到:Java堆空间,Java Out of Memory问题。我的文件大小可能增长到100GB。请帮帮我。
答案 0 :(得分:1)
您仍然可以在Yarn中设置映射器和缩减器的数量。你试过吗?如果是这样,请回到这里。
Yarn更改了底层执行机制,但#mappers和#reducers正在描述作业要求 - 而不是作业资源的分配方式(纱线和mrv1的不同之处)。
传统Map / Reduce具有硬编码的地图编号并减少“插槽”。正如你所说 - Yarn使用容器 - 这是每个应用程序。纱线因此更加灵活。但在这两种情况下,#mappers和#reducers都是作业的 输入 。而且在这两种情况下,映射器和缩减器的实际数量可能与请求的数量不同。 #reducers通常是
答案 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设置为与容器大小通常会导致问题的值相同。