Hadoop 環(huán)境部署(標(biāo)準(zhǔn)Linux部署方式)【完結(jié)】

hadoop環(huán)境部署

前言:Hadoop主要有兩種安裝方式播聪,即傳統(tǒng)解壓包方式和Linux標(biāo)準(zhǔn)方式椒振。相對來說昭伸,標(biāo)準(zhǔn)Linux部署方式簡單易用,而傳統(tǒng)部署方式則繁瑣易錯澎迎;標(biāo)準(zhǔn)部署方式隱藏了很多細(xì)節(jié)庐杨,而傳統(tǒng)解壓包方式有助于讀者深入理解Hadoop原理选调。建議先學(xué)習(xí)傳統(tǒng)部署方式再來學(xué)習(xí)這個標(biāo)準(zhǔn)部署方式。

實驗環(huán)境:

虛擬機: VMware Workstation Pro灵份,

Linux版本: CentOS 8仁堪,? ?

JDK版本:1.8.0,

hadoop版本: hadoop-2.10.0(先在虛擬機里下載好)填渠,

虛擬機安裝時弦聂,如果本身物理機內(nèi)存條和硬盤容量都不大,建議內(nèi)存2G氛什,硬盤5G莺葫,就夠了。否則運行起來會非城姑迹卡捺檬。甚至常常黑屏無法啟動。

集群環(huán)境設(shè)計:

Hadoop各結(jié)點設(shè)計:

小技巧:執(zhí)行命令需要管理員權(quán)限時瑰谜,可直接在前加上sudo欺冀,這樣就可以管理員身份執(zhí)行了树绩;如果編輯部分系統(tǒng)文件時萨脑,無法用“:wq!”更改保存,可以先:q退出,用sudo vi 來編輯文件饺饭。

0.修改機器名hostname

首先我們安裝完VM渤早,安裝完CentOS8之后,打開linux瘫俊,進入命令行終端進行配置鹊杖,

修改機器名

sudo hostnamectl set-hostname cMaster

顯示機器信息:

hostnamectl

顯示機器信息

1. jdk安裝

一步安裝及配置jdk (僅適用于CentOS),在linux命令行端口扛芽,輸入

sudo yum install java-1.8.0-openjdk* -y

?然后輸入root用戶密碼即可安裝(安裝VM時設(shè)置的root密碼)

利用yum工具安裝jdk

接著往下輸入

java -version

會顯示版本信息時即為成功骂蓖,

顯示jdk版本信息

??而此時yum 安裝的jdk位置為 /usr/lib/jvm/java-1.8.0,我們再進行jdk環(huán)境變量配置川尖,輸入

vi /etc/profile

在文件底端添加以下信息(JAVA_HOME=安裝路徑登下,如果不同需要根據(jù)自己的實際安裝路徑更改)

?#set java environment ?

?export JAVA_HOME=/usr/lib/jvm/java

?export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar

?export PATH=$PATH:$JAVA_HOME/bin

配置jdk環(huán)境

(輸入:wq!)保存并退出之后,再輸入

source /etc/profile

使得配置的更改生效

此時叮喳,當(dāng)輸入

echo $JAVA_HOME

顯示路徑/usr/lib/jvm/java-1.8.0的時候被芳,配置已經(jīng)成功。


2.集群環(huán)境的共性配置

2.1修改虛擬子網(wǎng)ip

進入虛擬網(wǎng)絡(luò)編輯器
以管理員身份更改設(shè)置
取消dhcp馍悟,設(shè)置子網(wǎng)ip

2.2修改網(wǎng)絡(luò)配置文件ens33

(如果你的機器網(wǎng)絡(luò)服務(wù)名稱不是ens33的畔濒,可以輸入ifconfig,第一個英文就是對應(yīng)的了)

vi /etc/sysconfig/network-scripts/ifcfg-ens33

修改增加內(nèi)容锣咒,并保存退出

更新網(wǎng)絡(luò)配置 查看結(jié)果

sudo nmcli c reload

sudo nmcli c down ens33

sudo nmcli c up ens33

重啟網(wǎng)絡(luò)服務(wù)
查看更新之后的ip侵状,修改成功

2.3虛擬機克隆

2.3.1克隆機器

關(guān)閉虛擬機赞弥,然后克隆
完整克隆
點擊完成,默默等待安裝就好趣兄。

2.3.2 重新生成MAC機器地址

在兩臺hadoop2嗤攻,hadoop3克隆虛擬機上重新生成MAC地址

重新生產(chǎn)MAC地址

2.3.3 修改新機器的網(wǎng)絡(luò)配置?

在兩臺虛擬機上,都要進行修改機器名hostname修改網(wǎng)絡(luò)配置文件ens33的步驟诽俯,機器名和ipaddr分別如文章開頭的集群設(shè)計表所示妇菱。如hadoop2上,

sudo hostnamectl set-hostname cSlave0

vi /etc/sysconfig/network-scripts/ifcfg-ens33? #ipaddr是192.168.58.130

sudo nmcli c reload

sudo nmcli c down ens33

sudo nmcli c up ens33

再在三臺機器上暴区,設(shè)置hosts映射表

vi /etc/hosts

加入以上三行映射

之后可以在三臺機器上執(zhí)行ping命令闯团,檢驗是否互通了。如在(hadoop1)cMaster上執(zhí)行(Ctrl + C 可停止ping操作)

ping cSlave0

3. 設(shè)置免密碼登陸(三臺機器都需要進行分別設(shè)置)

3.1 創(chuàng)建hadoop用戶?

創(chuàng)建?hadoop?用戶(需要root權(quán)限仙粱,我設(shè)置的密碼是簡單的一個空格“space”)

sudo useradd hadoop

sudo passwd hadoop

3.2修改用戶?hadoop?的權(quán)限

(用戶權(quán)限的修改需要在 /etc/sudoers 下配置, 將 hadoop 的權(quán)限修改最高ALL)

sudo vi /etc/sudoers

在以上位置加上下面一行字符串

hadoop? ? ALL=(ALL)? ? NoPASSWD:ALL

3.3 切換到 hadoop用戶

su hadoop

切換hadoop用戶

3.4免密碼登陸設(shè)置

生成公鑰(要求輸入設(shè)置密碼時直接回車就是無密碼登錄了)

ssh-keygen -t rsa

三個綠框地方直接回車房交,其他地方看情況輸入

將公鑰拷貝到其他兩臺機器(期間要求輸入的密碼是hadoop的用戶密碼)

ssh-copy-id hadoop@cSlave0

ssh-copy-id hadoop@cSlave1

拷貝密鑰成功

3.5 ssh登錄測試(登錄其他兩臺機器,再回來本機)

ssh hadoop@cSlave0

ssh hadoop@cSlave1

ssh hadoop@cMaster

ssh登錄成功

4. hadoop安裝與配置

4.1 安裝hadoop

????4.1.1 新建hadoop的安裝目錄伐割,設(shè)置hadoop用戶對 /usr/local/src和?/usr/local/hadoop 的權(quán)限, -R 表示級聯(lián)設(shè)置

cd /usr/local

sudo chown -R hadoop:hadoop /usr/local/src

sudo mkdir hadoop

sudo chown -R hadoop:hadoop hadoop

ll

設(shè)置權(quán)限成功

????4.1.2 將hadoop壓縮文件設(shè)置為 可執(zhí)行文件

(這里的壓縮包在克隆以前已經(jīng)下載到了/home/hadoop/下載目錄下)

sudo chmod +x hadoop-2.7.5.tar.gz

hadoop壓縮包已經(jīng)由紅色轉(zhuǎn)變?yōu)榫G色


????4.1.3 解壓hadoop配置包

準(zhǔn)備解壓


解壓到hadoop安裝目錄

????4.1.4 配置環(huán)境變量

vi /etc/profile

export HADOOP_HOME="/usr/local/hadoop/hadoop-2.10.0"

export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

profile文件底端加入以上兩行配置候味,然后用source命令使得配置更新生效

source /etc/profile

????4.1.5 查看結(jié)果:

echo $HADOOP_HOME

hadoop環(huán)境變量配置成功會顯示路徑

4.2 配置cMaster的hadoop

(下面的操作為:先配置其中一臺機器(如cMaster的)文件,然后直接復(fù)制到其他兩臺機器再修改隔心,否則每臺機器都要敲的話白群,容易敲錯)

????4.2.1? 編輯hadoop-env.sh?

vi ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh

這個地方 JAVA_HOME為你安裝jdk的時候的 JAVA_HOME

"/usr/lib/jvm/java-1.8.0"

配置JAVA_HOME

????4.2.2 編輯core-site.xml

vi ${HADOOP_HOME}/etc/hadoop/core-site.xml

<property>

? ? ? ? <name>fs.defaultFS</name>

? ? ? ? <value>hdfs://cMaster:8020</value>

</property>

<property>

? ? ? ? <name>hadoop.tmp.dir</name>

? ? ? ? <value>/opt/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>

設(shè)置datanode、namenode硬霍、tmp的目錄路徑

????4.2.3 創(chuàng)建tmp帜慢、NameNode和DataNode目錄,并且給hadoop用戶設(shè)置權(quán)限

sudo mkdir -p /opt/data/tmp

sudo mkdir -p /opt/data/tmp/dfs/name

sudo mkdir -p /opt/data/tmp/dfs/data

sudo chown -R hadoop:hadoop /opt/data/tmp

sudo chown -R hadoop:hadoop /opt/data/tmp/dfs/name

sudo chown -R hadoop:hadoop /opt/data/tmp/dfs/data


????4.2.4 編輯hdfs-site.xml,將cSlave1設(shè)置為secondary name node唯卖。

vi ${HADOOP_HOME}/etc/hadoop/hdfs-site.xml

<property>

? <name>dfs.namenode.secondary.http-address</name>

? <value>cSlave1:50090</value>

</property>

將cSlave1設(shè)置為secondary name node

????4.2.5 編輯slaves粱玲,設(shè)置三臺機器為datanode

vi ${HADOOP_HOME}/etc/hadoop/slaves

cMaster

cSlave0

cSlave1

將三臺機器都設(shè)置為datanode

????4.2.6 編輯yarn-site.xml,將cSlave0設(shè)置為resource manager

vi ${HADOOP_HOME}/etc/hadoop/yarn-site.xml

<property>

? ? ? ? <name>yarn.nodemanager.aux-services</name>

? ? ? ? <value>mapreduce_shuffle</value>

</property>

<property>

? ? ? ? <name>yarn.log-aggregation-enable</name>

? ? ? ? <value>true</value>

</property>

<property>

? ? ? ? <name>yarn.resourcemanager.hostname</name>

? ? ? ? <value>cSlave0</value>

</property>

<property>

? ? ? ? <name>yarn.log-aggregation.retain-seconds</name>

? ? ? ? <value>106800</value>

</property>

<property>

? ? ? ? <description>The http address of th RM web application.</description>

? ? ? ? <name>yarn.resourcemanager.webapp.address</name>

? ? ? ? <value>cSlave0:8088</value>

</property>

將cSlave0設(shè)置為resource manager

????4.2.7 編輯mapred-site.xml,將cSlave1設(shè)置為job history server

cd ${HADOOP_HOME}

cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml

vi ${HADOOP_HOME}/etc/hadoop/mapred-site.xml

<property>

? ? ? ? ? ? ? ? <name>mapreduce.framework.name</name>

? ? ? ? ? ? ? ? <value>yarn</value>

? ? ? ? </property>

? ? ? ? <property>

? ? ? ? ? ? ? ? <name>mapreduce.jobhistory.address</name>

? ? ? ? ? ? ? ? <value>cSlave1:10020</value>

? ? ? ? </property>

? ? ? ? <property>

? ? ? ? ? ? ? ? <name>mapreduce.jobhistory.webapp.address</name>

? ? ? ? ? ? ? ? <value>cSlave1:19888</value>

? ? ? ? </property>

將cSlave1設(shè)置為job history server

4.3 給cSlave0拜轨、cSlave1分發(fā)Hadoop配置

????4.3.1 分別在cSlave0抽减、cSlave1創(chuàng)建hadoop、tmp橄碾、nanmenode和datanode目錄卵沉。

sudo mkdir hadoop?

sudo mkdir -p /opt/data/tmp

sudo mkdir -p /opt/data/tmp/dfs/name

sudo mkdir -p /opt/data/tmp/dfs/data

sudo chown -R hadoop:hadoop hadoop?

sudo chown -R hadoop:hadoop /opt/data/tmp

sudo chown -R hadoop:hadoop /opt/data/tmp/dfs/name

sudo chown -R hadoop:hadoop /opt/data/tmp/dfs/data

4.3.2 將cMaster的hadoop安裝目錄下的文件拷貝到cSlave0、cSlave1

該步驟需要較長時間(20min左右)堪嫂,請耐心等待

scp -r ${HADOOP_HOME}/ cSlave0:/usr/local/hadoop

scp -r ${HADOOP_HOME}/ cSlave1:/usr/local/hadoop

4.3.3 在cMaster上格式化namenode(不要二次格式化偎箫,執(zhí)行一次即可,否則datanode自行查貼解決)

cd ${HADOOP_HOME}

./bin/hdfs namenode -format

4.4 啟動hadoop

????4.4.1 關(guān)閉三臺機器的防火墻.

sudo systemctl stop firewalld.service

????4.4.2 在cMaster上啟動 dfs

cd ${HADOOP_HOME}/sbin

?./start-dfs.sh

????4.4.3 在cSlave0上 啟動 yarn

cd ${HADOOP_HOME}/sbin

?./start-yarn.sh

????4.4.4 在cSlave1 啟動 history server

cd ${HADOOP_HOME}/sbin

mr-jobhistory-daemon.sh start historyserver

5 .Hadoop部署結(jié)果驗證

5.1 查看HDFS頁面:

http://cMaster:50070

cSlave0的FireFox截圖

5.2 查看YARN Web 頁面

http://cSlave0:8088/cluster


cSlave0的FireFox截圖

5.3 測試job

運行MapReduce程序 wordCount皆串,編輯測試文件,隨便寫幾個單詞或者一句英文

sudo vi /opt/data/wc.input

Future astronauts could travel with emotional support robots.

輸入隨意一句英文

在HDFS上創(chuàng)建目錄并上傳wc.input

cd ${HADOOP_HOME}/bin

./hdfs dfs -mkdir /input

./hdfs dfs -put /opt/data/wc.input /input/wc.input

上傳完畢

運行wordcount

? ./yarn jar ../share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.0.jar wordcount /input/wc.input /output

計算完畢

結(jié)果查看:????

./hdfs dfs -ls /output

結(jié)果已生成

./hdfs dfs -cat /output/part-r-00000

顯示結(jié)果

部署成功(撒花)



參考文章:

1.Hadoop 環(huán)境搭建 全集 超詳細(xì), 新手必看

2.Hadoop集群搭建好后無法啟動datanode

3.Hadoop快速入門

4.《云計算(第三版)劉鵬 主編》電子工業(yè)出版社

5.關(guān)于虛擬機VMware Workstation Pro繁忙的解決方法

6.Linux跨用戶copy文件

7.關(guān)于Hadoop進行namenode格式化時ERROR conf.Configuration: error parsing conf xxx.xml錯誤的問題

8.


(補充)部分問題:

1.網(wǎng)絡(luò)不可用淹办,檢查靜態(tài)ip設(shè)置無問題,但是ping不通恶复,網(wǎng)頁打不開

ping超時
找不到服務(wù)器

有可能是NATService被關(guān)閉了

運行NATService就可以了

2.啟動dfs的時候怜森,密碼還沒輸入就彈出了信息

等待的過程中速挑,啟動消息遲遲不打印,可以按一個回車

3.jps查看到datanode沒有啟動

原因可能是datanode二次格式化導(dǎo)致的版本id不一樣副硅,需要統(tǒng)一id才能夠同時啟動姥宝。

hadoop的升級功能需要datanode在它的版本文件里存儲一個永久性的clusterID,當(dāng)datanode啟動時會檢查并匹配namenode的版本文件里的clusterID恐疲,如果兩者不匹配腊满,就會出現(xiàn)"Incompatible clusterIDs"的異常。

每次格式化namenode都會生成一個新的clusterID, 如果只格式化了namenode培己,沒有格式化此datanode碳蛋, 就會出現(xiàn)”java.io.IOException: Incompatible namespaceIDs“異常。

所以現(xiàn)在修改統(tǒng)一clusterID省咨,

cd /opt/data/tmp/dfs/data/current

vi VERSION

三臺機器統(tǒng)一id

然后再查看再啟動一次datanode

start-dfs.sh

datanode啟動成功
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載肃弟,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者窖剑。
  • 序言:七十年代末组底,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子为迈,更是在濱河造成了極大的恐慌敌蜂,老刑警劉巖箩兽,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異紊册,居然都是意外死亡比肄,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門囊陡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人掀亥,你說我怎么就攤上這事撞反。” “怎么了搪花?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵遏片,是天一觀的道長。 經(jīng)常有香客問我撮竿,道長吮便,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任幢踏,我火速辦了婚禮髓需,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘房蝉。我一直安慰自己僚匆,他們只是感情好微渠,可當(dāng)我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著咧擂,像睡著了一般逞盆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上松申,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天云芦,我揣著相機與錄音,去河邊找鬼贸桶。 笑死焕数,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的刨啸。 我是一名探鬼主播堡赔,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼设联!你這毒婦竟也來了善已?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤离例,失蹤者是張志新(化名)和其女友劉穎换团,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宫蛆,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡艘包,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了耀盗。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片想虎。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖叛拷,靈堂內(nèi)的尸體忽然破棺而出舌厨,到底是詐尸還是另有隱情,我是刑警寧澤忿薇,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布裙椭,位于F島的核電站,受9級特大地震影響署浩,放射性物質(zhì)發(fā)生泄漏揉燃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一筋栋、第九天 我趴在偏房一處隱蔽的房頂上張望炊汤。 院中可真熱鬧,春花似錦、人聲如沸婿崭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽氓栈。三九已至渣磷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間授瘦,已是汗流浹背醋界。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留提完,地道東北人形纺。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像徒欣,于是被迫代替她去往敵國和親逐样。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,611評論 2 353