5.2 伪分布运行模式
Hadoop
也可以以伪分布模式的方式运行在单节点上, 这个时候每一个Hadoop
守护进程都是一个单独的Java
进程.
这种模式需要进行相应的分布式设置, 但是又由于只有一个节点, 所以我们称之为伪分布模式.
由于Hadoop2.x
增加了Yarn
, 所以有两个选择: 可以把MapReduce
程序直接运行在HDFS
上, 也可以选择运行在Yarn
上
5.2.1 在HDFS
上运行MapReduce
程序
配置集群
在
etc/hadoop/hadoop-env.sh
中配置JAVA_HOME
变量获取
jdk
安装路径:echo $JAVA_HOME
在
etc/hadoop/hadoop-env.sh
中添加一行代码:export JAVA_HOME=/opt/module/jdk1.8.0_172
注意:
- 是
Hadoop
下的etc
目录, 不是根目录下的etc
目录
配置
core-site.xml
(核心站点)<!-- 指定HDFS中NameNode的地址 --> <property> <name>fs.defaultFS</name> <!-- 地址要根据自己实际情况来写. 具体的ip地址也是可以的 --> <value>hdfs://hadoop201:9000</value> </property> <!-- 指定hadoop运行时产生文件的存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-2.7.2/data/tmp</value> </property>
配置
hdfs-site.xml
(hdfs
站点)<!-- 指定HDFS副本的数量 --> <property> <name>dfs.replication</name> <value>1</value> </property>
说明:
这里设置的副本的数量是指的将来在
HDFS
上存储的文件的副本.因为现在配置的是单节点伪分布模式, 所以把副本数量设置为
1
启动集群
格式化
NameNode
.hdfs namenode -format
注意:
格式化的动作只需要执行一次即可. 以后再启动集群不需要重复执行这个动作.
多次格式化会出现异常, 务必不要多次格式化.
启动
namenode
hadoop-daemon.sh start namenode
启动
datanode
hadoop-daemon.sh start datanode
查看集群
查看
namenode
和datanode
是否启动成功jps
日志文件在
logs
目录下.如果启动失败可以在日志文件中查找失败的原因.使用
web
端查看hdfs
文件系统web端地址是: http://192.168.1.201:50070/
注意:
地址其实就是
namenode
所在的主机的地址50070
是web
端口. 和前面配置的9000
区别开来:9000
是datanode
与namenode
通讯时的端口.
操作集群:在集群上运行wordcount
程序
在本地创建一个文件
words.txt
, 文件内容如下:(内容随意)hello world hello world atguigu hello I love atguigu hello world how are you
在
hdfs
系统的根目录下创建一个文件夹/input
.hdfs dfs -mkdir /input
把
words.txt
上传到hdfs
系统上的/input
目录下hdfs dfs -put words.txt /input
查看是否上传成功
方法1:
hdfs dfs -ls /input
方法2: 使用
web
端查看:http://hadoop201:50070
在集群上运行
wordcount
程序hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /input /output
查看输出结果
方法1: 直接在
hdfs
系统上查看hdfs dfs -cat /output/part-r-00000
方法2: 把输出结果下载到本地之后查看
hdfs dfs -get /output ./
5.2.1 在Yarn
上运行MapReduce
程序
Hadoop2.x
增加了组件Yarn
, 我们也可以把我们的MapReduce
程序在Yarn
上执行.
而且, 以后也确实应该这么做.
关于Yarn
具体作用我们在后面的课程中会详细讲解.
在前面配置的基础上, 配置Yarn
就可以了.
集群配置
在
etc/haddop/yarn-env.sh
上配置JAVA_HOME
(伪分布模式中不配置也可, 但是在全分布模式中就必须要配置了)export JAVA_HOME=/opt/module/jdk1.8.0_172
配置
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>hadoop201</value> </property>
配置
/etc/hadoop/mapred-site.xml
- 复制出来一个
/etc/hadoop/mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
配置
/etc/hadoop/mapred-site.xml
<!-- 指定MapReduce程序运行在yarn上 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
- 复制出来一个
启动
resourcemanager
yarn-daemon.sh start resourcemanager
启动
nodemanager
yarn-daemon.sh start nodemanager
集群操作
运行
MapReduce
程序:wordcount
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /input /output2
查看执行结果