hadoop3.0.0运行mapreduce(wordcount)过程及问题总结
2017-04-24 11:19
1266 查看
1.配置并启动hadoop
下载并安装jdk,hadoop-3.0.0-alpha2,配置环境变量如下:export JAVA_HOME=/usr/lib/jvm/default-java export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH export HADOOP_HOME=/home/tx/opt/Hadoop/hadoop-3.0.0-alpha2 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_YARN_HOME=$HADOOP_HOME export HADOOP_INSTALL=$HADOOP_HOME export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export HADOOP_CONF_DIR=$HADOOP_HOME export HADOOP_PREFIX=$HADOOP_HOME export HADOOP_LIBEXEC_DIR=$HADOOP_HOME/libexec export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH export HADOOP_CONF_DIR=$HADOOP_PREFIX/etc/hadoop
然后,source下配置文件,初始化namenode(旧版hadoop命令变为hdfs命令):
此处输入,大写Y(大写!Y!):
然后,初始化成功:
启动hadoop:
用jps查看到datanode没有启动:
需要把你设置的dfs.data.dir存储位置内VERSION文件内的clusterID 修改为 dfs.name.dir存储位置内VERSION文件内的clusterID,然后重启hadoop。
如果想要用WEB端查看job/application,需要启动hisroty-server。Hadoop启动jobhistoryserver来实现web查看作业的历史运行情况,由于在启动hdfs和Yarn进程之后,jobhistoryserver进程并没有启动,需要手动启动,启动的方法是通过(注意:必须是两个命令):
sbin/mr-jobhistory-daemon.sh start historyserver
sbin/yarn-daemon.sh start timelineserver
启动完毕后,查看进程jps:
哇,进程都有呦
2.运行wordcount
首先,在HDFS中创建input文件目录hadoop fs -mkdir /input
然后,把任意txt文件放到hdfs的input目录下面,这里我用的在hadoop的目录下的LICENSE.txt。
hadoop fs -put LICENSE.txt /input
然后查看文件是否正确传入到/input目录下
hadoop fs -ls /input
(一直在报这个warning,查了下网上没有解答,不知道为啥郁闷)
然后,执行(这里用的绝对路径,也可用相对路径):
hadoop jar /home/tx/opt/Hadoop/hadoop-3.0.0-alpha2/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0-alpha2.jar wordcount /input /output
这时,你兴奋地看到了jobID和applicationID。
hadoop fs -ls /output
查看输出结果:
hadoop fs -cat /output/part-r-00000
结果就是对LICENSE.txt文件中单词进行计数统计了。
3.运行wordcount所遇问题解决
如果你发现只看到jobID没有applicationID时,说明hadoop运行在本地,这WEB端查看不到提交的job和对应application记录。需要另外配置mapreduce的运行时环境,否则就默认在本地运行:etc/hadoop/mapred-site.xml:
mapreduce.framwork.name 代表mapreduce的运行时环境,默认是local,需配置成yarn:
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
etc/hadoop/yarn-site.xml:
yarn.nodemanager.aux-services代表附属服务的名称,如果使用mapreduce则需要将其配置为mapreduce_shuffle(hadoop2.2.0之前的则配为mapreduce.shuffle):
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>
然后,更改完之后重启hadoop并运行wordcount你会遇到如下error:
Failing this attempt.Diagnostics: Exception from container-launch.
Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app
这时,我已经想去死了。不,我们要坚强,我们只需要配置文件中添加应用类路径就可以了(记得改为您自己的路径):
etc/hadoop/mapred-site.xml:
<property> <name>mapreduce.application.classpath</name> <value> /home/tx/opt/Hadoop/hadoop-3.0.0-alpha2/etc/*, /home/tx/opt/Hadoop/hadoop-3.0.0-alpha2/etc/hadoop/*, /home/tx/opt/Hadoop/hadoop-3.0.0-alpha2/lib/*, /home/tx/opt/Hadoop/hadoop-3.0.0-alpha2/share/hadoop/common/*, /home/tx/opt/Hadoop/hadoop-3.0.0-alpha2/share/hadoop/common/lib/*, /home/tx/opt/Hadoop/hadoop-3.0.0-alpha2/share/hadoop/mapreduce/*, /home/tx/opt/Hadoop/hadoop-3.0.0-alpha2/share/hadoop/mapreduce/lib-examples/*, /home/tx/opt/Hadoop/hadoop-3.0.0-alpha2/share/hadoop/hdfs/*, /home/tx/opt/Hadoop/hadoop-3.0.0-alpha2/share/hadoop/hdfs/lib/*, /home/tx/opt/Hadoop/hadoop-3.0.0-alpha2/share/hadoop/yarn/*, /home/tx/opt/Hadoop/hadoop-3.0.0-alpha2/share/hadoop/yarn/lib/*, </value> </property>
etc/hadoop/yarn-site.xml:
<property> <name>yarn.application.classpath</name> <value> /home/tx/opt/Hadoop/hadoop-3.0.0-alpha2/etc/*, /home/tx/opt/Hadoop/hadoop-3.0.0-alpha2/etc/hadoop/*, /home/tx/opt/Hadoop/hadoop-3.0.0-alpha2/lib/*, /home/tx/op bd39 t/Hadoop/hadoop-3.0.0-alpha2/share/hadoop/common/*, /home/tx/opt/Hadoop/hadoop-3.0.0-alpha2/share/hadoop/common/lib/*, /home/tx/opt/Hadoop/hadoop-3.0.0-alpha2/share/hadoop/mapreduce/*, /home/tx/opt/Hadoop/hadoop-3.0.0-alpha2/share/hadoop/mapreduce/lib-examples/*, /home/tx/opt/Hadoop/hadoop-3.0.0-alpha2/share/hadoop/hdfs/*, /home/tx/opt/Hadoop/hadoop-3.0.0-alpha2/share/hadoop/hdfs/lib/*, /home/tx/opt/Hadoop/hadoop-3.0.0-alpha2/share/hadoop/yarn/*, /home/tx/opt/Hadoop/hadoop-3.0.0-alpha2/share/hadoop/yarn/lib/*, </value> </property>
这时,再重启hadoop,运行wordcount即可(异常嗨皮去吃鸡腿)。
WEB访问 主机地址:50070查看hadoop运行状态:
WEB访问 主机地址:8088查看applications:
WEB访问 主机地址:19888查看jobhistory:
相关文章推荐
- Hadoop MapReduce基于新API的WordCount程序运行过程分析
- Hadoop MapReduce案例word count本地环境运行时遇到的一些问题
- 【学习笔记】用Hadoop在MapReduce中WordCount简单程序运行详细流程
- eclipse运行hadoop示例程序wordcount的一些问题
- wordcount示例程序运行全过程(Hadoop-1.0.0)
- Ubantu下hadoop运行第一个例子wordcount过程
- hadoop 运行wordcount遇见的参数不一致问题
- Windows 使用Eclipse配置连接hadoop,编译运行MapReduce --本地调试WordCount
- Hadoop-2.3.0学习(2)——Wordcount的运行以及遇到的问题
- hadoop源代码分析(一)从wordCount开始,剖析mapreduce的运行机制
- 简单的在Hadoop2.6.0上安装eclipse运行WORDCOUNT的总结笔记
- 在eclipse上运行MapReduce的wordcount程序所遇到的问题
- Hadoop 下 WordCount 程序运行方法及过程分析
- Eclipse下运行hadoop自带的mapreduce程序--wordcount
- 配置Hadoop2.x的HDFS、MapReduce来运行WordCount程序
- hadoop2.7.4 安装配置以及java wordcount 运行出错的总结
- hadoop基础----hadoop实战(三)-----hadoop运行MapReduce---对单词进行统计--经典的自带例子wordcount
- Windows下Cygwin环境的Hadoop安装(3)- 运行hadoop中的wordcount实例遇到的问题和解决方法
- [转]Hadoop集群_WordCount运行详解--MapReduce编程模型
- eclipse中运行wordcount任务后在hadoop0.20.2监控页面没有显示该job的问题