启动作业并生成跟踪URL后,Hive查询不会启动MapReduce进程

时间:2016-10-31 09:19:00

标签: mysql hadoop mapreduce hive yarn

我正在使用Apache Hive。 我在Hive中创建了一个表(类似于外部表),并使用LOAD DATA LOCAL INPATH './Desktop/loc1/kv1.csv' OVERWRITE INTO TABLE adih;命令将数据加载到同一个表中。

虽然我能够从hive表adih(例如select * from adihselect c_code from adih limit 1000等)检索简单数据,但当我要求涉及轻微计算的数据时,Hive会给我错误(例如{{1 },select count(*) from adih)。

Hive cli输出如以下链接所示 -

  

蜂房>从adih中选择不同的add_user;

     

查询ID = latize_20161031155801_8922630f-0455-426b-aa3a-6507aa0014c6

     

总工作数= 1

     

从1开始工作1

     

未指定的减少任务数。根据输入数据大小估算:1

     

为了更改减速器的平均负载(以字节为单位):

     

设置hive.exec.reducers.bytes.per.reducer =

     

为了限制减速器的最大数量:

     

设置hive.exec.reducers.max =

     

为了设定一定数量的减速器:

     

设置mapreduce.job.reduces =

     

开始工作= job_1477889812097_0006,跟踪网址= http://latize-data1:20005/proxy/application_1477889812097_0006/

     

Kill Command = /opt/hadoop-2.7.1/bin/hadoop job -kill job_1477889812097_0006

     

[6] +停止$ HIVE_HOME / bin / hive

Hive停止显示" Kill Command"

的最后一行以外的任何进一步的日志/操作

不知道我哪里出错(StackOverflow上的许多答案往往指向YARN配置(下面详细介绍了环境配置)。 我也有日志,但它包含超过30000个字符(堆栈溢出限制)

我的hadoop环境配置如下 - 1名称节点& 1个数据节点。每个都有20 GB的RAM和足够的ROM。已为 yarn.scheduler.maximum-allocation-mb yarn.nodemanager.resource.memory-mb 分配了13 GB的内存,每个内容都包含 mapreduce.map .memory.mb 设置为4 GB, mapreduce.reduce.memory.mb 设置为12 GB。减速器数量当前设置为默认值(-1)。此外,Hive配置为使用MySQL DB(而不是Derby)运行。

3 个答案:

答案 0 :(得分:1)

您应该为跟踪中显示的属性

设置适当的值

例如:编辑hive-site.xml中的属性

 <property>
<name>hive.exec.reducers.bytes.per.reducer</name>
<value>67108864</value></property>

答案 1 :(得分:1)

看起来你已经设置了mapred.reduce.tasks = -1,这使得Hive引用它的配置来决定reduce任务的数量。 由于Hive配置中缺少reducer的数量,因此收到错误。 尝试使用以下命令设置它:

蜂房&GT; SET mapreduce.job.reduces = XX

根据官方文档:正确的减少数量似乎是0.95或1.75乘以(&lt;节点数&gt; *&lt;每个节点的最大容器数&gt;)。

答案 2 :(得分:0)

我设法让Hive和MR工作 - 增加了所涉及的所有进程的内存配置: 增加分配给YARN Scheduler的RAM和分配给YARN Nodemanager的最大RAM(在yarn-site.xml中),同时增加分配给Mapper和Reducer的RAM(在mapred-site.xml中)。 @Sathiyan S和@vmorusu的答案中还包含了部分答案 - 将hive.exec.reducers.bytes.per.reducer属性设置为1 GB的数据,这直接影响Hive使用的reducer数量(通过应用其启发式算法)技术)。