hadoop学习笔记(四)HA环境

我们先来看一下hadoop1.x的架构图


hadoop学习笔记(四)HA环境_第1张图片
image

可以看到,有且只有一个namenode,集群可靠性会受到影响,当namenode出现问题时会影响到整个集群工作,所以,在hadoop2.x中解决了这个问题。

Hadoop 2.0产生背景

  • hadoop 1.0 中HDFS和MapReduce在高可用、扩展性等方面存在问题
  • HDFS存在的问题
    1.NameNode单点故障,难以用于在线场景
    2.NameNode压力过大,且内存受限,影响系统扩展性
  • MapReduce存在的问题
    1.JobTracker访问压力大,影响系统扩展性
    2.难以支持除MapReduce之外的计算框架,比如Spark、Storm等

Hadoop 1.x与Hadoop2.x

hadoop学习笔记(四)HA环境_第2张图片
QQ截图20180306183158.png

  • Hadoop 2.x由HDFS、MapReduce和YARN三个分支构成:
    1.HDFS:NN Federation、HA;
    2.MapReduce:运行在YARN上的MR
    3.YARN:资源管理系统
    HDFS 2.x Federation
  • 通过多个namenode/namespace把元数据的储存和管理分散到多个节点中,使namenode/namespace可以通过增加机器来进行水平扩展
  • 能把单个namenode的负载分散到多个节点中,在HDFS数据规模较大的时候不会降低HDFS的性能,可以通过多个namespace来隔离不同类型的应用,把不同类型应用的HDFS元数据的存储和管理分派到不同的namenode下
    HDFS 2.0 Federation
    hadoop学习笔记(四)HA环境_第3张图片
    QQ截图20180306183158.png

    Federation配置:

  
    dfs.nameservices
    ns1,ns2
  
  
    dfs.namenode.rpc-address.ns1
    nn-host1:rpc-port
  
  
    dfs.namenode.http-address.ns1
    nn-host1:http-port
  
  
    dfs.namenode.secondary.http-address.ns1
    snn-host1:http-port
  
  
    dfs.namenode.rpc-address.ns2
    nn-host2:rpc-port
  
  
    dfs.namenode.http-address.ns2
    nn-host2:http-port
  
  
    dfs.namenode.secondary.http-address.ns2
    snn-host2:http-port
  

  .... Other common configuration ...

Hadoop HA(HDFS High Availability)
对namenode实现高可用,当一个namenode出现故障,备用的namenode会进行自动接管。因此,备用的namenode的元数据要和第一台namenode保持一致,也就是说,fsimage和edits要保持一致。
HA有两种方式,分别是:
HDFS High Availability NFS
HDFS High Availability QJM
HDFS High Availability NFS将edits文件上传至NFS服务器,通过NFS服务器实现多个namenode之间的共享,但是,如果NFS服务器挂掉了,就会影响整个集群环境,也就是说NFS本身就被单点故障所限制,所以,我们一般不会采用这种模式。

HDFS High Availability QJM

hadoop学习笔记(四)HA环境_第4张图片
timg.jpg

JN也就是journalnode,本身就是一个小的集群,直接把edits文件交给JN来管理。通过zookeeper来监控各namenode的状态
HA环境搭建
下载安装hadoop2.x
下载安装zookeeper
依然以五个节点node1-node5为例,node1和node2为namenode。node1-node3为journalnode。node3-node5为zookeeper集群,node3-node5为datanode。理论上来说应该一个节点对应一个独立功能,但是服务器有限,所以功能有所重叠。
1.时间同步:ntpdate -u edu.ntp.org.cn

    关闭网络hosts防火墙

2.安装jdk

3.上传hadoop安装文件并解压

4.免密钥登录:node1到node1-5
                         node2到node1-5
             ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
             cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
5.修改配置文件
    hadoop1.x中创建的masters文件要保证每台服务器都删除。
    hadoop_env.sh中的JAVA_HOME

    core-site.xml

    hdfs-site.xml

    slaves 指定datanode

6.同步配置文件
7.启动journalnode在node1-node3上执行:hadoop-daemon.sh start journalnode
8.格式化其中一台namenode:hdfs namenode -format
9.同步其他没有格式化的NN,在其他NN上执行:hdfs namenode -bootstrapStandby
10.启动zookeeper集群,分别在node3-node5上执行:进入zookeeper的bin目录下执行./zkServer.sh start
11.格式化zookeeper:在一台namenode上执行hdfs zkfc -formatZK
12.启动 start-dfs.sh

以后每次重启集群时
[停集群:stop-dfs.sh]
再启动:
启动zookeeper集群:node3-node5,./zkServer.sh start
启动hdfs:start-dfs.sh

详细配置
配置过hadoop1.x的同学一定要删除每个节点配置文件中的masters
修改hadoop_env.sh中的JAVA_HOME为jdk安装目录
hdfs-site.xml配置


                    

你可能感兴趣的:(hadoop学习笔记(四)HA环境)