1.什么是HA
2.HA的实现场景
3.配置HA环境
1.理解HA的机制
2.掌握HA环境的配置流程
在Hadoop 2.0.0之前,NameNode是HDFS集群中的单点故障(SPOF)。每个群集都有一个NameNode,如果该机器或进程不可用,整个群集将不可用,直到NameNode重新启动或在单独的计算机上启动为止。这在两个主要方面影响了HDFS集群的总体可用性:
HDFS高可用性功能通过提供在具有热备用的主动/被动配置中的同一群集中运行两个(以及3.0.0多于两个)冗余NameNode的选项来解决上述问题。这允许在计算机崩溃的情况下快速故障转移到新的NameNode,或者为计划维护目的而进行正常的管理员启动的故障转移。
hadoop-HA集群运作机制介绍
所谓HA,即高可用(7*24小时不中断服务)(secondarynamenode只是保证了“可靠性”)实现高可用最关键的是消除单点故障,hadoop-ha严格来说应该分成各个组件的HA机制——HDFS的HA、YARN的HA。
HDFS的HA机制详解
通过双namenode消除单点故障,双namenode协调工作的要点:
创建7台机器,设置静态ip分别如下:
| 机器名 | ip |
| ----------------------------- | -------------- |
| CentOs6.4_min_java_hadoop_ha1 | 192.168.18.171 |
| CentOs6.4_min_java_hadoop_ha2 | 192.168.18.172 |
| CentOs6.4_min_java_hadoop_ha3 | 192.168.18.173 |
| CentOs6.4_min_java_hadoop_ha4 | 192.168.18.174 |
| CentOs6.4_min_java_hadoop_ha5 | 192.168.18.175 |
| CentOs6.4_min_java_hadoop_ha6 | 192.168.18.176 |
| CentOs6.4_min_java_hadoop_ha7 | 192.168.18.177 |
设置每台机器的hostname
vi /etc/sysconfig/network #编辑network文件,修改内容如下
NETWORKING=yes
HOSTNAME=ha1
#分别在7台机器上执行上述命令,使得各台机器的hostname对应关系如下:
| 机器名 | hostname |
| ----------------------------- | -------- |
| CentOs6.4_min_java_hadoop_ha1 | ha1 |
| CentOs6.4_min_java_hadoop_ha2 | ha2 |
| CentOs6.4_min_java_hadoop_ha3 | ha3 |
| CentOs6.4_min_java_hadoop_ha4 | ha4 |
| CentOs6.4_min_java_hadoop_ha5 | ha5 |
| CentOs6.4_min_java_hadoop_ha6 | ha6 |
| CentOs6.4_min_java_hadoop_ha7 | ha7 |
修改各个机器的主机名和ip的映射(修改每台机器的hosts文件)
vi /etc/hosts #为hosts文件添加如下内容
192.168.18.171 ha1
192.168.18.172 ha2
192.168.18.173 ha3
192.168.18.174 ha4
192.168.18.175 ha5
192.168.18.176 ha6
192.168.18.177 ha7
为每台机器创建一个名为hadoop的用户
useradd hadoop #添加hadoop用户
passwd hadoop #给hadoop用户 设置密码
为每台机器的hadoop用户配置sudo权限
vi /etc/sudoers #使用root用户编辑 添加如下内容:
hadoop ALL=(ALL) ALL
关闭每台机器的防火墙
#查看防火墙状态
service iptables status
#关闭防火墙
service iptables stop
#查看防火墙开机启动状态
chkconfig iptables --list
#关闭防火墙开机启动
chkconfig iptables off
每台机器安装JDK
#创建文件夹
mkdir /home/hadoop/develop_env
#解压
tar -zxvf jdk-7u55-linux-i586.tar.gz -C /home/hadoop/develop_env
vim /etc/profile #将java添加到环境变量中在文件最后添加
export JAVA_HOME=/home/hadoop/develop_env/jdk1.7.0_65
export PATH=$PATH:$JAVA_HOME/bin
#刷新配置
source /etc/profile
主机名 | 安装的软件 | 运行的进程 |
---|---|---|
ha1 | hadoop | NameNode、DFSZKFailoverController(zkfc) |
ha2 | hadoop | NameNode、DFSZKFailoverController(zkfc) |
Ha3 | hadoop | ResourceManager |
Ha4 | hadoop | ResourceManager |
Ha5 | hadoop、zookeeper | DataNode、NodeManager、JournalNode、QuorumPeerMain |
Ha6 | hadoop、zookeeper | DataNode、NodeManager、JournalNode、QuorumPeerMain |
Ha7 | hadoop、zookeeper | DataNode、NodeManager、JournalNode、QuorumPeerMain |
1.在hadoop2.0中通常由两个NameNode组成,一个处于active状态(激活状态),另一个处于standby状态(后备状态)。ActiveNameNode对外提供服务,而Standby NameNode则不对外提供服务,仅同步active namenode的状态,以便能够在它失败时快速进行切换。
hadoop2.0官方提供了两种HDFS HA的解决方案,一种是NFS,另一种是QJM。这里我们使用简单的QJM。在该方案中,主备NameNode之间通过一组JournalNode(jounal 日志)同步元数据信息,一条数据只要成功写入多数JournalNode即认为写入成功。通常配置奇数个JournalNode
这里还配置了一个zookeeper集群,用于ZKFC(DFSZKFailoverController)故障转移,当ActiveNameNode挂掉了,会自动切换Standby NameNode为standby状态
2.hadoop-2.2.0中依然存在一个问题,就是ResourceManager只有一个,存在单点故障,hadoop-2.4.1解决了这个问题,有两个ResourceManager,一个是Active,一个是Standby,状态由zookeeper进行协调
安装步骤
安装配置zooekeeper集群(在ha5上)(更详细zookeeper安装步骤参见zookeeper安装)
1.1解压
#上传zookeeper-3.4.7.tar.gz到/home/hadoop/develop_env
tar -zxvf zookeeper-3.
文章浏览阅读101次。4.class可以有⽆参的构造函数,struct不可以,必须是有参的构造函数,⽽且在有参的构造函数必须初始。2.Struct适⽤于作为经常使⽤的⼀些数据组合成的新类型,表示诸如点、矩形等主要⽤来存储数据的轻量。1.Class⽐较适合⼤的和复杂的数据,表现抽象和多级别的对象层次时。2.class允许继承、被继承,struct不允许,只能继承接⼝。3.Struct有性能优势,Class有⾯向对象的扩展优势。3.class可以初始化变量,struct不可以。1.class是引⽤类型,struct是值类型。
文章浏览阅读586次。想实现的功能是点击顶部按钮之后按关键字进行搜索,已经可以从服务器收到反馈的json信息,但从json信息的解析开始就会闪退,加载listview也不知道行不行public abstract class loadlistview{public ListView plv;public String js;public int listlength;public int listvisit;public..._rton转json为什么会闪退
文章浏览阅读219次。如何使用wordnet词典,得到英文句子的同义句_get_synonyms wordnet
文章浏览阅读521次。系统项目报表导出 导出任务队列表 + 定时扫描 + 多线程_积木报表 多线程
文章浏览阅读1.1k次,点赞9次,收藏9次。使用AJAX技术的好处之一是它能够提供更好的用户体验,因为它允许在不重新加载整个页面的情况下更新网页的某一部分。另外,AJAX还使得开发人员能够创建更复杂、更动态的Web应用程序,因为它们可以在后台与服务器进行通信,而不需要打断用户的浏览体验。在Web开发中,AJAX(Asynchronous JavaScript and XML)是一种常用的技术,用于在不重新加载整个页面的情况下,从服务器获取数据并更新网页的某一部分。使用AJAX,你可以创建异步请求,从而提供更快的响应和更好的用户体验。_ajax 获取http数据
文章浏览阅读2.8k次。登录退出、修改密码、关机重启_字符终端
文章浏览阅读3.8k次,点赞3次,收藏51次。前段时间看到一位发烧友制作的超声波雷达扫描神器,用到了Arduino和Processing,可惜啊,我不会Processing更看不懂人家的程序,咋办呢?嘿嘿,所以我就换了个思路解决,因为我会一点Python啊,那就动手吧!在做这个案例之前先要搞明白一个问题:怎么将Arduino通过超声波检测到的距离反馈到Python端?这个嘛,我首先想到了串行通信接口。没错!就是串口。只要Arduino将数据发送给COM口,然后Python能从COM口读取到这个数据就可以啦!我先写了一个测试程序试了一下,OK!搞定_超声波扫描建模 python库
文章浏览阅读4.2k次。端—端加密指信息由发送端自动加密,并且由TCP/IP进行数据包封装,然后作为不可阅读和不可识别的数据穿过互联网,当这些信息到达目的地,将被自动重组、解密,而成为可读的数据。不可逆加密算法的特征是加密过程中不需要使用密钥,输入明文后由系统直接经过加密算法处理成密文,这种加密后的数据是无法被解密的,只有重新输入明文,并再次经过同样不可逆的加密算法处理,得到相同的加密密文并被系统重新识别后,才能真正解密。2.使用时,加密者查找明文字母表中需要加密的消息中的每一个字母所在位置,并且写下密文字母表中对应的字母。_凯撒加密
文章浏览阅读5.7k次。CIP报文解析常用到的几个字段:普通类型服务类型:[0x00], CIP对象:[0x02 Message Router], ioi segments:[XX]PCCC(带cmd和func)服务类型:[0x00], CIP对象:[0x02 Message Router], cmd:[0x101], fnc:[0x101]..._cip协议embedded_service_error
文章浏览阅读2.4k次,点赞9次,收藏13次。有时候我们在MFC项目开发过程中,需要用到一些微软已经提供的功能,如VC++使用EXCEL功能,这时候我们就能直接通过VS2019到如EXCEL.EXE方式,生成对应的OLE头文件,然后直接使用功能,那么,我们上篇文章中介绍了vs2017及以前的版本如何来添加。但由于微软某些方面考虑,这种方式已被放弃。从上图中可以看出,这一功能,在从vs2017版本15.9开始,后续版本已经删除了此功能。那么我们如果仍需要此功能,我们如何在新版本中添加呢。_vs添加mfc库
文章浏览阅读785次。用ac3编码,执行编码函数时报错入如下:[ac3 @ 0x7fed7800f200] frame_size (1536) was not respected for anon-last frame (avcodec_encode_audio2)用ac3编码时每次送入编码器的音频采样数应该是1536个采样,不然就会报上述错误。这个数字并非刻意固定,而是跟ac3内部的编码算法原理相关。全网找不到,国内音视频之路还有很长的路,音视频人一起加油吧~......_frame_size (1024) was not respected for a non-last frame
文章浏览阅读230次,点赞2次,收藏2次。创建Android应用程序一个项目里面可以有很多模块,而每一个模块就对应了一个应用程序。项目结构介绍_在安卓移动应用开发中要在活动类文件中声迷你一个复选框变量