centos7.3中搭建hadoop分散式叢集環境詳細過程
一、準備工作
1、準備3臺物理機或者虛擬機器;
2、安裝centos7系統;
3、準備好相關軟體包並拷貝相關軟體到目標伺服器上
hadoop-2.9.0.tar.gz
jdk-8u131-linux-x64.tar.gz
二、配置網路
1、設定靜態網路ip
1)設定靜態ip的檔案路徑在:cd /etc/sysconfig/network-scripts/目錄中
2)開啟對應的網路配置檔案 vim ifcfg-p3p1
3)編輯儲存後,重啟網路服務 systemctl restart network
4)檢視當前網路地址 ifconfig
2、設定主機名稱及進行IP對映
1)修改主機名稱;vim /etc/hostname
2) 開啟hosts檔案,進行主機名與ip對映 ,在檔案底部新增叢集環境中關聯的ip地址及對應機器名稱
vim /etc/hosts
3)重複以上步驟,分別修改第二臺及第三臺伺服器的機器名稱及進行ip對映
4)通過ping+主機名,檢測是否可以設定及對映成功
3、設定DNS服務(設定DNS服務可以訪問外網)
1)進入cd /etc/sysconfig/network-scripts目錄中
2)開啟網路配置檔案,在檔案中新增閘道器ip地址
3)編輯儲存退出後,重啟網路服務 service network restart
4)使用ping www.baidu.com,檢測是否可以訪問外網地址
5)重複以上步驟,配置其它兩臺機器
6)3臺機器之間,利用主機名稱可以進行互ping,檢測網路是否正常
三、建立hadoop使用者
1、建立使用者並設定密碼
useradd -m hadoop -G root -s /bin/bash
passwd hadoop
2、授予管理員許可權
輸入visudo命令,在開啟的檔案中找到 root ALL=(ALL) ALL 這一行
在底部補充新增一行 hadoop ALL=(ALL) ALL 儲存退出
四、配置SSH無密碼登入
1、檢視是否安裝SSH,檢測命令rpm -qa | grep ssh
如上所示,顯示ssh client和ssh server已安裝,不需安裝,若沒有安裝可以使用命令:
sudo yum install openssh-clients
sudo yum install openssh-server
2、配置SSH無密碼登入
1)在主機master中生成金鑰(切換到hadoop使用者的主題目錄下的.ssh檔案,如果沒有.ssh檔案請先執行一次ssh localhost)
2) ssh-keygen -t rsa # 會有提示,都按回車就可以
如下所示生成.ssh檔案
3)進入.ssh目錄中,檢視是否生成成功
4)重複以上步驟,將其它機器dataserver1及dataserver2生成自己相對應的金鑰檔案
5)將其它分支機器(dataserver*)中生成的公鑰檔案複製一份,並重命名
6)將複製的公鑰檔案遠端拷貝到master主機中
scp id_rsa_dataserver2.pub [email protected]:~/.ssh/
scp id_rsa_dataserver1.pub [email protected]:~/.ssh/
將叢集內所有的公鑰檔案集中到主節點master中
8)將master中生成的金鑰加入授權(authorized_keys)
cat id_rsa.pub # 檢視生成的公鑰
cat id_rsa.pub >> authorized_keys # 加入授權
9) 將分節點生成的公鑰檔案也加入授權
cat id_rsa_dataserver1.pub >> authorized_keys
cat id_rsa_dataserver2.pub >> authorized_keys
10)將叢集中所有機器的公鑰資訊到加入授權檔案中,檢視
11)修改檔案許可權
chmod 600 authorized_keys # 修改檔案許可權,如果不修改檔案許可權,那麼其它使用者就能檢視該授權檔案,然後使用該金鑰也能進行登入,不安全
12)將master中的authorized_keys檔案遠端拷貝到其它主機中
scp authorized_keys [email protected]:~/.ssh/
13)在目標機器對應的目錄中檢視拷貝成功的檔案
14)測試驗證,是否可以利用ssh免密登入
五、安裝JDK
可參考該地址下的jdk安裝過程進行安裝:
https://mp.csdn.net/postedit/82854735
六、正式安裝hadoop
1、安裝hadoop
1)將Hadoop壓縮包解壓到目標安裝目錄下
tar -zxvf hadoop-2.9.0.tar.gz -C /usr/local/
2)修改檔名hadoop-2.9.0為hadoop
sudo mv ./hadoop-2.9.0/ ./hadoop
3) 更改hadoop目錄所屬者及所屬組為hadoop使用者
chown -hR hadoop /usr/local/hadoop/ # 修改所有者為hadoop
chgrp -hR hadoop /usr/local/hadoop/ # 修改所屬組為hadoop
4)檢測hadoop是否可用,檢視hadoop版本資訊
進入hadoop安裝目錄中,輸入:./bin/hadoop version,顯示如下資訊,說明安裝成功
5)重複以上步驟,其它分支機器也安裝hadoop
2、配置環境變數
1)開啟bashrc檔案
vim ~/.bashrc
新增下列資訊:
# Hadoop Environment Variables
export HADOOP_HOME=/usr/local/hadoop # hadoop的安裝目錄,替換為你的hadoop的安裝目錄
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
2)重新載入bashrc檔案,使得配置資訊生效
source ~/.bashrc
3)檢測環境變數是否生效
echo $PATH
hadoop version
4)叢集中的其它分支重複上面步驟,配置環境變數
3、關閉防火牆及selinux程序
1)檢視
systemctl status firewalld # 檢視防火牆狀態
systemctl stop firewalld # 關閉防火牆
2)關閉selinux守護執行緒(使用root使用者)
getenforce # 檢視selinux守護執行緒的狀態
setenforce 0 # 關閉selinux守護執行緒
exit # 回到原來的終端
3)叢集中的其它分支重複上面步驟,關閉防火牆及程序
七、hadoop分散式叢集配置
1、修改hadoop的配置檔案
叢集/分散式模式需要修改 /usr/local/hadoop/etc/hadoop 中的5個配置檔案,分別為:
core-site.xml:Hadoop的核心配置檔案
hdfs-site.xml :用於配置NameNode的URI及NameNode和DataNode的存放位置
mapred-site.xml:mapreduce相關配置
yarn-site.xml: 配置資源管理系統yarn
slaves:配置DataNode的主機名
可檢視官方文件:hadoop叢集搭建官方文件
1)修改core-site.xml檔案
在configuration節點中新增如下內容
<configuration>
<!-- Hadoop 檔案系統的臨時目錄(NameNode和DataNode預設存放在hadoop.tmp.dir目錄)-->
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
</property>
<!-- 配置NameNode的URI -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://Master:9000</value>
</property>
</configuration>
2)修改hdfs-site.xml檔案(在configuration節點中新增如下內容)
<!-- Master可替換為IP -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>Master:50090</value>
</property>
<!-- 設定系統裡面的檔案塊的資料備份個數,預設是3 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!-- NameNode結點儲存hadoop檔案系統資訊的本地系統路徑 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<!-- DataNode結點被指定要儲存資料的本地檔案系統路徑,這個值只對NameNode有效,DataNode並不需要使用到它 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
3)修改mapred-site.xml 檔案(在configuration節點中新增如下內容)
在新增下面資訊之前,因 /usr/local/hadoop/etc/hadoop目錄中沒有mapred-site.xml檔案,可複製mapred-site.xml. template檔案重新命名為mapred-site.xml,進行修改
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<description>執行框架設定為Hadoop YARN</description>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
<description>Master可替換為IP</description>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
<description>Master可替換為IP</description>
</property>
<property>
<name>mapreduce.jobhistory.done-dir</name>
<value>${yarn.app.mapreduce.am.staging-dir}/history/done</value>
</property>
<property>
<name>mapreduce.jobhistory.intermediate-done-dir</name>
<value>${yarn.app.mapreduce.am.staging-dir}/history/done_intermediate</value>
</property>
<property>
<name>yarn.app.mapreduce.am.staging-dir</name>
<value>/tmp/hadoop-yarn/staging</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>master:49001</value>
</property>
4)修改yarn-site.xml檔案在configuration節點中新增如下內容)
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master<alue>
<description>master可替換為IP</description>
</property>
<property>
<description>The address of the applications manager interface in the RM.</description>
<name>yarn.resourcemanager.address</name>
<value>${yarn.resourcemanager.hostname}:8032<alue>
</property>
<property>
<description>The address of the scheduler interface.</description>
<name>yarn.resourcemanager.scheduler.address</name>
<value>${yarn.resourcemanager.hostname}:8030<alue>
</property>
<property>
<description>The http address of the RM web application.</description>
<name>yarn.resourcemanager.webapp.address</name>
<value>${yarn.resourcemanager.hostname}:8088<alue>
</property>
<property>
<description>The https adddress of the RM web application.</description>
<name>yarn.resourcemanager.webapp.https.address</name>
<value>${yarn.resourcemanager.hostname}:8090<alue>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>${yarn.resourcemanager.hostname}:8031<alue>
</property>
<property>
<description>The address of the RM admin interface.</description>
<name>yarn.resourcemanager.admin.address</name>
<value>${yarn.resourcemanager.hostname}:8033<alue>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>2048<alue>
<discription>每個節點可用記憶體,單位MB,預設8182MB</discription>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1<alue>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048<alue>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false<alue>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle<alue>
<description>Shuffle service 需要加以設定的MapReduce的應用程式服務</description>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true<alue>
</property>
5)修改slaves檔案(將叢集中的分節點機器名稱寫入)
2、配置hadoop-env.sh
將
export JAVA_HOME=${JAVA_HOME}
修改為:
export JAVA_HOME=/opt/java/jdk1.8.0_131
3、將以上的配置拷貝複製到其它的分支節點上
scp core-site.xml [email protected]:/usr/local/hadoop/etc/hadoop/
scp hdfs-site.xml [email protected]:/usr/local/hadoop/etc/hadoop/
scp mapred-site.xml [email protected]:/usr/local/hadoop/etc/hadoop/
scp yarn-site.xml [email protected]:/usr/local/hadoop/etc/hadoop/
scp slaves [email protected]:/usr/local/hadoop/etc/hadoop/
scp hadoop-env.sh [email protected]:/usr/local/hadoop/etc/hadoop/
八、啟動hadoop
1、格式化namenode
1) 進入bin目錄
[[email protected] bin]$ cd /usr/local/hadoop/bin
2)執行namenode格式化命令:
./hadoop namenode -format
注意:若啟動失敗,檢視之前配置檔案過程中,xml檔案複製貼上的編碼是否正確(因我直接複製的資訊不是utf8格式導致格式化錯誤)
2、啟動hadoop
方式1):
啟動hadoop
start-all.sh
停止hadoop
方式二:
start-dfs.sh #開啟 NameNode 和 DataNode 守護程序
3、訪問web頁面
http://masterIP地址:50070
參考部署檔案資料