hadoop ha

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 :

    <configuration>
       <property>  <!-- hadoop数据存储的临时文件路径 -->
           <name>hadoop.tmp.dir</name>
           <value>file:/data/hadoop/tmp</value>
       </property>
       <property>  <!-- 指定hdfs的nameservice为mycluster -->
           <name>fs.defaultFS</name>
           <value>hdfs://mycluster</value>
       </property>
    <property>  <!--指定zookeeper地址-->  
         <name>ha.zookeeper.quorum</name>  
         <value>hpmaster:2181,hpslave1:2181,hpslave2:2181</value>  
    </property> 
    </configuration>
  2. /data/hadoop/etc/hadoop/hdfs-site.xml:

    <configuration>
       <property> <!-- 指定HDFS的文件副本数 -->
            <name>dfs.replication</name>
            <value>2</value>
       </property>
       <property> <!-- 与 fs.defaultFS 相同 -->
            <name>dfs.nameservices</name>
            <value>mycluster</value>
       </property>
       <property> <!-- namenodes 节点地址  -->
            <name>dfs.ha.namenodes.mycluster</name>
            <value>hpmaster,hpmaster1</value>
       </property>
       <property>  <!-- 指定NameNode的元数据在JournalNode上的存放位置 --> 
            <name>dfs.namenode.shared.edits.dir</name>  
            <value>qjournal://hpmaster:8485;hpslave1:8485;hpslave2:8485;hpmaster1:8485/mycluster</value>  
       </property> 
       <property> <!-- 启用故障自动切换  -->
             <name>dfs.ha.automatic-failover.enabled</name>  
             <value>true</value>  
       </property>
       <property> <!-- 自动切换方式  -->
            <name>dfs.ha.fencing.methods</name>
            <value>sshfence</value>
       </property>
       <property>  <!-- 指定namenode节点的文件存储目录 -->
            <name>dfs.namenode.name.dir</name>
            <value>file:/data/hadoop/hdfs/name</value>
       </property>
       <property> <!-- 指定datanode节点的文件存储目录 -->
            <name>dfs.datanode.data.dir</name>
            <value>file:/data/hadoop/hdfs/data</value>
       </property>
       <property>
            <name>dfs.namenode.rpc-address.mycluster.hpmaster</name>
            <value>hpmaster:9000</value>
       </property>
       <property>  
            <name>dfs.namenode.http-address.mycluster.hpmaster</name>  
            <value>hpmaster:50070</value>  
       </property> 
       <property>
            <name>dfs.namenode.rpc-address.mycluster.hpmaster1</name>
            <value>hpmaster1:9000</value>
       </property>
       <property>
            <name>dfs.namenode.http-address.mycluster.hpmaster1</name>
            <value>hpmaster1:50070</value>
       </property>
             <property>
            <name>dfs.client.failover.proxy.provider.mycluster</name>
             <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
        </property>
           <property>
         <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/root/.ssh/id_rsa</value>
      </property>
    </configuration>
  3. /data/hadoop/etc/hadoop/mapred-site.xml:

    <configuration>
     <property> <!--运行MapReduce作业时框架 local classic  yarn -->
         <name>mapreduce.framework.name</name>
         <value>yarn</value>
     </property>
    </configuration>

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

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

    <configuration>
    <!-- Site specific YARN configuration properties -->
       <property>
           <name>yarn.nodemanager.aux-services</name>
           <value>mapreduce_shuffle</value>
       </property>
       <property> 
           <name>yarn.resourcemanager.hostname</name>
           <value>hpmaster</value>
       </property>
    </configuration>
  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

hadoop ha

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章