1

3-搭建Hadoop HA

0.更改主机名

 hostnamectl set-hostname master
 hostnamectl set-hostname master2
 hostnamectl set-hostname slave

1.ssh免密登录

(1),生成秘钥(群发)

 ssh-keygen

(2),配置hosts

 # 打开配置文件目录,
 vi /etc/hosts
 # 根据ip信息修改为以下内容
 192.168.204.152 master
 192.168.204.153 master2
 192.168.204.154 slave
 # 在每台服务器中都要配置hosts,所以在每台服务器中都执行

(3),采用追加的方式添加公钥(群发)

 第一台主机:
 ssh-copy-id master
 yes
 000000(输入设置的密码)
 第二台主机:
 ssh-copy-id master2
 yes
 000000(输入设置的密码)
 第三台主机(在此时注意一点的是,这里做输入的时候其他两台主机仍然是第一次连接所以需要先选中yes,在输入密码):
 ssh-copy-id slave
 yes
 000000(输入设置的密码)

2.关闭防火墙

 # 关闭防火墙:
 systemctl stop firewalld
 # 设置开机禁用防火墙:
 systemctl disable firewalld.service
 # 检查防火墙状态:
 systemctl status firewalld

3.jdk的安装与配置

(1).解压jdk组件

 # 使用xftp将组件上传到/soft目录下
 mkdir /soft
 # 新建文件目录:/usr/java
 mkdir -p /usr/java/
 # 进入soft目录下解压jdk
 cd /soft
 tar -zxvf jdk-8u77-linux-x64.tar.gz -C /usr/java/

(2).配置环境变量

 # 在相应配置文件中追加以下内容
 vi /etc/profile
 export JAVA_HOME=/usr/java/jdk1.8.0_77
 export PATH=$PATH:$JAVA_HOME/bin
 # 设置当前环境变量立即生效
 source /etc/profile

(3).将jdk与环境变量同步到其他两台服务器

 scp -r /usr/java/ master2:/usr/
 scp /etc/profile master2:/etc/
 ​
 scp -r /usr/java/ slave:/usr/
 scp /etc/profile slave:/etc/
 # 在同步文件之后,需要更新配置文件
 source /etc/profile

4.Zookeeper安装与配置

(1).解压Zookeeper组件

组件使用xftp上传到/soft目录下

在三台机器中都新建目录:/usr/hadoop

mkdir /usr/hadoop

进入soft目录下解压Zookeeper

cd /soft
tar -zxvf zookeeper-3.4.10.tar.gz -C /usr/hadoop/

(2).配置环境变量

在响应配置文件中追加以下内容

vi /etc/profile
export ZOOKEEPER_HOME=/usr/hadoop/zookeeper-3.4.10
export PATH=$PATH:$ZOOKEEPER_HOME/bin

设置当前环境变量立即生效

source /etc/profile

(3).配置Zookeeper

1.进入指定路径修改配置文件

cd /usr/hadoop/zookeeper-3.4.10/conf
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg

2.删除之前的所有内容,添加以下内容

tickTime=2000
initLimit=10
syncLimit=5

数据存放位置

dataDir=/hadoop/zookeeper/zkdata

日志存放位置

dataLogDir=/hadoop/zookeeper/zklog

端口

clientPort=2181

指定部署Zookeeper的三个节点

server.1=master:2888:3888
server.2=master2:2888:3888
server.3=slave:2888:3888

(4).同步Zookeeper与环境变量到其他两台服务器

scp -r /usr/hadoop/zookeeper-3.4.10 master2:/usr/hadoop/
scp /etc/profile master2:/etc/
scp -r /usr/hadoop/zookeeper-3.4.10 slave:/usr/hadoop/
scp /etc/profile slave:/etc/
source /etc/profile

(5).创建文件夹

在每个节点上均要执行

mkdir -p /hadoop/zookeeper/zkdata
mkdir -p /hadoop/zookeeper/zklog

(6).创建myid

在/hadoop/zookeeper/zkdata下创建文件myid

cd /hadoop/zookeeper/zkdata
vi myid

编辑内容为当前server数值(1,2,3),需要与上面zoo.cfg中的配置相对应:

master1节点 -> 1
master2节点 -> 2
worker1节点 -> 3

5.Hadoop安装与配置

(1).解压Hadoop组件

将组件上传至soft目录

cd /soft
tar -zxvf hadoop-2.7.3.tar.gz -C /usr/hadoop/

(2).修改相应配置文件

进入配置文件目录

cd /usr/hadoop/hadoop-2.7.3/etc/hadoop/

1),配置core-site.xml

<property>

<name>fs.defaultFS</name>
<value>hdfs://ns1/</value>

</property>
<property>

<name>fs.trash.interval</name>
<value>1440</value>

</property>
<property>

<name>hadoop.tmp.dir</name>
<value>/hadoop/hadoop/tmp</value>

</property>
<property>

<name>ha.zookeeper.quorum</name>
<value>master:2181,master2:2181,slave:2181</value>

</property>

2),配置hdfs-site.xml

说明: 启用 NameNode HA的话,不再需要开启Secondary NameNode

<property>

<name>dfs.nameservices</name>
<value>ns1</value>

</property>
<property>

<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>

</property>
<property>

<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>master:8020</value>

</property>
<property>

<name>dfs.namenode.http-address.ns1.nn1</name>
<value>master:50070</value>

</property>
<property>

<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>master2:8020</value>

</property>
<property>

<name>dfs.namenode.http-address.ns1.nn2</name>
<value>master2:50070</value>

</property>
<property>

<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://master:8485;master2:8485;slave:8485/ns1</value>

</property>
<property>

<name>dfs.journalnode.edits.dir</name>
<value>/hadoop/hadoop/edits</value>

</property>
<property>

<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>

</property>
<property>

<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

</property>
<property>

<name>dfs.ha.fencing.methods</name>
<value>
sshfence  
shell(/bin/true)  
</value>

</property>
<property>

<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>

</property>
<property>

<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>

</property>
<property>

<name>dfs.replication</name>
<value>3</value>

</property>

3),配置yarn-site.xml

<property>

<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>

</property>
<property>

<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>

</property>
<property>

<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>

</property>
<property>

<name>yarn.resourcemanager.hostname.rm1</name>
<value>master</value>

</property>
<property>

<name>yarn.resourcemanager.hostname.rm2</name>
<value>master2</value>

</property>
<property>

<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>master:8088</value>

</property>
<property>

<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>master2:8088</value>

</property>
<property>

<name>yarn.resourcemanager.zk-address</name>
<value>master:2181,master2:2181,slave:2181</value>

</property>
<property>

<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>

</property>

4),配置marped-site.xml

[root@localhost hadoop]# cp mapred-site.xml.template mapred-site.xml

打开配置文件s

vi mapred-site.xml

<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

5),配置hadoop-env.sh

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

6),配置slaves

指定DataNode节点(hostname)

[root@master ~]# vim /usr/hadoop/hadoop-2.7.3/etc/hadoop/slaves

删除原本的localhost,添加以下内容

master
master2
slave

7),配置环境变量

修改配置文件

vi /etc/profile

追加以下内容

export HADOOP_HOME=/usr/hadoop/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

更新配置文件

source /etc/profile

8),同步Hadoop与配置文件复制到其他节点

在master节点配置之后,需要同步到其他两台服务器中

[root@master /]# cd /usr/hadoop/
[root@master hadoop]# scp -r /usr/hadoop/hadoop-2.7.3 root@master2:/usr/hadoop/
[root@master hadoop]# scp /etc/profile root@master2:/etc/
[root@master hadoop]# scp -r /usr/hadoop/hadoop-2.7.3 root@slave:/usr/hadoop/
[root@master hadoop]# scp /etc/profile root@slave:/etc/

同步完配置文件之后需要更新配置文件

source /etc/profile

6.集群启动

(1).启动Zookeeper

在三个节点上都执行以下命令

zkServer.sh start

查看状态:一个leader,两个flower

zkServer.sh status

(2).启动JournalNode

在三个节点上都执行以下命令

hadoop-daemon.sh start journalnode

(3).格式化HDFS

1.在master上格式化namenode:

hdfs namenode -format

在master1上启动namenode:

hadoop-daemon.sh start namenode

在master2上格式化namenode:

hdfs namenode -bootstrapStandby

(4).格式化zkfc

在master1上执行:

hdfs zkfc -formatZK

(5).启动hdfs

在master1上执行:

start-dfs.sh

(6).启动Yarn

 # 1.在master1上执行:
 start-yarn.sh
 # 2.在master2上执行:
 yarn-daemon.sh start resourcemanager

(7).启动JobHistoryServer

 # 在每台主机上都执行以下命令
 mr-jobhistory-daemon.sh start historyserver

7.验证NameNode高可用

 # 首先分别访问:master:50070和master2:50070网页,查看这两个节点的状态:
 master处于active状态;master2处于standby状态
 # 我们再手动启动master的namenode服务:
 hadoop-daemon.sh start namenode
 # 去master:50070网页查看,master处于standby状态;master2处于active状态

8.进程验证

 # master节点
 [root@master hadoop]# jps
 10417 ResourceManager
 2226 QuorumPeerMain
 10994 Jps
 10519 NodeManager
 10312 DFSZKFailoverController
 10953 NameNode
 10044 DataNode
 9614 JournalNode
 # master2节点
 [root@master2 hadoop]# jps
 9586 DataNode
 9811 NodeManager
 10181 NameNode
 9882 ResourceManager
 9708 DFSZKFailoverController
 10285 Jps
 9406 JournalNode
 2063 QuorumPeerMain
 # slave节点
 [root@slave zkdata]# jps
 9504 DataNode
 2085 QuorumPeerMain
 9783 Jps
 9626 NodeManager
 9422 JournalNode


wangyq_sure
21 声望0 粉丝

认真学习、思考、反思、总结、分享日常的编程经验~~