Hadoop集群環境搭建
第一部分:準備Linux環境
創建虛擬機安裝系統的步驟在這裏就不講了,詳細步驟請看本人其他文章
打開建好的虛擬機
一、修改Hostname
1、 臨時修改hostname
hostname bigdata-01.liu.com
這種修改方式,系統重啟後就會失效
2、 永久修改hostname
vim /etc/sysconfig/network
打開後編輯如下內容
NETWORKING=yes #使用網絡
HOSTNAME=bigdata-01.liu.com #設置主機名
二、配置Host
vim /etc/hosts
添加如下內容
172.18.74.172 bigdata-01.liu.om
三、關閉防火墻
查看防火墻狀態
service iptables status
臨時關閉防火墻
service iptables stop
永久關閉防火墻(需要重啟才能生效)
chkconfig iptables off
四、關閉selinux
selinux是Linux一個子安全機制,學習環境可以將它禁用
vim /etc/sysconfig/selinux
把SELINUX設置成disabled
SELINUX=disabled
五、安裝JDK
檢測系統是否安裝jdk
java -version
如果顯示有openjdk需要先卸載再安裝Oracle的jdk(其他版本的jdk對hadoop的一些命令不是很支持)
rpm -qa | grep java
卸載openjdk,.noarch的文件可以不用刪除
rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.191-2.6.15.4.e17_5.x86_64
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.191-2.6.15.4.e17_5.x86_64
然後再次使用rpm -qa | grep java 查看是否已經卸載openjdk,如果還有就再卸載一遍
用xshell遠程工具遠程虛擬機,安裝lrzsz命令
yum -y install lrzsz
導入jdk包並解壓到 /opt/modules目錄下
rz
tar -zvxf jdk-8u181-linux-x64.tar.gz -C /opt/modules
添加環境變量
設置JDK的環境變量 JAVA_HOME。需要修改配置文件/etc/profile,追加
export JAVA_HOME="/opt/modules/jdk1.8.0_181"
export PATH=$JAVA_HOME/bin:$PATH
修改完畢後,執行 source /etc/profile 使修改生效
再次執行 java –version,可以看見已經安裝完成
第二部分:hadoop安裝
完全分部式是真正利用多臺Linux主機來進行部署Hadoop,對Linux機器集群進行規劃,使得Hadoop各個模塊分別部署在不同的多臺機器上。
一、環境準備
1.克隆虛擬機
Vmware左側選中要克隆的機器,這裏對原有的BigData01機器進行克隆,虛擬機菜單中,選中管理菜單下的克隆命令。
選擇“創建完整克隆”,虛擬機名稱為BigData02,選擇虛擬機文件保存路徑,進行克隆。
再次克隆一個名為BigData03的虛擬機。
2.配置網絡
修改網卡名稱
在BigData02和BigData03機器上編輯網卡信息。執行sudo vim /etc/udev/rules.d/70-persistent-net.rules命令。因為是從BigData01機器克隆來的,所以會保留BigData01的網卡eth0,並且再添加一個網卡eth1。並且eth0的Mac地址和BigData01的地址是一樣的,Mac地址不允許相同,所以要刪除eth0,只保留eth1網卡,並且要將eth1改名為eth0。將修改後的eth0的mac地址復制下來,修改network-scripts文件中的HWADDR屬性。
vim /etc/sysconfig/network-scripts/ifcfg-eth0
修改網絡參數:
BigData02機器IP改為192.168.100.12
BigData03機器IP改為192.168.100.13
!!如果是在真實的服務器裏搭建Hadoop環境就需要再建兩個虛擬機,按照上面的步驟再來一遍了!!
3.配置Hostname以及hosts
BigData02配置hostname為 bigdata-02.liu.com
BigData03配置hostname為 bigdata-03.liu.com
BigData01、BigData02、BigData03三臺機器hosts都配置為:
172.18.74.172 bigdata-01.liu.com
172.18.74.173 bigdata-02.liu.com
172.18.74.174 bigdata-03.liu.com
4.配置Windows上的SSH客戶端
在本地Windows中的SSH客戶端上添加對BigData02、BigData03機器的SSH鏈接
二、服務器功能規劃
bigdata-01.liu.com | bigdata-02.liu.com | bigdata-03.liu.com | |
---|---|---|---|
NameNode | ResourceManage | SecondaryNameNode | |
DataNode | DataNode | DataNode | |
NodeManager | NodeManager | NodeManager | |
HistoryServer |
三、在第一臺機器上安裝新的Hadoop
創建hadoop目錄
mkdir -p /opt/modules/app
導入Hadoop壓縮包並解壓到Hadoop目錄
rz
tar -zxf /opt/sofeware/hadoop-2.7.4-with-centos-6.7.tar.gz -C /opt/modules/app/
切換到/opt/modules/app/hadoop-2.7.4/etc/hadoop目錄,配置該目錄下的Hadoop JDK路徑修改hadoop-env.sh、mapred-env.sh、yarn-env.sh文件中的JDK路徑:
export JAVA_HOME="/opt/modules/jdk1.8.0_181"
配置core-site.xml
vim core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://bigdata-01.liu.com:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/modules/app/hadoop-2.7.4/data/tmp</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/data</value>
</property>
</configuration>
fs.defaultFS為NameNode的地址。
hadoop.tmp.dir為hadoop臨時目錄的地址,默認情況下,NameNode和DataNode的數據文件都會存在這個目錄下的對應子目錄下。應該保證此目錄是存在的,如果不存在,先創建。
配置hdfs-site.xml
vim hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>bigdata-03.liu.com:50090</value>
</property>
</configuration>
dfs.namenode.secondary.http-address是指定secondaryNameNode的http訪問地址和端口號,因為在規劃中,我們將BigData03規劃為SecondaryNameNode服務器,所以這裏設置:bigdata-03.liu.com:50090
配置slaves
vim slaves
bigdata-01.liu.com
bigdata-02.liu.com
bigdata-03.liu.com
slaves文件是指定HDFS上有哪些DataNode節點
配置yarn-site.xml
vim yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigdata-02.liu.com</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>106800</value>
</property>
</configuration>
根據規劃yarn.resourcemanager.hostname這個指定resourcemanager服務器指向bigdata-02.liu.com
yarn.log-aggregation-enable是配置是否啟用日誌聚集功能
yarn.log-aggregation.retain-seconds是配置聚集的日誌在HDFS上最多保存多長時間
配置mapred-site.xml
從mapred-site.xml.template復制一個mapred-site.xml文件
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>bigdata-01.liu.com:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>bigdata-01.liu.com:19888</value>
</property>
</configuration>
mapreduce.framework.name設置mapreduce任務運行在yarn上
mapreduce.jobhistory.address是設置mapreduce的歷史服務器安裝在BigData01機器上
mapreduce.jobhistory.webapp.address是設置歷史服務器的web頁面地址和端口號
四、設置SSH無密碼登錄
Hadoop集群中的各個機器間會相互地通過SSH訪問,每次訪問都輸入密碼是不現實的,所以要配置各個機器間的SSH是無密碼登錄的
在BigData01上生成公鑰
ssh-keygen -t rsa
一路回車,都設置為默認值,然後再當前用戶的Home目錄下的.ssh目錄中會生成公鑰文件(id_rsa.pub)和私鑰文件(id_rsa), .ssh是隱藏文件在home目錄下ls -a就會顯示出來
分發公鑰
ssh-copy-id bigdata-01.liu.com
ssh-copy-id bigdata-02.liu.com
ssh-copy-id bigdata-03.liu.com
五、分發Hadoop文件
首先在其他兩臺機器上創建存放Hadoop的目錄
mkdir -p /opt/modules/app
通過Scp分發
du -sh /opt/modules/app/hadoop-2.7.4/share/doc
scp -r /opt/modules/app/hadoop-2.7.4/ bigdata-02.liu.com:/opt/modules/app
scp -r /opt/modules/app/hadoop-2.7.4/ bigdata-03.liu.com:/opt/modules/app
格式NameNode
在NameNode機器bigdata-01上執行格式化:
/opt/modules/app/hadoop-2.7.4/bin/hdfs namenode –format
註意:
如果需要重新格式化NameNode,需要先將原來NameNode和DataNode下的文件全部刪除,不然會報錯,NameNode和DataNode所在的目錄是在core-site.xml中hadoop.tmp.dir、dfs.namenode.name.dir、dfs.datanode.data.dir屬性裏配置的。
因為每次格式化,默認是創建一個集群ID,並寫入NameNode和DataNode的VERSION文件中(VERSION文件所在目錄為dfs/name/current 和 dfs/data/current),重新格式化時,默認會生成一個新的集群ID,如果不刪除原來的目錄,會導致namenode中的VERSION文件中是新的集群ID,而DataNode中是舊的集群ID,不一致時會報錯。
六、啟動集群
切換到/opt/modules/app/hadoop-2.7.4目錄下
啟動HDFS
/opt/modules/app/hadoop-2.7.4/sbin/start-dfs.sh
jps查看已經啟動的服務
啟動YARN
/opt/modules/app/hadoop-2.7.4/sbin/start-yarn.sh
在BigData02上啟動ResourceManager:
sbin/yarn-daemon.sh start resourcemanager
啟動日誌服務器
因為我們規劃的是在BigData03服務器上運行MapReduce日誌服務,所以要在BigData03上啟動
/opt/modules/app/hadoop-2.7.4/sbin/mr-jobhistory-daemon.sh start historyserver
查看HDFS Web頁面
http://bigdata-01.liu.com:50070/
如果域名沒有解析可以在搜索欄中輸入ip+端口如:
172.18.74.172:50070
查看YARN Web 頁面
http://bigdata-02.liu.com:8088/cluster
172.18.74.173:8088/cluster
好啦,到這裏Hadoop集群環境的搭建就完成啦。建議Ha友們搭建Hadoop環境時先去鏈接一下各個組件是什麽這樣更有利於你順利的完成Hadoop環境的搭建,我的一些同學他們學這個比較早那時候也沒人了解Hadoop是什麽,聽他們說搭建了10天半個月的才搭建出來,我就是在他們的影響下逐漸了解了點Hadoop的知識,用了一天多的時間搭建好了,搭建過程中還遇到了不少突發情況,所以如果搭建過程中沒有什麽意外情況的話,半天就能搞定了,千萬不要遇到困難就放棄,堅持一定會勝利的!!
。。。從前車馬很慢,書信很遠,一生只夠愛一個人!!!
Hadoop集群環境搭建