第一部分:準(zhǔn)備Linux環(huán)境
創(chuàng)建虛擬機(jī)安裝系統(tǒng)的步驟在這里就不講了,詳細(xì)步驟請(qǐng)看本人其他文章
打開(kāi)建好的虛擬機(jī)
一、修改Hostname
1、 臨時(shí)修改hostname
成都創(chuàng)新互聯(lián)是一家專業(yè)提供白水企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、網(wǎng)站制作、H5高端網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為白水眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
hostname bigdata-01.liu.com
這種修改方式,系統(tǒng)重啟后就會(huì)失效
2、 永久修改hostname
vim /etc/sysconfig/network
打開(kāi)后編輯如下內(nèi)容
NETWORKING=yes #使用網(wǎng)絡(luò)
HOSTNAME=bigdata-01.liu.com #設(shè)置主機(jī)名
二、配置Host
vim /etc/hosts
添加如下內(nèi)容
172.18.74.172 bigdata-01.liu.com
三、關(guān)閉防火墻
查看防火墻狀態(tài)
service iptables status
臨時(shí)關(guān)閉防火墻
service iptables stop
永久關(guān)閉防火墻(需要重啟才能生效)
chkconfig iptables off
四、關(guān)閉selinux
selinux是Linux一個(gè)子安全機(jī)制,學(xué)習(xí)環(huán)境可以將它禁用
vim /etc/sysconfig/selinux
把SELINUX設(shè)置成disabled
SELINUX=disabled
五、安裝JDK
檢測(cè)系統(tǒng)是否安裝jdk
java -version
如果顯示有openjdk需要先卸載,再安裝Oracle的jdk(其他版本的jdk對(duì)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 查看是否已經(jīng)卸載openjdk,如果還有就再卸載一遍
用xshell遠(yuǎn)程工具遠(yuǎn)程虛擬機(jī),安裝lrzsz命令
yum -y install lrzsz
導(dǎo)入jdk包并解壓到 /opt/modules目錄下
rz
tar -zvxf jdk-8u181-linux-x64.tar.gz -C /opt/modules
添加環(huán)境變量
設(shè)置JDK的環(huán)境變量 JAVA_HOME,需要修改配置文件/etc/profile,追加
export JAVA_HOME="/opt/modules/jdk1.8.0_181"
export PATH=$JAVA_HOME/bin:$PATH
修改完畢后,執(zhí)行 source /etc/profile 使修改生效
再次執(zhí)行 java –version,可以看見(jiàn)已經(jīng)安裝完成
第二部分:hadoop安裝
完全分部式是真正利用多臺(tái)Linux主機(jī)來(lái)進(jìn)行部署Hadoop,對(duì)Linux機(jī)器集群進(jìn)行規(guī)劃,使得Hadoop各個(gè)模塊分別部署在不同的多臺(tái)機(jī)器上。
一、環(huán)境準(zhǔn)備
1.克隆虛擬機(jī)
Vmware左側(cè)選中要克隆的機(jī)器,這里對(duì)原有的BigData01機(jī)器進(jìn)行克隆,虛擬機(jī)菜單中,選中管理菜單下的克隆命令。
選擇“創(chuàng)建完整克隆”,虛擬機(jī)名稱為BigData02,選擇虛擬機(jī)文件保存路徑,進(jìn)行克隆。
再次克隆一個(gè)名為BigData03的虛擬機(jī)。
2.配置網(wǎng)絡(luò)
修改網(wǎng)卡名稱
在BigData02和BigData03機(jī)器上編輯網(wǎng)卡信息。執(zhí)行sudo vim /etc/udev/rules.d/70-persistent-net.rules命令。因?yàn)槭菑腂igData01機(jī)器克隆來(lái)的,所以會(huì)保留BigData01的網(wǎng)卡eth0,并且再添加一個(gè)網(wǎng)卡eth2。并且eth0的Mac地址和BigData01的地址是一樣的,Mac地址不允許相同,所以要?jiǎng)h除eth0,只保留eth2網(wǎng)卡,并且要將eth2改名為eth0。將修改后的eth0的mac地址復(fù)制下來(lái),修改network-scripts文件中的HWADDR屬性。
vim /etc/sysconfig/network-scripts/ifcfg-eth0
修改網(wǎng)絡(luò)參數(shù):
BigData02機(jī)器IP改為172.18.74.173
BigData03機(jī)器IP改為172.18.74.174
??!如果是在真實(shí)的服務(wù)器里搭建Hadoop環(huán)境就需要再建兩個(gè)虛擬機(jī),按照上面的步驟再來(lái)一遍了,服務(wù)器里克隆主機(jī)不是很理想??!
3.配置Hostname以及hosts
BigData02配置hostname為 bigdata-02.liu.com
BigData03配置hostname為 bigdata-03.liu.com
BigData01、BigData02、BigData03三臺(tái)機(jī)器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客戶端上添加對(duì)BigData02、BigData03機(jī)器的SSH鏈接
二、服務(wù)器功能規(guī)劃
bigdata-01.liu.com | bigdata-02.liu.com | bigdata-03.liu.com | |
---|---|---|---|
NameNode | ResourceManage | SecondaryNameNode | |
DataNode | DataNode | DataNode | |
NodeManager | NodeManager | NodeManager | |
HistoryServer |
三、在第一臺(tái)機(jī)器上安裝新的Hadoop
創(chuàng)建hadoop目錄
mkdir -p /opt/modules/app
導(dǎo)入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
fs.defaultFS hdfs://bigdata-01.liu.com:8020 hadoop.tmp.dir /opt/modules/app/hadoop-2.7.4/data/tmp dfs.namenode.name.dir file://${hadoop.tmp.dir}/dfs/name dfs.datanode.data.dir file://${hadoop.tmp.dir}/dfs/data
fs.defaultFS為NameNode的地址。
hadoop.tmp.dir為hadoop臨時(shí)目錄的地址,默認(rèn)情況下,NameNode和DataNode的數(shù)據(jù)文件都會(huì)存在這個(gè)目錄下的對(duì)應(yīng)子目錄下。應(yīng)該保證此目錄是存在的,如果不存在,先創(chuàng)建。
配置hdfs-site.xml
vim hdfs-site.xml
dfs.namenode.secondary.http-address bigdata-03.liu.com:50090
dfs.namenode.secondary.http-address是指定secondaryNameNode的http訪問(wèn)地址和端口號(hào),因?yàn)樵谝?guī)劃中,我們將BigData03規(guī)劃為SecondaryNameNode服務(wù)器,所以這里設(shè)置:bigdata-03.liu.com:50090
配置slaves
vim slaves
bigdata-01.liu.com
bigdata-02.liu.com
bigdata-03.liu.com
slaves文件是指定HDFS上有哪些DataNode節(jié)點(diǎn)
配置yarn-site.xml
vim yarn-site.xml
yarn.nodemanager.aux-services mapreduce_shuffle yarn.resourcemanager.hostname bigdata-02.liu.com yarn.log-aggregation-enable true yarn.log-aggregation.retain-seconds 106800
根據(jù)規(guī)劃yarn.resourcemanager.hostname這個(gè)指定resourcemanager服務(wù)器指向bigdata-02.liu.com
yarn.log-aggregation-enable是配置是否啟用日志聚集功能
yarn.log-aggregation.retain-seconds是配置聚集的日志在HDFS上最多保存多長(zhǎng)時(shí)間
配置mapred-site.xml
從mapred-site.xml.template復(fù)制一個(gè)mapred-site.xml文件
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
mapreduce.framework.name yarn mapreduce.jobhistory.address bigdata-01.liu.com:10020 mapreduce.jobhistory.webapp.address bigdata-01.liu.com:19888
mapreduce.framework.name設(shè)置mapreduce任務(wù)運(yùn)行在yarn上
mapreduce.jobhistory.address是設(shè)置mapreduce的歷史服務(wù)器安裝在BigData01機(jī)器上
mapreduce.jobhistory.webapp.address是設(shè)置歷史服務(wù)器的web頁(yè)面地址和端口號(hào)
四、設(shè)置SSH無(wú)密碼登錄
Hadoop集群中的各個(gè)機(jī)器間會(huì)相互地通過(guò)SSH訪問(wèn),每次訪問(wèn)都輸入密碼是不現(xiàn)實(shí)的,所以要配置各個(gè)機(jī)器間的SSH是無(wú)密碼登錄的
在BigData01上生成公鑰
ssh-keygen -t rsa
一路回車,都設(shè)置為默認(rèn)值,然后再當(dāng)前用戶的Home目錄下的.ssh目錄中會(huì)生成公鑰文件(id_rsa.pub)和私鑰文件(id_rsa), .ssh是隱藏文件在home目錄下ls -a就會(huì)顯示出來(lái)
分發(fā)公鑰
ssh-copy-id bigdata-01.liu.com
ssh-copy-id bigdata-02.liu.com
ssh-copy-id bigdata-03.liu.com
五、分發(fā)Hadoop文件
首先在其他兩臺(tái)機(jī)器上創(chuàng)建存放Hadoop的目錄
mkdir -p /opt/modules/app
通過(guò)Scp分發(fā)
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機(jī)器bigdata-01上執(zhí)行格式化:
/opt/modules/app/hadoop-2.7.4/bin/hdfs namenode –format
格式化后在 /opt/modules/app/hadoop-2.7.4/data/tmp/dfs/data/ 目錄下會(huì)生成一個(gè)current目錄,里面有一系列文件
注意:
如果需要重新格式化NameNode,需要先將原來(lái)NameNode和DataNode下的文件全部刪除,不然會(huì)報(bào)錯(cuò),NameNode和DataNode所在的目錄是在core-site.xml中hadoop.tmp.dir、dfs.namenode.name.dir、dfs.datanode.data.dir屬性里配置的。
因?yàn)槊看胃袷交?,默認(rèn)是創(chuàng)建一個(gè)集群ID,并寫(xiě)入NameNode和DataNode的VERSION文件中(VERSION文件所在目錄為dfs/name/current 和 dfs/data/current),重新格式化時(shí),默認(rèn)會(huì)生成一個(gè)新的集群ID,如果不刪除原來(lái)的目錄,會(huì)導(dǎo)致namenode中的VERSION文件中是新的集群ID,而DataNode中是舊的集群ID,不一致時(shí)會(huì)報(bào)錯(cuò)。
六、啟動(dòng)集群
切換到/opt/modules/app/hadoop-2.7.4目錄下
啟動(dòng)HDFS
/opt/modules/app/hadoop-2.7.4/sbin/start-dfs.sh
jps查看已經(jīng)啟動(dòng)的服務(wù)
啟動(dòng)YARN
/opt/modules/app/hadoop-2.7.4/sbin/start-yarn.sh
也可以使用這條命令一步到位
/opt/modules/app/hadoop-2.7.4/sbin/start-all.sh
在BigData02上啟動(dòng)ResourceManager:
sbin/yarn-daemon.sh start resourcemanager
啟動(dòng)日志服務(wù)器
因?yàn)槲覀円?guī)劃的是在BigData03服務(wù)器上運(yùn)行MapReduce日志服務(wù),所以要在BigData03上啟動(dòng)
/opt/modules/app/hadoop-2.7.4/sbin/mr-jobhistory-daemon.sh start historyserver
查看HDFS Web頁(yè)面
http://bigdata-01.liu.com:50070/
如果域名沒(méi)有解析可以在搜索欄中輸入ip+端口如:
172.18.74.172:50070
查看YARN Web 頁(yè)面
http://bigdata-02.liu.com:8088/cluster
172.18.74.173:8088/cluster
好啦,到這里Hadoop集群環(huán)境的搭建就完成啦。建議Ha友們搭建Hadoop環(huán)境時(shí)先去了解一下各個(gè)組件是什么這樣更有利于你順利的完成Hadoop環(huán)境的搭建,我的一些同學(xué)他們學(xué)這個(gè)比較早,那時(shí)候也沒(méi)人了解Hadoop是什么,聽(tīng)他們說(shuō)搭建了10天半個(gè)月的才搭建出來(lái),我就是在他們的影響下逐漸了解了點(diǎn)Hadoop的知識(shí),用了一天多的時(shí)間搭建好了,搭建過(guò)程中還遇到了不少突發(fā)情況,所以如果搭建過(guò)程中沒(méi)有什么意外情況再加上提前了解過(guò),半天就能搞定了,千萬(wàn)不要遇到困難就放棄,堅(jiān)持一定會(huì)勝利的??!
。。。從前車馬很慢,書(shū)信很遠(yuǎn),一生只夠愛(ài)一個(gè)人!??!