Hadoop运行模式

x33g5p2x  于2020-09-30 发布在 Hadoop  
字(4.8k)|赞(0)|评价(0)|浏览(830)

Hadoop 运行模式包括:本地模式、伪分布式模式以及完全分布式模式。

1. 本地模式

上述步骤安装后即本地模式:
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/

2. 伪分布式运行模式

2.1. 伪分布式配置

分两步走

2.1.1. 启动 HDFS 并运行 MapReduce 程序

配置文件在etc/hadoop目录下

  1. 修改hadoop-env.sh
### 添加如下内容
export JAVA_HOME=/home/hadoop/app/jdk
  1. 配置: core-site.xml
<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>
  1. 配置: hdfs-site.xml
<configuration>
	<!-- 指定 HDFS 副本的数量 -->
	<property>
		<name>dfs.replication</name>
		<value>1</value>
	</property>
</configuration>
  1. 启动集群
    格式化 NameNode(第一次启动时格式化,以后就不要总格式化)
$ 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
  1. 查看集群
    进程查看
$ 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

2.1.2. YARN 上运行 MapReduce 程序

  1. 配置集群
    配置yarn-env.sh
    export JAVA_HOME=/home/hadoop/app/jdk

配置 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>
  1. 启动

$ sbin/yarn-daemon.sh start resourcemanager

$ sbin/yarn-daemon.sh start nodemanager

  1. 集群操作
    (a) yarn 的浏览器页面查看
    http://hadoop101:8088/cluster

2.1.3. 配置历史服务器

  1. 配置 mapred-site.xml
	<property>
		<name>mapreduce.jobhistory.address</name>
		<value>hadoop101:10020</value>
	</property>
	<property>
		<name>mapreduce.jobhistory.webapp.address</name>
		<value>hadoop101:19888</value>
	</property>
  1. 查看启动历史服务器文件目录:

[hadoop@hadoop101 hadoop]$ ls sbin/ | grep mr
mr-jobhistory-daemon.sh

  1. 启动历史服务器
    $ sbin/mr-jobhistory-daemon.sh start historyserver

  2. 查看历史服务器是否启动
    $ jps

  3. 查看 jobhistory

http://hadoop101:19888/jobhistory

2.1.4. 配置日志的聚集

日志聚集概念:应用运行完成以后,将日志信息上传到 HDFS 系统上。
开启日志聚集功能步骤:

  1. 配置yarn-site.xml
<!-- 日志聚集功能使能 -->
	<property>
		<name>yarn.log-aggregation-enable</name>
		<value>true</value>
	</property>
	<!-- 日志保留时间设置 7 天 -->
	<property>
		<name>yarn.log-aggregation.retain-seconds</name>
		<value>604800</value>
	</property>
  1. 重启yarn
$ 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
  1. 在yarn上跑wordcount
    $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar wordcount /usr/hadoop/wc/wcfile.txt /usr/hadoop/wcoutput

  2. 查看日志
    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>

3. 完全分布式运行模式

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

有待后续阅读官方文档再做更新。

相关文章