hadoop3.0.0运行mapreduce(wordcount)过程及问题总结

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/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>

这时,再重启hadoop,运行wordcount即可(异常嗨皮去吃鸡腿)。
WEB访问 主机地址:50070查看hadoop运行状态:
这里写图片描述
WEB访问 主机地址:8088查看applications:
这里写图片描述
WEB访问 主机地址:19888查看jobhistory:
这里写图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值