Hadoop之——基于3台服务器搭建Hadoop3.x集群(实测完整版)

网友投稿 311 2022-11-20

Hadoop之——基于3台服务器搭建Hadoop3.x集群(实测完整版)

一、  服务器规划

二、Hadoop集群环境的准备

搭建Hadoop集群环境之前,需要为搭建Hadoop集群环境做一些相关的准备工作,以达到正确安装Hadoop集群的目的。

1.添加hadoop用户身份

以root身份登录每台虚拟机服务器,在每台服务器上执行如下操作。

groupadd hadoopuseradd -r -g hadoop hadooppasswd hadoopChanging password for user hadoop.New password: 新密码Retype new password: 确认新密码passwd: all authentication tokens updated successfully.chown -R hadoop.hadoop /usr/local/chown -R hadoop.hadoop /tmp/chown -R hadoop.hadoop /home/vim /etc/sudoers找到root ALL=(ALL) ALL下面添加hadoop ALL=(ALL) ALL

2.关闭防火墙

以root身份登录虚拟机服务器,在每台服务器上执行如下命令:

#查看防火墙状态service iptables status#关闭防火墙service iptables stop#关闭防火墙开机启动chkconfig iptables off#查看防火墙状态service iptables status

3.设置静态IP

为每台服务器设置静态IP,这里以服务器binghe201(192.168.175.201)为例,修改配置文件“/etc/sysconfig/network-scripts/ifcfg-eth0”文件,如下:

DEVICE=eth0TYPE=EthernetUUID=11e3b288-72da-4cc6-898d-ee2bf0b44d77ONBOOT=yesNM_CONTROLLED=yesBOOTPROTO=staticIPADDR=192.168.175.201NETMASK=255.255.255.0BROADCAST=192.168.175.255GATEWAY=192.168.175.2DNS1=114.114.114.114DNS2=8.8.8.8DEFROUTE=yesIPV4_FAILURE_FATAL=yesIPV6INIT=noNAME="System eth0"HWADDR=00:0C:29:7F:45:21PEERDNS=yesPEERROUTES=yesLAST_CONNECT=1561336045

下面,分别列出每台服务器上“/etc/sysconfig/network-scripts/ifcfg-eth0”文件修改过的部分。

binghe202(192.168.175.202)

BOOTPROTO=staticIPADDR=192.168.175.202NETMASK=255.255.255.0BROADCAST=192.168.175.255GATEWAY=192.168.175.2DNS1=114.114.114.114DNS2=8.8.8.8

binghe203(192.168.175.203)

BOOTPROTO=staticIPADDR=192.168.175.203NETMASK=255.255.255.0BROADCAST=192.168.175.255GATEWAY=192.168.175.2DNS1=114.114.114.114DNS2=8.8.8.8

设置完静态IP之后,在每台服务器上执行如下命令重启网络。

service network restart

4.设置主机名

设置主机名需要在文件“/etc/sysconfig/network”中进行配置。如果需要修改当前会话的主机名需要使用命令“hostname 主机名”的方式进行设置。

下面,分别列出每台服务器上“/etc/sysconfig/network”文件的配置和执行的命令。

binghe201(192.168.175.201)

hostname binghe201vim /etc/sysconfig/networkNETWORKING=yesHOSTNAME=binghe201

binghe202(192.168.175.202)

hostname binghe202vim /etc/sysconfig/networkNETWORKING=yesHOSTNAME=binghe202

binghe203(192.168.175.203)

hostname binghe203vim /etc/sysconfig/networkNETWORKING=yesHOSTNAME=binghe203

5.设置主机名与IP地址的映射关系

在每台服务器上修改“/etc/hosts”文件,添加如下配置:

192.168.175.201 binghe201192.168.175.202 binghe202192.168.175.203 binghe203

6.集群环境下配置SSH免密码登录

注意:配置SSH免密码登录,使用hadoop身份登录虚拟机服务器,进行相关的操作。

(1)生成SSH免密码登录公钥和私钥

在每台虚拟机服务器上执行如下命令,在每台服务器上分别生成SSH免密码登录的公钥和私钥。

ssh-keygen -t rsacat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys

(2)设置目录和文件权限

在每台虚拟机服务器上执行如下命令,设置相应目录和文件的权限。

chmod 700 /home/hadoop/ chmod 700 /home/hadoop/.ssh chmod 644 /home/hadoop/.ssh/authorized_keys chmod 600 /home/hadoop/.ssh/id_rsa

(3)将公钥拷贝到每台服务器

在每台虚拟机服务器上执行如下命令,将生成的公钥拷贝到每台虚拟机服务器上。

ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub binghe201ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub binghe202ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub binghe203

执行完上面的命令之后,每台服务器之间都可以通过“ssh 服务器主机名”进行免密码登录了。

注意:执行每条命令的时候,都会提示类似如下信息。

Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added 'binghe101,192.168.175.101' (RSA) to the list of known hosts.hadoop@binghe101's password:

在“是否确认继续连接”的地方输入“yes”,提示输入密码的地方输入相应服务器的登录密码即可,后续使用“ssh 主机名”登录相应服务器就不用再输入密码了。

三、集群环境下的JDK安装

(1)安装JDK并配置系统环境便令

在每台服务器上执行安装JDK的操作,同样是将JDK安装在CentOS虚拟机的“/usr/local”目录下,即JAVA_HOME安装目录为“/usr/local/jdk1.8.0_212”。在文件“/etc/profile”中配置的系统环境变量如下:

JAVA_HOME=/usr/local/jdk1.8.0_212CLASS_PATH=.:$JAVA_HOME/libPATH=$JAVA_HOME/bin:$PATHexport JAVA_HOME CLASS_PATH PATH

(2)使系统环境变量生效

在每台服务器上执行如下命令使JDK系统环境变量生效。

source /etc/profile

(3)验证JDK是否安装配置

具体验证方式如下:

-bash-4.1$ java -versionjava version "1.8.0_212"Java(TM) SE Runtime Environment (build 1.8.0_212-b10)Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)

可以看到输出了Java版本,说明JDK安装配置成功。

四、搭建并配置Zookeeper集群

安装配置完JDK后,就需要搭建Zookeeper集群了,根据对服务器的规划,现将Zookeeper集群搭建在“binghe201”、“binghe202”、“binghe203”三台服务器上。

注意:步骤1-4是在“binghe201”服务器上进行的操作。

1.下载Zookeeper

在“binghe201”上执行如下命令下载Zookeeper。

wget JAVA_HOME ZOOKEEPER_HOME CLASS_PATH PATH

3.配置Zookeeper

首先,需要将“$ZOOKEEPER_HOME/conf”(“$ZOOKEEPER_HOME”为Zookeeper的安装目录)目录下的zoo_sample.cfg文件修改为zoo.cfg文件。具体命令如下:

cd /usr/local/zookeeper-3.5.5/conf/mv zoo_sample.cfg zoo.cfg

接下来修改zoo.cfg文件,修改后的具体内容如下:

tickTime=2000initLimit=10syncLimit=5dataDir=/usr/local/zookeeper-3.5.5/datadataLogDir=/usr/local/zookeeper-3.5.5/dataLogclientPort=2181server.1=binghe201:2888:3888server.2=binghe202:2888:3888server.3=binghe203:2888:3888

在Zookeeper的安装目录下创建“data”和“dataLog”两个文件夹。

mkdir -p /usr/local/zookeeper-3.5.5/datamkdir -p /usr/local/zookeeper-3.5.5/dataLog

切换到新建的data目录下,创建myid文件,具体内容为数字“1”,如下所示:

echo "1" >> /usr/local/zookeeper-3.5.5/data/myid

将数字“1”写入到文件myid。

4.复制Zookeeper和系统环境变量到其他服务器

将“binghe201”上安装的Zookeeper和系统环境变量文件拷贝到“binghe202”和“binghe203”服务器,具体操作如下:

scp -r /usr/local/zookeeper-3.5.5/ binghe202:/usr/local/scp -r /usr/local/zookeeper-3.5.5/ binghe203:/usr/local/sudo scp /etc/profile binghe202:/etcsudo scp /etc/profile binghe203:/etc

注意:拷贝系统环境变量文件“/et/profile”文件的时候,如果提示要求输入密码,根据相应的提示输入密码即可。

5.修改myid文件内容

将“binghe202”服务器上Zookeeper的myid文件内容修改为数字2。

在“binghe202”上执行如下命令:

-bash-4.1$ echo "2" > /usr/local/zookeeper-3.5.5/data/myid-bash-4.1$ cat /usr/local/zookeeper-3.5.5/data/myid2

可以看到Zookeeper文件的内容被成功修改为数字2了。

将“binghe203”服务器上Zookeeper的myid文件内容修改为数字3。

在“binghe203”服务器上执行如下命令:

-bash-4.1$ echo "3" > /usr/local/zookeeper-3.5.5/data/myid -bash-4.1$ cat /usr/local/zookeeper-3.5.5/data/myid3

可以看到Zookeeper文件的内容被成功修改为数字3了。

6.使环境变量生效

分别在“binghe201”、“binghe202”和“binghe203”上执行如下操作,使系统环境变量生效。

source /etc/profile

五、搭建并配置Hadoop集群

注意:1-5步是在“binghe201”服务器上执行的操作。

1.下载Hadoop

在“binghe201”上执行如下命令下载Hadoop。

wget mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.2.0/hadoop-3.2.0.tar.gz

2.解压并配置系统环境变量

(1)解压Hadoop

输入如下命令对Hadoop进行解压。

tar -zxvf hadoop-3.2.0.tar.gz

(2)配置Hadoop系统环境变量

同样,Hadoop的系统环境变量也需要在“/etc/profile”文件中进行相应的配置,通过如下命令打开“/etc/profile”文件并进行相关设置。

sudo vim /etc/profile

上述命令可能要求输入密码,根据提示输入密码即可。

在“/etc/profile”文件中添加如下配置:

HADOOP_HOME=/usr/local/hadoop-3.2.0PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATHexport HADOOP_HOME PATHexport HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoopexport HADOOP_COMMON_HOME=$HADOOP_HOMEexport HADOOP_HDFS_HOME=$HADOOP_HOMEexport HADOOP_MAPRED_HOME=$HADOOP_HOMEexport HADOOP_YARN_HOME=$HADOOP_HOMEexport HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

结合之前配置的JDK和Zookeeper系统环境变量,整体配置信息如下:

JAVA_HOME=/usr/local/jdk1.8.0_212ZOOKEEPER_HOME=/usr/local/zookeeper-3.5.5HADOOP_HOME=/usr/local/hadoop-3.2.0CLASS_PATH=.:$JAVA_HOME/libPATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATHexport JAVA_HOME ZOOKEEPER_HOME HADOOP_HOME CLASS_PATH PATHexport HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoopexport HADOOP_COMMON_HOME=$HADOOP_HOMEexport HADOOP_HDFS_HOME=$HADOOP_HOMEexport HADOOP_MAPRED_HOME=$HADOOP_HOMEexport HADOOP_YARN_HOME=$HADOOP_HOMEexport HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

(3)使系统环境变量生效

source /etc/profile

(4)验证Hadoop系统环境变量是否配置成功

具体验证方式如下所示:

hadoop version Hadoop 3.2.0Source code repository -r e97acb3bd8f3befd27418996fa5d4b50bf2e17bfCompiled by sunilg on 2019-01-08T06:08ZCompiled with protoc 2.5.0From source with checksum d3f0795ed0d9dc378e2c785d3668f39This command was run using /usr/local/hadoop-3.2.0/share/hadoop/common/hadoop-common-3.2.0.jar

也就是在命令行输入“hadoop version”命令,可以看到输出了Hadoop的版本号“Hadoop 3.2.0”,说明Hadoop系统环境变量配置成功。

3.修改Hadoop配置文件

Hadoop集群环境的搭建流程基本和Zookeeper集群的搭建流程相同,除了要解压安装包和配置系统环境变量外,还需要对自身框架进行相关的配置。

(1)配置hadoop-env.sh

在hadoop-env.sh文件中,需要指定JAVA_HOME的安装目录,具体如下:

cd /usr/local/hadoop-3.2.0/etc/hadoop/vim hadoop-env.shexport JAVA_HOME=/usr/local/jdk1.8.0_212

(2)配置core-site.xml

具体配置信息如下:

fs.defaultFS hdfs://ns/ hadoop.tmp.dir /usr/local/hadoop-3.2.0/tmp ha.zookeeper.quorum binghe201:2181,binghe202:2181,binghe203:2181

(3)配置hdfs-site.xml

具体配置信息如下:

dfs.nameservices ns dfs.ha.namenodes.ns nn1,nn2 dfs.namenode.rpc-address.ns.nn1 binghe201:9000 dfs.namenode. binghe201:9870 dfs.namenode.rpc-address.ns.nn2 binghe202:9000 dfs.namenode. binghe202:9870 dfs.namenode.shared.edits.dir qjournal://binghe201:8485;binghe202:8485;binghe203:8485/ns dfs.journalnode.edits.dir /usr/local/hadoop-3.2.0/journaldata dfs.ha.automatic-failover.enabled true dfs.client.failover.proxy.provider.ns org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider dfs.ha.fencing.methods sshfence shell(/bin/true) dfs.ha.fencing.ssh.private-key-files /home/hadoop/.ssh/id_rsa dfs.ha.fencing.ssh.connect-timeout 30000

(4)配置mapred-site.xml

具体配置信息如下:

mapreduce.framework.name yarn yarn.app.mapreduce.am.env HADOOP_MAPRED_HOME=${HADOOP_HOME} mapreduce.map.env HADOOP_MAPRED_HOME=${HADOOP_HOME} mapreduce.reduce.env HADOOP_MAPRED_HOME=${HADOOP_HOME}

(5)配置yarn-site.xml

具体配置信息如下:

yarn.nodemanager.aux-services mapreduce_shuffle yarn.resourcemanager.hostname binghe203

(6)修改workers文件

这个文件主要是用来存放DataNode节点用的。在Hadoop3.0之前的版本中,这个文件叫作“slaves”。

具体配置信息如下:

binghe201binghe202binghe203

4.将配置好的Hadoop拷贝到其他节点

将在“binghe101”上安装并配置好的Hadoop复制到其他服务器上,具体操作如下:

scp -r /usr/local/hadoop-3.2.0/ binghe202:/usr/local/scp -r /usr/local/hadoop-3.2.0/ binghe203:/usr/local/

5.将配置好的Hadoop系统环境变量拷贝到其他节点

sudo scp /etc/profile binghe202:/etc/sudo scp /etc/profile binghe203:/etc/

6.使系统环境变量生效

在所有服务器上执行如下命令,使系统环境变量生效,并验证Hadoop系统环境变量是否配置成功。

source /etc/profilehadoop version

可以看到,输入“hadoop version”命令之后,命令行输出了如下信息:

Hadoop 3.2.0Source code repository -r e97acb3bd8f3befd27418996fa5d4b50bf2e17bfCompiled by sunilg on 2019-01-08T06:08ZCompiled with protoc 2.5.0From source with checksum d3f0795ed0d9dc378e2c785d3668f39This command was run using /usr/local/hadoop-3.2.0/share/hadoop/common/hadoop-common-3.2.0.jar

说明,Hadoop系统环境变量配置成功。

六、启动Zookeeper集群

在三台服务器上分别执行如下命令启动Zookeeper进程。

zkServer.sh start

在每台服务器上查看是否存在Zookeeper进程。

“binghe201”服务器

-bash-4.1$ jps1476 QuorumPeerMain1514 Jps

“binghe202”服务器

-bash-4.1$ jps1507 Jps1462 QuorumPeerMain

“binghe203”服务器

-bash-4.1$ jps1460 QuorumPeerMain1498 Jps

可以看到每天服务器上都启动了Zookeeper进程。

查看每台服务器上Zookeeper的运行模式,具体如下所示。

“binghe201”服务器

-bash-4.1$ zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: /usr/local/zookeeper-3.5.5/bin/../conf/zoo.cfgClient port found: 2181. Client address: localhost.Mode: follower

“binghe202”服务器

-bash-4.1$ zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: /usr/local/zookeeper-3.5.5/bin/../conf/zoo.cfgClient port found: 2181. Client address: localhost.Mode: leader

“binghe203”服务器

-bash-4.1$ zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: /usr/local/zookeeper-3.5.5/bin/../conf/zoo.cfgClient port found: 2181. Client address: localhost.Mode: follower

可以看到,在“binghe202”服务器上运行的Zookeeper为“leader”,在“binghe201”和“binghe203”服务器上运行的Zookeeper为“follower”,说明:Zookeeper集群搭建并启动成功。

七、启动Hadoop集群

启动搭建的精简版的Hadoop集群,同样需要启动journalnode进程、格式化HDFS、格式化ZKFC、启动HDFS和启动YARN。具体操作步骤如下(注意:需要严格按照以下步骤启动Hadoop集群)。

1.启动并验证journalnode进程

(1)启动journalnode进程

在“binghe201”服务器上执行如下命令启动journalnode进程。

hdfs --workers --daemon start journalnode

注意:在Hadoop 3.0以前是输入如下命令启动journalnode进程。

hadoop-daemons.sh start journalnode

(2)验证journalnode进程是否启动成功

在三台服务器上分别执行“jps”命令查看是否存在journalnode进程,以此确认journalnode进程是否启动成功。

“binghe201”服务器

-bash-4.1$ jps1476 QuorumPeerMain1669 Jps1640 JournalNode

“binghe202”服务器

-bash-4.1$ jps1633 Jps1462 QuorumPeerMain1594 JournalNode

“binghe203”服务器

-bash-4.1$ jps1585 JournalNode1460 QuorumPeerMain1624 Jps

可以看到,三台服务器均启动了journalnode进程,说明journalnode进程启动成功。

2.格式化HDFS

在“binghe201”服务器上执行如下命令格式化HDFS。

hdfs namenode -format

格式化成功之后,会输出“common.Storage: Storage directory /usr/local/hadoop-3.2.0/tmp/dfs/name has been successfully formatted.”信息,并在HADOOP_HOME(/usr/local/hadoop-3.2.0/)目录下自动创建tmp目录。具体如图所示。

3.格式化ZKFC

在“binghe201”服务器上执行如下命令格式化ZKFC。

hdfs zkfc -formatZK

格式化成功之后,会输出“ha.ActiveStandbyElector: Successfully created /hadoop-ha/ns in ZK.”信息。具体如图所示。

4.启动NameNode并验证

(1)启动NameNode

在“binghe201”服务器上执行如下命令启动NameNode。

hdfs --daemon start namenode

注意:在Hadoop3.0以前的版本启动NameNode是输入如下的命令:

hadoop-daemon.sh start namenode

(2)验证NameNode是否启动成功

在“binghe201”服务器上输入“jps”命令查看是否存在NameNode进程,以此确认NameNode是否启动成功,具体如下:

-bash-4.1$ jps1892 Jps1476 QuorumPeerMain1640 JournalNode1852 NameNode

从输出结果可以看出,存在“NameNode”进程,说明NameNode启动成功。

5.同步元数据信息

在“binghe202”服务器上执行如下命令进行元数据信息的同步操作。

hdfs namenode -bootstrapStandby

同步元数据信息的时候输出了“common.Storage: Storage directory /usr/local/hadoop-3.2.0/tmp/dfs/name has been successfully formatted.”信息,说明同步元数据信息成功。

6.启动并验证备用NameNode

(1)启动备用NameNode

在“binghe202”服务器上执行如下命令启动备用NameNode。

hdfs --daemon start namenode注意:在Hadoop3.0以前的版本启动NameNode是输入如下的命令:hadoop-daemon.sh start namenode

(2)验证备用NameNode是否启动成功

在“binghe202”服务器上输入“jps”命令查看是否存在NameNode进程,以此确认备用NameNode是否启动成功,具体如下:

-bash-4.1$ jps1750 NameNode1462 QuorumPeerMain1816 Jps1594 JournalNode

从输出结果可以看出,存在“NameNode”进程,说明备用NameNode启动成功。

7.启动并验证DataNode

(1)启动DataNode

在“binghe201”服务器上执行如下命令启动DataNode。

hdfs --workers --daemon start datanode注意:在Hadoop3.0以前的版本启动DataNode是输入如下的命令:hadoop-daemons.sh start datanode

(2)验证DataNode是否启动成功

在三台服务器分别输入“jps”命令,查看是否存在“DataNode”进程,以此确认DataNode是否启动成功。

“binghe201”服务器

-bash-4.1$ jps2145 DataNode1476 QuorumPeerMain2231 Jps1640 JournalNode1852 NameNode

“binghe202”服务器

-bash-4.1$ jps1750 NameNode1462 QuorumPeerMain1962 DataNode1594 JournalNode2063 Jps

“binghe203”服务器

-bash-4.1$ jps1585 JournalNode1460 QuorumPeerMain1703 DataNode1771 Jps

由输出结果可以看出,三台服务器中均启动了“DataNode”进程,说明DataNode启动成功。

8.启动并验证YARN

(1)启动YARN

在“binghe203”服务器上执行如下命令启动YARN。

start-yarn.sh

(2)验证YARN是否启动成功

在三台服务器上执行“jps”命令来验证YARN是否启动成功。

“binghe201”服务器

-bash-4.1$ jps2464 Jps2145 DataNode1476 QuorumPeerMain1640 JournalNode2329 NodeManager1852 NameNode

“binghe202”服务器

-bash-4.1$ jps2147 NodeManager1750 NameNode1462 QuorumPeerMain1962 DataNode1594 JournalNode2284 Jps

“binghe203”服务器

-bash-4.1$ jps1585 JournalNode2354 Jps1460 QuorumPeerMain1989 NodeManager1703 DataNode1883 ResourceManager

由输出结果可以看出“ResourceManager”进程存在于“binghe203”服务器上;“NodeManager”进程存在于“binghe201”、“binghe202”和“binghe203”服务器上。说明YARN启动成功。

9.启动并验证ZKFC

(1)启动ZKFC

在“binghe201”服务器上执行如下命令启动ZKFC。

hdfs --workers --daemon start zkfc注意:在Hadoop3.0以前的版本中,启动ZKFC需要使用如下命令:hadoop-daemons.sh start zkfc

(2)验证ZKFC是否启动成功

在“binghe201”和“binghe202”服务器上分别执行“jps”命令,查看是否存在“DFSZKFailoverController”进程。

“binghe201”服务器

-bash-4.1$ jps2145 DataNode1476 QuorumPeerMain1640 JournalNode2329 NodeManager1852 NameNode2734 Jps2670 DFSZKFailoverController

“binghe202”服务器

-bash-4.1$ jps2147 NodeManager2484 Jps1750 NameNode1462 QuorumPeerMain2439 DFSZKFailoverController1962 DataNode1594 JournalNode

由输出结果可以看出,两台服务器均启动了“DFSZKFailoverController”进程,说明ZKFC启动成功。

八、启动Hadoop集群的另一种方式

这种方式要比每次启动单个进程并进行验证方便的多,只需要进行如下操作:

1.格式化HDFS

在“binghe201”服务器上执行如下命令格式化HDFS。

hdfs namenode -format

2.复制元数据信息

将“binghe201”服务器上的“/usr/local/hadoop-3.2.0/tmp/”目录复制到服务器“binghe202”服务上的“/usr/local/hadoop-3.2.0”目录下。

在“binghe201”服务器上执行如下命令进行复制:

scp -r /usr/local/hadoop-3.2.0/tmp/ binghe202:/usr/local/hadoop-3.2.0/

3.格式化ZKFC

在“binghe201”服务器上执行如下命令格式化ZKFC。

hdfs zkfc -formatZK

4.启动HDFS

在“binghe201”服务器上执行启动HDFS的命令,具体如下所示:

start-dfs.sh

5.启动YARN

在“binghe203”服务器上执行启动YARN的命令,具体如下所示:

start-yarn.sh

九、 测试Hadoop HA的高可用性

使用浏览器方式验证和程序方式验证两种方式来验证Hadoop HA的高可用性。

1.浏览器方式验证

(1)浏览器访问NameNode

访问“binghe201”服务器上的NameNode

在浏览器中输入链接:​​访问“binghe201”服务器上的NameNode

此时,“binghe201”服务器上的NameNode处于“active”状态。

访问“binghe202”服务器上的NameNode

在浏览器中输入链接:​​访问“binghe202”服务器上的NameNode

此时,“binghe202”服务器上的NameNode处于“standby”状态。

(2)停止“binghe201”上的NameNode后访问

停止“binghe201”上的NameNode进程

在“binghe201”服务器上执行如下命令停止NameNode进程。

hdfs --daemon stop namenode注意:在Hadoop3.0之前的版本停止NameNode进程需要输入以下命令:hadoop-daemon.sh stop namenode

浏览器访问“binghe201”服务器上的NameNode

在浏览器中输入链接:​​访问“binghe201”服务器上的NameNode

可以看到,由于停止了“binghe201”服务器上的NameNode进程,导致此服务器上的NameNode已无法访问。

浏览器访问“binghe202”服务器上的NameNode

在浏览器中输入链接:​​访问“binghe202”服务器上的NameNode

可以看到,由于“binghe201”服务器上的NameNode无法访问,“binghe202”服务器上的NameNode自动切换为“active”状态。

(3)重启“binghe201”上的NameNode访问

首先,在“binghe201”服务器上执行如下命令启动NameNode进程。

hdfs --daemon start namenode注意:在Hadoop3.0之前的版本启动NameNode进程需要输入以下命令:hadoop-daemon.sh stop namenode

接下来访问“binghe201”服务器上的NameNode

总结:正常启动NameNode进程后,“binghe201”服务器上的NameNode处于“active”状态,“binghe202”服务器上的NameNode处于“standby”状态;当停止“binghe201”服务器上的NameNode时,“binghe202”服务器上的NameNode自动切换为“active”状态,而重启“binghe201”服务器上的NameNode后,“binghe201”服务器上的NameNode此时会处于“standby”状态。说明:Hadoop HA搭建并配置成功了。

2.程序方式验证

以程序方式验证,还是运行Hadoop自带的wordcount程序,对文件中的单词进行计数,并输出统计结果。

(1)准备数据文件

在“binghe201”服务器上准备数据文件data.input,并写入测试的单词。具体如下:

vim data.inputhadoop mapreduce hive flumehbase spark storm flume sqoop hadoop hive kafkaspark hadoop storm

(2)上传数据文件到HDFS

首先,在HDFS上创建目录“/data /input”,具体命令如下:

hadoop fs -mkdir -p /data/input

在“binghe201”上执行如下命令将data.input文件上传到HDFS分布式文件系统中的“/data/hadoop/input”目录下,具体命令如下:

hadoop fs -put data.input /data/input

接下来查看文件data.input是否上传成功,具体命令如下:

-bash-4.1$ hadoop fs -ls /data/inputFound 1 items-rw-r--r-- 3 hadoop supergroup 96 2019-06-27 17:04 /data/input/data.input

可以看到,data.input文件已经成功上传到HDFS分布式文件系统的“/data/hadoop/input”目录下。

(3)运行Hadoop MapReduce程序

具体执行命令如下:

hadoop jar /usr/local/hadoop-3.2.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.0.jar wordcount /data/input/data.input /data/output201

注意:这里的输出目录是HDFS上的“/data/output201”目录。

(4)查看执行结果

首先,利用如下命令查看HDFS中是否产生了输出结果。

-bash-4.1$ hadoop fs -ls /data/output201Found 2 items-rw-r--r-- 3 hadoop supergroup 0 2019-06-27 17:16 /data/output201/_SUCCESS-rw-r--r-- 3 hadoop supergroup 76 2019-06-27 17:16 /data/output201/part-r-00000

可以看到在HDFS的“/data/output101”目录下产生了执行结果,接下来查看“part-r-00000”文件的内容,具体如下:

-bash-4.1$ hadoop fs -cat /data/output201/part-r-00000flume 2hadoop 3hbase 1hive 2kafka 1mapreduce 1spark 2sqoop 1storm 2

可以看到,正确地输出了每个单词和单词对应的数量。

(5)停止“binghe201”服务器上的NameNode进程

hdfs --daemon stop namenode注意:在Hadoop3.0之前的版本停止NameNode进程需要输入以下命令:hadoop-daemon.sh stop namenode

(6)再次运行MapReduce程序

hadoop jar /usr/local/hadoop-3.2.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.0.jar wordcount /data/input/data.input /data/output202

注意:这里的输出目录是HDFS上的“/data/output202”目录。

(7)再次查看执行结果

首先,利用如下命令查看HDFS中是否产生了输出结果。

-bash-4.1$ hadoop fs -ls /data/output202Found 2 items-rw-r--r-- 3 hadoop supergroup 0 2019-06-27 17:20 /data/output202/_SUCCESS-rw-r--r-- 3 hadoop supergroup 76 2019-06-27 17:20 /data/output202/part-r-00000

可以看到在HDFS的“/data/output102”目录下产生了执行结果,接下来查看“part-r-00000”文件的内容,具体如下:

-bash-4.1$ hadoop fs -cat /data/output202/part-r-00000flume 2hadoop 3hbase 1hive 2kafka 1mapreduce 1spark 2sqoop 1storm 2

说明集群搭建成功。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:马斯克的脑机接口设备更新的要点
下一篇:二叉树递归迭代及morris层序前中后序遍历详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~