【伊利丹】Hadoop2.0 NN HA实验记录
1.关于Hadoop2.2.0中HA的介绍
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDUxMjEyNA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
NameNode 简称: NN
DateNode 简称: DN
JournalNode 简称: JN
Zookeeper 简称: ZK
从上面的图里,我们能够知道HA的大致架构:
01.利用共享存储来在两个NN之间同步元数据信息。
在NN中有两个关键的文件:一个是fsimage,一个是edits,当中fsimage指的是元数据镜像文件,存在磁盘中用来保持文件系统的文件夹树,然而edits指的是元数据操作日志,针对文件夹树的改动操作,被写入共享存储系统中,比如DFS,JournalNode。同一时候元数据镜像文件在内存中保存一份最新的,然后Standby
NameNode定期的合并fsimage和edits。
02.DataNode同一时候向两个NN汇报块信息。
这是让Standby NN 保持集群最新状态的必要步骤。
03.用于监视和控制NN进程採用了FailoverControllerActive进程。
2.实验环境搭建和准备
01.前提是要有一个能手动切换主备NN的集群,假设没有。能够到http://blog.csdn.net/u010967382/article/details/20380387
中去学习怎样搭建一个集群。
02.本次实验环境是Ubuntu12.04.4版本号的虚拟机4台 :
分别取名为SY-0217 SY-0355 SY-0225 SY-0226 的一个Hadoop集群;
当中 SY-0217 SY-0355 为主备NameNode。
而且 SY-0355 SY-0225 SY-0226 为JouranlNode 。
03.下载Zookeeper并安装
下载地址:http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.5/
并把它放到虚拟机的Desktop上。
这下在zookeeper-3.4.5是用于的測试。 最好採用zookeeper-3.4.6由于它做了大量的 bug 修复和功能增强
下载完毕后用 解压命令解压: sudo tar -xzvf Dsektop/zookeeper-3.4.5
同一时候把SY-0217 SY-0355 SY-0225 都安装好zookeeper-3.4.5 (最好是奇数个
原因是zookeeper有这样一个特性:集群中仅仅要有过半的机器是正常工作的,那么整个集群对外就是可用的。也就是说假设有2个zookeeper,那么仅仅要有1个死了zookeeper就不能用了,由于1没有过半。所以2个zookeeper的死亡容忍度为0;同理。要是有3个zookeeper,一个死了,还剩下2个正常的。过半了,所以3个zookeeper的容忍度为1。
总之zookeeper的容忍度决定zookeeper的个数)
3.Zookeeper的配置文件的改动
01.进入zookeeper中的conf文件夹:
拷贝zoo_sample.cfg为并又一次命名为zoo.cfg
编辑zoo.cfg文件把以下的加入进去
dataDir=/home/kkzhangtao/zookeeper-3.4.5/zookeeper
dataLogDir=/home/kkzhangtao/zookeeper-3.4.5/zookeeperlog
server.1=SY-0217:2888:3888
server.2=SY-0355:2888:3888
server.3=SY-0225:2888:3888
这文件中面的配置 解释例如以下:
dataDir指的是存储内存中数据库快照的位置;
dataLogDir指的是将管理机器的事务日志写到“dataLogDir”所指定的文件夹;
server.1=SY-0217:2888:3888指的是不同的Zookeeper服务器的自身标识,用户能够从中读取相关信息。当中那个的SY-0217指的是组成Zookeeper服务的机器主机名。2888是为用来进行leader选举的port。3888是为组成Zookeeper服务的机器之间通信的port。
02.创建zookeeper和zookeeperlog两个目录
在zookeeper的目录中,创建上述的两个目录。进入zookeeper目录,创建文件myid,里面填写1。这里写入的1,是在zoo.cfg文本中的server.1中的1。
(这里的数字是为了差别不同的zookerper)当我们把全部的文件配置完毕了。分别复制到各个节点上去,可是要把zookpeeper目录中的myid改为zoo.cfg配置文件里相应的数字。zookeeperlog目录,是为了指定zookeeper产生日志指定相应的路径。
03.改动环境变量
在本机的环境变量中加入 进入/etc/profile文件夹中去 用vi命令 把例如以下的加入进去
export ZOOKEEPER_HOME=/home/kkzhangtao/zookeeper-3.4.5
export PATH=$PATH:$ZOOKEEPER_HOME/bin
然后在终端 source /etc/profile (其它安装了zookeeper的机器都要进入如上的配置)
4.Hadoop的配置文件的改动 (这两个配置文件 请亲 细致对比的改动和加入)
01.文件coer-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop-cluster</value>
<description>这里的值指的是默认的HDFS路径。这里仅仅有一个HDFS集群,在这里指定。该值来自于hdfs-site.xml中的配置</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/kkzhangtao/hadoop-2.2.0/yarn/yarn_data/tmp</value>
<description>这里的路径默认是NameNode、DataNode、JournalNode等存放数据的公共文件夹。用户也能够自己单独指定这三类节点的文件夹。 这里的yarn_data/tmp文件夹与文件都是自己创建的。</description>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>SY-0217:2181,SY-0355:2181,SY-0225:2181</value>
<description>这里是ZooKeeper集群的地址和port。注意。数量一定是奇数</description> </property>
02.文件hdfs-site.xml
<property>
<name>dfs.nameservices</name>
<value>hadoop-cluster</value>
<description>指定命名空间名称,可任意起名</description>
</property>
<property>
<name>dfs.ha.namenodes.hadoop-cluster</name>
<value>nn1,nn2</value>
<description>在命名空间下指定NameNode逻辑名</description>
</property> <property>
<name>dfs.namenode.rpc-address.hadoop-cluster.nn1</name>
<value>SY-0217:8020</value>
<description>为“命名空间名.NameNode逻辑名”配置rpc地址</description>
</property> <property>
<name>dfs.namenode.rpc-address.hadoop-cluster.nn2</name>
<value>SY-0355:8020</value>
<description>为“命名空间名.NameNode逻辑名”配置rpc地址</description>
</property>
<property>
<name>dfs.namenode.http-address.hadoop-cluster.nn1</name>
<value>SY-0217:50070</value>
<description>为“命名空间名.NameNode逻辑名”配置http地址</description>
</property> <property>
<name>dfs.namenode.http-address.hadoop-cluster.nn2</name>
<value>SY-0355:50070</value>
<description>为“命名空间名.NameNode逻辑名”配置http地址</description>
</property> <property>
<name>dfs.namenode.servicerpc-address.hadoop-cluster.n1</name>
<value>SY-0217:53310</value>
</property>
<property>
<name>dfs.namenode.servicerpc-address.hadoop-cluster.n2</name>
<value>SY-0355:53310</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///home/kkzhangtao/hadoop-2.2.0/hdfs/name</value>
<description>配置NameNode元数据存放的路径;</description>
</property> <property>
<name>dfs.datanode.data.dir</name>
<value>file:///home/kkzhangtao/hadoop-2.2.0/hdfs/data</value>
<description>配置datanode元数据存放的路径。</description>
</property> <property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://SY-0355:8485;SY-0225:8485;SY-0226:8485/journalnode</value>
<description>
配置JournalNode,包括三部分:
1.qjournal是协议,无需改动;
2.然后就是三台部署JournalNode的主机host/ip:port,三台机器之间用分号分隔。
3.最后的hadoop-journal是journalnode的命名空间,能够任意取名。
</description>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/kkzhangtao/hadoop-2.2.0/hdfs/journal/</value>
<description>journalnode的本地数据存放文件夹,指定一个路径就够。</description>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled.hadoop-cluster</name>
<value>true</value>
<description> 是否自己主动切换。 </description> </property> <property>
<name>dfs.client.failover.proxy.provider.hadoop-cluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
<description> 指定hadoop-cluster出故障时,哪个实现类负责运行故障切换</description>
</property> <property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
<description> 一旦须要NameNode切换,使用ssh方式进行操作</description>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/kkzhangtao/.ssh/id_rsa</value>
<description> 假设使用ssh进行故障切换。使用ssh通信时用的密钥存储的位置</description>
</property> <property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>1000<</value>
<description>ssh连接超时的最大时间</description>
</property> <property>
<name>dfs.namenode.handler.count</name>
<value>8</value>
<description>为处理datanode节点的进程调用开户的服务线程数量。能够改动</description> </property>
03.文件mapred-site.xml 和yarn-site.xml 不用改动 (保持和原来一样)
04.拷贝到其它各个节点去
採用例如以下命令:在hadoop_home文件夹下
scp etc/hadoop/* kkzhangtao@SY-0355:/home/kkzhangtao/hadoop-2.2.0/etc/hadoop
scp
etc/hadoop/* kkzhangtao@SY-0225:/home/kkzhangtao/hadoop-2.2.0/etc/hadoop
scp
etc/hadoop/* kkzhangtao@SY-0226:/home/kkzhangtao/hadoop-2.2.0/etc/hadoop
5.Hadoop主备节点(自己主动切换)的測试
01.zookeeper的初始化
进入hadoop_home文件夹下 採用 :bin/hdfs zkfc -formatZK
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDUxMjEyNA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
02.启动zkfc
进入hadoop_home文件夹下
採用 :sbin/hadoop-daemon.sh start zkfc
03.启动namnode
进入hadoop_home文件夹下 採用 :sbin/hadoop-daemon.sh
start namenode
都启动好了通过jps
能够看到各个几点的进程 如图
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDUxMjEyNA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
在两个namenode都启动之后,会发现,当中一个namenode会自己主动切换成active状态,不须要手工切换。
通过訪问页面能够得到结果:(192.168.0.162:50070)(192.168.0.163:50070)
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDUxMjEyNA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
04.在SY-0217上面
Kill Namenode(10051) 进程 让SY-0355自己主动切换为Active
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDUxMjEyNA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDUxMjEyNA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="599" height="222" alt="">
6.结语
上面就是主备NameNode自己主动切换的配置和測试结果 。都亲自实现多次而且成功自己主动切换。
谢谢
【伊利丹】Hadoop2.0 NN HA实验记录的更多相关文章
- 【甘道夫】Hadoop2.2.0 NN HA具体配置+Client透明性试验【完整版】
引言: 前面转载过一篇团队兄弟[伊利丹]写的NN HA实验记录,我也基于他的环境实验了NN HA对于Client的透明性. 本篇文章记录的是亲自配置NN HA的具体全过程,以及全面測试HA对clien ...
- Hadoop2.0 Namenode HA实现方案
Hadoop2.0 Namenode HA实现方案介绍及汇总 基于社区最新release的Hadoop2.2.0版本,调研了hadoop HA方面的内容.hadoop2.0主要的新特性(Hadoop2 ...
- 【甘道夫】NN HA 对于 Client 透明的实验
之前转载过一篇[伊利丹]写的NN HA实验记录.该博客描写叙述了主备NN透明切换的过程,也就是说,当主NN挂掉后,自己主动将备NN切换为主NN了,Hadoop集群正常执行. 今天我继续做了一个实验.目 ...
- Cloudera Hadoop 5& Hadoop高阶管理及调优课程(CDH5,Hadoop2.0,HA,安全,管理,调优)
1.课程环境 本课程涉及的技术产品及相关版本: 技术 版本 Linux CentOS 6.5 Java 1.7 Hadoop2.0 2.6.0 Hadoop1.0 1.2.1 Zookeeper 3. ...
- CentOS7+Hadoop2.7.2(HA高可用+Federation联邦)+Hive1.2.1+Spark2.1.0 完全分布式集群安装
1 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.9.1 2.9.2 2.9.2.1 2.9.2.2 2.9.3 2.9.3.1 2.9.3.2 2.9.3.3 2. ...
- Ubuntu 14.10 下ZooKeeper+Hadoop2.6.0+HBase1.0.0 的HA机群高可用配置
1 硬件环境 Ubuntu 14.10 64位 2 软件环境 openjdk-7-jdk hadoop 2.6.0 zookeeper-3.4.6 hbase-1.0.0 3 机群规划 3.1 zoo ...
- Hadoop2.7.3 HA高可靠性集群搭建
1.背景介绍 Hadoop2.0.0之前,在一个HDFS集群中,NameNode存在单节点故障(SPOF):因为集群中只有一个NameNode,所以在使用过程中,如果该NameNode出现故障或数据丢 ...
- Hadoop2.41的HA的配置与启动
我配置HA机制创建了7台虚拟机 1.修改Linux主机名2.修改IP3.修改主机名和IP的映射关系 ######注意######如果你们公司是租用的服务器或是使用的云主机(如华为云主机.阿里云主机等) ...
- Hadoop2.0构成之HDFS2.0
HDFS2.0之HA 主备NameNode: 1.主NameNode对外提供服务,备NameNode同步主NameNode元数据,以待切换: 2.主NameNode的信息发生变化后,会将信息写到共享数 ...
随机推荐
- NFS基础配置
需要安装的包: rpc-bind nfs-utils 修改配置文件 /etc/exports 配置 /tmp *(ro) 修改配置之后记得重启服务 sudo systemctl restart nfs ...
- [转] 在安卓设备上使用 Chrome 远程调试功能
你的网页内容在移动设备上的体验可能和电脑上完全不同.Chrome DevTools 提供了远程调试功能,这让你可以在安卓设备上实时调试开发的内容. 安卓远程调试支持: 在浏览器选项卡中调试网站. 在原 ...
- 【LOJ】#6433. 「PKUSC2018」最大前缀和
题解 神仙的状压啊QAQ 设一个\(f[S]\)表示数字的集合为\(S\)时\(sum[S]\)为前缀最大值的方案数 \(g[S]\)表示数字集合为\(S\)时所有前缀和都小于等于0的方案数 答案就是 ...
- Divide by Zero 2018 and Codeforces Round #474 (Div. 1 + Div. 2, combined)
思路:把边看成点,然后每条边只能从下面的边转移过来,我们将边按照u为第一关键字,w为第二关键字排序,这样就能用线段树维护啦. #include<bits/stdc++.h> #define ...
- Python 之 Module Not Found Error: No module named 'openpyxl'
我在学习Python的过程中,计划将取到的数据保存到Excel文件中,使用 df.to_csv('D:/PythonWorkSpace/TestData/test.xlsx') 总是报错 Module ...
- 008.KVM-VNC管理
一 VNC管理 1.1 修改配置 [root@kvm-host ~]# vi /etc/libvirt/qemu.conf …… vnc_listen = "0.0.0.0" 说明 ...
- 005.iSCSI客户端配置示例-Windows
一 环境 Linux作为iSCSI服务端,Windows2008R2作为iSCSI客户端 二 服务端配置过程 2.1 客户端配置 在Linux上参照之前的配置建立三个LUN卷作为共享盘,最终配置如下: ...
- Redis高可用集群-哨兵模式(Redis-Sentinel)搭建配置教程【Windows环境】
No cross,no crown . 不经历风雨,怎么见彩虹. Redis哨兵模式,用现在流行的话可以说就是一个"哨兵机器人",给"哨兵机器人"进行相应的配置 ...
- ftp服务及其实现之vsftpd
本文最早发布于我的51CTO博客,目前已迁移至博客园. 简介 FTP,File Transfer Protocol,文件传输协议 文件服务器,具备存储和共享文件(权限设置合理的情况下)的功能 命令端口 ...
- Linux-C基础编程
GCC工作流程 工作流程 1.预处理 -E xxx.c —> xxx.i 宏替换:头文件展开:注释去掉: gcc -E hello.c -o hello.i 2.编译 -S xxx.i —> ...