我用的是apache hive。我在配置单元中创建了一个表(类似于外部表),并使用 LOAD DATA LOCAL INPATH './Desktop/loc1/kv1.csv' OVERWRITE INTO TABLE adih;
命令。
虽然我能够从配置单元表adih中检索简单的数据(例如。 select * from adih
, select c_code from adih limit 1000
等),当我请求涉及轻微计算的数据(例如。 select count(*) from adih
, select distinct(c_code) from adih
).
配置单元cli输出如以下链接所示-
配置单元>选择distinct add\ U user from adih;
查询id=latize\ U 20161031155801\ U 8922630f-0455-426b-aa3a-6507aa0014c6
总工作=1
正在启动作业1(共1个)
未指定reduce任务数。根据输入数据大小估计:1
要更改减速器的平均负载(以字节为单位):
设置hive.exec.reducers.bytes.per.reducer=
为了限制减速器的最大数量:
设置hive.exec.reducers.max=
为了设置恒定数量的减速器:
设置mapreduce.job.reduces=
起始作业=作业\u 1477889812097 \u 0006,跟踪url=http://latize-data1:20005/代理/应用程序\u 1477889812097 \u 0006/
kill命令=/opt/hadoop-2.7.1/bin/hadoop job-kill job\u 1477889812097\u 0006
[6] +停止$hive\u home/bin/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的ram,mapreduce.map.memory.mb设置为4 gb,mapreduce.reduce.memory.mb设置为12 gb。减速器数量当前设置为默认值(-1)。另外,配置单元配置为使用mysql数据库(而不是derby)运行。
3条答案
按热度按时间p5fdfcr11#
我设法让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的数量(通过应用其启发式技术)。
m528fe3b2#
您应该为跟踪中显示的属性设置适当的值,
例如:编辑hive-site.xml中的属性
jgwigjjp3#
看起来您已经设置了mapred.reduce.tasks=-1,这使得配置单元引用其配置来决定reduce任务的数量。您将收到一个错误,因为配置单元配置中缺少缩减器的数量。尝试使用以下命令进行设置:
配置单元>设置mapreduce.job.reduces=xx
根据官方文件:正确的减少数量似乎是0.95或1.75乘以(<节点数量>*<每个节点的最大容器数量>)。