4 Hadoop运行模式
Hadoop运行模式包括:本地模式
、伪分布式模式
以及完全分布式模式
。
Hadoop官方网站
http://hadoop.apache.org/
4.1 本地运行模式
4.1.1 官方Grep案例
- 1.创建在
hadoop-3.1.3
文件下面创建一个input文件夹
cd /opt/module/hadoop-3.1.3
mkdir input
- 2.(准备数据)将Hadoop的xml配置文件复制到input
cp etc/hadoop/*.xml input
也可以自行在input
目录下准备文件
- 3.执行share目录下的MapReduce程序
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep input output 'dfs[a-z.]+'
- 4.查看输出结果
cat output/*
4.1.2 官方WordCount案例
- 1.创建在hadoop-3.1.3文件下面创建一个wcinput文件夹
mkdir wcinput
- 2.在wcinput文件下创建一个wc.input文件
cd wcinput
- 3.编辑wc.input文件
vim wc.input
在文件中输入如下内容
hadoop yarn
hadoop mapreduce
dev1
dev1
保存退出:
:wq
- 4.回到Hadoop目录
/opt/module/hadoop-3.1.3
- 5.执行程序
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput wcoutput
- 6.查看结果
[dev1@hadoop101 hadoop-3.1.3]$ cat wcoutput/part-r-00000
看到如下结果:
dev1 2
hadoop 2
mapreduce 1
yarn 1
4.2 伪分布式运行模式
4.2.1 启动HDFS并运行MapReduce程序
1.分析
(1)配置集群
(2)启动、测试集群
(3)执行WordCount案例
2.执行步骤
- 2.1 配置集群
-(a)配置:hadoop-env.sh
Linux系统中获取JDK的安装路径:
[dev1@ hadoop101 ~]# echo $JAVA_HOME
/opt/module/jdk1.8.0_212
修改JAVA_HOME 路径:
export JAVA_HOME=/opt/module/jdk1.8.0_212
(b)配置:core-site.xml
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop101:9820</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.1.3/data/tmp</value>
</property>
(c)配置:hdfs-site.xml
<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
- 2.2 启动集群
(a)格式化NameNode(第一次启动时格式化,以后就不要总格式化)
[dev1@hadoop101 hadoop-3.1.3]$ bin/hdfs namenode -format
(b)启动NameNode
[dev1@hadoop101 hadoop-3.1.3]$ hdfs --daemon start namenode
(c)启动DataNode
[dev1@hadoop101 hadoop-3.1.3]$ hdfs --daemon start datanode
- 2.3 查看集群
(a)查看是否启动成功
[dev1@hadoop101 hadoop-3.1.3]$ jps
13586 NameNode
13668 DataNode
13786 Jps
注意:jps是JDK中的命令
,不是Linux命令。不安装JDK不能使用jps
(b)web端查看HDFS文件系统
http://hadoop101:9870
(c)常用端口号说明,表4-1所示
- 2.4 出现错误看日志,看日志,看日志,重要的事情说三遍~~~
说明:在企业中遇到Bug时,经常根据日志提示信息去分析问题、解决Bug。
通过tail -n 100
日志文件 的形式查看
当前目录:/opt/module/hadoop-3.1.3/logs
hadoop-dev1-datanode-hadoop101.log
hadoop-dev1-namenode-hadoop101.log
- (5)操作集群
(a)在HDFS文件系统上创建一个input文件夹
[dev1@hadoop101 hadoop-3.1.3]$ hdfs dfs -mkdir -p /user/dev1/input
(b)将测试文件内容上传到文件系统上
[dev1@hadoop101 hadoop-3.1.3]$hdfs dfs -put words.txt /user/dev1/input
(c)查看上传的文件是否正确
[dev1@hadoop101 hadoop-3.1.3]$hdfs dfs -ls /user/dev1/input/
[dev1@hadoop101 hadoop-3.1.3]$hdfs dfs -cat words.txt /user/dev1/input
(d)运行MapReduce程序
[dev1@hadoop101 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /user/dev1/input/ /user/dev1/output
(e)查看输出结果
命令行查看:
[dev1@hadoop101 hadoop-3.1.3]$ hdfs dfs -cat /user/dev1/output/*
(f)将测试文件内容下载到本地
[dev1@hadoop101 hadoop-3.1.3]$ hdfs dfs -get /user/dev1/output/part-r-00000 ./
(g)删除输出结果
[dev1@hadoop101 hadoop-3.1.3]$ hdfs dfs -rm -r /user/dev1/output
4.2.2 格式化需要注意的问题
(d)思考:为什么不能一直格式化NameNode,格式化NameNode,要注意什么?
[dev1@hadoop101 hadoop-3.1.3]$ cd data/tmp/dfs/name/current/
[dev1@hadoop101 current]$ cat VERSION
clusterID=CID-f0330a58-36fa-4a2a-a65f-2688269b5837
[dev1@hadoop101 hadoop-3.1.3]$ cd data/tmp/dfs/data/current/
clusterID=CID-f0330a58-36fa-4a2a-a65f-2688269b5837
注意:格式化NameNode,会产生新的集群id
,导致NameNode
和DataNode
的集群id不一致,集群找不到已往数据。所以,格式NameNode时,一定要先删除data
数据和logs
日志,然后再格式化NameNode。
find ./ -name VERSION
查找出来使用vim打开并进行比对
4.2.3 启动YARN并运行MapReduce程序
- 1.分析
(1)配置集群在YARN上运行MR
(2)启动、测试集群
(3)在YARN上执行WordCount案例 - 2.执行步骤
(1)配置集群
(a)配置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>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
(b)配置mapred-site
.xml
[dev1@hadoop101 hadoop]$ vim mapred-site.xml
编辑
<!-- 指定MR运行在YARN上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
(2)启动集群
(a)启动前必须保证NameNode和DataNode已经启动
(b)启动ResourceManager
[dev1@hadoop101 hadoop-3.1.3]$ yarn --daemon start resourcemanager
(c)启动NodeManager
[dev1@hadoop101 hadoop-3.1.3]$ yarn --daemon start nodemanager
- 3.集群操作
(a)YARN的浏览器页面查看
http://hadoop101:8088
(b)执行MapReduce程序
[dev1@hadoop101 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /user/dev1/input /user/dev1/output
(c)查看运行结果
[dev1@hadoop101 hadoop-3.1.3]$ bin/hdfs dfs -cat /user/dev1/output/*
4.2.4 配置文件说明
Hadoop配置文件分两类:默认配置文件
和自定义配置文件
,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。
-
(1)默认配置文件:
要获取的默认文件 文件存放在Hadoop的jar包中的位置
-
(2)自定义配置文件:
core-site.xml
、hdfs-site.xml
、yarn-site.xml
、mapred-site.xml
四个配置文件存放在$HADOOP_HOME/etc/hadoop
这个路径上,用户可以根据项目需求重新进行修改配置。