Hadoop 运行模式包括:本地模式、伪分布式模式以及完全分布式模式。
上述步骤安装后即本地模式:
WordCount案例:
1.要创建 HADOOP_HOME/files/wcfile.txt
hello hadoop
hello hive
hello spark
hello zookeeper
2.运行脚本:
bin/hadoop jar \
share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar \
wordcount files/wcfile.txt wcoutput/
分两步走
配置文件在etc/hadoop目录下
### 添加如下内容
export JAVA_HOME=/home/hadoop/app/jdk
<configuration>
<!-- 指定 HDFS 中 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop101:9000</value>
</property>
<!-- 指定 hadoop 运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/app/hadoop/data/tmp</value>
</property>
</configuration>
<configuration>
<!-- 指定 HDFS 副本的数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
$ bin/hdfs namenode -format
看到
Storage directory /home/hadoop/app/hadoop/data/tmp/dfs/name has been successfully formatted.
说明启动格式化成功!
启动 NameNode
$ sbin/hadoop-daemon.sh start namenode
启动 DataNode
$ sbin/hadoop-daemon.sh start datanode
$ jps
2359 DataNode
2391 Jps
2238 NameNode
webUI查看
hadoop2.x webUI的端口为50070
hadoop3.x webUI的端口号修改为9870
http://hadoop101:9870
6.操作集群
(a)在 hdfs 文件系统上创建一个 input 文件夹
$ bin/hdfs dfs -mkdir -p /user/atguigu/input
(b)将测试文件内容上传到文件系统上
$ bin/hdfs dfs -put wcinput/wc.input
/user/atguigu/input/
(c) 查看上传的文件是否正确
$ bin/hdfs dfs -ls /user/atguigu/input/
$ bin/hdfs dfs -cat /user/atguigu/input/wc.input
(d)运行 mapreduce 程序
$ bin/hadoop jar
share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/atguigu/input/ /user/atguigu/output
(f)将测试文件内容下载到本地
$ hadoop fs -get /user/atguigu/output/part-r-00000 ./wcoutput/
(g) 删除输出结果
$ hdfs dfs -rm -r /user/atguigu/output
配置 yarn-site.xml
<!-- reducer 获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 YARN 的 ResourceManager 的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop101</value>
</property>
配置: mapred-env.sh
export JAVA_HOME=/home/hadoop/app/jdk
配置: (对 mapred-site.xml.template 重新命名为) mapred-site.xml
<!-- 指定 mr 运行在 yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
$ sbin/yarn-daemon.sh start resourcemanager
$ sbin/yarn-daemon.sh start nodemanager
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop101:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop101:19888</value>
</property>
[hadoop@hadoop101 hadoop]$ ls sbin/ | grep mr
mr-jobhistory-daemon.sh
启动历史服务器
$ sbin/mr-jobhistory-daemon.sh start historyserver
查看历史服务器是否启动
$ jps
查看 jobhistory
http://hadoop101:19888/jobhistory
日志聚集概念:应用运行完成以后,将日志信息上传到 HDFS 系统上。
开启日志聚集功能步骤:
<!-- 日志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置 7 天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
$ sbin/yarn-daemon.sh stop resourcemanager
$ sbin/yarn-daemon.sh stop nodemanager
$ sbin/mr-jobhistory-daemon.sh stop historyserver
$ sbin/mr-jobhistory-daemon.sh start historyserver
[hadoop@hadoop101 hadoop]$ bin/hdfs dfs -mkdir /usr
[hadoop@hadoop101 hadoop]$ bin/hdfs dfs -mkdir /usr/hadoop
[hadoop@hadoop101 hadoop]$ bin/hdfs dfs -mkdir /usr/hadoop/wc
[hadoop@hadoop101 hadoop]$ bin/hdfs dfs -put /home/hadoop/app/hadoop/files/wcfile.txt /usr/hadoop/wc
在yarn上跑wordcount
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar wordcount /usr/hadoop/wc/wcfile.txt /usr/hadoop/wcoutput
查看日志
http://hadoop101:19888/jobhistory/app
【备注】
hadoop3与hadoop2略微有所不同,hadoop3的mapreduce-site.xml需要额外添加配置,否则会报错:
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/home/hadoop/app/hadoop</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/home/hadoop/app/hadoop</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/home/hadoop/app/hadoop</value>
</property>
hadoop3.1.1集群安装问题
hadoop3端口号默认的改了
Namenode 端口:
50470 --> 9871
50070 --> 9870
8020 --> 9820
Secondary NN 端口:
50091 --> 9869
50090 --> 9868
Datanode 端口:
50020 --> 9867
50010 --> 9866
50475 --> 9865
50075 --> 9864
namenode可以配置成hadoop2的50070
有待后续阅读官方文档再做更新。
内容来源于网络,如有侵权,请联系作者删除!