购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3 Hadoop完全分布式环境搭建

由于Spark在将Yarn作为集群管理器时会用到Hadoop,因此在安装Spark之前,先要把Hadoop完全分布式(集群)环境搭建起来。在Hadoop的集群中,有一个NameNode,一个ResourceManager;在高可靠的集群环境中,可以拥有两个NameNode和两个ResourceManager;在Hadoop3以后,同一个NameService可以拥有3个NameNode。由于NameNode和ResourceManager是两个主要的服务,因此建议将它们部署到不同的服务器上。

下面以3台服务器为例,来快速搭建Hadoop的完全分布式环境,这对深入了解后面要讲解的Spark集群运行的基本原理非常有用。

注意

可以利用虚拟机软件VirtualBox复制出来的CentOS镜像文件,快速搭建3个CentOS虚拟主机来做集群。

完整的集群主机配置如表2-2所示。

从表2-1中可以看出,server101运行的进程比较多,且NameNode运行在上面,所以这台主机需要更多的内存。

由于需要使用3台Linux服务器搭建集群环境,因此推荐使用VirtualBox把2.2节配置好的虚拟机CentOS7-201复制出来,稍微做些修改,即可快速搭建Hadoop完全分布式环境。

(1)把CentOS7-201复制为CentOS7-101,按下面的 核对和修改相关配置,已经配置好的可以跳过去。

(2)把CentOS7-101复制为CentOS7-102、CentOS7-103,由于此时CentOS7-101已基本配置好了,复制出来的CentOS7-102、CentOS7-103只需修改主机名称和IP地址即可。

(3)3台虚拟机配置好了以后,再按下面的 运行这个完全分布式集群。

Hadoop完全分布式环境如图2-36所示。

图2-36 Hadoop完全分布式环境

完成准备工作。

(1)所有主机安装JDK1.8+。建议将JDK安装到不同主机的相同目录下,这样可以减少修改配置文件的次数。

(2)在主节点(即执行start-dfs.sh和start-yarn.sh的主机)上向所有其他主机做SSH免密码登录。

(3)修改所有主机的名称和IP地址。

(4)配置所有主机的hosts文件,添加主机名和IP的映射:

    192.168.56.101 server101
    192.168.56.102 server102
    192.168.56.103 server103

(5)使用以下命令关闭所有主机上的防火墙:

    systemctl stop firewalld
    systemctl disable firewalld

在server101上安装Hadoop。

可以将Hadoop安装到任意目录下,如在根目录下,创建/app然后授予hadoop用户即可。

将hadoop-3.2.3.tar.gz解压到/app目录下,并配置/app目录属于hadoop用户:

    $ sudo tar -zxvf hadoop-3.2.3.tag.gz -C /app/

将/app目录及子目录授权给hadoop用户和hadoop组:

    $suto chown hadoop:hadoop -R /app

接下来的配置文件都在/app/hadoop-3.2.3/etc/hadoop目录下。配置hadoop-env.sh文件:

    export JAVA_HOME=/usr/java/jdk1.8.0_361

配置core-site.xml文件:

配置hdfs-site.xml文件:

配置mapred-site.xml文件:

配置yarn-site.xml文件:

配置workers文件。workers文件用于配置执行DataNode和NodeManager的节点:

    server101
    server102
    server103

使用scp将Hadoop分发到其他主机。

由于scp会在网络上传递文件,而hadoop/share/doc目录下都是文档,没有必要进行复制,因此可以删除这个目录。

删除doc目录:

    $ rm  -rf /app/hadoop-3.2.3/share/doc

然后复制server101的文件到其他两台主机的相同目录下:

    $scp -r /app/hadoop-3.2.3  server102:/app/
    $scp -r /app/hadoop-3.2.3  server103:/app/

在server101上格式化NameNode。

首先需要在server101上配置Hadoop的环境变量。打开/etc/profile文件:

    $ sudo vim /etc/profile

在文件最后追加以下内容:

    export HADOOP_HOME=/app/hadoop-3.2.3
    export PATH=$PATH:$HADOOP_HOME/bin

在server101上执行namenode初始化命令:

    $ hdfs namenode -format

启动HDFS和YARN。

在server101上执行启动工作时,由于配置了集群,此启动过程会以SSH方式登录其他两台主机,并分别启动DataNode和NodeManager。

    $ /app/hadoop-3.2.3/sbin/start-dfs.sh
    $ /app/hadoop-3.2.3/sbin/start-yarn.sh

启动完成后,通过宿主机的浏览器查看9870端口,页面会显示集群情况。即访问http://192.168.56.101:9870,会发现同时存在3个DataNode节点,如图2-37所示。

图2-37 存在3个DataNode节点

访问http://192.168.56.101:8088,会发现同时存在集群的3个活动节点,如图2-38所示。

图2-38 存在集群的3个活动节点

执行MapReduce测试集群。

建议执行MapReduce测试一下集群,比如执行WordCount示例,如果可以顺利执行完成,则说明整个集群的配置都是正确的。首先创建一个文本文件a.txt,并输入几行英文句子:

    [hadoop@server101 ~]$ vim a.txt
    Hello This is
    a Very Sample MapReduce
    Example of Word Count
    Hope You Run This Program Success!

然后分别执行以下命令: +Hyk8bxDiWFGgAlwPLgDtjtTAiAM6FU2qIeDYP8g+rQfd/gYsLYe/ZmJh3e095i5

    [hadoop@server101 ~]$ hdfs dfs -mkdir -p /home/hadoop
    [hadoop@server101 ~]$ hdfs dfs -mkdir /home/hadoop
    [hadoop@server101 ~]$ hdfs dfs -put ./a.txt /home/hadoop
    [hadoop@server101 ~]$ yarn jar /app/hadoop-3.2.3/share/hadoop/mapreduce/
hadoop-mapreduce-examples-3.2.3.jar wordcount ~/a.txt /out002
点击中间区域
呼出菜单
上一章
目录
下一章
×