hadoop 全分佈配置
準備環境(省略)
- 上傳實驗所需的壓縮包
- 配置網路資訊
- 修改主機名
- 配置域名解析
- 關閉防火牆與SELinux(在所有節點上執行)程式碼如下:
systemctl disable --now firewalld
setenforce 0
vim /etc/selinux/config
修改:SELINUX=disabled
儲存退出
(1)在 Master 節點上安裝 Hadoop
步驟一:解壓縮 hadoop-2.7.1.tar.gz安裝包和jdk-8u152-linux-x86.tar.gz到/usr目錄下
步驟二:將 hadoop-2.7.1資料夾和jdk-8u152資料夾重新命名為 hadoop和jdk
步驟三:配置 Hadoop環境變數
注意:在第二章安裝單機 Hadoop 系統已經配置過環境變數,先刪除之前配置後新增
- 在檔案末尾新增以下配置資訊
分別將JAVA_HOME和HADOOP_HOME指向 JAVA安裝目錄;JAVA安裝目錄和HADOPOP安裝目錄加入 PATH路徑
步驟四:使配置的 Hadoop的環境變數生效
- 切換進hadoop使用者
- 使環境變數生效
步驟五:執行以下命令修改 hadoop-env.sh配置檔案
- 在檔案末尾新增以下配置資訊
(2)配置 hdfs-site.xml 檔案引數
- 執行以下命令修改 hdfs-site.xml配置檔案
- 在檔案中
和
<configuration> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/src/hadoop/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/src/hadoop/dfs/data</value> </property> <property> <name>dfs.replication</name> <value>3</value> </property> </configuration>
對於 Hadoop 的分散式檔案系統 HDFS 而言,一般都是採用冗餘儲存,冗餘因子通常為3,也就是說,一份資料儲存三份副本。所以,修改 dfs.replication的配置,使 HDFS檔案的備份副本數量設定為 3個
-
該配置檔案中主要的引數、預設值、引數解釋如下表所示:
hdfs-site.xml配置檔案主要引數:
(3)配置 core-site.xml 檔案引數
- 執行以下命令修改 core-site.xml配置檔案
- 在檔案中
和 一對標籤之間追加以下配置資訊
**此處master 為虛擬機器IP,也可為自己域名解析內配置的hostname **
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/src/hadoop/tmp</value>
</property>
</configuration>
如沒有配置 hadoop.tmp.dir引數,此時系統預設的臨時目錄為:/tmp/hadoop-hadoop。該目錄在每次 Linux系統重啟後會被刪除,必須重新執行 Hadoop檔案系統格式化命令,否則 Hadoop執行會出錯
- 該配置檔案中主要的引數、預設值、引數解釋如下表所示:
core-site.xml配置檔案主要引數:
(4)配置 mapred-site.xml
在“/usr/local/src/hadoop/etc/hadoop”目錄下有一個 mapred-site.xml.template,需要修改檔名稱,把它重新命名為 mapred-site.xml,然後把 mapred-site.xml檔案配置成如下內容
- 執行以下命令修改 mapred-site.xml配置檔案
確保在該路徑下執行此命令
- 在檔案中
和 一對標籤之間追加以下配置資訊
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
- 該配置檔案中主要的引數、預設值、引數解釋如下表 所示:
mapred-site.xml配置檔案主要引數:
- Hadoop 提供了一種機制,管理員可以通過該機制配置 NodeManager 定期執行管理員提供的指令碼,以確定節點是否健康。管理員可以通過在指令碼中執行他們選擇的任何檢查來確定節點是否處於健康狀態。如果指令碼檢測到節點處於不健康狀態,則必須列印以字串 ERROR開始的一行資訊到標準輸出。NodeManager 定期生成指令碼並檢查該指令碼的輸出。如果指令碼的輸出包含如上所述的字串ERROR,就報告該節點的狀態為不健康的,且由NodeManager將該節點列入黑名單,沒有進一步的任務分配給這個節點。但是,NodeManager繼續執行指令碼,如果該節點再次變得正常,該節點就會從ResourceManager黑名單節點中自動刪除。節點的健康狀況隨著指令碼輸出,如果節點有故障,管理員可用 ResourceManager Web介面報告,節點健康的時間也在 Web介面上顯示
(5)配置 yarn-site.xml
- 執行以下命令修改 yarn-site.xml配置檔案
- 在檔案中
和 一對標籤之間追加以下配置資訊
<configuration>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</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>
</configuration>
該配置檔案中主要的引數、預設值、引數解釋如下表 所示:
很顯然,很多引數沒有專門配置,多數情況下使用預設值。例如,可以追加以下兩個引數 配 置 項yarn.resourcemanager.hostname( 即 資 源 管 理 器 主 機 ) 和“yarn.nodemanager.aux-services”(即 YARN節點管理器輔助服務),若要將主節點也作為資源管理主機配置,則配置值分別為“Master_hadoop”、“mapreduce_shuffle”。
在 yarn-site.xml 中可以配置相關引數來控制節點的健康監測指令碼。如果只有一些本地磁碟出現故障,健康檢查指令碼不應該產生錯誤。NodeManager有能力定期檢查本地磁碟的健康狀況(特別是檢查 NodeManager本地目錄和NodeManager日誌目錄),並且在達到基於“yarn.nodemanager.disk-health-checker.min-healthy-disks”屬性的值設定的壞目錄數量閾值之後,整個節點標記為不健康,並且這個資訊也傳送到資源管理器。無論是引導磁碟受到攻擊,還是引導磁碟故障,都會在健康檢查指令碼中標識
(6)Hadoop 其它相關配置
配置 masters檔案
- 加入以下配置資訊
- master主機 IP地址
配置 slaves檔案
本教材 Master 節點僅作為名稱節點使用,因此將 slaves 檔案中原來的 localhost 刪除,並新增 slave1、slave2節點的 IP地址
- 刪除 localhost,加入以下配置資訊
- slave1主機 IP地址
- slave2主機 IP地址
新建目錄
- 執行以下命令新建/usr/local/src/hadoop/tmp、/usr/local/src/hadoop/dfs/name、/usr/local/src/hadoop/dfs/data三個目錄
修改目錄許可權
- 執行以下命令修改/usr/local/src/hadoop目錄的許可權
配置master能夠免密登入所有slave節點
ssh-keygen -t rsa
ssh-copy-id root@slave1
ssh-copy-id root@slave2
同步配置檔案到 Slave節點
-
上 述 配 置 文 件 全 部 配 置 完 成 以 後 , 需 要 執 行 以 下 命 令 把 Master 節 點 上 的“/usr/local/src/hadoop”資料夾複製到各個 Slave節點上,並修改資料夾訪問許可權
-
將 Master上的 Hadoop安裝檔案同步到 slave1、slave2
-
在每個 Slave節點上配置 Hadoop的環境變數
注意:若 slave1,slave2 在/usr/local/src/目錄下jdk1.8.0_152 檔案,需返回第二章安裝好 Java環境 -
分別進入slave節點
-
分別在slave1和slave2主機檔案的末尾新增
-
在每個 Slave節點上切換到 hadoop使用者
-
使每個 Slave節點上配置的 Hadoop的環境變數生效