HDFS之HA
HDFS高可用环境HA的架构
HDFS组件由一个对外提供服务的namenode(存储元数据)和N个datanode组成;Zookeeper有三个作用:1.为了统一配置文件 config 2.多个节点的进程要修改公共变量的话,zookeeper会加一个锁 3.仲裁 (必须是奇数个节点,自己组成一个集群,叫Ensemble) HA:多了一台NameNode(standby),datanode同时向NameNode(Active)和NameNode(standby)发送心跳。当提交一个上传任务put的时候,连接的只能是NameNode(active)。元数据有两个,分别是fsimage和editlog(存放这对元数据信息的更改),通过奇数个(至少3个)进程JPS(JournalNode,超过一半接收到editlog就)推送日志给NameNode(standby)来保证数据的一致性。Zookeeper Failover Controller(简称zkfc,汇报Active standby节点的健康情况给Zookeeper),如果超过二分之一Zookeeper的server接收到了来自同一个zkfc发来的病情恶化的信息,自动进行主备切换,另一边恶化的马上进行隔离,不对外提供服务,以免造成数据不一致。通过SSH登录,直接kill进程或者shutdown,后期再反做HA
一般HA是针对HDFS组件的,当然在Yarn组件里也可以由HA;Yarn组件里Resource Manager最重要(有问题,会导致作业提交不了,数据不会遗失)
HA搭建
一般HA是针对HDFS组件的,当然在Yarn组件里也可以有HA;Yarn组件里Resource Manager最重要(有问题,会导致作业提交不了,数据不会遗失) 可扩展的集群,hdfs和yarn主节点ha都要做。 instances里边有哪些角色,分布在哪些节点。有一项Enable High Availability,首先要配置的是nameservice name 。在做hadoop fs -ls这个命令的时候,要先找到namenode,怎么找到Namenode的,在配置文件里 vim /etc/hadoop/conf/ 若果集群是用CM来管的话,所有的配置文件都存在cloudera Manager的后台数据库里,cat /etc/cloudera-scm-server/db.properties 如果要手动改已经用CM管理的集群的配置,vim /etc/hadoop/conf/hdfs-site.xml,关于服务的配置不起作用,关于客户端的配置起作用。 做了HA时,client不在乎那个namenode节点处理请求,客户端的hdfs-site.xml会写统一的名字,会统一发送到nameservice name,然后nameservice name再映射到两个做HA的主机。类同于Oracle的RAC,对外提供服务的永远是scanname,scanname后台绑3个ip,浮动在任意的多台主机上选三台,轮询的访问。
添加集群节点:
一台新的linux系统主机,配好网络,更新hosts文件,关闭iptables,关闭selinux,setenforce 0,时间需要同步,时区需要改; 在cloudera Manager里 hosts,add new hosts to cluster,输入ip地址;选择CDH的版本,我们选择自定义的源(之前搭建好的安装服务器),Navigator是cloudera 云部署的组件,不用管,选None。Cloudera Manager Agent选之前搭建好的CM源,continue。install jdk 选上,continue,其他用户、密码(跟之前一样),continue,开始安装。可以点detail查看安装过程; swappiness还没改,透明大页也没改。接下来选择角色:可以是hdfs的datanode,yarn组件里的node manager,取个名字newnode。如果手工做,可以查看cloudera manager的日志,看看做了哪些操作。
Zookeeper server的角色三台都选上,一台leader,两台follower。 HA:Enable High Availability 再选择一个NameNode Host;选择journalNode,三个都选上;continue; 在这之前,来看看Zookeeper的配置, cd /usr/lib/zookeeper/bin/ ./zkCli.sh -server monkey:2181 出问题报错 是不是java的环境变量没设,echo $JAVA_HOME,果然。java -version 查看版本 cd /usr/java/ ls 把环境变量写好 vi java.txt 执行一下 bash java.txt java -version cd /usr/lib/zookeeper/bin/ ./zkCli.sh -server monkey:2181 cloudera manager 的 review Changes里,设置好journalNode edit directory。然后就是创建HA的过程,分为这么多步。finish!再到instance里 就能看到HA,在Zookeeper的文件夹里也多了一个hadoop.ha,说明namenode ha的应用在Zookeeper上托管。Zookeeper在这里主要做举手表决,如何切换这个动作都是Zookeeper来决定的。
HDFS之HA的更多相关文章
- 第九章 搭建Hadoop 2.2.0版本HDFS的HA配置
Hadoop中的NameNode好比是人的心脏,非常重要,绝对不可以停止工作.在hadoop1时代,只有一个NameNode.如果该NameNode数据丢失或者不能工作,那么整个集群就不能恢复了.这是 ...
- HDFS NameNode HA 部署文档
简介: HDFS High Availability Using the Quorum Journal Manager Hadoop 2.x 中,HDFS 组件有三个角色:NameNode.DataN ...
- HDFS的HA机制
传统的HDFS机制如下图所示: 也就是存在一个NameNode,一个SecondaryNameNode,然后若干个DataNode.这样的机制虽然元数据的可靠性得到了保证(靠edits,fsimage ...
- 使用QJM实现HDFS的HA配置
使用QJM实现HDFS的HA配置 1.背景 hadoop 2.0.0之前,namenode存在单点故障问题(SPOF,single point of failure),如果主机或进程不可用时,整个集群 ...
- HDFS的HA(高可用)
HDFS的HA(高可用) 概述 (1)实现高可用最关键的策略是[消除单点故障].HA 严格来说应该分成各个组件的 HA 机制:HDFS 的 HA 和 YARN 的 HA. (2)Hadoop2.0 之 ...
- Hdfs的HA高可用
1.Hdfs的HA高可用:保证Hdfs高可用,其实就是保证namenode的高可用,保证namenode的高可用的机制有两个,editlog共享机制+ZKFC.ZKFC就是ZookeeperFailO ...
- 大数据谢列3:Hdfs的HA实现
在之前的文章:大数据系列:一文初识Hdfs , 大数据系列2:Hdfs的读写操作 中Hdfs的组成.读写有简单的介绍. 在里面介绍Secondary NameNode和Hdfs读写的流程. 并且在文章 ...
- Hadoop 2.7.4 HDFS+YRAN HA部署
实验环境 主机名称 IP地址 角色 统一安装目录 统一安装用户 sht-sgmhadoopnn-01 172.16.101.55 namenode,resourcemanager /usr/local ...
- 【Hadoop 分布式部署 十:配置HDFS 的HA、启动HA中的各个守护进程】
官方参考 配置 地址 :http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabili ...
随机推荐
- docker - 容器lxc
容器:是在用户空间进行隔离的组件叫做容器 常用的容器有lxc ----libcontainer---runc 需要隔离的资源有: Rootfs:每个容器对应的一个目录做为根目录 User: Hostn ...
- python的占位格式符 %
# 格式化输出name = "sz"age = 18# 我的名字是xxx,年龄是xxxprint("我的名字是%s,年龄是%d"%(name,age)) 这是我 ...
- Mybatis内批量插入Oracle
<insert id="insertManagerInfoBatch" parameterType="java.util.List"> <se ...
- ECMAScript 6 字符串的扩展
1.字符的Unicode表示法 ① JavaScript允许采用\uxxxx的形式来表示一个字符,其中xxxx表示字符的Unicode码点. 但是,这种表示方法有一个局限性,它的码点只能在\u0000 ...
- 网络编程-Python高级语法-深浅拷贝
知识点:深浅拷贝,浅拷贝拷贝的是最顶层的东西,深拷贝是拷贝最深层的东西,光说可能理解不了,看下图 1.拷贝可变类型 2.拷贝不可变类型 3.拷贝元祖,元组内数据是可变类型
- jupyter notebook 远程访问
https://www.youtube.com/watch?v=LpQl0yeZzCU 在服务器端执行: jupyter notebook --ip 服务器的Ip地址 --allow-root --n ...
- PHP服务器时差8小时的解决办法
PHP服务器时差8小时的解决办法 <?php date_default_timezone_set('Asia/Shanghai'); echo date("Y-m-d")? ...
- HTML入门7
这篇来些可能用的比较少的,调试HTML 程序员调试代码常见,遇到问题一切正常,找出问题解决,满足 来了解下HTML调试, 在浏览器解析和显示之前HTML不会被编译成其他形式,只是解析而不是编译因此运行 ...
- 微信小程序里的bug---video 的play()
微信小程序hidden转换后执行play()用真机测试不会播放.在调试器里可以. 解决方法,把hidden换成wx:if. 我刚开始以为网速问题,其实不是, 具体我也不知道为什,换上wxif解决了.
- monkey Test 环境配置
Android Monkey压力测试学习笔记 步骤:下载SDK -> 解压进入SDK Manager下载系统 -> 配置环境变量 -> 创建虚拟设备或连接真机 -> 进入命令模 ...