amazonemr没有利用所有的节点

ecfsfe2w  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(368)

我正在使用4个核心节点。。
我正在使用配置单元对表运行查询。
各种查询似乎没有充分利用容量。
我的表由8个整型字段和大约1000行组成。
表格查询
从tbl中选择平均值(col1-col2);从tbl中选择计数(*);我试过的每一个问题都在产生
减速器数量=1,Map器数量=1
我试过使用set mapred.reduce.tasks=4;
但它不起作用。
最奇怪的是,当我使用mapred.job.tracker=local时,这意味着在本地节点上使用一个map和一个reduce,任务完成的速度是原来的两倍。
除一个插槽外,所有的reduce/map插槽一直处于打开状态。
为什么增加容量甚至不能稍微提高执行时间?我的数据样本是否太小,以至于增加容量无关紧要,而本地化Map和缩减实际上会缩短时间?

qco9c6ql

qco9c6ql1#

之所以使用单个Map器,是因为表太小了。我假设您的1000行表是一个比hdfs块大小小得多的文件。尝试一百万行或更大的表,您将开始看到它使用多个Map器。这个问题的答案有一些关于如何选择Map器数量的更多信息。
你得到一个单一减速机的原因是两件事的结合。首先,您处理的数据量很小(对于hive),因此最终只有一个reducer。第二,一些查询(如 COUNT(*) FROM some_table )必须有一个减速机(见这里的问题)
你明白为什么本地运行作业更快了。1000行表非常适合测试查询的逻辑,但不适合确定运行时之类的事情。在集群上运行配置单元而不是在本地运行配置单元可能只有在拥有gbs量级的数据时才会开始变得更好。hive绝对不是“适合工作的工具”,除非您进入至少涉及10个gbs的查询,尽管100个gbs或tbs(或更多)更容易证明。

相关问题