伪分布模式

所谓伪分布模式的含义是:把所有的角色全部运行在一个节点上,就叫做伪分布式。

贴上官方文档:

https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html

步骤

(1)配置集群

(a) 配置:hadoop-env.sh

Linux系统中获取JDK的安装路径
echo $JAVA_HOME

Hadoop分布式搭建和伪分步式区别 hadoop伪分布式含义_xml


修改JAVA_HOME路径:

export JAVA_HOME=/opt/module/jdk1.7.0_80

(b)配置core-site.xml

<!-- 指定HDFS中NameNode地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://192.168.247.135:9000</value>
    </property>

	<property>
		<name>hadoop.tmp.dir</name>
		<value>/opt/module/hadoop-2.6.5/data/tmp</value>
	</property>

解释:
FS:file system
第一个是改变文件系统,改成了hdfs://localhost:9000 文件系统;要不然的话就是原来的本地文件系统;运行的datanode需要存数据,就存在/data/tmp文件夹里面。

©配置:hdfs-site.xml

<property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>

解释:
指定hdfs副本数量是1;原来的信息默认是三种,为什么?
因为现在只有一个节点,所以设置为1,这就是伪分布式。

(2)启动集群

(a)格式化NameNode(第一次启动时需要格式化,以后就不用格式化)

bin/hdfs namenode -format

Hadoop分布式搭建和伪分步式区别 hadoop伪分布式含义_hadoop_02


Hadoop分布式搭建和伪分步式区别 hadoop伪分布式含义_hdfs_03


表示格式化成功了

(b)启动NameNode

hadoop-daemon.sh start namenode

Hadoop分布式搭建和伪分步式区别 hadoop伪分布式含义_hadoop_04


启动成功

(c) 启动DataNode

hadoop-daemon.sh start datanode

Hadoop分布式搭建和伪分步式区别 hadoop伪分布式含义_hdfs_05


由于是单点式,所以SecondNode就不存在了,但是起码需要启动NN和DN最后访问网页:hdfs的端口一般是50070

Hadoop分布式搭建和伪分步式区别 hadoop伪分布式含义_xml_06


这里有踩了一个坑,前面由于电脑的防火墙没有关闭,所以不能访问,关闭防火墙:

systemctl stop firewalld

注意:
格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据;所以,格式NameNode时,一定需要先删除data数据和log日子,然后再格式化NameNode。
可以通过下面的文件去查看data和name的ID:

cat data/tmp/dfs/name/current/
cat data/tmp/dfs/data/current

遇到有问题可以找日志文件:

cd logs

Hadoop分布式搭建和伪分步式区别 hadoop伪分布式含义_hdfs_07


查看某一条日志:

cat hadoop-root-datanode-localhost.localdomain.log

Hadoop分布式搭建和伪分步式区别 hadoop伪分布式含义_Hadoop分布式搭建和伪分步式区别_08

配置yarn伪分布式

(1)配置yarn-env.sh

配置一下JVA_HOME

export JAVA_HOME=/opt/module/jdk1.7.0_80

进入yarn-env.sh

Hadoop分布式搭建和伪分步式区别 hadoop伪分布式含义_Hadoop分布式搭建和伪分步式区别_09


修改前:

Hadoop分布式搭建和伪分步式区别 hadoop伪分布式含义_xml_10

修改后:

Hadoop分布式搭建和伪分步式区别 hadoop伪分布式含义_hdfs_11

(2)配置yarn-site.xml

配置代码:

<!-- Reduce获取数据的方式 -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

	<!-- 指定YARN的ResourceManager的地址 -->
    <property>
    	<name>yarn.resourcemanager.hostname</name>
    	<value>192.168.247.135</value>
    </property>

(4)配置:mapred-env.sh

配置一下:JAVA_HOME

export JAVA_HOME=/opt/module/jdk1.7.0_80

(5)配置:(对mapred-site.xml.template重新命名为)mapred-site.xml

命令:

mv mapred-site.xml.template mapred-site.xml
vi mapred-site.xml

配置文件:

<!-- 指定MR运行在YARN上面 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

前面我们将默认的文件系统改成了hdfs
现在我们则是将它默认的资源调度器改成了yarn

(2)启动集群

(a)启动前必须保证NameNode 和 DataNode 已经启动
 	(b)启动ResourceManager:启动代码如下:
yarn-daemon.sh start resourcemanager
(c)启动NodeManager,启动代码如下:
yarn-daemon.sh start nodemanager

(3)集群操作

访问网页:

resourcemanager的端口一般是:8088

Hadoop分布式搭建和伪分步式区别 hadoop伪分布式含义_Hadoop分布式搭建和伪分步式区别_12

测试实战,跑一个在hdfs上的yarn的测试程序

(1)本地的文件就不能用了,所以需要将文件上传到HDFS上,这里依然用wcinput,即单词测试的那个样例
操作hdfs的前缀:hadoop fs
上传到hdfs,命令如下:
这里的-put就是之上传文件的意思

hadoop fs -put wcinput /

Hadoop分布式搭建和伪分步式区别 hadoop伪分布式含义_Hadoop分布式搭建和伪分步式区别_13


通过网页访问,查看刚刚上传的文件夹:

Hadoop分布式搭建和伪分步式区别 hadoop伪分布式含义_hadoop_14

(2)执行jar包
运行的命令:
这里注意:此时的输入文件应是:/wcinput ,含义是去hdfs的更目录下去找到wcinput文件,所以前面会有一个‘/’

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount /wcinput /wcoutput

执行命令效果图:

Hadoop分布式搭建和伪分步式区别 hadoop伪分布式含义_hadoop_15


去网页上寻找刚才产生的输出文件:

Hadoop分布式搭建和伪分步式区别 hadoop伪分布式含义_Hadoop分布式搭建和伪分步式区别_16


Hadoop分布式搭建和伪分步式区别 hadoop伪分布式含义_xml_17

(3)最后查看刚才的输出文件
执行的命令如下:

通过命令查看:

hadoop fs -cat /wcoutput/*

Hadoop分布式搭建和伪分步式区别 hadoop伪分布式含义_Hadoop分布式搭建和伪分步式区别_18

直接在网上下载下来看:

Hadoop分布式搭建和伪分步式区别 hadoop伪分布式含义_xml_19

That’s all.