热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Hadoop2HA介绍

本文将介绍HA机制的原理,以及Hadoop2HA配置过程。—————————————————————————————————————————————————————————————

本文将介绍HA机制的原理,以及Hadoop2 HA配置过程。

————————————————————————————————————————————————————————————————————
HA机制的原理
      HA中有两个NameNode:Active NameNode和Standby NameNode。其中Active NN当做主节点,而Standby NN当做备份的主节点,当Active NN崩掉时,可以将Standby NN切换为主节点。而Active NN和Standby NN之间的元数据信息通过第三方服务JournalNode进程进行同步。如果Active NN崩溃之后,可以手动将Standby NameNode切换成Active NameNode,也可以通过Zookeeper服务进行自动切换。具体如下图所示:
技术分享

Hadoop2体系结构

      Hadoop2的出现是有原因的。我们知道 NameNode是核心节点,维护着整个HDFS中的元数据信息,那么其容量是有限的,受制于服务器的内存空间。当NameNode服务器的内存装不下数据后,那么HDFS集群就装不下数据了,寿命也就到头了。因此其扩展性是受限的。HDFS联盟指的是有多个HDFS集群同时工作,那么其容量理论上就不受限了,夸张点说就是无限扩展。你可以理解成,一个总集群中,可以虚拟出两个或两个以上的单独的小集群,各个小集群之间数据是实时共享的。因为hadoop集群中已经不在单独存在namenode和datanode的概念。当一个其中一个小集群出故障,可以启动另一个小集群中的namenode节点,继续工作。因为数据是实时共享,即使namenode或datanode一起死掉,也不会影响整个集群的正常工作。

Hadoop2 HA配置

1. 文件hdfs-site.xml

 1 
 2           
 3              dfs.replication
 4              2
 5             // 指定DataNode存储block的副本数量
 6           
 7              dfs.permissions
 8              false
 9           
10           
11              dfs.permissions.enabled
12              false
13           
14               
15              dfs.nameservices  
16              cluster1    
17             //给hdfs集群起名字
18           
19             dfs.ha.namenodes.cluster1
20             hadoop1,hadoop2
21             //指定NameService是cluster1时的namenode
22          
23             dfs.namenode.rpc-address.cluster1.hadoop1
24             hadoop1:9000
25             //指定hadoop101的RPC地址 
26              
27            dfs.namenode.http-address.cluster1.hadoop1    
28            hadoop1:50070    
29             //指定hadoop101的http地址   
30              
31            dfs.namenode.rpc-address.cluster1.hadoop2    
32            hadoop2:9000    
33          
34              
35            dfs.namenode.http-address.cluster1.hadoop2    
36            hadoop2:50070   
37          
38          
39            dfs.namenode.servicerpc-address.cluster1.hadoop1
40            hadoop1:53310
41          
42          
43            dfs.namenode.servicerpc-address.cluster1.hadoop2
44            hadoop2:53310
45          
46            
47            dfs.ha.automatic-failover.enabled.cluster1  
48            true  
49             //指定cluster1是否启动自动故障恢复
50         
51        dfs.namenode.shared.edits.dir       qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485;hadoop4:8485;hadoop5:8485/cluster1
52       //指定cluster1的两个NameNode共享edits文件目录时,使用的JournalNode集群信息
53        
54  dfs.client.failover.proxy.provider.cluster1       org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
55          //指定cluster1出故障时,哪个实现类负责执行故障切换
56          
57           dfs.journalnode.edits.dir    
58           /home/muzili/yarn/yarn_data/tmp/journal    
59        //指定JournalNode集群在对NameNode的目录进行共享时,自己存储数据的磁盘路径
60            
61           dfs.ha.fencing.methods    
62           sshfence    
63        
64                
65            dfs.ha.fencing.ssh.private-key-files    
66            /home/muzili/.ssh/id_rsa    
67        
68            
69            dfs.ha.fencing.ssh.connect-timeout
70            10000
71        
72        
73            dfs.namenode.handler.count
74            100
75       
76       

2. 文件mapred-site.xml

1      
2        
3            mapreduce.framework.name
4            yarn
5       
6        //指定运行mapreduce的环境是yarn,与hadoop1不同的地方

3. 文件yarn-site.xml

 1     
 2           
 3          yarn.resourcemanager.hostname    
 4          hadoop1    
 5         //自定义ResourceManager的地址,还是单点
 6       
 7          yarn.nodemanager.aux-services
 8          mapreduce.shuffle
 9       
10    

4. 添加环境变量

       环境变量的添加方法大致相同,以下配置仅供参考

 JAVA_HOME=/usr/lib/jvm/jdk1.7.0_51   
 export PATH=$PATH:$JAVA_HOME/bin
 export HBASE_HOME=/home/muzili/hadoop-2.2.0/app/hbase-0.94.6-cdh4.4.0
 export HIVE_HOME=/home/muzili/hadoop-2.2.0/app/hive-0.12.0/
 export HADOOP_HOME=/home/muzili/hadoop-2.2.0
 export PATH=$PATH:$HBASE_HOME/bin:$HIVE_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
 export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
 export ZOOKEEPER_HOME=/home/muzili/yarn/hadoop-2.2.0/app/zookeeper-3.4.5
 export PATH=$PATH:$ZOOKEEPER_HOME/bin

总结

     HA通过引入Standby Namenode,解决了Hadoop1上HDFS单点故障。如果读者有兴趣的话,可以参考博客,进行HA的配置安装。

Hadoop2 HA介绍


推荐阅读
  • 项目需要将音视频文件上传服务器,考虑并发要求高,通过七牛来实现。直接上代码usingQiniu.IO;usingQiniu.IO.Resumable;usingQiniu.RPC; ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • MR程序的几种提交运行模式本地模型运行1在windows的eclipse里面直接运行main方法,就会将job提交给本地执行器localjobrunner执行-- ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 在project.properties添加#Projecttarget.targetandroid-19android.library.reference.1..Sliding ... [详细]
  • 本文介绍了在sqoop1.4.*版本中,如何实现自定义分隔符的方法及步骤。通过修改sqoop生成的java文件,并重新编译,可以满足实际开发中对分隔符的需求。具体步骤包括修改java文件中的一行代码,重新编译所需的hadoop包等。详细步骤和编译方法在本文中都有详细说明。 ... [详细]
  •     这里使用自己编译的hadoop-2.7.0版本部署在windows上,记得几年前,部署hadoop需要借助于cygwin,还需要开启ssh服务,最近发现,原来不需要借助cy ... [详细]
  • mapreduce源码分析总结
    这篇文章总结的非常到位,故而转之一MapReduce概述MapReduce是一个用于大规模数据处理的分布式计算模型,它最初是由Google工程师设计并实现的ÿ ... [详细]
  • Hadoop 源码学习笔记(4)Hdfs 数据读写流程分析
    Hdfs的数据模型在对读写流程进行分析之前,我们需要先对Hdfs的数据模型有一个简单的认知。数据模型如上图所示,在NameNode中有一个唯一的FSDirectory类负责维护文件 ... [详细]
  •        在搭建Hadoop环境之前,请先阅读如下博文,把搭建Hadoop环境之前的准备工作做好,博文如下:       1、CentOS6.7下安装JDK,地址:http:b ... [详细]
  • 前言折腾了一段时间hadoop的部署管理,写下此系列博客记录一下。为了避免各位做部署这种重复性的劳动,我已经把部署的步骤写成脚本,各位只需要按着本文把脚本执行完,整个环境基本就部署 ... [详细]
author-avatar
临别一眼_200910
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有