解决Hive内聚函数执行报错及MapReduce测试
"在尝试执行HiveQL语句时遇到与MapReduce相关的问题,特别是当使用内聚函数如count或sum时,作业会失败且没有MapReduce任务被启动。错误信息显示Stage-1的mapper和reducer数量均为0,表明MapReduce作业没有成功启动。尝试过调整内存分配、检查依赖包和验证Hadoop与Hive版本兼容性,但问题依然存在。为确定问题源头,通过执行Hadoop的WordCount示例程序来检查MapReduce是否能够正常工作,步骤包括创建input目录,上传数据,运行WordCount程序,并检查output目录的输出结果。" 在Hadoop和Hive的环境中,MapReduce是执行复杂计算任务的关键组件。当Hive查询涉及到聚合操作(如count、sum等)时,它们通常需要MapReduce作业来完成分布式计算。然而,上述描述中遇到的问题表明MapReduce作业没有启动,这可能是由多种因素导致的。 首先,内存配置可能是一个常见问题。Hadoop和Hive都需要正确配置内存参数,如mapreduce.map.memory.mb和mapreduce.reduce.memory.mb,以确保任务可以顺利运行。如果分配的内存不足,MapReduce作业可能会因为内存压力而失败。因此,检查并适当调整这些参数以适应数据规模和集群资源是非常必要的。 其次,缺少或错误的依赖包也可能导致问题。Hive依赖于Hadoop生态系统的各种库,包括Hadoop自身的jar文件和Hive自己的库。确保所有必需的库都已经添加到类路径(classpath)并且版本匹配是解决此问题的关键。 此外,Hadoop和Hive的版本兼容性也是个常见问题。不同的Hadoop版本可能有不同的API,如果Hive构建针对的是某个特定版本的Hadoop,而在不同版本的Hadoop集群上运行,可能会导致兼容性问题。确认Hadoop和Hive的版本匹配,并遵循官方文档的指导进行安装和配置。 执行WordCount程序作为诊断步骤,是因为它是Hadoop MapReduce的一个基础示例,用于统计文本中单词出现的次数。如果这个简单的任务可以成功运行,那么问题很可能出在Hive与MapReduce的交互上,而非MapReduce本身。通过观察WordCount的结果,可以确定MapReduce环境是否正常运作。 如果WordCount运行成功,但Hive查询仍然失败,可能需要进一步检查Hive的配置文件(如hive-site.xml),查看是否存在错误的配置项,或者是否正确指定了Hadoop的路径。另外,日志文件(如yarn.log和mapred syslog)通常包含更详细的错误信息,可以帮助定位问题的具体原因。 解决Hive中MapReduce任务不启动的问题通常涉及检查和调整内存配置、验证依赖包的完整性和版本兼容性,以及利用简单的MapReduce任务进行故障排查。通过上述步骤,应该能够找出并修复问题,使Hive能够正确地利用MapReduce执行复杂的SQL查询。
Hadoop job information for Stage-1: number of mappers: 0; number of reducers: 0
2016-01-29 09:33:44,118 Stage-1 map = 0%, reduce = 0%
Ended Job = job_1454031176192_0001 with errors
Error during job, obtaining debugging information...
FAILED: Execution Error, return code 2 from
org.apache.hadoop.hive.ql.exec.mr.MapRedTask
MapReduce Jobs Launched:
Stage-Stage-1: HDFS Read: 0 HDFS Write: 0 FAIL
Total MapReduce CPU Time Spent: 0 msec
很明显mapreduce根本就没启动,进度都是0,网上查找原因,有的说是map分配内存不合理,有的说是少了包,还有的说是hadoop和hive的版本不兼容。。。都没能解决问题
解决方法:
用系统自带的WordCount程序测试mapreduce能不能正常启动,看到底是mapreduce的问题还是hive运行的问题:
1、在hdfs上创建input目录,WordCount程序默认调用这个文件夹下的文件作为输入---hadoop fs -mkdir /input,默认output作为输出,如果原来有output要删除,让系统自己建-----hadoop fs -rm -r /output
2、创建word.txt文件并上传到hdfs-----hadoop fs -put /home/zhaozhiwei/TmpData/word.txt /input
3、调用系统自带的程序运行测试-------hadoop jar /home/zhaozhiwei/hadoop-3.2.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar wordcount /input /output
4、完成后查看输出目录-----hadoop fs -ls /output
5、查看输出结果------hadoop fs -cat /output/part-r-00000
正常运行的情况下应该是上面过程,但在执行完3时报错Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster,Please check whether your etc/hadoop/mapred-site.xml contains the below configuration。。。。
果然是mapreduce的原因不能正常启动,因为mapred-site.xml没有配置完全,
定位到此配置文件所在目录----cd /home/zhaozhiwei/hadoop-3.2.1/etc/hadoop
打开----vim mapred-site.xml
增加内容:
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
下载后可阅读完整内容,剩余1页未读,立即下载
- 粉丝: 0
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 十种常见电感线圈电感量计算公式详解
- 军用车辆:CAN总线的集成与优势
- CAN总线在汽车智能换档系统中的作用与实现
- CAN总线数据超载问题及解决策略
- 汽车车身系统CAN总线设计与应用
- SAP企业需求深度剖析:财务会计与供应链的关键流程与改进策略
- CAN总线在发动机电控系统中的通信设计实践
- Spring与iBATIS整合:快速开发与比较分析
- CAN总线驱动的整车管理系统硬件设计详解
- CAN总线通讯智能节点设计与实现
- DSP实现电动汽车CAN总线通讯技术
- CAN协议网关设计:自动位速率检测与互连
- Xcode免证书调试iPad程序开发指南
- 分布式数据库查询优化算法探讨
- Win7安装VC++6.0完全指南:解决兼容性与Office冲突
- MFC实现学生信息管理系统:登录与数据库操作