搭建HDFS HA

1.服务器角色规划

hd-01(192.168.1.99) hd-02 (192.168.1.100) hd-03 (192.168.1.101)
NameNode NameNode
Zookeeper Zookeeper Zookeeper
DataNode DataNode DataNode
ResourceManage ResourceManage
NodeManager NodeManager NodeManager

2.搭建

解压Hadoop 2.8.5

tar -zxvf hadoop-2.8.5.tar.gz

配置Hadoop JDK路径

# 修改hadoop-env.sh、mapred-env.sh、yarn-env.sh文件中的JDK路径
export JAVA_HOME="/opt/jdk1.8.0_112"

配置hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
--> <!-- Put site-specific property overrides in this file. --> <configuration>
<property>
<!-- 为namenode集群定义一个services name -->
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<property>
<!-- nameservice 包含哪些namenode,为各个namenode起名 -->
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<property>
<!-- 名为nn1的namenode 的rpc地址和端口号,rpc用来和datanode通讯 -->
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>hd-01:8020</value>
</property>
<property>
<!-- 名为nn2的namenode 的rpc地址和端口号,rpc用来和datanode通讯 -->
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>hd-02:8020</value>
</property>
<property>
<!-- 名为nn1的namenode 的http地址和端口号,web客户端 -->
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>hd-01:50070</value>
</property>
<property>
<!--名为nn2的namenode 的http地址和端口号,web客户端 -->
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>hd-02:50070</value>
</property>
<property>
<!-- namenode间用于共享编辑日志的journal节点列表 -->
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hd-01:8485;hd-02:8485;hd-03:8485/ns1</value>
</property>
<property>
<!-- journalnode 上用于存放edits日志的目录 -->
<name>dfs.journalnode.edits.dir</name>
<value>/opt/hadoop-2.8.5/tmp/data/dfs/jn</value>
</property>
<property>
<!-- 客户端连接可用状态的NameNode所用的代理类 -->
<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</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>
</configuration>

配置core-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
--> <!-- Put site-specific property overrides in this file. --> <configuration>
<property>
<!-- hdfs 地址,ha中是连接到nameservice -->
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
</property>
<property>
<!-- -->
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-2.8.5/data/tmp</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>hd-01:2181,hd-02:2181,hd-03:2181</value>
</property>
</configuration>

配置slaves文件

[root@hd-01 opt]# cat /opt/hadoop-2.8.5/etc/hadoop/slaves
hd-01
hd-02
hd-03

分发到其他节点

scp -r /opt/hadoop-2.8.5/ hd-01:/opt/
scp -r /opt/hadoop-2.8.5/ hd-02:/opt/

三台机器分别启动Journalnode

# 三台机器分别给hadoop赋权
chown -R hadoop:hadoop /opt/hadoop-2.8.5/
# 启动,三台机器分别执行
sbin/hadoop-daemon.sh start journalnode
# JPS命令查看是否启动
jps

在三台节点上启动Zookeeper

# 启动,三台机器分别执行
bin/zkServer.sh start
# 查看zk状态
bin/zkServer.sh status

启动NameNode

# 启动之前先格式化NameNode
# 1.格式话hd-01
bin/hdfs namenode -format
# 启动hd-01
sbin/hadoop-daemon.sh start namenode
# 2.格式化hd-02
bin/hdfs namenode -bootstrapStandby
# 启动hd-02
sbin/hadoop-daemon.sh start namenode

查看HDFS Web页面,此时两个NameNode都是standby状态。

切换第一台为active状态:

添加上forcemanual参数,强制将一个NameNode转换为Active状态

bin/hdfs haadmin -transitionToActive nn1

3.配置故障自动转移

利用zookeeper集群实现故障自动转移,在配置故障自动转移之前,要先关闭集群,不能在HDFS运行期间进行配置。

关闭NameNode、DataNode、JournalNode、zookeeper

# 三台分别到对应的路径执行
sbin/hadoop-daemon.sh stop namenode
sbin/hadoop-daemon.sh stop datanode
sbin/hadoop-daemon.sh stop journalnode
bin/zkServer.sh stop

修改hdfs-site.xml

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

修改core-site.xml

<property>
<name>ha.zookeeper.quorum</name>
<value>hd-01:2181,hd-02:2181,hd-03:2181</value>
</property>

将hdfs-site.xml和core-site.xml分发到其他机器

scp /opt/hadoop-2.8.5/etc/hadoop/hdfs-site.xml hd-02:/opt/hadoop-2.8.5/etc/hadoop/
scp /opt/hadoop-2.8.5/etc/hadoop/core-site.xml hd-02:/opt/hadoop-2.8.5/etc/hadoop/

三台机器启动zookeeper

bin/zkServer.sh start

创建一个zNode

cd /opt/hadoop-2.8.5/
bin/hdfs zkfc -formatZK

启动HDFS、JournalNode、zkfc

# vm-01上执行
cd /opt/hadoop-2.8.5/
sbin/start-dfs.sh

4.测试故障自动转移和数据是否共享

# 在hd-01上上传文件
cd /opt/hadoop-2.8.5/
bin/hdfs dfs -put /opt/data/wc.input /

在http://192.168.1.99:50070/explorer.html#/上可以看到已经上传的文件

将hd-01上的NameNode杀掉

jps | grep NameNode | awk '{print $1}' | xargs kill -9

在nn2上查看是否看见文件

已经验证,已经实现nn1和nn2之间的文件同步和故障自动转移。

原文链接:

https://blog.csdn.net/hliq5399/article/details/78193113

搭建HDFS HA的更多相关文章

  1. 使用Cloudera Manager搭建zookeeper集群及HDFS HA实战篇

    使用Cloudera Manager搭建zookeeper集群及HDFS HA实战篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.使用Cloudera Manager搭建zo ...

  2. 【Hadoop学习之四】HDFS HA搭建(QJM)

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop-3.1.1 由于NameNode对于整个HDF ...

  3. 基于HBase0.98.13搭建HBase HA分布式集群

    在hadoop2.6.0分布式集群上搭建hbase ha分布式集群.搭建hadoop2.6.0分布式集群,请参考“基于hadoop2.6.0搭建5个节点的分布式集群”.下面我们开始啦 1.规划 1.主 ...

  4. 使用QJM部署HDFS HA集群

    一.所需软件 1. JDK版本 下载地址:http://www.oracle.com/technetwork/java/javase/index.html 版本: jdk-7u79-linux-x64 ...

  5. Hadoop 5、HDFS HA 和 YARN

    Hadoop 2.0 产生的背景Hadoop 1.0 中HDFS和MapReduce存在高可用和扩展方面的问题 HDFS存在的问题 NameNode单点故障,难以用于在线场景 NameNode压力过大 ...

  6. [转]HDFS HA 部署安装

    1. HDFS 2.0 基本概念 相比于 Hadoop 1.0,Hadoop 2.0 中的 HDFS 增加了两个重大特性,HA 和 Federaion.HA 即为 High Availability, ...

  7. HDFS HA架构以及源代码引导

    HA体系架构 相关知识介绍 HDFS master/slave架构,HDFS节点分为NameNode节点和DataNode节点. NameNode存有HDFS的元数据:主要由FSImage和EditL ...

  8. 【Zookeeper】利用zookeeper搭建Hdoop HA高可用

    HA概述 所谓HA(high available),即高可用(7*24小时不中断服务). 实现高可用最关键的策略是消除单点故障.HA严格来说应该分成各个组件的HA机制:HDFS的HA和YARN的HA. ...

  9. Hadoop【Hadoop-HA搭建(HDFS、YARN)】

    目录 0.HDFS-HA的工作机制 1. HDFS-HA集群配置 1.1 环境准备 1.2 规划集群 1.3 配置Zookeeper集群 2. 配置HDFS-HA集群 3. 启动HDFS-HA集群 4 ...

随机推荐

  1. 1. USB协议

    1.1 Packets USB总线上数据传输以包为基本单位,一个包含不同的域,但都要从同步域开始,然后跟踪一个包标识符PID(Packet Identifier),最终以包结束符EOP(End of ...

  2. docker常用

    1. docker 查看正在运行 2. docker 查看所有  3. docker 查看镜像 4. docker 运行使用 docker run --name 镜像名(自己起的镜像名字)-d(后台) ...

  3. java.io.FileNotFoundException: [WEB-INF/spring-servlet.xml] cannot be opened because it does not exist

    今天启动web 项目出现错误提示: java.io.FileNotFoundException: [WEB-INF/spring-servlet.xml] cannot be opened becau ...

  4. 商城sku的选择功能--客户端

    前段时间,刚好做到了有关sku这个功能.客户端的sku,和后台管理系统的sku.当初查了大量资料,遂做个记录,以免忘记. 这篇先写客户端的sku功能把,类似于去淘宝京东等购物,就会有个规格让你选择.如 ...

  5. 使用PHP如何去除字符串结尾的字符

    前言 在工作中遇到一个需求:一串字符串,如"迅雷官方下载"."快播5.0下载",需要去掉他们结尾的"官方下载"和"下载" ...

  6. minicom 的使用

    1.切换到 root 用户. [root@localhost btools]#su - 2. 查找有效的串设备. [root@localhost ~]#cat /proc/devices ... 4 ...

  7. sqlldr details

    https://www.csee.umbc.edu/portal/help/oracle8/server.815/a67792/ch05.htm Loading into Empty and Non- ...

  8. linux服务器创建docker

    关于Docker在Linux服务器中的安装以及使用1 安装: yum install docker 2 启动: systemctl start docker.service 3.加入开机启动: sys ...

  9. 【JZOJ6419】模拟旅行&【BZOJ5506】【luoguP5304】旅行者

    description 某国有n座城市,这些城市之间通过m条单向道路相连,已知每条道路的长度. 不过,小X只对其中k座城市感兴趣. 为了更好地规划模拟旅行路线,提升模拟旅行的体验,小X想要知道他感兴趣 ...

  10. OpenGL ANYTOOL

    { https://github.com/zhmmmm/ANYTOOL-2.0.0.0.2Version }