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

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