hadoop高可用.docx
- 文档编号:25725361
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:11
- 大小:82.92KB
hadoop高可用.docx
《hadoop高可用.docx》由会员分享,可在线阅读,更多相关《hadoop高可用.docx(11页珍藏版)》请在冰豆网上搜索。
hadoop高可用
课程大纲(HADOOP高可用机制)
HA运作机制
什么是HA
HADOOP如何实现HA
HDFS-HA详解
HA集群搭建
目标:
掌握分布式系统中HA机制的思想
掌握HADOOP内置HA的运作机制
掌握HADOOP2.x的HA集群机制配置
1Hadoop的HA机制
前言:
正式引入HA机制是从hadoop2.0开始,之前的版本中没有HA机制
1.1HA的运作机制
(1)hadoop-HA集群运作机制介绍
所谓HA,即高可用(7*24小时不中断服务)
实现高可用最关键的是消除单点故障
hadoop-ha严格来说应该分成各个组件的HA机制——HDFS的HA、YARN的HA
(2)HDFS的HA机制详解
通过双namenode消除单点故障
双namenode协调工作的要点:
A、元数据管理方式需要改变:
内存中各自保存一份元数据
Edits日志只能有一份,只有Active状态的namenode节点可以做写操作
两个namenode都可以读取edits
共享的edits放在一个共享存储中管理(qjournal和NFS两个主流实现)
B、需要一个状态管理功能模块
实现了一个zkfailover,常驻在每一个namenode所在的节点
每一个zkfailover负责监控自己所在namenode节点,利用zk进行状态标识
当需要进行状态切换时,由zkfailover来负责切换
切换时需要防止brainsplit现象的发生
1.2HDFS-HA图解:
1.2HA集群的安装部署
1.2.1集群节点规划
集群部署节点角色的规划(10节点):
server01namenodezkfc>start-dfs.sh
server02namenodezkfc
server03resourcemanager>start-yarn.sh
server04resourcemanager
server05datanodenodemanager
server06datanodenodemanager
server07datanodenodemanager
server08journalnodezookeeper
server09journalnodezookeeper
server10journalnodezookeeper
集群部署节点角色的规划(3节点)
server01namenoderesourcemanagerzkfcnodemanagerdatanodezookeeperjournalnode
server02namenoderesourcemanagerzkfcnodemanagerdatanodezookeeperjournalnode
server05datanodenodemanagerzookeeperjournalnode
1.2.2环境准备
1、环境准备
a/linux系统准备
ip地址配置
hostname配置
hosts映射配置
防火墙关闭
init启动级别修改
sudoers加入hadoop用户
ssh免密登陆配置
b/java环境的配置
上传jdk,解压,修改/etc/profile
c/zookeeper集群的部署
1.2.3配置文件
core-site.xml
--指定hdfs的nameservice为ns1-->
//ns1/
--指定hadoop临时目录-->
--指定zookeeper地址-->
2181,weekend06:
2181,weekend07:
2181
hdfs-site.xml
configuration>
--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致-->
--ns1下面有两个NameNode,分别是nn1,nn2-->
--nn1的RPC通信地址-->
9000
--nn1的http通信地址-->
50070
--nn2的RPC通信地址-->
9000
--nn2的http通信地址-->
50070
--指定NameNode的edits元数据在JournalNode上的存放位置-->
//weekend05:
8485;weekend06:
8485;weekend07:
8485/ns1
--指定JournalNode在本地磁盘存放数据的位置-->
--开启NameNode失败自动切换-->
--配置失败自动切换实现方式-->
--配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
sshfence
shell(/bin/true)
--使用sshfence隔离机制时需要ssh免登陆-->
--配置sshfence隔离机制超时时间-->
/configuration>
1.2.4集群运维测试
1、Datanode动态上下线
Datanode动态上下线很简单,步骤如下:
a)准备一台服务器,设置好环境
b)部署hadoop的安装包,并同步集群配置
c)联网上线,新datanode会自动加入集群
d)如果是一次增加大批datanode,还应该做集群负载重均衡
2、Namenode状态切换管理
使用的命令上hdfshaadmin
可用hdfshaadmin–help查看所有帮助信息
可以看到,状态操作的命令示例:
查看namenode工作状态
hdfshaadmin-getServiceStatenn1
将standby状态namenode切换到active
hdfshaadmin–transitionToActivenn1
将active状态namenode切换到standby
hdfshaadmin–transitionToStandbynn2
3、数据块的balance
启动balancer的命令:
start-balancer.sh-threshold8
运行之后,会有Balancer进程出现:
上述命令设置了Threshold为8%,那么执行balancer命令的时候,首先统计所有DataNode的磁盘利用率的均值,然后判断如果某一个DataNode的磁盘利用率超过这个均值Threshold,那么将会把这个DataNode的block转移到磁盘利用率低的DataNode,这对于新节点的加入来说十分有用。
Threshold的值为1到100之间,不显示的进行参数设置的话,默认是10。
1.2.5HA下hdfs-api变化
客户端需要nameservice的配置信息,其他不变
/**
*如果访问的是一个ha机制的集群
*则一定要把core-site.xml和hdfs-site.xml配置文件放在客户端程序的classpath下
*以让客户端能够理解hdfs:
//ns1/中“ns1”是一个ha机制中的namenode对——nameservice
*以及知道ns1下具体的namenode通信地址
*@author
*
*/
publicclassUploadFile{
publicstaticvoidmain(String[]args)throwsException{
Configurationconf=newConfiguration();
conf.set("fs.defaultFS","hdfs:
//ns1/");
FileSystemfs=FileSystem.get(newURI("hdfs:
//ns1/"),conf,"hadoop");
fs.copyFromLocalFile(newPath("g:
/eclipse-jee-luna-SR1-linux-gtk.tar.gz"),newPath("hdfs:
//ns1/"));
fs.close();
}
}
Federation下mr程序运行的staging提交目录问题
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- hadoop 可用
![提示](https://static.bdocx.com/images/bang_tan.gif)