「hadoop權威指南」裡面有說明,配置機架感知的目的就是要最大程度發揮hadoop的效能,要做到這點就是知道hadoop集群的網路拓撲結構(it knows the topology of your network)。如果集群中的機器都跑在乙個機架上,那麼我們什麼都不用做,集群下的節點預設都是在「/default-rack」下的,可以啟動hadoop集群的時候檢視logs/namenode.log
2018-06-13 09:23:25,115 info org.apache.hadoop.net.networktopology: adding a new node: /default-rack/192.168.1.214:50010
2018-06-13 09:23:25,304 info org.apache.hadoop.net.networktopology: adding a new node: /default-rack/192.168.1.211:50010
//...
//發現每個幾點啟動的時候,都是預設在"default-rack"機架下面,後面跟機器的ip位址
hadoop知道網路的拓撲結構之後會怎麼樣呢?hadoop會智慧型的放置分片,根據節點之間的距離,本節點會放置乙份副本同機架上另外節點會放置乙份副本,另外乙個機架上回放置乙份副本。預設情況下使用者自定義指令碼來配置網路拓撲結構,通過修改「core-site.xml」中「net.topology.script.file.name」的value是指令碼的名字。
#!/bin/bash
#配置檔案路徑
hadoop_conf=/home/hadoop/hadoop/etc
#判斷引數的個數 > 0
while [ $# -gt 0 ] ; do
nodearg=$1
# exec 檢視namenode.log
2018-06-13 10:52:17,004 info org.apache.hadoop.net.networktopology: adding a new node: /dc1/rack1/192.168.1.210:50010
//...
檢視網路拓撲結構
//輸入命令
hdfs dfsadmin -printtopology
rack: /dc1/rack1
192.168.1.210:50010 (es01)
192.168.1.211:50010 (es02)
rack: /dc1/rack2
192.168.1.212:50010 (es03)
192.168.1.213:50010 (es04)
rack: /dc1/rack3
192.168.1.214:50010 (es05)
要修改topology.data,然後啟動資料節點。同一機架下的主機a和b,比如/dc1/rack1/ipa,/dc1/rack1/ipb,距離是a到機架rack1交換機的距離1加上b到機架rack1交換機的距離1得結果2;同一資料中心dc下的不同機架下的兩台主機a和c,比如/dc1/rack1/ipa,/dc1/rack2/ipc,距離是a到資料中心dc1的交換機距離2加上b到資料中心dc1的交換機距離2得到結果4;
總結一下,兩台機器間的距離就是兩台主機到相同節點的交換機的距離的和。
hadoop集群配置機架感知
自己搭建的hadoop集群一般預設不具備機架感知能力,為了提高hadoop集群的網路效能,我們常常需要配置機架感知。下面是以下步驟 一 修改配置檔案core site.xml,新增配置屬性 topology.script.file.name home r203 hadoop 0.20.2 racka...
Hadoop 機架感知
hadoop中副本在不同節點之間的複製需要消耗資源,為了充分發揮hadoop的效能,hadoop需要配置機架感知,這可以讓hadoop通過網路拓撲圖計算不同節點之間的距離,因此來減少資料傳輸消耗的資源。通過hadoop官網我們知道,不配置機架感知,所有的都預設為 default rack,可以通過命...
hadoop機架感知
在hadoop集群資料儲存多副本前提下,訪問hadoop hdfs集群時,訪問速度直接受到datanode選取策略的影響。可以通過自定義hadoop集群的網路拓撲結構,最大程度的發揮hadoop集群的效能。某生產環境採用hadoop集群部署,其中兩台資料節點在idc機房,一台資料節點在阿里雲。預設情...