Hadoop叢集及高可用
原理待補充
實驗配置
五臺虛擬機器server1-5都是rhel6.5版本 所有虛擬機器建立hadoop使用者 uid gid一致 密碼相同 以server1為例
獲取安裝包hadoop-2.7.3.tar.gz jdk-7u79-linux-x64.tar.gz解壓安裝
下載解壓相關軟體
修改環境變數,使hadoop執行在java平臺之上
修改java變數
單節點部署
建立資料夾 將資料匯入資料夾中
wordcount 統計單詞演算法
檢視統計結果
偽節點部署
配置檔案系統
配置檔案儲存的份數
設定ssh免密碼認證
[[email protected] hadoop]$ scp -r /home/hadoop/.ssh/ [email protected]:~
[[email protected] hadoop]$ scp -r /home/hadoop/.ssh/ [email protected]:~
[[email protected] hadoop]$ scp -r /home/hadoop/.ssh/ [email protected]:~
[[email protected] hadoop]$ scp -r /home/hadoop/.ssh/ [email protected]:~
配置datanode節點
返回值為0表示格式化成功
啟動服務 檢視程序狀態
##網頁測試 瀏覽器訪問
建立目錄上傳
點選最右邊的 點選第一個檢視目錄
上傳檔案至服務端
再次檢視
使用命令檢視結果
刪除並檢視其顯示結果
高階配置mapred配置
啟動服務 並檢視
檢視是否成功 瀏覽器訪問http://172.25.62.1:8088/cluster/cluster
分散式配置 先停止偽節點
停止偽節點
切換到超級使用者
配置共享儲存 重新整理檢視是否成功
客戶端server2安裝服務 並設定開機自動掛載 注意啟動順序
server3與server2一樣 注意服務啟動順序
[[email protected] ~]# yum install -y nfs-utils rpcbind
[ [email protected] ~]# /etc/init.d/rpcbind start
[[email protected] ~]# /etc/init.d/nfs start
[[email protected] ~]# chkconfig rpcbind on
[[email protected] ~]# mount 172.25.62.1:/home/hadoop/ /home/hadoop/
[[email protected] ~]# df -h
檢視是否成功
配置datanode節點
配置備份儲存2份
格式化namenode節點
返回值為0表示正常
啟動服務並檢視
datanode節點檢視服務
檢視節點是否存在並正常掛載
線上新增節點server4
[[email protected] ~]# yum install -y nfs-utils rpcbind
[[email protected] ~]# /etc/init.d/rpcbind start
[[email protected] ~]# /etc/init.d/nfs start
[[email protected] ~]# chkconfig rpcbind on
[[email protected] ~]# mount 172.25.62.1:/home/hadoop/ /home/hadoop/
[[email protected] ~]# df -h
免密啟動服務 並檢視程序
檢視其是否加入儲存體系中
節點資料遷移
檢視是否上傳成功
檢視節點的儲存狀態
配置下線
配置下線使用者為server3
使配置生效
檢視server3的狀態如果是Decommissioned則表示遷移完成 否則表示未完成
同時可以發現其他節點儲存增加了
關閉datanode節點
開啟其他節點的nodemanager服務
HDFS高可用 原理待補充
先關閉之前的服務
配置服務
刪除原有配置
server1到server4都清空配置以免影響
安裝服務zookeeper 總節點數為奇數個
server1到server5都獲取安裝包
指定對應的ID
server3和server4上如下操作
server2.3.4上啟動服務
檢視哪個是leader
看到server3是leader 在leader上啟動服務並檢視相關配置
輸入quit退出
配置叢集
配置指定hdfs的namenode 為master(名稱隨意)指定zookeeper 叢集主機地址(server2,server3,server4的IP地址)
編輯hdfs-site.xml檔案
A 指定hdfs的nameservices為master
B 定義namenode節點(server1,server5)
C 指定namenode元資料在journalNode上存放的位置
D 指定journalnode在本地磁碟存放資料的位置
E 開啟namenode 失敗自動切換,及自動切換實現方式,隔離機制方式以及使用sshfence 隔離機制需要ssh免密以及隔離機制超時時間等引數
配置server5進行掛載
啟動日誌伺服器server2 server3 server4
格式化HDFS叢集
將生成的資料傳送到另一個高可用節點server5
免密在之前已經做過 沒做過的話執行下面的命令
啟動zkfc服務 格式化zookeeper
啟動hdfs叢集
檢視server1和server5 server2.3.4的狀態
server1狀態和server5一致 234狀態一致
在瀏覽器檢視 server1為master server5為standby
http://172.25.62.1:50070/dfshealth.html#tab-overview
http://172.25.62.5:50070/dfshealth.html#tab-overview
模擬故障切換
在瀏覽器檢視namenode為server5 server1不可連線
http://172.25.62.5:50070/dfshealth.html#tab-overview
再次啟動server1的namenode master依然是server5
瀏覽器再次檢視
yarn高可用
<?xml version="1.0"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
##指定yarn的框架為mapreduce
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
##配置可以在nodemanager上執行mapreduce程式
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
##啟用RM高可用
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
##指定RM的叢集ID
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>RM_CLUSTER</value>
</property>
##定義RM節點
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>172.25.62.1</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>172.25.62.5</value>
</property>
##啟用RM自動恢復
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
##配置RM狀態資訊儲存方式 有memstore和ZKstore
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
##配置zookeeper儲存時,指定zookerper叢集的地址
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>172.25.62.2:2181,172.25.62.3:2181,172.25.62.4:2181</value>
</property>
</configuration>
啟動服務
另一個節點server5需要手動啟動
在瀏覽器訪問
http://server1:8088/cluster/cluster
http://server5:8088/cluster/cluster
yarn故障測試
在server1上斷開主節點
檢視狀態 server5接管資源
再次啟動server1
再次訪問 還是server5在處理
服務的關閉
server1上
server5節點上
server2.3.4關閉的方法一樣