hadoop ha 部署

环境

主机名 ip os 配置 硬盘
hpmaster 172.16.50.111 CentOS Linux release 7.5.1804 (Core) 2核8G 10G
hpmaster1 172.16.50.135 CentOS Linux release 7.5.1804 (Core) 2核8G 10G
hpslave1 172.16.50.118 CentOS Linux release 7.5.1804 (Core) 2核8G 10G
hpslave2 172.16.50.134 CentOS Linux release 7.5.1804 (Core) 2核8G 10G

服务器配置只是为了测试部署方案

部署规划

主机名 NameNode DataNode Year Zookeeper JournalNode zkfc
hpmaster Y Y Y Y Y
hpmaster1 Y Y N Y Y
hpslave1 N Y Y Y N
hpslave2 N Y Y Y N

软件版本

软件名 版本号
Zookeeper 3.4.13
hadoop 2.8.5
java 1.8.0.181

基础部署

  1. 下载zookeeper-3.4.13.tar.gz 下载地址:http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz

  2. 下载hadoop-2.8.5.tar.gz 下载地址:https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.8.5/hadoop-2.8.5.tar.gz

  3. 配置/etc/hosts 添加如下配置:

    172.16.50.111  hpmaster
    172.16.50.118  hpslave1
    172.16.50.134  hpslave2
    172.16.50.135  hpmaster1
  4. 配置 hpmaster hpmaster1 免密登录 所有服务器

    命令:ssh-keygen , ssh-copy-id 步骤略

  5. 关闭 selinux , 防火墙

  6. 安装jdk rsync

    yum install java-1.8.0-openjdk rsync -y

Zookeeper 部署

操作服务器服务器[hpmaster,hpslave1,hpslave2]

解压 zookeeper-3.4.13.tar.gz 到 /data/zookeeper

创建配置文件 /data/zookeeper/conf/zoo.cfg , 内容如下:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data
clientPort=2181
server.1=hpmaster:2888:3888  
server.2=hpslave1:2889:3889  
server.3=hpslave2:2890:3890

创建数据目录 /data/zookeeper/data :

mkdir /data/zookeeper/data

创建标识文件data/zookeeper/data/myid:

echo '1' > data/zookeeper/data/myid  # 1 为对应 'server.1=hpmaster:2888:3888'

启动:

/data/zookeeper/bin/zkServer.sh start

hadoop 部署

操作所有服务器 解压 hadoop-2.8.5.tar.gz 到 /data/hadoop

在 服务器[hpmaster] 修改配置文件:

  1. /data/hadoop/etc/hadoop/core-site.xml :

    
         
           hadoop.tmp.dir
           file:/data/hadoop/tmp
       
         
           fs.defaultFS
           hdfs://mycluster
       
        
         ha.zookeeper.quorum  
         hpmaster:2181,hpslave1:2181,hpslave2:2181  
     
    
  2. /data/hadoop/etc/hadoop/hdfs-site.xml:

    
        
            dfs.replication
            2
       
        
            dfs.nameservices
            mycluster
       
        
            dfs.ha.namenodes.mycluster
            hpmaster,hpmaster1
       
          
            dfs.namenode.shared.edits.dir  
            qjournal://hpmaster:8485;hpslave1:8485;hpslave2:8485;hpmaster1:8485/mycluster  
        
        
             dfs.ha.automatic-failover.enabled  
             true  
       
        
            dfs.ha.fencing.methods
            sshfence
       
         
            dfs.namenode.name.dir
            file:/data/hadoop/hdfs/name
       
        
            dfs.datanode.data.dir
            file:/data/hadoop/hdfs/data
       
       
            dfs.namenode.rpc-address.mycluster.hpmaster
            hpmaster:9000
       
         
            dfs.namenode.http-address.mycluster.hpmaster  
            hpmaster:50070  
        
       
            dfs.namenode.rpc-address.mycluster.hpmaster1
            hpmaster1:9000
       
       
            dfs.namenode.http-address.mycluster.hpmaster1
            hpmaster1:50070
       
             
            dfs.client.failover.proxy.provider.mycluster
             org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
        
           
         dfs.ha.fencing.ssh.private-key-files
        /root/.ssh/id_rsa
      
    
  3. /data/hadoop/etc/hadoop/mapred-site.xml:

    
      
         mapreduce.framework.name
         yarn
     
    

    /data/hadoop/etc/hadoop/mapred-site.xml 文件不存在 :cp /data/hadoop/etc/hadoop/mapred-site.xml.template

  4. /data/hadoop/etc/hadoop/yarn-site.xml:

    
    
       
           yarn.nodemanager.aux-services
           mapreduce_shuffle
       
        
           yarn.resourcemanager.hostname
           hpmaster
       
    
  5. /data/hadoop/etc/hadoop/slaves:

    hpslave1
    hpslave2
    hpmaster
    hpmaster1
  6. 修改JAVA_HOME

    /data/hadoop/etc/hadoop/hadoop-env.sh :

    # export JAVA_HOME=${JAVA_HOME}
    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/jre

服务配置文件到服务器[hpslave1,hpslave2,hpmaster1]:

scp /data/hadoop/etc/hadoop/* root@hpslave1:/data/hadoop/etc/hadoop/
scp /data/hadoop/etc/hadoop/* root@hpslave2:/data/hadoop/etc/hadoop/
scp /data/hadoop/etc/hadoop/* root@hpmaster1:/data/hadoop/etc/hadoop/

服务器[hpslave1,hpslave2] 上删除:/data/hadoop/etc/hadoop/slaves 文件

所有服务器配置 /etc/profile 添加内容:

PATH=$PATH:/data/hadoop/bin:/data/hadoop/sbin

创建目录:

mkdir /data/hadoop/{hdfs,tmp}

启动集群:

  1. 服务器[hpmaster] 执行 :

    # hadoop-daemons.sh start journalnode  # 启动JournalNode集群
    # hdfs zkfc -formatZK   # 格式化zkfc,让在zookeeper中生成ha节点
    # hadoop namenode -format # 格式化hdfs
    # hadoop-daemon.sh start namenode  # 启动NameNode
  2. 服务器[hpmaster1] 执行:

    hdfs namenode  -bootstrapStandby  # 同步数据
    hadoop-daemon.sh  start  namenode # 启动NameNode
  3. 服务器[hpmaster] 执行 :

    hadoop-daemons.sh start datanode # 启动datanode节点
    start-yarn.sh                    # 启动yarn
    hadoop-daemons.sh start zkfc     # 启动zkfc

检验集群
hadoop ha_第1张图片

hadoop ha_第2张图片

hdfs 上传文件

# hadoop fs -put /data/soft/hadoop-2.8.5.tar.gz hdfs://172.16.50.111:9000/
# hadoop fs -put /data/soft/zookeeper-3.4.13.tar.gz hdfs://172.16.50.111:9000/

查看hdfs上的文件情况

hadoop fs -ls /                           
Found 2 items
-rw-r--r--   2 root supergroup  246543928 2018-10-12 11:36 /hadoop-2.8.5.tar.gz
-rw-r--r--   2 root supergroup   37191810 2018-10-12 11:36 /zookeeper-3.4.13.tar.gz

hadoop ha_第3张图片