1. 程式人生 > >Hadoop-2.7.3 HA高可用搭建

Hadoop-2.7.3 HA高可用搭建

0.zookeeper叢集的搭 略,自行百度 1.hadoop2.7.3下載 http://hadoop.apache.org/releases.html 2.tar 解壓,mv到 /data,並將資料夾改為hadoop(也可以不改,看心情)。 3.vi /etc/profile 新增hadoop路徑 export HADOOP_HOME=/data/hadoop export PATH=$PATH :$HADOOP_HOME/bin 4.配置hadoop-env.sh 檔案位置 /data/hadoop/etc/hadoop
export JAVA_HOME=/usr/java/jdk1.8.0_121 5.配置core-site.xml檔案
<configuration>  
    <property>  
        <!--檔案系統依賴的基本配置 -->  
        <name>hadoop.tmp.dir</name>  
        <value>/data/hadoop/tmp</value>  
    </property>  
    <property>  
        <!-- 指定hdfs的nameservice為nameservices,可以自行命名-->  
        <name>fs.defaultFS</name>  
        <value>hdfs://nameservice</value>  
    </property>  
    <property>  
        <name>io.file.buffer.size</name>  
        <value>4096/value>  
    </property>  
    <property>  
        <!-- 指定zookeeper。我搭了三臺,伺服器名分別是nb1,nb2,nb3 -->  
        <name>ha.zookeeper.quorum</name>  
        <value>nb1:2181,nb2:2181,nb3:2181</value>  
    </property>  
</configuration>
6.配置hdfs-site.xml檔案
<configuration>  
    <property>  
        <!--指定hdfs的nameservice為nameservice,需要和core-site.xml中的保持一致 -->  
        <name>dfs.nameservices</name>  
        <value>nameservice</value>  
    </property>  
    <property>  
        <!-- nameservice下面有兩個NameNode,分別是namenode1,namenode2,名字自己定義-->  
        <name>dfs.ha.namenodes.nameservice</name>  
        <value>namenode1,namenode2</value>  
    </property>  
    <property>  
        <!-- namenode1的RPC通訊地址 -->  
        <name>dfs.namenode.rpc-address.nameservice.namenode1</name>  
        <value>nb2:9000</value>  
    </property>  
    <property>  
        <!-- namenode1的http通訊地址 -->  
        <name>dfs.namenode.http-address.nameservice.namenode1</name>  
        <value>nb2:50070</value>  
    </property>  
    <property>  
        <!-- namenode2的RPC通訊地址 -->  
        <name>dfs.namenode.rpc-address.nameservice.namenode2</name>  
        <value>nb1:9000</value>  
    </property>  
    <property>  
        <!-- namenode2的http通訊地址 -->  
        <name>dfs.namenode.http-address.nameservice.namenode2</name>  
        <value>nb1:50070</value>  
    </property>  
    <property>  
        <!-- 指定NameNode的元資料在JournalNode上的存放位置-->  
        <name>dfs.namenode.shared.edits.dir</name>  
        <value>qjournal://nb1:8485;nb2:8485;nb3:8485/nameservice</value>  
    </property>  
    <property>  
        <!-- 指定JournalNode在本地磁碟存放資料的位置 -->  
        <name>dfs.journalnode.edits.dir</name>  
        <value>/home/hadoop/workspace/journal</value>  
    </property>  
    <property>  
        <!-- 開啟NameNode故障時自動切換 -->  
        <name>dfs.ha.automatic-failover.enabled</name>  
        <value>true</value>  
    </property>  
    <property>  
        <!-- nameservice 需跟 core-site.xml一致 -->  
        <name>dfs.client.failover.proxy.provider.nameservice</name>  
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>  
    </property>  
    <property>  
        <!-- 配置隔離機制 -->  
        <name>dfs.ha.fencing.methods</name>  
        <value>sshfence</value>  
    </property>  
    <property>  
        <!-- 使用隔離機制時需要ssh免登陸。叢集間必須ssh免登入,方法自行百度 -->  
        <name>dfs.ha.fencing.ssh.private-key-files</name>  
        <value>/root/.ssh/id_rsa</value>  
    </property>  
    <!-- 以下都是正經配置 -->  
    <property>  
        <!-- replication 是資料副本數量,預設為3,salve少於3臺就會報錯 -->  
        <name>dfs.replication</name>  
        <value>2</value>  
    </property>  
    <property>  
        <name>dfs.namenode.name.dir</name>  
        <value>file:/data/hadoop/hdfs/name</value>  
        </property>  
    <property>  
        <name>dfs.datanode.data.dir</name>  
        <value>file:/data/hadoop/hdfs/data</value>  
    </property>  
</configuration>  
8.配置mapred-site.xml檔案 修改Hadoop中MapReduce的配置檔案,配置的是JobTracker的地址和埠。
<configuration>  
    <property>  
        <name>mapreduce.framework.name</name>  
        <value>yarn</value>  
    </property>  
    <property>  
        <name>mapreduce.jobhistory.address</name>  
        <value>nb2:10020</value>  
    </property>  
    <property>  
        <name>mapreduce.jobhistory.address</name>  
        <value>nb2:19888</value>  
    </property>  
</configuration>
配置yarn-site.xml
<configuration>  
    <property>  
        <!-- 設定nodemanager 總記憶體大小為3G -->  
        <name>yarn.nodemanager.resource.memory-mb</name>  
        <value>3072</value>  
    </property>  
    <property>  
        <!--Container記憶體最大2G -->  
        <name>yarn.scheduler.maximum-allocation-mb</name>  
        <value>1024</value>  
    </property>  
    <property>  
        <name>yarn.nodemanager.resource.cpu-vcores</name>  
        <value>1</value>  
    </property>  
    <property>  
        <name>yarn.resourcemanager.hostname</name>  
        <value>nb2</value>  
    </property>  
    <property>  
        <name>yarn.nodemanager.aux-services</name>  
        <value>mapreduce_shuffle</value>  
    </property>  
    <property>  
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>  
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>  
    </property>  
    <property>  
        <name>yarn.resourcemanager.address</name>  
        <value>nb2:8032</value>  
    </property>  
    <property>  
        <name>yarn.resourcemanager.scheduler.address</name>  
        <value>nb2:8030</value>  
    </property>  
    <property>  
        <name>yarn.resourcemanager.resource-tracker.address</name>  
        <value>nb2:8031</value>  
    </property>  
    <property>  
        <name>yarn.resourcemanager.admin.address</name>  
        <value>nb2:8033</value>  
    </property>  
    <property>  
        <name>yarn.resourcemanager.webapp.address</name>  
        <value>nb2:8088</value>  
    </property>  
    <property>  
        <name>yarn.log-aggregation-enable</name>  
        <value>true</value>  
    </property>  
    <property>  
        <name>yarn.nodemanager.remote-app-log-dir</name>  
        <value>/home/fibo/hadooplog/hadoop-yarn</value>  
    </property>  
    <property>  
        <name>yarn.log-aggregation.retain-seconds</name>  
        <value>86400</value>  
    </property>  
    <property>  
        <name>yarn.log.server.url</name>  
        <value>http://nb2:19888/jobhistory/logs/</value>  
    </property>  
</configuration>  
9.配置masters檔案(這個也可以沒有) vi masters 新增本機ip 10.配置slaves檔案 vi slaves 叢集其他節點的ip 11.將hadoop移動到其他機子 scp -r /data/hadoop [email protected]:/data/ scp -r /data/hadoop [email protected]:/data/
12.格式化HDFS檔案系統 hdfs zkfc -formatZK 格式化zkfc,讓在zookeeper中生成ha節點 (注意,這條命令最好手動輸入,直接copy執行有可能會有問題,注意短橫線) hadoop namenode -format hdfs namenode -format 13.啟動hadoop 叢集啟動 啟動journalnode叢集 在nb1上執行如下命令完成JournalNode叢集的啟動 hadoop-daemons.sh start journalnode 格式化hdfs,執行一次 hadoop namenode -format 格式化zkfc,讓在zookeeper中生成ha節點 在nb1上執行如下命令,完成格式化,執行一次 hdfs zkfc -formatZK 首先在nb1上啟動active節點,在nb1上執行如下命令 hadoop-daemon.sh start namenode 在mast2上同步namenode的資料,同時啟動standby的namenod,命令如下 #把NameNode的資料同步到mast2上 hdfs namenode -bootstrapStandby #啟動mast2上的namenode作為standby hadoop-daemon.sh start namenode 啟動datanode 在mast1上執行如下命令 hadoop-daemons.sh start datanode 啟動yarn 在作為資源管理器上的機器上啟動 start-yarn.sh 啟動ZKFC 在mast1上執行如下命令,完成ZKFC的啟動 hadoop-daemons.sh start zkfc 14.關閉系統 stop-dfs.sh stop-yarn.sh 15.zookeeper 1.zkCli.sh  2.ls /