Hadoop HA架构搭建

Hadoop HA架构搭建

共七台服务器,节点角色分配如下:

192.168.133.21 (BFLN-01):namenode ?zookeeper ?journalnade?DFSZKFailoverController
192.168.133.23 (BFLN-02):namenode?resourcemanager zookeeper ?journalnade?DFSZKFailoverController
192.168.133.24 (BFLN-03):resourcemanager zookeeper ?journalnade?DFSZKFailoverController
192.168.133.25 (BFLN-04):datanode,nodemanager
192.168.133.26 (BFLN-05):datanode,nodemanager
192.168.133.27 (BFLN-06):datanode,nodemanager
192.168.133.28 (BFLN-07):datanode,nodemanager

HA优势:双namedata和resourcemanager能防止hadoop核心组件单点故障导致集群不可用情况的发生。

配置步骤:

环境配置

1、集群间需实现时间同步:

?ntpdate

2、配置7台服务器的主机名解析/etc/hosts(每台都要配置):

192.168.133.21 ?BFLN-01
192.168.133.23 ?BFLN-02
192.168.133.24 ?BFLN-03
192.168.133.25 ?BFLN-04
192.168.133.26 ?BFLN-05
192.168.133.27 ?BFLN-06
192.168.133.28 ?BFLN-07

3、配置ssh服务/etc/ssh/sshd.conf

StrictHostKeyChecking no

UserKnownHostsFile /dev/null

不然启动hdfs服务的时候可能会异常:

Starting namenodes on [BFLN-01 BFLN-02]The authenticity of host ‘BFLN-02 (192.168.133.23)‘ can‘t be established.ECDSA key fingerprint is 79:d1:ec:82:d3:1c:50:8a:17:c2:2d:f0:87:20:53:44.Are you sure you want to continue connecting (yes/no)? The authenticity of host ‘BFLN-01 (192.168.133.21)‘ can‘t be established.ECDSA key fingerprint is 30:75:04:10:93:d2:57:d7:3d:b1:cc:31:92:30:1a:a1.Are you sure you want to continue connecting (yes/no)? yes

4、每台服务器实现ssh无密钥认证,包括本机与本机的免密钥认证:

ssh-keygren :生成一对密钥

ssh-copy-id : 把公钥发给对方服务器

5、配置安装JAVA环境并配置JAVA和hadoop环境变量:

export JAVA_HOME=/usr/java/jdk1.8.0_51/
export HADOOP_HOME=/opt/hadoop-spark/hadoop/hadoop-2.9.1
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

安装zookeeper集群:

7、解压zookeeper压缩包。

8、修改zookeeper配置文件:

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/data/zookeeper
# the port at which the clients will connect
clientPort=2181
server.1=192.168.133.21:2888:3888
server.2=192.168.133.23:2888:3888
server.3=192.168.133.24:2888:3888
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature

9、zookeeper数据路径文件下添加个代表zookeeper节点id的myid文件(本配置文件的数据路径为/data/zookeeper,节点id分别为1,2,3)

10、启动zookeeper集群

./zkServer.sh start

安装配置Hadoop-HA:

11、下载hadoop-spark压缩包,解压,尽量保持7台服务器的hadoop安装路径是一致的。

在192.168.133.21上配置:

cd $HADOOP_HOME/etc/hadoop/

vi?core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://BFLN</value>   <!--#BFLN为nodename集群的代理名字,此名字要和hdfs-site.xml配置的dfs.nameservices集群名字一致-->
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/data/hadoop-spark/hadoop/tmp</value>    <!--#指定hdfs目录-->
    </property>
 <property>
      <name>ha.zookeeper.quorum</name>
      <value>BFLN-01:2181,BFLN-02:2181,BFLN-03:2181</value>  <!--配置zookeeper集群的地址-->
 </property>
</configuration>

?

vi hdfs-site.xml

<configuration>
????<!-- #BFLN为nodename集群的代理名字,此名字要和core-site.xml配置的fs.defaultFS集群名字一致 -->
    <property>
        <name>dfs.nameservices</name>
        <value>BFLN</value>
    </property>
????
????<!-- BFLN集群下有两个namenode节点,分别为BFLN1,BFLN2 -->
    <property>
       <name>dfs.ha.namenodes.BFLN</name>
       <value>BFLN1,BFLN2</value>
    </property>
????
????<!-- 配置namenode第一节点的rpc通信端口 -->
    <property>
       <name>dfs.namenode.rpc-address.BFLN.BFLN1</name>
       <value>BFLN-01:9000</value>
    </property>
????
????<!-- 配置namenode第一节点的http通信端口 -->
    <property>
        <name>dfs.namenode.http-address.BFLN.BFLN1</name>
        <value>BFLN-01:50070</value>
    </property>
????
????<!-- 配置namenode第二节点的rpc通信端口 -->
    <property>
        <name>dfs.namenode.rpc-address.BFLN.BFLN2</name>
        <value>BFLN-02:9000</value>
    </property>
????
????<!-- 配置namenode第二节点的http通信端口 -->
    <property>
        <name>dfs.namenode.http-address.BFLN.BFLN2</name>
        <value>BFLN-02:50070</value>
    </property>
????
????<!-- 配置journalnade互连的地址及端口,官网建议journalnade节点数为奇数 -->
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://BFLN-01:8485;BFLN-02:8485/BFLN</value>
    </property>
????
????<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
    <property>
          <name>dfs.journalnode.edits.dir</name>
          <value>/data/hadoop-spark/hadoop/tmp/jn</value>
    </property>
????
????<!-- 开启NameNode故障时自动切换 -->
    <property>
          <name>dfs.ha.automatic-failover.enabled</name>
          <value>true</value>
    </property>
????
????<!--配置失败自动切换实现方式-->
    <property>
            <name>dfs.client.failover.proxy.provider.BFLN</name>
            <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
????
????<!--配置当namenode出现脑裂时,hdfs对其处理的方式,sshfenc会自动通过ssh到old-active将其杀掉,将standby切换为active-->
    <property>
             <name>dfs.ha.fencing.methods</name>
             <value>sshfence</value>
    </property>

?

????<!--配置HA namenode通信公钥的地址-->
    <property>
            <name>dfs.ha.fencing.ssh.private-key-files</name>
            <value>/root/.ssh/id_rsa</value>
    </property>

?

????<!--配置启动集群代理,如果此选项没有配置,后期启动的时候hadoop会把集群名称BFLN当成主机名与之通信,导致报错-->
    <property>
        <name>dfs.client.failover.proxy.provider.BFLN</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>

?

    <!--配置副本数-->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>

?

????<!--配置是否检查权限-->
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>
</configuration>

vi yarn-site.conf

<configuration>
  <!-- 开启resourcemanager HA服务,默认是false -->
  <property>
    <name>yarn.resourcemanager.ha.enabled</name>
    <value>true</value>
  </property>
  <!-- 开启RM重启的功能,作用:当yarn中有任务在跑时,如果rm宕机,设置成ture,rm重启时会恢复原来没有跑完的application -->
  <property>
    <name>yarn.resourcemanager.recovery.enabled</name>
    <value>true</value>
  </property>

?

  <!--  配置RM集群ID  -->
  <property>
    <name>yarn.resourcemanager.cluster-id</name>
    <value>BFLN-yarn</value>
  </property>

?

?

  <!--RM集群下的两个RM节点名称  -->
  <property>
    <name>yarn.resourcemanager.ha.rm-ids</name>
    <value>BFLN-yarn1,BFLN-yarn2</value>
  </property>

?

?

  <!--  BFLN-yarn1节点的地址  -->
  <property>
    <name>yarn.resourcemanager.hostname.BFLN-yarn1</name>
    <value>BFLN-02</value>
  </property>

?

?

  <!--  BFLN-yarn2节点的地址  -->
  <property>
    <name>yarn.resourcemanager.hostname.BFLN-yarn2</name>
    <value>BFLN-03</value>
  </property>

?

?

  <!-- zookeeper集群的地址  -->
  <property>
    <name>yarn.resourcemanager.zk-address</name>
    <value>BFLN-01:2181,BFLN-02:2181,BFLN-03:2181</value>
  </property>

?

?

  <!-- 用于状态存储的类,默认是基于Hadoop 文件系统的实现(FileSystemStateStore)  -->
  <property>
    <name>yarn.resourcemanager.store.class</name>
    <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
  </property>

?

  <!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序  -->
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    </property>
</configuration>

vi slaves:

(配置datanode节点)

192.168.133.25
192.168.133.26
192.168.133.27
192.168.133.28

?

vi hadoop-env.sh:

export JAVA_HOME=/usr/java/jdk1.8.0_51/

?

12:至此,所有的配置以及配置完成,需要将这几个文件复制发送给其他服务器。

启动HDFS服务:

注意:启动顺序很重要,顺序错了会导致后期频繁报错!

1、在BFLN-01上启动journalnode,命令:./sbin/hadoop-daemon.sh start journalnode # 启动?journalnode

2、在BFLN-01上格式化namenode,命令:./bin/hdfs namenode -format ?# 格式化namemode路径

3、在BFLN-01上注册zookeeper,命令:./bin/hdfs zkfc -formatZK ? ?# 向zookeeper集群注册hdfs

4、在BFLN-01上启动namenode,命令:./sbin/start-dfs.sh ? # 启动hdfs服务,注意,此时只会启动BFLN-01上的namenode

5、在BFLN-02上同步namenode,命令:./bin/hdfs namenode -bootstrapStandby ?#?BFLN-02节点的namenode从BFLN-01上的namenode同步元数据。

6、在BFLN-02上启动namenode,命令:./sbin/hadoop-daemon.sh start namenode ? # 在BFLN-02上启动namenode节点

7、在BFLN-02上启动resourcemanager,命令:./sbin/start-yarn.sh ?#启动RM,NM服务

8、在0BFLN-02上启动resourcemanager,命令:./sbin/yarn-daemon.sh start resourcemanager ?#启动备用RM服务。

?

测试:kill一个为active的namenode/resourcemanager节点,查看另外一个standby节点是否转化成active节点:

查看namenode节点状态的命令:

./bin/hdfs ?haadmin -getServiceState?BFLN1

./bin/hdfs ?haadmin -getServiceState?BFLN2

查看resourcemanager节点状态的命令:

./bin/yarn ?rmadmin -getServiceState?BFLN-yarn1

./bin/yarn ?rmadmin -getServiceState BFLN-yarn2

如果kill active节点后standby节点无法切换成active节点,可能系统需要安装一个软件:

psmisc

?

?

原文地址:https://www.cnblogs.com/hel7512/p/12350634.html

时间: 2024-09-30 16:20:12

Hadoop HA架构搭建的相关文章

高可用集群HA架构搭建

HA含义为在集群服务器架构中,当主服务器故障时,备份服务器能够自动接管主服务器的工作,并及时切换过去,以实现对用户的不间断服务. (1)基本安装 Server1和server2 为High Availability的两个节点 在两个节点上配置完整的rhel6.5的yum源,安装ricci,创建ricci用户,密码westos,启动并设置开机启动ricci. 将instructor机作为管理机(M端),安装luci,启动luci服务 web上配置 在web上输入https://instructor

Hadoop HA的搭建

1.首先添加hosts文件 vim /etc/hosts 10.0.110.56 MSJTVL-DSJC-H01 10.0.110.57 MSJTVL-DSJC-H03 10.0.110.58 MSJTVL-DSJC-H05 10.0.110.60 MSJTVL-DSJC-H02 10.0.110.61 MSJTVL-DSJC-H04 2.几台机器做互信 Setup passphraseless ssh Now check that you can ssh to the localhost wi

Hadoop生产环境搭建(含HA、Federation)

Hadoop生产环境搭建 1. 将安装包hadoop-2.x.x.tar.gz存放到某一目录下,并解压. 2. 修改解压后的目录中的文件夹etc/hadoop下的配置文件(若文件不存在,自己创建.) 包括hadoop-env.sh,mapred-site.xml,core-site.xml,hdfs-site.xml,yarn-site.xml 3. 格式化并启动HDFS 4. 启动YARN 以上整个过程与Hadoop单机Hadoop测试环境搭建基本一致,不同的是步骤2中配置文件设置内容以及步骤

Hadoop HA高可用集群搭建(2.7.2)

1.集群规划: 主机名        IP                安装的软件                            运行的进程 drguo1  192.168.80.149 jdk.hadoop                         NameNode.DFSZKFailoverController(zkfc).ResourceManager drguo2 192.168.80.150  jdk.hadoop                         Nam

Hadoop HA + HBase环境搭建(一)————zookeeper和hadoop环境搭建

版本信息: Hadoop 2.6.3 HBase 1.0.3 JDK 1.8 Zookeeper 3.4.9 集群信息: RDFMaster 192.168.0.41 (Hadoop主节点,zk节点,HBase主节点) RDFSlave01 192.168.0.42 (Hadoop备份主节点,从节点,zk节点,HBase的RegionServer) RDFSlave02 192.168.0.43 (从节点,zk节点,HBase的RegionServer) RDFSlave03 192.168.0

基于Docker的Zookeeper+Hadoop(HA)+hbase(HA)搭建

公司要将监控数据存入opentsdb,而opentsdb使用了hbase作为存储.所以想搭建一套高可用的分布式存储来供opentsdb使用. 因为机器有限,所以测试过程中将三台集群的环境安装在docker上. 一:宿主机版本和docker版本 宿主机:Centos7.2  3.10.0-862.14.4.el7.x86_64 docker:Docker version 1.13.1, build 94f4240/1.13.1 二:镜像版本 docker.io/centos 三:创建docker镜

hadoop HA + HBase HA搭建:

hadoop HA搭建参考:https://www.cnblogs.com/NGames/p/11083640.html (本节:用不到YARN 所以可以不用考虑部署YARN部分) Hadoop 使用分 布式文件系统,用于存储大数据,并使用 MapReduce 来处理.Hadoop 擅长于存储各种格式 的庞大的数据,任意的格式甚至非结构化的处理. Hadoop 的限制: Hadoop 只能执行批量处理,并且只以顺序方式访问数据.这意味着必须搜索整个数据集, 即使是最简单的搜索工作.这一点上,一个

Hadoop HA搭建

hadoop HA部署 说明:    1.在hadoop2.0中通常由两个NameNode组成,一个处于active状态,另一个处于standby状态.Active NameNode对外提供服务,而Standby NameNode则不对外提供服务,仅同步active namenode的状态,      以便能够在它失败时快速进行切换.hadoop2.0官方提供了两种HDFS HA的解决方案,一种是NFS,另一种是QJM.这里我们使用简单的QJM.在该方案中,主备NameNode之间通过一组Jou

HDFS HA架构以及源码引导

HA体系架构 相关知识介绍 HDFS master/slave架构,HDFS节点分为NameNode节点和DataNode节点.NameNode存有HDFS的元数据:主要由FSImage和EditLog组成.FSImage保存有文件的目录.分块ID.文件权限等,EditLog保存有对HDFS的操作记录.DataNode存放分块的数据,并采用CRC循环校验方式对本地的数据进行校验,DataNode周期性向NameNode汇报本机的信息. NameNode单点故障:HDFS只有一个NameNode节