搭建HDFS HA
搭建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的更多相关文章
- 使用Cloudera Manager搭建zookeeper集群及HDFS HA实战篇
使用Cloudera Manager搭建zookeeper集群及HDFS HA实战篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.使用Cloudera Manager搭建zo ...
- 【Hadoop学习之四】HDFS HA搭建(QJM)
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop-3.1.1 由于NameNode对于整个HDF ...
- 基于HBase0.98.13搭建HBase HA分布式集群
在hadoop2.6.0分布式集群上搭建hbase ha分布式集群.搭建hadoop2.6.0分布式集群,请参考“基于hadoop2.6.0搭建5个节点的分布式集群”.下面我们开始啦 1.规划 1.主 ...
- 使用QJM部署HDFS HA集群
一.所需软件 1. JDK版本 下载地址:http://www.oracle.com/technetwork/java/javase/index.html 版本: jdk-7u79-linux-x64 ...
- Hadoop 5、HDFS HA 和 YARN
Hadoop 2.0 产生的背景Hadoop 1.0 中HDFS和MapReduce存在高可用和扩展方面的问题 HDFS存在的问题 NameNode单点故障,难以用于在线场景 NameNode压力过大 ...
- [转]HDFS HA 部署安装
1. HDFS 2.0 基本概念 相比于 Hadoop 1.0,Hadoop 2.0 中的 HDFS 增加了两个重大特性,HA 和 Federaion.HA 即为 High Availability, ...
- HDFS HA架构以及源代码引导
HA体系架构 相关知识介绍 HDFS master/slave架构,HDFS节点分为NameNode节点和DataNode节点. NameNode存有HDFS的元数据:主要由FSImage和EditL ...
- 【Zookeeper】利用zookeeper搭建Hdoop HA高可用
HA概述 所谓HA(high available),即高可用(7*24小时不中断服务). 实现高可用最关键的策略是消除单点故障.HA严格来说应该分成各个组件的HA机制:HDFS的HA和YARN的HA. ...
- 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 ...
随机推荐
- 18、Page Object 设计模式
Page Object 设计模式的优点如下: 减少代码的重复. 提高测试用例的可读性. 提高测试用例的可维护性, 特别是针对 UI 频繁变化的项目. 当你针对网页编写测试时,你需要引用该网页中的元素, ...
- git常用操作笔记
这是我看了廖雪峰的git教程,写的笔记,仅作为一个学习的记录 一.大多数我们面临的是已经有一个进行中的项目了,我们只需克隆下来就可以了 1.安装git,安装完后,可输入git,回车,查看是否已安装 2 ...
- 第七篇 css选择器实现字段解析
CSS选择器的作用实际和xpath的一样,都是为了定位具体的元素 举例我要爬取下面这个页面的标题 In []: title = response.css(".entry-header h1& ...
- 如何定义一个BUG
一.划分一个bug的等级 bug等级主要分为致命.严重.一般.轻微或者建议四个等级: 1.致命错误:系统无法执行.崩溃或严重资源不足.应用模块无法启动或异常退出.无法测试.造成系统不稳定.价值较高功能 ...
- Wpf 获取指定字体和大小的字符的长宽
Wpf 获取指定字体和大小的字符的长宽 运行环境:Win10 x64, NetFrameWork 4.8, 作者:乌龙哈里,日期:2019-05-09 参考: 章节: 比如一个 Consolas 字体 ...
- QT install
{ https://www.bilibili.com/video/av18148008?from=search&seid=15361598961528715331 }
- ElasticSearch再学习
ElasticSearch参数详解 本次使用的windows的版本,如若Linux移步:https://www.cnblogs.com/msi-chen/p/10335794.html 配置文件参数 ...
- R语言 判断
R语言判断 决策结构要求程序员指定要由程序评估或测试的一个或多个条件,以及如果条件被确定为真则要执行的一个或多个语句,如果条件为假则执行其他语句. 以下是在大多数编程语言中的典型决策结构的一般形式 R ...
- NX二次开发-UFUN设置工程图PNG图片长度UF_DRF_set_image_width
#include <uf.h> #include <uf_drf.h> UF_initialize(); //插入PNG char* file_name = "D:\ ...
- C++之string
一.常用操作 二.用“+”连接字符串的注意事项