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

2.4 Hadoop安装配置

为贴近真实的生产环境,建议搭建完全分布式模式的Hadoop集群环境。因此,本章将介绍在个人计算机上安装配置虚拟机,在虚拟机中搭建Hadoop完全分布式环境的完整过程。为了保证能够顺畅地运行Hadoop集群,并能够进行基本的大数据开发调试,建议个人计算机硬件的配置为:内存至少8 GB,硬盘可用容量至少100 GB,CPU为Intel i5以上的多核(建议八核及以上)处理器。在搭建Hadoop完全分布式集群前,我们需要准备好必要的软件安装包。软件安装包及其版本说明如表2-1所示。

表2-1 Hadoop相关软件及版本

Hadoop完全分布式集群是主从架构,一般需要使用多台服务器组建。本书中使用的Hadoop集群的拓扑结构如图2-6所示。请注意各个服务器的IP与名称,在后续的集群配置过程中将会经常使用。

图2-6 Hadoop集群的拓扑结构图

2.4.1 创建Linux虚拟机

VMware Workstation是一款功能强大的虚拟机软件,在不影响本机操作系统的情况下,可以让用户在虚拟机中同时运行不同版本的操作系统。从VMware官网中下载VMware安装包,名称为VMware-workstation-full-15.5.7-17171714.exe。安装VMware Workstation的过程比较简单,双击下载的VMware安装包,选择安装的目录,再单击“下一步”按钮,继续安装,之后输入产品序列号,即可成功安装VMware软件。

打开VMware软件,在VMware上安装CentOS 7.8版本的Linux操作系统,具体安装步骤如下。

1)打开安装好的VMware软件,进入VMware主界面,选择“创建新的虚拟机”选项,如图2-7所示。

图2-7 新建虚拟机

2)弹出“新建虚拟机向导”对话框,选择“典型(推荐)(T)”模式,再单击“下一步”按钮,如图2-8所示。

图2-8 选择配置模式

3)安装客户机操作系统,选择“稍后安装操作系统(S)”单选按钮,单击“下一步”按钮,如图2-9所示。

图2-9 选择安装客户机操作系统的来源

4)选择客户机操作系统,选择“Linux(L)”单选按钮,版本是CentOS 7 64位,然后直接单击“下一步”按钮,如图2-10所示。

图2-10 选择客户机操作系统

5)命名虚拟机,将虚拟机命名为master。在E盘创建一个以VMware命名的文件夹,并在该文件夹下建立一个文件命名为master。本文选择的安装位置为E:\VMware\master,单击“下一步”按钮,如图2-11所示。注意,虚拟机的位置可根据个人计算机的硬盘资源情况进行调整。

图2-11 命名虚拟机并选择位置

6)指定磁盘容量,指定最大磁盘大小为20 GB,选择“将虚拟磁盘拆分成多个文件(M)”单击“下一步”按钮,如图2-12所示。

图2-12 指定磁盘容量

7)准备创建虚拟机,单击“自定义硬件(C)”按钮,如图2-13所示。

图2-13 准备创建虚拟机

8)进入“硬件”对话框,单击“新CD/DVD(IDE)”选项所在的行,在右侧的“连接”组中选择“使用ISO映像文件(M)”单选按钮,并单击“浏览(B)”按钮,指定CentOS-7-x86_64-DVD-2003.iso镜像文件的位置,如图2-14所示,最后单击“关闭”按钮,返回图2-13所示界面,单击“完成”按钮。

图2-14 自定义硬件

9)打开虚拟机,选择虚拟机“master”,单击“开启此虚拟机”选项,如图2-15所示。

图2-15 开启虚拟机

10)开启虚拟机后,将出现CentOS 7的安装界面,选择“Install CentOS 7”选项,如图2-16所示。

图2-16 CentOS 7.8安装界面

11)进入语言选择页面,在左侧列表框选择“English”选项,在右侧列表框选择“English (United States)”选项,并单击“Continue”按钮,如图2-17所示。

图2-17 语言选择页面

12)单击“LOCALIZATION”组中的“DATE & TIME”选项,如图2-18所示。进入地区和时间选择界面,选择“Asia”和“Shanghai”,完成后单击“Done”按钮,如图2-19所示。

图2-18 DATE & TIME

图2-19 地区时间选择

13)单击“SYSTEM”组中的“INSTALLATION DESTINATION”选项,如图2-20所示。进入分区配置界面,默认选择自动分盘,单击“Done”按钮即可,如图2-21所示。

图2-20 “INSTALLATION DESTINATION”选项

图2-21 选择磁盘分区

14)完成以上设置后,返回图2-18所示的界面,单击“Begin Installation”按钮,如图2-22所示。

图2-22 开始安装

15)进入root密码设置界面,单击“USER SETTINGS”组中的“ROOT PASSWORD”选项,如图2-23所示。设置密码为123456,需要输入两次,如图2-24所示,设置完毕后单击“Done”按钮。注意,因为密码过于简单,所以需要连续单击两次。

图2-23 “ROOT PASSWORD”选项

图2-24 设置密码

16)设置密码后,返回如图2-25所示的界面,单击“Finish configuration”按钮完成配置,开始安装CentOS 7.8版本的Linux虚拟机。

图2-25 开始安装

17)安装完成,单击“Reboot”按钮,重启虚拟机,如图2-26所示。

图2-26 安装完成

18)进入Linux系统,输入用户名“root”以及密码“123456”,如图2-27所示,如果出现“[root@master ~]#”的提示,那么表示成功登录并进入了Linux系统。

图2-27 登录

2.4.2 设置固定IP

本书使用的Hadoop集群为完全分布式集群,有4个节点,因此需要安装4台虚拟机。每台虚拟机均使用NAT模式接入网络,所以需要为每台虚拟机分配IP,并保证每台虚拟机的IP处于同一子网内。为每台虚拟机配置固定IP,下面以虚拟机master为例详细介绍虚拟机固定IP的步骤,具体操作步骤如下。

1)使用service network restart命令重启网卡服务,如图2-28所示。

图2-28 重启服务命令

2)查看/etc/sysconfig/network-scripts/ifcfg-ens33配置文件的内容。不同于Windows系统采用菜单方式修改网络配置,Linux系统的网络配置参数是写在配置文件里的,ifcfg-ens33是CentOS 7.8版本的Linux系统中的网络配置文件,可以设置IP地址、子网掩码等网络配置信息。使用vi /etc/sysconfig/network-scripts/ifcfg-ens33命令,打开ifcfg-ens33文件,内容如代码清单2-1所示。

代码清单2-1 ifcfg-ens33文件原有的内容
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="6c2a466f-a4b0-4f29-aeee-8ea96252aee4"
DEVICE="ens33"
ONBOOT="no"

在代码清单2-1所示的内容中,ONBOOT用于设置系统启动时是否激活网卡,BOOTPROTO用于设置指定方式获得IP地址。BOOTPROTO的值可以设置为dhcp、none、bootp或static,每个值的解释说明如表2-2所示。

表2-2 设置BOOTPROTO的值

3)修改/etc/sysconfig/network-scripts/ifcfg-ens33配置文件。将该文件中ONBOOT的值修改为“yes”,将BOOTPROTO的值修改为“static”,并添加IP地址IPADDR、子网掩码NETMASK、网关GATEWAY以及域名解析服务器DNS1的网络配置信息,如代码清单2-2所示。

代码清单2-2 修改ifcfg-ens33文件后的内容
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="6c2a466f-a4b0-4f29-aeee-8ea96252aee4"
DEVICE="ens33"
ONBOOT="yes"
# 添加内容
IPADDR=192.168.128.130
GATEWAY=192.168.128.2
NETMASK=255.255.255.0
DNS1=8.8.8.8

4)使用service network restart命令再次重启网卡服务,并使用ip addr命令查看IP,结果如图2-29所示。从图2-29中可以看出,IP地址已经设置为192.168.128.130,说明该虚拟机的IP地址固定已设置成功。

图2-29 重启服务并查看IP

2.4.3 远程连接虚拟机

在VMware软件中操作Linux系统十分麻烦,如无法进行命令的复制和粘贴,因此推荐使用Xmanager工具通过远程连接的方式操作Linux系统。Xmanager是应用于Windows系统的Xserver服务器软件。通过Xmanager,用户可以将远程的Linux桌面无缝导入Windows系统中。在Linux和Windows网络环境中,Xmanager是非常适合的系统连通解决方案之一。

通过Xmanager官网下载Xmanager安装包,安装包名称为Xme5.exe。下载安装包后,双击Xme5.exe即可完成Xmanager的安装。

使用Xmanager远程连接Linux系统的操作步骤如下。

1)使用Xmanager连接虚拟机前,需要先设置VMware Workstation的虚拟网络。在VMware的“编辑”菜单中单击“虚拟网络编辑器(N)”选项,如图2-30所示。

图2-30 选择“虚拟网络编辑器”选项

2)进入“虚拟网络编辑器”对话框后,需要管理员权限才能修改网络配置。如果没有管理员权限,那么单击“更改设置”按钮,重新进入对话框即可。选择“VMnet8”选项所在行,再将“子网IP(I)”修改为“192.168.128.0”,如图2-31所示,单击“确定”按钮关闭该对话框。

图2-31 修改子网IP

3)设置VMware的虚拟网络后,即可开始使用Xmanager中的Xshell工具远程连接虚拟机。在个人计算机的开始菜单找到程序图标Xshell,如图2-32所示,双击打开Xshell。

图2-32 双击打开Xshell

4)单击“文件”菜单,在出现的菜单栏中选择“新建(N)”选项,建立会话,如图2-33所示。

图2-33 新建会话

5)配置新建会话。在弹出的“新建会话属性”对话框中的“常规”组的“名称(N)”对应的文本框中输入“master”。该会话名称是由用户自行指定的,建议与要连接的虚拟机主机名称保持一致。在“主机(H)”对应的文本框中输入“192.168.128.130”,表示master虚拟机的IP地址,如图2-34所示。再单击左侧的“用户身份验证”选项,在右侧输入用户名“root”和密码“123456”,如图2-35所示,单击“确定”按钮,创建会话完成。

图2-34 创建会话属性1

图2-35 创建会话属性2

6)在Xshell的菜单栏中选择“打开(O)”选项,弹出“会话”对话框,选中会话“master”,并单击“连接(C)”按钮,如图2-36所示,将弹出SSH安全警告,单击“接受并保存(S)”按钮即可成功连接master虚拟机,如图2-37所示。

图2-36 连接会话

图2-37 SSH安全警告

2.4.4 配置本地yum源及安装常用软件

RPM Package Manager(RPM)是一个强大的命令行驱动的软件包管理工具,用于安装、卸载、校验、查询和更新Linux系统上的软件包。使用RPM安装软件包存在一个缺点,即软件包之间存在关联与依赖,安装一个软件需要预先安装该软件包关联依赖的其他软件包,因此,安装软件包的操作比较麻烦。在这种情况下,通过yum源安装软件包的方法应运而生。yum源安装软件包方法可以彻底解决RPM安装软件包时的包关联与依赖问题。

yum是杜克大学为了提高RPM软件包的安装性而开发的一个软件包管理器,能够在线从指定的服务器中自动下载RPM包并且安装,自动处理依赖性关系,并且一次安装所有依赖的软件包,无须重复下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁、易记。

yum命令的语法格式如下。

yum [options] [command] [package ...]

在yum命令的语法格式中,[options]参数是可选的,其支持的可选项说明如表2-3所示。

表2-3 yum命令的[options]选项说明

[command]参数表示要进行的操作,部分可供选择的操作如表2-4所示。

表2-4 yum的[command]参数说明

[package...]参数表示的是操作的对象,即需要安装的软件包名称。

配置本地yum源的操作步骤如下。

1)使用cd /etc/yum.repos.d命令,进入/etc/yum.repos.d目录。

2)查看yum.repos.d目录下的文件,发现目录下存在CentOS-Base.repo、CentOS-Debuginfo.repo、CentOS-fasttrack.repo、CentOS-Vault.repo、CentOS-Media.repo5个文件,其中CentOS-Media.repo是yum本地源的配置文件。配置本地yum源,将除yum本地源以外的其他yum源禁用,将CentOS-Base.repo、CentOS-Debuginfo.repo、CentOS-fasttrack.repo、CentOS-Vault.repo分别重命名为CentOS-Base.repo.bak、CentOS-Debuginfo.repo.bak、CentOS-fasttrack. repo.bak、CentOS-Vault.repo.bak,如代码清单2-3所示。

代码清单2-3 将除yum本地源以外的其他yum源禁用
mv CentOS-Base.repo CentOS-Base.repo.bak
mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
mv CentOS-fasttrack.repo CentOS-fasttrack.repo.bak
mv CentOS-Vault.repo CentOS-Vault.repo.bak

3)使用vi CentOS-Media.repo命令,打开并查看CentOS-Media.repo文件内容,如代码清单2-4所示。

代码清单2-4 CentOS-Media.repo修改前的内容
[c7-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/
        file:///media/cdrom/
        file:///media/cdrecorder/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

4)将baseurl的值修改为“file:///media/”,将gpgcheck的值改为“0”,将enabled的值改为“1”,修改后的内容如代码清单2-5所示。

代码清单2-5 CentOS-Media.repo修改后的内容
[c7-media]
name=CentOS-$releasever - Media
baseurl=file:///media/
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

5)使用mount /dev/sr0 /media命令挂载本地yum源。如果返回“mount:you must specify the filesystem type”,那么说明挂载没有成功,如图2-38所示。解决方案为:在VMware软件中右键单击master虚拟机,在弹出的快捷菜单中选择“设置”命令,弹出“虚拟机设置”对话框,然后在“硬件”选项卡中选择“CD/DVD(IDE)”所在行,并在右侧的“设备状态”组中选择“已连接(C)”复选框,如图2-39所示。

图2-38 挂载光盘失败

图2-39 挂载光盘失败的解决方案

6)再次执行挂载本地yum源命令,如果返回“mount:block device /dev/sr0 is write-protected,mounting read-only”,说明挂载成功,如图2-40所示。

图2-40 挂载成功

7)更新yum源。执行yum clean all命令,出现图2-41所示的信息,说明更新yum源成功。

图2-41 更新yum源成功

8)使用yum安装软件。以安装vim、zip、openssh-server、openssh-clients为例,每个软件的说明如表2-5所示。

表2-5 软件说明

使用yum install -y vim zip openssh-server openssh-clients命令安装软件,安装过程中会自动搜索目标软件以及所必需的依赖包,如图2-42所示。安装完成后会显示所有已安装的相关软件,如图2-43所示。

图2-42 安装依赖包

图2-43 yum安装软件完成

2.4.5 在Linux下安装Java

由于Hadoop是基于Java语言开发的,所以Hadoop集群的使用依赖于Java环境。因此,在安装Hadoop集群前,我们需要先安装Java,本书使用的Java开发工具包的版本为JDK 1.8。

在Linux下安装Java的操作步骤如下。

1)上传JDK安装包至虚拟机master,按“Ctrl+Alt+F”组合键,进入文件传输对话框,左侧为个人计算机的文件系统,右侧为Linux虚拟机的文件系统。在左侧的文件系统中查找到jdk-8u281-linux-x64.rpm安装包,右键单击该安装包,选择“传输(T)”命令上传至Linux的/opt目录下,如图2-44所示。

图2-44 上传JDK安装包

2)切换至/opt目录并使用rpm -ivh jdk-8u281-linux-x64.rpm命令安装JDK,如图2-45所示。

图2-45 安装JDK

3)验证JDK是否配置成功,使用java -version命令查看Java版本,结果如图2-46所示,说明JDK配置成功。

图2-46 验证JDK配置成功

2.4.6 修改配置文件

创建及配置了虚拟机master后,即可在虚拟机master上进行Hadoop集群的相关配置,通过修改配置文件内容进行设置。首先需要将Hadoop安装包hadoop-3.1.4.tar.gz上传至虚拟机master的/opt目录下,使用tar -zxf/opt/hadoop-3.1.4.tar.gz -C /usr/local命令,将Hadoop安装包解压至master的/usr/local目录下。

进入/usr/local/hadoop-3.1.4/etc/hadoop目录,并修改core-site.xml、hadoop-env.sh、yarn-env.sh、mapred-site.xml、yarn-site.xml、workers、hdfs-site.xml共7个配置文件的内容,具体操作步骤如下。

1)修改core-site.xml文件。core-site.xml是Hadoop的核心配置文件,用于配置两个属性,即fs.defaultFS和hadoop.tmp.dir。fs.defaultFS配置了Hadoop的HDFS文件系统的NameNode端口。注意:若NameNode所在的虚拟机名称不是“master”,则需要将“hdfs://master:8020”中的“master”替换为NameNode所在的虚拟机名称。hadoop.tmp.dir配置了Hadoop的临时文件的目录。core-site.xml文件添加的内容如代码清单2-6所示。

代码清单2-6 core-site.xml文件添加的内容
<configuration>
    <property>
    <name>fs.defaultFS</name>
        <value>hdfs://master:8020</value>
        </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/var/log/hadoop/tmp</value>
    </property>
</configuration>

2)修改hadoop-env.sh文件。hadoop-env.sh文件设置了Hadoop运行基本环境的相关配置,需要修改JDK所在目录。因此,在该文件中,将JAVA_HOME的值修改为JDK在Linux系统中的安装目录,如代码清单2-7所示。

代码清单2-7 修改hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_281-amd64

3)修改yarn-env.sh文件。yarn-env.sh文件设置了YARN框架运行环境的相关配置,同样需要修改JDK所在目录,如代码清单2-8所示。

代码清单2-8 修改yarn-env.sh文件
# export JAVA_HOME=/home/y/libexec/jdk1.6.0/
export JAVA_HOME=/usr/java/jdk1.8.0_281-amd64

4)修改mapred-site.xml文件。mapred-site.xml设置了MapReduce框架的相关配置,由于Hadoop 3.x使用了YARN框架,所以必须指定mapreduce.framework.name配置项的值为“yarn”。mapreduce.jobhistory.address和mapreduce.jobhistoryserver.webapp.address是JobHistoryserver的相关配置,即运行MapReduce任务的日志相关服务端口。mapred-site.xml文件添加的内容如代码清单2-9所示。

代码清单2-9 mapred-site.xml文件添加的内容
<configuration>
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
<!-- jobhistory properties --><property>
    <name>mapreduce.jobhistory.address</name>
    <value>master:10020</value>
</property>
<property>
     <name>mapreduce.jobhistory.webapp.address</name>
     <value>master:19888</value>
</property>
</configuration>

5)修改yarn-site.xml文件。yarn-site.xml文件设置了YARN框架的相关配置,文件中命名了一个yarn.resourcemanager.hostname变量,在YARN的相关配置中可以直接引用该变量,其他配置保持不变即可。yarn-site.xml文件修改的内容如代码清单2-10所示。

代码清单2-10 yarn-site.xml文件修改的内容
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>${yarn.resourcemanager.hostname}:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>${yarn.resourcemanager.hostname}:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>${yarn.resourcemanager.hostname}:8088</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.https.address</name>
        <value>${yarn.resourcemanager.hostname}:8090</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>${yarn.resourcemanager.hostname}:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>${yarn.resourcemanager.hostname}:8033</value>
    </property>
    <property>
        <name>yarn.nodemanager.local-dirs</name>
        <value>/data/hadoop/yarn/local</value>
    </property>
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.nodemanager.remote-app-log-dir</name>
        <value>/data/tmp/logs</value>
    </property>
<property>
    <name>yarn.log.server.url</name>
    <value>http://master:19888/jobhistory/logs/</value>
    <description>URL for job history server</description>
</property>
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
            <value>org.apache.hadoop.mapred.ShuffleHandler</value>
            </property>
<property>
            <name>yarn.nodemanager.resource.memory-mb</name>
            <value>2048</value>
</property>
<property>
            <name>yarn.scheduler.minimum-allocation-mb</name>
            <value>512</value>
</property>
<property>
            <name>yarn.scheduler.maximum-allocation-mb</name>
            <value>4096</value>
</property>
<property>
        <name>mapreduce.map.memory.mb</name>
        <value>2048</value>
</property>
<property>
        <name>mapreduce.reduce.memory.mb</name>
        <value>2048</value>
</property>
<property>
        <name>yarn.nodemanager.resource.cpu-vcores</name>
        <value>1</value>
</property>
</configuration>

6)修改workers文件。workers文件保存的是从节点(slave节点)的信息,在workers文件中添加的内容如代码清单2-11所示。

代码清单2-11 workers文件中添加的内容
slave1
slave2
slave3

7)修改hdfs-site.xml文件。hdfs-site.xml设置了与HDFS相关的配置,例如dfs.namenode.name.dir和dfs.datanode.data.dir分别指定了NameNode元数据和DataNode数据存储位置。dfs.namenode.secondary.http-address配置了SecondaryNameNode的地址。dfs.replication配置了文件块的副本数,默认为3个副本,不作修改。hdfs-site.xml文件修改的内容如代码清单2-12所示。

代码清单2-12 hdfs-site.xml文件修改的内容
<configuration>
<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:///data/hadoop/hdfs/name</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:///data/hadoop/hdfs/data</value>
</property>
<property>
     <name>dfs.namenode.secondary.http-address</name>
     <value>master:50090</value>
</property>
<property>
     <name>dfs.replication</name>
     <value>3</value>
</property>
</configuration>

为了防止Hadoop集群启动失败,需要修改Hadoop集群启动和关闭服务的文件。启动和关闭服务的文件在/usr/local/hadoop-3.1.4/sbin/目录下,需要修改的文件分别是start-dfs.sh、stop-dfs.sh、start-yarn.sh和stop-yarn.sh。

1)修改start-dfs.sh和stop-dfs.sh,在start-dfs.sh和stop-dfs.sh文件开头添加如代码清单2-13所示的内容。

代码清单2-13 start-dfs.sh和stop-dfs.sh文件开头添加的内容
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

2)修改start-yarn.sh和stop-yarn.sh,在start-yarn.sh和stop-yarn.sh文件开头添加如代码清单2-14所示的内容。

代码清单2-14 start-yarn.sh和stop-yarn.sh文件开头添加的内容
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

除此之外,还需要修改/etc/hosts文件。/etc/hosts文件配置的是主机名与IP地址的映射。设置主机名与IP地址映射后,各主机之间通过主机名即可进行通信和访问,简化并方便了访问操作。本书搭建的Hadoop集群共有4个节点,集群的节点主机名及IP地址如图2-6所示,因此可在/etc/hosts文件的末尾添加如代码清单2-15所示的内容。

代码清单2-15 /etc/hosts文件末尾添加的内容
192.168.128.130 master master.centos.com
192.168.128.131 slave1 slave1.centos.com
192.168.128.132 slave2 slave2.centos.com
192.168.128.133 slave3 slave3.centos.com

2.4.7 克隆虚拟机

在虚拟机master上配置完成Hadoop集群相关配置后,我们需要克隆虚拟机master,生成3个新的虚拟机slave1、slave2、slave3。

在虚拟机master的安装目录E:\VMware下建立3个文件slave1、slave2、slave3。下面以克隆master生成虚拟机slave1为例详细介绍虚拟机的克隆过程。

1)右键单击虚拟机master,依次选择“管理”→“克隆”命令,进入“克隆虚拟机向导”的界面,直接单击“下一步”按钮。

2)选择克隆源,选择“虚拟机中的当前状态(C)”单选按钮,如图2-47所示。

图2-47 选择克隆源

3)选择“创建完整克隆(F)”单选按钮,并单击“下一步”按钮,如图2-48所示。

图2-48 选择克隆类型

4)设置新虚拟机的名称为“slave1”,选择该虚拟机的安装位置为“E:\VMware\slave1”,如图2-49所示,单击“完成”按钮,虚拟机开始克隆,最后单击“关闭”按钮,如图2-50所示,完成虚拟机的克隆。

图2-49 新建虚拟机名称

图2-50 克隆虚拟机完成

5)开启slave1虚拟机修改相关配置。因为slave1虚拟机是由master虚拟机克隆产生的,即虚拟机配置与虚拟机master一致,所以需要修改slave1的相关配置,修改过程如下。

修改/etc/sysconfig/network-scripts/ifcfg-ens33文件,将IPADDR的值修改为“192.168.128.131”,如代码清单2-16所示,修改好后保存并退出。

代码清单2-16 修改slave1的ifcfg-ens33文件的IPADDR
IPADDR=192.168.128.131

重启网络服务并查看IP是否修改成功,如代码清单2-17所示。

代码清单2-17 重启网络服务和查看IP
# 重启网络服务
systemctl restart network
# 查看IP
ip addr

因为slave1是master的克隆虚拟机,所以需要修改主机名称为slave1,如代码清单2-18所示。

代码清单2-18 修改slave1的主机名称
# 修改slave1的主机名称
hostnamectl set-hostname slave1

使用reboot命令重新启动虚拟机。

验证slave1是否配置成功。在master节点中,执行ping slave1命令,若出现如图2-51所示界面,说明slave1配置成功。

图2-51 在master下ping slave1

6)重复步骤1)~5),继续克隆master虚拟机生成slave2、slave3虚拟机,并修改slave2、slave3虚拟机的相关配置。

2.4.8 配置SSH免密登录

SSH(Secure Shell)是建立在TCP/TP的应用层和传输层基础上的安全协议。SSH保障了远程登录和网络传输服务的安全性,起到了防止信息泄露等作用。SSH可以对文件进行加密处理,也可以运行于多平台。配置SSH无密码登录的步骤如下,所有步骤均是在master虚拟机上进行操作。

1)密钥分为公有密钥和私有密钥,ssh-keygen命令可以生成RSA类型的公钥与私钥对。使用ssh-keygen -t rsa命令,参数-t用于指定要创建的SSH密钥的类型为RSA,接着按3次“Enter”键,如图2-52所示,将生成私有密钥id_rsa和公有密钥id_rsa.pub两个文件。

图2-52 生成公钥与私钥对

2)使用ssh-copy-id命令将公钥复制到远程机器中,如代码清单2-19所示。

代码清单2-19 将公钥复制到远程机器中
# 依次输入yes,123456(root用户的密码)
ssh-copy-id -i /root/.ssh/id_rsa.pub master
ssh-copy-id -i /root/.ssh/id_rsa.pub slave1
ssh-copy-id -i /root/.ssh/id_rsa.pub slave2
ssh-copy-id -i /root/.ssh/id_rsa.pub slave3

3)验证SSH是否能够无密钥登录。在master主节点下分别输入“ssh slave1”“ssh slave2”“ssh slave3”,结果如图2-53所示,说明配置SSH免密码登录成功。

图2-53 验证SSH无密钥登录

2.4.9 配置时间同步服务

NTP是使计算机时间同步化的一种协议,可以使计算机对其服务器或时钟源进行同步化,提供高精准度的时间校正。Hadoop集群对时间要求很高,主节点与各从节点的时间都必须同步。配置时间同步服务主要是为了进行集群间的时间同步。Hadoop集群配置时间同步服务的步骤如下。

1)安装NTP服务。2.4.4节中已经配置了本地yum源,这里可以直接使用yum安装NTP服务。在各节点使用yum install -y ntp命令,若出现了“Complete”信息,则说明安装NTP服务成功。若安装出现问题,则需要重新挂载本地yum源操作,使用mount /dev/sr0 /media命令。

2)设置master节点为NTP服务主节点,使用vim /etc/ntp.conf命令打开/etc/ntp.conf文件,注释掉以server开头的行,并添加如代码清单2-20所示的内容。

代码清单2-20 master节点的ntp.conf文件添加的内容
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
server 127.127.1.0
fudge 127.127.1.0 stratum 10

3)分别在slave1、slave2、slave3中配置NTP服务,同样修改/etc/ntp.conf文件,注释掉server开头的行,并添加如代码清单2-21所示的内容。

代码清单2-21 子节点的ntp.conf文件添加的内容
server master

4)使用systemctl stop firewalld和systemctl disable firewalld命令关闭防火墙并禁止开机自动启动防火墙。注意,主节点和从节点均需要关闭。

5)启动NTP服务。NTP服务安装完成后即可启动NTP服务。

在master节点使用systemctl start ntpd和systemctl enable ntpd命令,再使用systemctl status ntpd命令查看NTP服务状态,如图2-54所示,出现active(running)信息,说明NTP服务启动成功。

图2-54 查看NTP服务状态

分别在slave1、slave2、slave3节点上使用ntpdate master命令,即可同步时间,如图2-55所示。

图2-55 子节点执行ntpdate master命令

分别在slave1、slave2、slave3节点上分别使用systemctl start ntpd和systemctl enable ntpd命令,即可永久启动NTP服务,使用systemctl status ntpd命令查看NTP服务状态,如图2-56所示,出现active(running)信息,说明该子节点的NTP服务也启动成功。

图2-56 子节点启动NTP服务

2.4.10 启动关闭集群

完成Hadoop的所有配置后,即可执行格式化NameNode操作。该操作会在NameNode所在机器初始化一些HDFS的相关配置,并且只需在集群搭建过程中执行一次,执行格式化之前可以先配置环境变量。

在master、slave1、slave2、slave3节点上修改/etc/profile文件,在文件末尾添加如代码清单2-22所示的内容,保存并退出,然后使用source /etc/profile命令使配置生效。

代码清单2-22 /etc/profile文件末尾添加的内容
export HADOOP_HOME=/usr/local/hadoop-3.1.4
export PATH=$HADOOP_HOME/bin:$PATH:$JAVA_HOME/bin

格式化只需使用hdfs namenode -format命令,若出现“Storage directory /data/hadoop/ hdfs/name has been successfully formatted”提示,则表示格式化NameNode成功,如图2-57所示。

图2-57 格式化成功提示

格式化完成后即可启动Hadoop集群,此时只需要在master节点直接进入Hadoop安装目录,使用代码清单2-23所示的命令即可启动Hadoop集群。

代码清单2-23 启动集群命令
cd $HADOOP_HOME      # 进入Hadoop安装目录
sbin/start-dfs.sh    # 启动HDFS相关服务
sbin/start-yarn.sh   # 启动YARN相关服务
sbin/mr-jobhistory-daemon.sh start historyserver  # 启动日志相关服务

集群启动之后,在主节点master,子节点slave1、slave2、slave3分别使用jps命令,出现如图2-58所示的信息,说明集群启动成功。

图2-58 集群启动成功

同理,关闭集群也只需要在master节点直接进入Hadoop安装目录,使用代码清单2-24所示的命令即可。 vo7F7GOzHUfAUIqnqVwwhYsMvU6qUOBPC/NsZ/WvYNLbdkz8iJcQAZn3xKd/jtV+

代码清单2-24 关闭集群命令
cd $HADOOP_HOME  # 进入Hadoop安装目录
sbin/stop-yarn.sh  # 关闭YARN相关服务
sbin/stop-dfs.sh  # 关闭HDFS相关服务
sbin/mr-jobhistory-daemon.sh stop historyserver  # 关闭日志相关服务
点击中间区域
呼出菜单
上一章
目录
下一章
×