共计 5191 个字符,预计需要花费 13 分钟才能阅读完成。
放弃本人的节奏后退就对了
HDFDS-HA 集群配置
(一)环境筹备
- 批改 IP
- 批改主机名及主机名和 IP 地址的映射
- 敞开防火墙
- ssh 免密登录
- 装置 JDK,配置环境变量等
(二)布局集群
看出咱们将 NameNode 散布到两台机器上,保障集群的高可用性
hadoop102 | hadoop103 | hadoop104 |
---|---|---|
NameNode | NameNode | |
JournalNode | JournalNode | JournalNode |
DataNode | DataNode | DataNode |
ZK | ZK | ZK |
ResourceManager | ||
NodeManager | NodeManager | NodeManager |
(三)配置 Zookeeper 集群
1. 集群布局
在 hadoop102、hadoop103 和 hadoop104 三个节点上部署 Zookeeper。
2. 解压装置
(1)解压 Zookeeper 安装包到 /opt/module/ 目录下
tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/module/
(2)在 /opt/module/zookeeper-3.4.10/ 这个目录下创立 zkData
mkdir -p zkData
(3)重命名 /opt/module/zookeeper-3.4.10/conf 这个目录下的 zoo_sample.cfg 为 zoo.cfg
mv zoo_sample.cfg zoo.cfg
3. 配置 zoo.cfg 文件
(1)具体配置
dataDir=/opt/module/zookeeper-3.4.10/zkData
减少如下配置
\#######################cluster##########################
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
server.4=hadoop104:2888:3888
(2)配置参数解读
Server.A=B:C:D。A 是一个数字,示意这个是第几号服务器;B 是这个服务器的 IP 地址;C 是这个服务器与集群中的 Leader 服务器替换信息的端口;D 是万一集群中的 Leader 服务器挂了,须要一个端口来从新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器互相通信的端口。集群模式下配置一个文件 myid,这个文件在 dataDir 目录下,这个文件外面有一个数据就是 A 的值,Zookeeper 启动时读取此文件,拿到外面的数据与 zoo.cfg 外面的配置信息比拟从而判断到底是哪个 server。
4. 集群操作
(1)在 /opt/module/zookeeper-3.4.10/zkData 目录下创立一个 myid 的文件
touch myid
增加 myid 文件,留神肯定要在 linux 外面创立,在 notepad++ 外面很可能乱码
(2)编辑 myid 文件
vi myid
在文件中增加与 server 对应的编号:如 2
(3)拷贝配置好的 zookeeper 到其余机器上
scp -r zookeeper-3.4.10/ [root@hadoop103.atguigu.com:/opt/app/](mailto:root@hadoop103.atguigu.com:/opt/app/)
scp -r zookeeper-3.4.10/ [root@hadoop104.atguigu.com:/opt/app/](mailto:root@hadoop104.atguigu.com:/opt/app/)
并别离批改 myid 文件中内容为 3、4
(4)别离启动 zookeeper
[root@hadoop102 zookeeper-3.4.10]# bin/zkServer.sh start
[root@hadoop103 zookeeper-3.4.10]# bin/zkServer.sh start
[root@hadoop104 zookeeper-3.4.10]# bin/zkServer.sh start
(5)查看状态
[root@hadoop102 zookeeper-3.4.10]# bin/zkServer.sh status
JMX enabled by default
Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower
[root@hadoop103 zookeeper-3.4.10]# bin/zkServer.sh status
JMX enabled by default
Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: leader
[root@hadoop104 zookeeper-3.4.5]# bin/zkServer.sh status
JMX enabled by default
Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower
(四)配置 HDFS-HA 集群
1. 官网地址
http://hadoop.apache.org/
2. 在 opt 目录下创立一个 ha 文件夹
mkdir ha
3. 将 /opt/app/ 下的 hadoop-2.7.2 拷贝到 /opt/ha 目录下
cp -r hadoop-2.7.2/ /opt/ha/
4. 配置 hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
5. 配置 core-site.xml
<configuration>
<!-- 把两个 NameNode)的地址组装成一个集群 mycluster -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<!-- 指定 hadoop 运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/ha/hadoop-2.7.2/data/tmp</value>
</property>
</configuration>
6. 配置 hdfs-site.xml
<configuration>
<!-- 齐全分布式集群名称 -->
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
<!-- 集群中 NameNode 节点都有哪些 -->
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
</property>
<!-- nn1 的 RPC 通信地址 -->
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>hadoop102:9000</value>
</property>
<!-- nn2 的 RPC 通信地址 -->
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>hadoop103:9000</value>
</property>
<!-- nn1 的 http 通信地址 -->
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>hadoop102:50070</value>
</property>
<!-- nn2 的 http 通信地址 -->
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>hadoop103:50070</value>
</property>
<!-- 指定 NameNode 元数据在 JournalNode 上的寄存地位 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop102:8485;hadoop103:8485;hadoop104:8485/mycluster</value>
</property>
<!-- 配置隔离机制,即同一时刻只能有一台服务器对外响应 -->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<!-- 应用隔离机制时须要 ssh 无秘钥登录 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/zhutiansama/.ssh/id_rsa</value>
</property>
<!-- 申明 journalnode 服务器存储目录 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/opt/ha/hadoop-2.7.2/data/jn</value>
</property>
<!-- 敞开权限查看 -->
<property>
<name>dfs.permissions.enable</name>
<value>false</value>
</property>
<!-- 拜访代理类:client,mycluster,active 配置失败主动切换实现形式 -->
<property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
</configuration>
7. 拷贝配置好的 hadoop 环境到其余节点
(五)启动 HDFS-HA 集群
1. 在各个 JournalNode 节点上,输出以下命令启动 journalnode 服务
sbin/hadoop-daemon.sh start journalnode
2. 在 [nn1] 上,对其进行格式化,并启动
bin/hdfs namenode -format
sbin/hadoop-daemon.sh start namenode
3. 在 [nn2] 上,同步 nn1 的元数据信息
bin/hdfs namenode -bootstrapStandby
4. 启动[nn2]
sbin/hadoop-daemon.sh start namenode
5.Web 页面查看
6. 在 [nn1] 上,启动所有 datanode
sbin/hadoop-daemons.sh start datanode
7. 将 [nn1] 切换为 Active
bin/hdfs haadmin -transitionToActive nn1
8. 查看是否 Active
bin/hdfs haadmin -getServiceState nn1
(六)配置 HDFS-HA 主动故障转移
1. 具体配置
(1)在 hdfs-site.xml 中减少
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
(2)在 core-site.xml 文件中减少
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop102:2181,hadoop103:2181,hadoop104:2181</value>
</property>
2. 启动
(1)敞开所有 HDFS 服务:
sbin/stop-dfs.sh
(2)启动 Zookeeper 集群:
bin/zkServer.sh start
(3)初始化 HA 在 Zookeeper 中状态:
bin/hdfs zkfc -formatZK
(4)启动 HDFS 服务:
sbin/start-dfs.sh
(5)在各个 NameNode 节点上启动 DFSZK Failover Controller,先在哪台机器启动,哪个机器的 NameNode 就是 Active NameNode
sbin/hadoop-daemin.sh start zkfc
3. 验证
(1)将 Active NameNode 过程 kill
kill -9 namenode 的过程 id
(2)将 Active NameNode 机器断开网络
service network stop
相干材料
正文完