`

MapredLocalTask报错

阅读更多

转个解决 MapredLocalTask的帖子

我的问题是目录没有其他用户读权限,所以报错

 

http://vase.iteye.com/blog/2090320

不知道是不是hive-0.12版增强了local mode的原因,在之前版本运行好好的Hive-QL在这个版本上错误频频,折磨一天多以后终于定位到原因,把在内部的总结在这再记录下,希望对遇到同样问题的筒子们有所帮助。

 

部分一 关于return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask

Hive升级到0.12版之后,若干原来在0.10上执行正常的SQL会在新版上报错误 “return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask”,查看hive执行日志,从中找到如下错误

 

Java代码  收藏代码
  1. Total MapReduce jobs = 1  
  2. java.io.IOException: Cannot run program "/data/opt/hadoop_cdh5/bin/hadoop" (in directory "/root"): error=13, 权限不够  
  3.         at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)  
  4.         at java.lang.Runtime.exec(Runtime.java:617)  
  5.         at java.lang.Runtime.exec(Runtime.java:450)  
  6.         at org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask.execute(MapredLocalTask.java:253)  
  7.         at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:151)  
  8.         at org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:65)  
  9.         at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:1485)  
  10.         at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1263)  
  11.         at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1091)  
  12.         at org.apache.hadoop.hive.ql.Driver.run(Driver.java:931)  
  13.         at org.apache.hadoop.hive.ql.Driver.run(Driver.java:921)  
  14.         at org.apache.hadoop.hive.service.HiveServer$HiveServerHandler.execute(HiveServer.java:198)  
  15.         at org.apache.hadoop.hive.service.ThriftHive$Processor$execute.getResult(ThriftHive.java:644)  
  16.         at org.apache.hadoop.hive.service.ThriftHive$Processor$execute.getResult(ThriftHive.java:628)  
  17.         at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)  
  18.         at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)  
  19.         at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:244)  
  20.         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)  
  21.         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)  
  22.         at java.lang.Thread.run(Thread.java:744)  
  23. Caused by: java.io.IOException: error=13, 权限不够  
  24.         at java.lang.UNIXProcess.forkAndExec(Native Method)  
  25.         at java.lang.UNIXProcess.<init>(UNIXProcess.java:135)  
  26.         at java.lang.ProcessImpl.start(ProcessImpl.java:130)  
  27.         at java.lang.ProcessBuilder.start(ProcessBuilder.java:1022)  
  28.         ... 19 more  
  29. FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask  

 

 

从上边错误及下边报错的类MapredLocalTask可以看出跟本地任务有关

hive从0.7版以后,为了提高小数据的计算速度,增加了本地模式,即将hdfs上的数据拉到hiveserver本地进行计算,可以通过以下几个参数对相关行为进行设置

 

hive.exec.mode.local.auto=false
hive.exec.mode.local.auto.input.files.max=4
hive.exec.mode.local.auto.inputbytes.max=134217728
其中第一个为不启用本地模式,第二个参数表示文件数小于4时使用本地模式,第三个参数表示文件大小小于128m时采用本地模式
默认为不启用本地模式;在启用的情况下,满足第二、三个条件中的任意一个都会使用本地模式。
        在之前我们用过的0.8.1、0.10版上都未遇到过上述错误,怀疑是现在0.12版本的问题突然导致上述错误。任务是在root用户下通过crontab调用的,进入shell后先启动hiveserver,所以默认工作目录其实是/root;为了能正常读写hdfs上的文件,hiveserver在启动时切换到了hdfs用户,一旦遇到上述两种满足启用本地模式的情况,hdfs用户试图向当前工作目录/root拉取数据,必然没有权限从而导致以上错误。
        理清问题所在就好办了,我们可以先创建一个目录,把用户、用户组授权给hdfs,进入shell后,先切换工作目录,然后再启动hiveserver即可。如hdfs的home目录/home/hdfs
然后在任务shell的公共配置文件conf/kettle.conf中增加一行切换目录脚本即可解决以上问题
cd /home/hdfs
部分二   关于return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask

类似上一篇中return code 1的问题,这个也是跟hive本地任务有关系。

从hive的日志中可以找到出错时本地日志文件,如下:


 

 查看日志文件内容

Java代码  收藏代码
  1. 2014-07-10 11:50:37,606 INFO  mr.ExecDriver (SessionState.java:printInfo(417)) - Execution log at: /tmp/hdfs/hdfs_20140710114949_ab4d1d02-0637-4abd-9e45-2a27c5d740d9.log  
  2. 2014-07-10 11:50:37,711 WARN  conf.Configuration (Configuration.java:loadProperty(2358)) - file:/tmp/hdfs/hive_2014-07-10_11-49-37_877_2428431256361163465-1/-local-10009/jobconf  
  3. 2014-07-10 11:50:37,720 WARN  conf.Configuration (Configuration.java:loadProperty(2358)) - file:/tmp/hdfs/hive_2014-07-10_11-49-37_877_2428431256361163465-1/-local-10009/jobconf  
  4. 2014-07-10 11:50:37,798 INFO  log.PerfLogger (PerfLogger.java:PerfLogBegin(97)) - <PERFLOG method=deserializePlan from=org.apache.hadoop.hive.ql.exec.Utilities>  
  5. 2014-07-10 11:50:37,798 INFO  exec.Utilities (Utilities.java:deserializePlan(732)) - Deserializing MapredLocalWork via kryo  
  6. 2014-07-10 11:50:38,043 INFO  log.PerfLogger (PerfLogger.java:PerfLogEnd(124)) - </PERFLOG method=deserializePlan start=1404964237798 end=1404964238043 duration=245 from=org.apa  
  7. 2014-07-10 11:50:38,050 INFO  mr.MapredLocalTask (SessionState.java:printInfo(417)) - 2014-07-10 11:50:38   Starting to launch local task to process map join;  maximum memory =  
  8. 2014-07-10 11:50:38,059 INFO  mr.MapredLocalTask (MapredLocalTask.java:initializeOperators(389)) - fetchoperator for t2:t_tmp_user_first_login created  
  9. 2014-07-10 11:50:38,198 INFO  exec.TableScanOperator (Operator.java:initialize(338)) - Initializing Self 0 TS  
  10. 2014-07-10 11:50:38,198 INFO  exec.TableScanOperator (Operator.java:initializeChildren(403)) - Operator 0 TS initialized  
  11. 2014-07-10 11:50:38,199 INFO  exec.TableScanOperator (Operator.java:initializeChildren(407)) - Initializing children of 0 TS  
  12. 2014-07-10 11:50:38,199 INFO  exec.SelectOperator (Operator.java:initialize(442)) - Initializing child 1 SEL  
  13. 2014-07-10 11:50:38,199 INFO  exec.SelectOperator (Operator.java:initialize(338)) - Initializing Self 1 SEL  
  14. 2014-07-10 11:50:38,605 ERROR mr.MapredLocalTask (MapredLocalTask.java:executeFromChildJVM(324)) - Hive Runtime Error: Map local work failed  
  15. java.lang.RuntimeException: java.lang.ClassNotFoundException: com.renren.hive.date.GetWeekISO  
  16.     at org.apache.hadoop.hive.ql.udf.generic.GenericUDFBridge.getUdfClass(GenericUDFBridge.java:132)  
  17.     at org.apache.hadoop.hive.ql.exec.FunctionRegistry.isStateful(FunctionRegistry.java:1474)  
  18.     at org.apache.hadoop.hive.ql.exec.FunctionRegistry.isDeterministic(FunctionRegistry.java:1437)  
  19.     at org.apache.hadoop.hive.ql.exec.ExprNodeGenericFuncEvaluator.isDeterministic(ExprNodeGenericFuncEvaluator.java:132)  
  20.     at org.apache.hadoop.hive.ql.exec.ExprNodeEvaluatorFactory.iterate(ExprNodeEvaluatorFactory.java:83)  
  21.     at org.apache.hadoop.hive.ql.exec.ExprNodeEvaluatorFactory.toCachedEval(ExprNodeEvaluatorFactory.java:73)  
  22.     at org.apache.hadoop.hive.ql.exec.SelectOperator.initializeOp(SelectOperator.java:59)  
  23.     at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:377)  
  24.     at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:453)  
  25.     at org.apache.hadoop.hive.ql.exec.Operator.initializeChildren(Operator.java:409)  
  26.     at org.apache.hadoop.hive.ql.exec.TableScanOperator.initializeOp(TableScanOperator.java:188)  
  27.     at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:377)  
  28.     at org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask.initializeOperators(MapredLocalTask.java:408)  
  29.     at org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask.executeFromChildJVM(MapredLocalTask.java:302)  
  30.     at org.apache.hadoop.hive.ql.exec.mr.ExecDriver.main(ExecDriver.java:728)  
  31.     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
  32.     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)  
  33.     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  
  34.     at java.lang.reflect.Method.invoke(Method.java:606)  
  35.     at org.apache.hadoop.util.RunJar.main(RunJar.java:212)  
  36. Caused by: java.lang.ClassNotFoundException: com.renren.hive.date.GetWeekISO  
  37.     at java.net.URLClassLoader$1.run(URLClassLoader.java:366)  
  38.     at java.net.URLClassLoader$1.run(URLClassLoader.java:355)  
  39.     at java.security.AccessController.doPrivileged(Native Method)  
  40.     at java.net.URLClassLoader.findClass(URLClassLoader.java:354)  
  41.     at java.lang.ClassLoader.loadClass(ClassLoader.java:425)  
  42.     at java.lang.ClassLoader.loadClass(ClassLoader.java:358)  
  43.     at java.lang.Class.forName0(Native Method)  
  44.     at java.lang.Class.forName(Class.java:270)  
  45.     at org.apache.hadoop.hive.ql.udf.generic.GenericUDFBridge.getUdfClass(GenericUDFBridge.java:130)  

     由上可知,这次是找不到UDF的类(如遇到其他情况,需要具体问题具体分析),虽然在进入hive的时候通过add jar语句将自定义函数的jar包添加到hadoop集群,但在本地模式时确找不到了。定位到问题就好解决了:既然是local模式找不到udf jar包,说明在add jar步骤只是向当前job在hdfs上的工作目录下添加了,无视本地工作目录;那么我们就直接把udf的jar包copy到hive的lib目录下,测 试正常。

     该问题在之前用过的hive 0.10、0.8.1中都未遇到过,初步猜测跟0.12版的bug有关,具体原因就需要花时间翻代码对照前后版本的变动了

 

从org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask代码中看,还有return code 3的情况,现在幸运的尚未遇到,遇到后再补记录

分享到:
评论

相关推荐

    hive on spark mr 数据开发常见问题解决

    如果看到`FAILED: Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask`,这可能是因为MapJoin操作导致的问题。为避免这类错误,可以尝试设置`hive.auto.convert.join = false...

    离散数学课后题答案+sdut往年试卷+复习提纲资料

    离散数学课后题答案+sdut往年试卷+复习提纲资料

    智能点阵笔项目源代码全套技术资料.zip

    智能点阵笔项目源代码全套技术资料.zip

    英文字母手语图像分类数据集【已标注,约26,000张数据】

    英文字母手语图像分类数据集【已标注,约26,000张数据】 分类个数【28】:a、b、c等【具体查看json文件】 划分了训练集、测试集。存放各自的同一类数据图片。如果想可视化数据集,可以运行资源中的show脚本。 CNN分类网络改进:https://blog.csdn.net/qq_44886601/category_12858320.html 【更多图像分类、图像分割(医学)、目标检测(yolo)的项目以及相应网络的改进,可以参考本人主页:https://blog.csdn.net/qq_44886601/category_12803200.html】

    (31687028)PID控制器matlab仿真.zip

    标题中的“PID控制器matlab仿真.zip”指的是一个包含PID控制器在MATLAB环境下进行仿真的资源包。PID(比例-积分-微分)控制器是一种广泛应用的自动控制算法,它通过结合当前误差、过去误差的积分和误差变化率的微分来调整系统输出,以达到期望的控制效果。MATLAB是一款强大的数学计算软件,而Simulink是MATLAB的一个扩展模块,专门用于建模和仿真复杂的动态系统。 描述中提到,“PID控制器——MATLAB/Simulink仿真以及性能比较与分析”表明这个资源包不仅提供了PID控制器的模型,还可能包括对不同参数配置下的性能比较和分析。博主分享的是“最新升级版框架的Simulink文件”,意味着这些文件基于最新的MATLAB版本进行了优化,确保了与不同版本的MATLAB(从2015a到2020a共11个版本)的兼容性,这为用户提供了广泛的应用范围。 标签中的“PID”、“matlab”、“simulink”、“博文附件”和“多版本适用”进一步细化了内容的关键点。这表示该资源包是博客文章的附加材料,专门针对PID控制器在MATLAB的Simulink环境中进行仿真实验。多

    MATLAB代码:考虑P2G和碳捕集设备的热电联供综合能源系统优化调度模型 关键词:碳捕集 综合能源系统 电转气P2G 热电联产 低碳调度 参考文档:Modeling and Optimiza

    MATLAB代码:考虑P2G和碳捕集设备的热电联供综合能源系统优化调度模型 关键词:碳捕集 综合能源系统 电转气P2G 热电联产 低碳调度 参考文档:《Modeling and Optimization of Combined Heat and Power with Power-to-Gas and Carbon Capture System in Integrated Energy System》完美复现 仿真平台:MATLAB yalmip+gurobi 主要内容:代码主要做的是一个考虑电转气P2G和碳捕集设备的热电联供综合能源系统优化调度模型,模型耦合CHP热电联产单元、电转气单元以及碳捕集单元,并重点考虑了碳交易机制,建立了综合能源系统运行优化模型,模型为非线性模型,采用yalmip加ipopt对其进行高效求解,该模型还考虑了碳排放和碳交易,是学习低碳经济调度必备程序 代码非常精品,注释保姆级 这段代码是一个用于能源系统中的综合能源系统(Integrated Energy System)建模和优化的程序。它使用了MATLAB的优化工具箱和SDP(半定规划)变量来定义决策变

    中国飞行器设计大赛圆筒权重文件

    中国飞行器设计大赛圆筒权重文件

    java毕设项目之ssm社区文化宣传网站+jsp(完整前后端+说明文档+mysql+lw).zip

    项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 服务器:tomcat7

    风光储、风光储并网直流微电网simulink仿真模型 系统由光伏发电系统、风力发电系统、混合储能系统(可单独储能系统)、逆变器VSR+大电网构成 光伏系统采用扰动观察法实现mppt控

    风光储、风光储并网直流微电网simulink仿真模型。 系统由光伏发电系统、风力发电系统、混合储能系统(可单独储能系统)、逆变器VSR+大电网构成。 光伏系统采用扰动观察法实现mppt控制,经过boost电路并入母线; 风机采用最佳叶尖速比实现mppt控制,风力发电系统中pmsg采用零d轴控制实现功率输出,通过三相电压型pwm变器整流并入母线; 混合储能由蓄电池和超级电容构成,通过双向DCDC变器并入母线,并采用低通滤波器实现功率分配,超级电容响应高频功率分量,蓄电池响应低频功率分量,有限抑制系统中功率波动,且符合储能的各自特性。 并网逆变器VSR采用PQ控制实现功率入网 以下是视频讲解文案: 接下来我来介绍一下 就是这个风光储直流微电网 整个仿真系统的一些架构啊 然后按照需求呢正常的讲一些 多讲一些 就是储能的这块的 还有这个并网的 三相两电瓶调的这个 并网继变器的这个模块 首先就是来介绍一下呃 整个系统的一个架构 你可以看到这个系统的架构 分别有四大部分组成 最左边的这块就是混合储能啊 这边这个是蓄电池 这个超级电容 他们都是

    ajax发请求示例.txt

    ajax发请求示例.txt

    深圳建筑安装公司“电工安全技术操作规程”.docx

    深圳建筑安装公司“电工安全技术操作规程”

    220) Vinkmag - 多概念创意报纸新闻杂志 WordPress v5.0.zip

    220) Vinkmag - 多概念创意报纸新闻杂志 WordPress v5.0.zip

    智力残疾评定标准一览表.docx

    智力残疾评定标准一览表.docx

    MDIN380 SDI转VGA 转LVDS VGA转SDI 高清视频处理 MDIN380芯片 PCB代码方案资料 3G-SDI转VGA ?3G-SDI转LVDS ?高清视频 MDIN380、GV76

    MDIN380 SDI转VGA 转LVDS VGA转SDI 高清视频处理 MDIN380芯片 PCB代码方案资料 3G-SDI转VGA ?3G-SDI转LVDS ?高清视频 MDIN380、GV7601 芯片方案(PCB图和源码)。 此方案是韩国视频处理芯片MDIN380的整合应用方案。 3G-SDI转VGA或3G-SDI转LVDS。 方案共有两块电路板(一块底板,一块MDIN380核心板 四层板)。 MDIN380和GV7601 都是BGA封装,最好有焊接BGA经验才拿。 另外有视频处理方面其它需要可联系我定制开发。 其它视频格式转,视频图像分割、拼接等可定制开发。 方案资料含有源码、PCB图。 方案已有成熟产品在应用。 注意该资料没有原理图,只有PCB图。 代码环境编译KEIL4。 画图软件Protel99、AD10。 电子文档资料

    YOLO算法-锡罐-牙罐-盖子打开数据集-179张图像带标签-锡罐-牙罐-盖子打开.zip

    YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;

    G120 EPOS基本定位功能关键点系列-堆垛机报F7452追踪原因.mp4

    G120 EPOS基本定位功能关键点系列_堆垛机报F7452追踪原因.mp4

    java毕设项目之ssm亚盛汽车配件销售业绩管理统+jsp(完整前后端+说明文档+mysql+lw).zip

    项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 服务器:tomcat7

    zigbee CC2530无线自组网协议栈系统代码实现协调器与终端基于GenericApp的无线收发例程.zip

    1、嵌入式物联网单片机项目开发例程,简单、方便、好用,节省开发时间。 2、代码使用IAR软件开发,当前在CC2530上运行,如果是其他型号芯片,请自行移植。 3、软件下载时,请注意接上硬件,并确认烧录器连接正常。 4、有偿指导v:wulianjishu666; 5、如果接入其他传感器,请查看账号发布的其他资料。 6、单片机与模块的接线,在代码当中均有定义,请自行对照。 7、若硬件有差异,请根据自身情况调整代码,程序仅供参考学习。 8、代码有注释说明,请耐心阅读。 9、例程具有一定专业性,非专业人士请谨慎操作。

    基于小程序的小区物业新冠疫情物资管理平台小程序源代码(java+小程序+mysql+LW).zip

    系统可以提供信息显示和相应服务,其管理小区物业新冠疫情物资管理平台信息,查看小区物业新冠疫情物资管理平台信息,管理小区物业新冠疫情物资管理平台。 项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 部署容器:tomcat7 小程序开发工具:hbuildx/微信开发者工具

    亲测源码云赏V7.0微信视频打赏系统源码已测试完整无错版

    云赏V7.0包括V6的所有功能外,全新UI设计,代理可以选择8种风格,添加后台统计等多种功能。 1基本设置(网站基础信息配置、包括主域名、防封尾缀、url.cnt.cn短连接接口可切换); 2转跳域名(10层防守转跳,都输入的话,都会转跳到对应的地方在跳回来,在随机取用落地); 3落地域名(添加落地域名及设置默认落地域名); 4视频列表(添加视频批量添加外链视频给代理们获取); 5代理推广:代理使用推广链接发展下级代理,后台设置提成); 6代理列表(生成邀请码注册,手动添加代理); 7提现记录(用于结算代理们的提现); 8余额记录(记录代理的余额变动); 9订单记录(记录打赏数,今日收入)。 测试环境: Nginx 1.18+PHP56+MySQL5.6,详细教程见文件内文字教程。 后台账号:admin 密码:admin888

Global site tag (gtag.js) - Google Analytics