Hadoop伪分布式、完全分布式搭建和测试

准备
软件版本
(1)JDK

(2)Hadoop

(3)CentOS

 

集群规划
        下面搭建三种模式的Hadoop集群,各个模式的集群具体划分如下:

(1)本地模式(Local Mode)

主机名    IP地址    Hadoop节点名称
bigdata111    192.168.189.111    无
(2)伪分布式模式(Pseudo-Distributed Mode)

主机名    IP地址    Hadoop节点名称
bigdata111    192.168.189.111    
NameNode / SecondaryNameNode / DataNode / ResourceManager / NodeManager

(3)全分布式模式(Fully-Distributed Mode)

主机名    IP地址    Hadoop节点名称
bigdata112    192.168.189.112    NameNode / SecondaryNameNode / ResourceManager
bigdata113    192.168.189.113    DataNode / NodeManager
bigdata114    192.168.189.114    DataNode / NodeManager
本地模式
        本地模式没有HDFS,只能测试MapReduce程序,程序运行的结果保存在本地文件系统。

上传文件
         将hadoop-2.7.3.tar.gz文件上传至bigdata111服务器的/root/tools下

解压文件

配置环境变量
执行

vi ~/.bash_profile
 命令,打开环境变量配置文件,添加如下配置

保存并退出文件,再执行

source ~/.bash_profile
命令,使配置生效。在命令窗口敲入start,然后按Tab键,如果出现如下界面表示配置成功:

 

配置hadoop-env.sh
        进入Hadoop的配置文件目录,如下:

图中是Hadoop的所有配置文件。伪分布式只需要配置hadoop-env.sh,在该文件中配置JDK安装路径,如下:

保存退出文件。事实上,这里不配置JDK,也是可以的。

 

伪分布式
        伪分布式模式在单机上运行,模拟全分布式环境,具有Hadoop的主要功能。它在本地模式基础之上,再如下修改配置文件即可。具体配置如下:

hdfs-site.xml
<configuration>
        <property>
                <!-- HDFS数据冗余度,默认3  -->
                <name>dfs.replication</name>
                <value>1</value>
        </property>
        <property>
                <!-- 是否开启HDFS权限检查,默认true  -->
                <name>dfs.permissions</name>
                <value>true</value>
        </property>
</configuration>
参数说明:

(1)dfs.replication

       配置数据的副本数。因为这里是单机,所以副本数配置为1。

(2)dfs.permissions

        配置HDFS的权限检查。默认是true,也就是开启权限检查。可以不配置,这里只是为了说明。

 

core-site.xml
<configuration>
        <property>
                <!-- 配置NameNode地址  -->
                <name>fs.defaultFS</name>
                <value>hdfs://bigdata111:9000</value>
        </property>
        <property>
                <!-- 保存HDFS临时数据的目录  -->
                <name>hadoop.tmp.dir</name>
                <value>/root/training/hadoop-2.7.3/tmp</value>
        </property>
</configuration>
参数说明:

(1)fs.defaultFS

        配置NameNode的地址,通信端口号是9000。bigdata111为主机名,也可以使用IP地址。

(2)hadoop.tmp.dir

        配置HDFS数据保存目录,默认是Linux系统的tmp目录,而Linux系统tmp目录重启后会被删除,所以这里需要配置为本地系统的其他目录,例如Hadoop安装目录下的tmp目录。tmp目录需要用户自己创建,如图:

 

mapred-site.xml
Hadoop配置文件中默认没有这个文件,只提供了模板文件mapred-site.xml.template,需要在当前目录下复制一份:

cp mapred-site.xml.template mapred-site.xml
复制成功后,如图: 

具体配置内容如下:

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
</configuration>
参数说明:

(1)mapreduce.framework.name

        配置mapreduce程序执行的框架名称:yarn。yarn是资源管理器框架。

 

yarn-site.xml
<configuration>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>bigdata111</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>
参数说明:

(1)yarn.resourcemanager.hostname

        配置yarn的主节点ResourceManager主机名;

(2)yarn.nodemanager.aux-services

        配置yarn的NodeManager运行MapReduce的方式。

 

格式化Namenode
执行如下命令

hdfs namenode -format

 

启动集群
(1)start-all.sh

        执行start-all.sh(这个命令已经过期,可以分别执行start-dfs.sh和start-yarn.sh命令)命令,正常启动后如下:

Hadoop节点如下:

a、NameNode

b、DataNode

c、SecondaryNameNode

yarn节点如下:

a、ResourceManager

b、NodeManager

 

(2)UI

        在浏览器中输入地址http://192.168.189.111:50070(SecondaryNameNode端口默认是50090),即可打开Hadoop管理页面,

(1)创建数据

在本地模式中,单词统计的数据输入和输出都是在Linux本地目录,而在伪分布模式中,数据的输入和输出都是HDFS,所以需要在HDFS上准备输入数据。分别执行如下命令:

hdfs dfs -mkdir /input
hdfs dfs -put /root/input/data.txt /input
在HDFS上创建input目录,将数据data.txt上传至该目录。

(2)执行MapReduce程序

在程序所在目录执行如下命令:

hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount /input/data.txt /output
 output目录不能提前创建,成功后,会在HDFS的/output目录下生成两个文件,结果如下:

和本地模式产生的数据是一样的,只是一个存在Linux本地目录,另一个存在HDFS上(事实上它的数据也在Linux上,具体在/root/training/hadoop-2.7.3/tmp/dfs/data/current下)。

全分布式
        全分布式环境,用于生产环境。

 

配置环境变量
        三台服务器都需要配置Hadoop环境变量,参考本地模式。也可以单独配置好一台,然后远程拷贝到其他服务器(一定要使配置文件生效)。事实上,只在bigdata112节点上配置也是可以的,不过,这样只能在bigdata112上执行Hadoop命令,比如集群的启动和停止。为了管理方便,建议保持各个节点配置相同。

 

bigdata112配置
      按照伪分布式配置,不同的配置如下:

hadoop-env.sh
      在本地模式下,可以不配置JDK,但是全分布式模式必须要配置,不然启动集群时,会报如下错误:

hdfs-site.xml
<configuration>
        <property>
                <!-- HDFS数据冗余度,默认3  -->
                <name>dfs.replication</name>
                <value>2</value>
        </property>
        <property>
                <!-- 是否开启HDFS权限检查,默认true  -->
                <name>dfs.permissions</name>
                <value>true</value>
        </property>
</configuration>
数据副本数配置为2,默认是3,这里只有两个datanode,所以配置为2。

core-site.xml
<configuration>
        <property>
                <!-- 配置NameNode地址  -->
                <name>fs.defaultFS</name>
                <value>hdfs://bigdata112:9000</value>
        </property>
        <property>
                <!-- 保存HDFS临时数据的目录  -->
                <name>hadoop.tmp.dir</name>
                <value>/root/training/hadoop-2.7.3/tmp</value>
        </property>
</configuration>
NameNode地址为bigdata112。

yarn-site.xml
<configuration>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>bigdata112</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>
ResourceManager节点主机名改为bigdata112。

slaves
salvas配置文件内容如下:

 

其他节点配置
        将bigdata112的hadoop目录远程拷贝到bigdata113和bigdata114上,命令如下:

scp -r hadoop-2.7.3/ root@bigdata113:/root/training
scp -r hadoop-2.7.3/ root@bigdata114:/root/training
 
格式化NameNode
        这里与伪分布模式相同。成功后,如图:

这一步放在最后。主要是因为如果放在上一步之前,那么会在每个节点上都有tmp/name目录。正常情况下,bigdata112上tmp目录下有name和namesecondary两个目录,如图:

bigdata113和114,tmp目录结构如图:

 

集群时间同步
        安装ntp服务。暂略,以后补上。

 

启动集群
start-all.sh
        在bigdata112上执行集群启动命令start-all.sh,成功后,



        在浏览器中输入http://192.168.189.112:50070打开Hadoop管理页面,

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值