1. 程式人生 > >搭建HA HDFS叢集

搭建HA HDFS叢集

一、搭建zookeeper叢集 (奇數個節點 3個節點 )

1. 上傳zookeeper到linux伺服器,並解壓縮/opt/install中 2. zookeeper_home/conf    zoo_sample.cfg 改名 成 zoo.cfg    cp zoo_sample.cfg zoo.cfg 3. 修改zoo.cfg # zookeeper_home 建立 data目錄 dataDir=/opt/install/zookeeper-3.4.5/data

server.0=hadoop.baizhiedu.com:2888:3888 server.1=hadoop1.baizhiedu.com:2888:3888 server.2=hadoop2.baizhiedu.com:2888:3888

4. data目錄下面建立一個myid檔案 #第一臺伺服器  myid  0 #第二臺伺服器  myid  1 #第三臺伺服器  myid  2

5. scp 把zookeepr 拷貝到 叢集的每一個節點 scp -r 

6. 對應伺服器 修改 myid 檔案的值

7. 啟動zookeeper叢集 bin/zkServer.sh start  bin/zkServer.sh status 檢視叢集狀態

#client訪問 zk  leader bin/zkCli.sh 

2、Hadoop基本環境

3、

core-site.xml <property>             <name>fs.default.name</name>     <value>hdfs://ns</value>   </property>   <property>     <name>hadoop.tmp.dir</name>     <value>/opt/install/hadoop-2.5.2/data/tmp</value>   </property>   <property>       <name>ha.zookeeper.quorum</name>    <value>hadoop.baizhiedu.com:2181,hadoop1.baizhiedu.com:2181,hadoop2.baizhiedu.com:2181</value>   </property>    hdfs-site.xml <property>              <name>dfs.replication</name>      <value>3</value>   </property>   <property>      <name>dfs.permissions.enabled</name>      <value>false</value>   </property>   <!--指定hdfs的nameservice為ns,需要和core-site.xml中的保持一致 -->   <property>   <name>dfs.nameservices</name>   <value>ns</value>   </property>   <!-- ns下面有兩個NameNode,分別是nn1,nn2 -->   <property>   <name>dfs.ha.namenodes.ns</name>   <value>nn1,nn2</value>   </property>   <!-- nn1的RPC通訊地址 -->   <property>   <name>dfs.namenode.rpc-address.ns.nn1</name>   <value>hadoop.zzedu.com:8020</value>   </property>   <!-- nn1的http通訊地址 -->   <property>   <name>dfs.namenode.http-address.ns.nn1</name>   <value>hadoop.zzedu.com:50070</value>   </property>   <!-- nn2的RPC通訊地址 -->   <property>   <name>dfs.namenode.rpc-address.ns.nn2</name>   <value>hadoop2.zzedu.com:8020</value>   </property>   <!-- nn2的http通訊地址 -->   <property>   <name>dfs.namenode.http-address.ns.nn2</name>   <value>hadoop2.zzedu.com:50070</value>   </property>

<!-- 指定NameNode的元資料在JournalNode上的存放位置 --> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://hadoop.zzedu.com:8485;hadoop2.zzedu.com:8485;hadoop3.zzedu.com:8485/ns</value> </property> <!-- 指定JournalNode在本地磁碟存放資料的位置 --> <property> <name>dfs.journalnode.edits.dir</name> <value>/opt/install/hadoop-2.5.2/journal</value> </property> <!-- 開啟NameNode故障時自動切換 --> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property> <!-- 配置失敗自動切換實現方式 --> <property> <name>dfs.client.failover.proxy.provider.ns</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <!-- 配置隔離機制,如果ssh是預設22埠,value直接寫sshfence即可 --> <property> <name>dfs.ha.fencing.methods</name> <value>sshfence</value> </property> <!-- 使用隔離機制時需要ssh免登陸 --> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/root/.ssh/id_rsa</value> </property>

yarn-site.xml <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>      <!-- 指定resourcemanager地址 -->      <property>         <name>yarn.resourcemanager.hostname</name>         <value>hadoop.baizhiedu.com</value>       </property>

yarn-env.sh新增如下內容 export JAVA_HOME=/usr/java/jdk1.7.0_71

首先啟動各個節點的Zookeeper,在各個節點上執行以下命令: bin/zkServer.sh start

在某一個namenode節點執行如下命令,建立名稱空間 bin/hdfs zkfc -formatZK

在每個journalnode節點用如下命令啟動journalnode sbin/hadoop-daemon.sh start journalnode

在主namenode節點格式化namenode和journalnode目錄 bin/hdfs namenode -format ns

在主namenode節點啟動namenode程序 sbin/hadoop-daemon.sh start namenode

在備namenode節點執行第一行命令,這個是把備namenode節點的目錄格式化並把元資料從主namenode節點copy過來,並且這個命令不會把journalnode目錄再格式化了!然後用第二個命令啟動備namenode程序!

bin/hdfs namenode -bootstrapStandby sbin/hadoop-daemon.sh start namenode

在兩個namenode節點都執行以下命令 sbin/hadoop-daemon.sh start zkfc

在所有datanode節點都執行以下命令啟動datanode sbin/hadoop-daemon.sh start datanode

日常啟停命令 sbin/start-dfs.sh sbin/stop-dfs.sh

#保證2個主節點 都要與從節點 ssh免密登入