Hive提交的MapReduce任务执行中段挂起(从Running状态跳回为Accepted状态)问题解决记录

一个用Java写的计算程序通过JDBC的方式连接Hive数据库,执行SQL查询语句查询数据。结果对应的MapReduce任务执行到Map 18% Reduce xx%之后,所有的进度输出都变为了Map 0% Reduce 0%

在排查Java语句无问题后,kill掉了Job,由于Job的log已经不可查,直接尝试重新运行程序

新的Hive查询创建的MapReduce任务阻塞在了Accepted状态,无法开始Running

仔细检查了Hadoop的Web页面,发现当前集群的5个节点都变为了Unhealthy状态,可用的Memory和VCore都为0,推测应是资源不足的原因导致的任务无法开始执行

用“Hadoop Unhealthy”作为关键词,百度到的网页,有一些的做法是重启Yarn的NodeManager和ResourceManager,然而之前已经做过多次重启操作,并无效果

又找到了一篇文章,提到了Unhealthy原因是bad file,遂查看本集群的Unhealthy原因,发现也是bad file(包括local-file和log-file),确定为是剩余存储空间不足,导致yarn将五个节点都标记为不可用,因此整个集群处于无资源可以执行任务的状态

集群的5个节点,使用磁盘比例均达到90%以上,甚至更多,由于暂时无法进行数据转移和删除操作,找到了临时解决方法——提高节点健康度检查中磁盘占用的最大值,参考链接:http://stackoverflow.com/questions/29010039/yarn-unhealthy-nodes

更改$HADOOP_HOME/etc/hadoop/目录下的yarn-site.xml文件,增加property:

 <property>
     <name>yarn.nodemanager.disk-health-checker.min-healthy-disks</name>
     <value>0.0</value>
  </property>
  <property>
     <name>yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage</name>
     <value>99.0</value>
 </property>

为了为每个节点磁盘稍稍预留空间,此处的最大值设为了99%。

更改后,执行stop-yarn.sh和start-yarn.sh,重启NodeManager和ResourceManager,在Hadoop的Web页面刷新(http://namenode:8088//),可以看到节点重新回到了Headthy状态,有了可用的Memory和VCore资源,Job可以正常执行了。

不过以上还是权宜之计,为了让集群可以健康稳定的运行,还是需要及时对集群的磁盘进行清理,备份不常用的数据or补充存储设备

时间: 2024-07-31 00:37:07

Hive提交的MapReduce任务执行中段挂起(从Running状态跳回为Accepted状态)问题解决记录的相关文章

spark-submit 提交任务到yarn执行

spark-submit --name SparkSubmit_Demo --class com.luogankun.spark.WordCount --master yarn-client --executor-memory 1G --total-executor-cores 1 /home/spark/data/spark.jar hdfs://hadoop000:8020/hello.txt 注:提交yarn上执行需要配置HADOOP_CONF_DIR spark在提交时,所做的资源申请是

微信分享后跳回项目,为何不执行onResp

我是把分享的代码写在ShareViewController.m中的,不是像DEMO中通过委托让AppDelegate.m中来执行的.现在分享都可以了,也能跳回自己都项目,就是onResp执行不了. 放在AppDelegate里 在 [WXApi handleOpenURL:url delegate:self] 这个self 换成 ShareViewController的实例 - (BOOL)application:(UIApplication *)application handleOpenUR

Hive中跑MapReduce Job出现OOM问题分析及解决

一.引子 今天在跑一段很复杂而且涉及数据量10多年的N个表join的长SQL时,发生了OOM的异常. 由于一个map通常配置只有64MB或者128MB,则在Map阶段出现OOM的情况很少见.所以一般发生在reduce阶段. 但是今天这个异常详细的看后,会发现既不是map阶段,也不是reduce阶段,发现不是执行过程,而是driver提交job阶段就OOM了.Hive中XMLEncoder序列化MapredWork引发OutOfMemoryError XMLEncoder导致java.lang.O

hive命令的三种执行方式

hive命令的3种调用方式 方式1:hive –f  /root/shell/hive-script.sql(适合多语句) hive-script.sql类似于script一样,直接写查询命令就行 不进入交互模式,执行一个hive script 这里可以和静音模式-S联合使用,通过第三方程序调用,第三方程序通过hive的标准输出获取结果集. $HIVE_HOME/bin/hive -S -f /home/my/hive-script.sql (不会显示mapreduct的操作过程) 那么问题来了

MapReduce的执行过程.

作业在运行时,数据或者是作业调用的一个运行图. 用户写的代码通过JobClient提交给JobTracker Job对象中封装了JobClient JobConf和我们的Job对象几乎是一回事. 把我们的代码打包成jar包,上传到hdfs中,JobClient就会获得一个jar包在hdfs中的一个路径.它会把我们jar包的一个路径告诉我们的JobTracker,告诉JobTracker之后,就为jar添加一个新的Job对象,job对象就会使用一个类,JobInProgress类进行跟踪,Job对

记Hadoop2.5.0线上mapreduce任务执行map任务划分的一次问题解决

前言 近日在线上发现有些mapreduce作业的执行时间很长,我们需要解决这个问题.输入文件的大小是5G,采用了lzo压缩,整个集群的默认block大小是128M.本文将详细描述这次线上问题的排查过程. 现象 线上有一个脚本,为了便于展示,我将这个脚本重新copy了一份并重命名为zzz.这个脚本实际是使用Hadoop streaming运行一个mapreduce任务,在线上执行它的部分输出内容如下: 可以看到map任务划分为1个.这个执行过程十分漫长,我将中间的一些信息省略,map与reduce

hive udaf 用maven打包执行create temporary function 时报错

用maven打包写好的jar,在放到hive中作临时函数时报错. 错误信息如下: hive> create temporary function maxvalue as "com.leaf.data.Maximum"; java.lang.SecurityException: Invalid signature file digest for Manifest main attributes at sun.security.util.SignatureFileVerifier.p

mapreduce解析执行sql流程

样例准备 编号 姓名 性别 班级编号 1 name_1 male 1 2 name_2 female 2 3 name_3 male 3 4 name_4 female 4 5 name_5 male 1 6 name_6 female 2 7 name_7 male 3 8 name_8 female 4 9 name_9 male 1 10 name_10 female 2 11 name_11 male 3 12 name_12 female 4 13 name_13 male 1 14

C# WPF VS2012 对类型“ ”的构造函数执行符合指定的绑定约束的调用时引发了异常 问题解决办法 产生什么原因

运行程序时报 对类型"XX.XXX"的构造函数执行符合指定的绑定约束的调用时引发了异常 XX.XXX  代表命名空间.类 namespace Test { /// <summary> /// Test.xaml 的交互逻辑 /// </summary> public partial class Test : Test { public Test() { InitializeComponent(); // 报错位置 对类型" "的构造函数执行符