利用鯤鵬服務(wù)器快速搭建Hadoop全分布式集群
一、Hadoop常見的三種運(yùn)行模式
1、單機(jī)模式(獨(dú)立模式)(Local或Standalone? Mode)
默認(rèn)情況下Hadoop就是處于該模式,用于開發(fā)和調(diào)式。不對配置文件進(jìn)行修改。使用本地文件系統(tǒng),而不是分布式文件系統(tǒng)。
Hadoop不會啟動NameNode、DataNode、JobTracker、TaskTracker等守護(hù)進(jìn)程,Map()和Reduce()任務(wù)作為同一個(gè)進(jìn)程的不同部分來執(zhí)行的。
用于對MapReduce程序的邏輯進(jìn)行調(diào)試,確保程序的正確。
2、偽分布式模式(Pseudo-Distrubuted Mode)
Hadoop的守護(hù)進(jìn)程運(yùn)行在本機(jī)機(jī)器,模擬一個(gè)小規(guī)模的集群,在一臺主機(jī)模擬多主機(jī)。
Hadoop啟動NameNode、DataNode、JobTracker、TaskTracker這些守護(hù)進(jìn)程都在同一臺機(jī)器上運(yùn)行,是相互獨(dú)立的Java進(jìn)程。
在這種模式下,Hadoop使用的是分布式文件系統(tǒng),各個(gè)作業(yè)也是由JobTraker服務(wù),來管理的獨(dú)立進(jìn)程。在單機(jī)模式之上增加了代碼調(diào)試功能,允許檢查內(nèi)存使用情況,HDFS輸入輸出,以及其他的守護(hù)進(jìn)程交互。類似于完全分布式模式,因此,這種模式常用來開發(fā)測試Hadoop程序的執(zhí)行是否正確。
3、全分布式集群模式(Full-Distributed Mode)
Hadoop的守護(hù)進(jìn)程運(yùn)行在一個(gè)集群上 Hadoop的守護(hù)進(jìn)程運(yùn)行在由多臺主機(jī)搭建的集群上,是真正的生產(chǎn)環(huán)境。
下載并解壓Hadoop、JDK安裝包并配置好環(huán)境變量、節(jié)點(diǎn)域名解析、防火墻、端口等組成相互連通的網(wǎng)絡(luò)。
進(jìn)入Hadoop的解壓目錄,編輯hadoop-env.sh文件(注意不同版本后配置文件的位置有所變化)
編輯Hadoop中配置文件core-site.xml(Hadoop集群的特性,作用于全部進(jìn)程及客戶端)、hdfs-site.xml(配置HDFS集群的工作屬性)、mapred-site.xml(配置MapReduce集群的屬性)、yarn-site.xml四個(gè)核心配置文件
配置ssh,生成密鑰,使到ssh可以免密碼連接localhost,把各從節(jié)點(diǎn)生成的公鑰添加到主節(jié)點(diǎn)的信任列表。
格式化HDFS后 使用./start-all.sh啟動Hadoop集群
二、Hadoop常見組件
Hadoop由HDFS、Yarn、Mapreduce三個(gè)核心模塊組成,分別負(fù)責(zé)分布式存儲、資源分配和管理、分布式計(jì)算。
1、Hadoop-HDFS模塊
HDFS:是一種分布式存儲系統(tǒng),采用Master和Slave的主從結(jié)構(gòu),主要由NameNode和DataNode組成。HDFS會將文件按固定大小切成若干塊,分布式存儲在所有DataNode中,每個(gè)文件塊可以有多個(gè)副本,默認(rèn)副本數(shù)為3。
NameNode: Master節(jié)點(diǎn),負(fù)責(zé)元數(shù)據(jù)的管理,處理客戶端請求。
DataNode: Slave節(jié)點(diǎn),負(fù)責(zé)數(shù)據(jù)的存儲和讀寫操作。
2、Hadoop-Yarn模塊
Yarn:是一種分布式資源調(diào)度框架,采用Master和Slave的主從結(jié)構(gòu),主要由ResourceManager . ApplicationMaster和NodeManager組成,負(fù)責(zé)整個(gè)集群的資源管理和調(diào)度。
ResourceManager:是一個(gè)全局的資源管理器,負(fù)責(zé)整個(gè)集群的資源管理和分配。
ApplicationMaster:當(dāng)用戶提交應(yīng)用程序時(shí)啟動,負(fù)責(zé)向ResourceManager申請資源和應(yīng)用程序的管理。
NodeManager:運(yùn)行在Slave節(jié)點(diǎn),負(fù)責(zé)該節(jié)點(diǎn)的資源管理和使用。
Container: Yarn的資源抽象,是執(zhí)行具體應(yīng)用的基本單位,任何一個(gè)Job或應(yīng)用程序必須運(yùn)行在一個(gè)或多個(gè)Container中。
3、Hadoop-Mapreduce模塊
Mapreduce:是一種分布式計(jì)算框架,主要由Map和Reduce兩個(gè)階段組成。支持將一個(gè)計(jì)算任務(wù)劃分為多個(gè)子任務(wù),分散到各集群節(jié)點(diǎn)并行計(jì)算。
Map階段:將初始數(shù)據(jù)分成多份,由多個(gè)map任務(wù)并行處理。
Reduce階段:收集多個(gè)Map任務(wù)的輸出結(jié)果并進(jìn)行合并,最終形成一個(gè)文件作為reduce階段的結(jié)果。
全分布式集群模式(Full-Distributed Mode)搭建
【基本環(huán)境】
三臺鯤鵬km1.2xlarge.8內(nèi)存優(yōu)化型?8vCPUs | 64GB ?CentOS 7.6 64bit with ARM? ?CPU:Huawei Kunpeng 920 2.6GHz
其中jack20節(jié)點(diǎn)作為NameNode,?Node1、?Node2作為DataNode,而Node1也作為輔助NameNode?(?Secondary?NameNode?)。
【基本流程】
下載并解壓Hadoop、JDK安裝包并配置好環(huán)境變量、節(jié)點(diǎn)域名解析、防火墻、端口
進(jìn)入Hadoop的解壓目錄,編輯hadoop-env.sh文件(注意不同版本后配置文件的位置有所變化)
編輯Hadoop中配置文件core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml四個(gè)核心配置文件
配置ssh,生成密鑰,使到ssh可以免密碼連接localhost
格式化HDFS后 使用./start-all.sh啟動Hadoop集群
關(guān)閉防火墻和selinux
(1)各個(gè)節(jié)點(diǎn)都執(zhí)行命令關(guān)閉防火墻:
systemctl stop firewalld systemctl disable firewalld systemctl status firewalld
(2)關(guān)閉selinux
進(jìn)入selinux的config文件,將selinux原來的強(qiáng)制模式(enforcing)修改為關(guān)閉模式(disabled)
setenforce 0getenforce sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux grep SELINUX=disabled /etc/sysconfig/selinux cat /etc/sysconfig/selinux
1.安裝openJDK-1.8.0
1.1. 下載安裝openJDK-1.8.0
下載openJDK-1.8.0并安裝到指定目錄(如“/home”)。
進(jìn)入目錄:
cd /home
下載openJDK-1.8.0并安裝:
wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/hadoop-performance-tuning/OpenJDK8U-jdk_aarch64_linux_hotspot_8u252b09.tar.gz #解壓 tar -zxf OpenJDK8U-jdk_aarch64_linux_hotspot_8u252b09.tar.gz
1.2. 配置環(huán)境變量
執(zhí)行如下命令,打開/etc/profile文件:
vim /etc/profile
點(diǎn)擊鍵盤"Shift+g"移動光標(biāo)至文件末尾,單擊鍵盤“i”鍵進(jìn)入編輯模式,在代碼末尾回車下一行,添加如下內(nèi)容:
下一行,添加如下內(nèi)容:
export JAVA_HOME=/home/jdk8u252-b09 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
添加完成,單擊鍵盤ESC退出編輯,鍵入“:wq”回車保存并退出。
1.3. 環(huán)境變量生效
使環(huán)境變量生效:
source /etc/profile
驗(yàn)證openJDK-1.8.0安裝是否成功:
java -version
1.4.配置域名解析
vim /etc/hosts
2.安裝dstat資源監(jiān)控工具
yum install dstat-0.7.2-12.el7 -y
驗(yàn)證dstat是否安裝成功:
dstat -V
3. 部署hadoop-3.1.1
3. 1. 獲取hadoop-3.1.1軟件包
①下載hadoop-3.1.1安裝包到/home目錄下:
cd /home wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/hadoop-performance-tuning/hadoop-3.1.1.tar.gz #解壓hadoop-3.1.1 tar -zxvf hadoop-3.1.1.tar.gz
②建立軟鏈接
ln -s hadoop-3.1.1 hadoop
③配置hadoop環(huán)境變量,打開/etc/profile文件:
vim /etc/profile
點(diǎn)擊鍵盤"Shift+g"移動光標(biāo)至文件末尾,單擊鍵盤“i”鍵進(jìn)入編輯模式,在代碼末尾回車下一行,添加如下內(nèi)容:
export HADOOP_HOME=/home/hadoop export PATH=$HADOOP_HOME/bin:$PATH
添加完成,單擊鍵盤ESC退出編輯,鍵入“:wq”回車保存并退出。
④使環(huán)境變量生效:
source /etc/profile
⑤驗(yàn)證hadoop安裝是否成功:
hadoop version
執(zhí)行結(jié)果如下圖所示,表示安裝成功:
3.2. 修改hadoop配置文件
hadoop所有的配置文件都在$HADOOP_HOME/etc/hadoop目錄下,修改以下配置文件前,需要切換到"$HADOOP_HOME/etc/hadoop"目錄。
cd $HADOOP_HOME/etc/hadoop/
①修改hdfs-env.xml
打開hadoop-env.sh文件:
vim hadoop-env.sh
找到hadoop-env.sh的第54行中的java目錄(在命令模式下輸入“:set nu”,查看行數(shù)),輸入java的安裝目錄(),然后刪除行左端“#”取消注釋,并保存退出
② 修改core-site.xml
打開core-site.xml文件
vim core-site.xml
在
③ 修改hdfs-site.xml,
打開hdfs-site.xml文件
vim hdfs-site.xml
在
④修改mapred-site.xml
打開mapred-site.xml文件:
vim mapred-site.xml
在
⑤修改yarn-site.xml
打開yarn-site.xml文件:
vim yarn-site.xml
在
⑥將各個(gè)節(jié)點(diǎn)加入到workers
echo jack20 > workers echo node1 > workers echo node2 > workers
⑦修改dfs和yarn的啟動腳本,添加root用戶權(quán)限
(1)打開start-dfs.sh和stop-dfs.sh文件:
vim /home/hadoop/sbin/start-dfs.sh vim /home/hadoop/sbin/stop-dfs.sh
單擊鍵盤“i”鍵進(jìn)入編輯模式,在兩個(gè)配置文件的第一行添加并保存退出:
HDFS_DATANODE_USER=root HDFS_DATANODE_SECURE_USER=hdfs HDFS_NAMENODE_USER=root HDFS_SECONDARYNAMENODE_USER=root
(2)打開start-yarn.sh 和 stop-yarn.sh文件
vim /home/hadoop/sbin/start-yarn.sh vim /home/hadoop/sbin/stop-yarn.sh
單擊鍵盤“i”鍵進(jìn)入編輯模式,在兩個(gè)配置文件的第一行添加并保存退出:
YARN_RESOURCEMANAGER_USER=root HADOOP_SECURE_DN_USER=yarn YARN_NODEMANAGER_USER=root
4.集群配置&節(jié)點(diǎn)間免密登錄
(1)連通性測試
(2)從主節(jié)點(diǎn)同步各個(gè)節(jié)點(diǎn)域名解析文件
scp /etc/hosts node1:/etc/hosts scp /etc/hosts node2:/etc/hosts
(3)?配置各節(jié)點(diǎn)間SSH免密登錄
分別在三臺服務(wù)器中輸入命令生成私鑰和公鑰(提示輸入時(shí)按回車即可):
ssh-keygen -t rsa
jack20:
node1:
node2:
然后分別在三臺服務(wù)器上輸入命令以復(fù)制公鑰到服務(wù)器中:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@jack20 ssh-copy-id -i ~/.ssh/id_rsa.pub root@node1 ssh-copy-id -i ~/.ssh/id_rsa.pub root@node2
①繼續(xù)連接:輸入“yes”回車;
②輸入密碼(輸入密碼時(shí),命令行窗口不會顯示密碼,輸完之后直接回車)
查看所有協(xié)商的秘鑰
SSH免密登錄測試:
Jack20->node1->node2->jack20->node2->node1->jack20
(4)?復(fù)制hadoop到各datanode并修改
把jack20的hadoop目錄、jdk目錄、/etc/hosts、/etc/profile復(fù)制到node1,node2節(jié)點(diǎn)
cd $HADOOP_HOME/.. #hadoop目錄 scp -r hadoop node1:/home scp -r hadoop node2:/home #java目錄 scp -r jdk8u252-b09 node1:/home scp -r jdk8u252-b09 node2:/home
登錄修改各服務(wù)器java和haoop環(huán)境變量
vim /etc/profile
點(diǎn)擊鍵盤"Shift+g"移動光標(biāo)至文件末尾,單擊鍵盤“i”鍵進(jìn)入編輯模式,在代碼末尾回車下一行,添加如下內(nèi)容并保存退出:
export JAVA_HOME=/home/jdk8u252-b09 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export HADOOP_HOME=/home/hadoop export PATH=$HADOOP_HOME/bin:$PATH
使環(huán)境變量生效:
source /etc/profile
5.啟動hadoop
注意:如果啟動報(bào)錯(cuò),請檢查hadoop配置文件是否配置有誤。
第一次啟動前一定要格式化HDFS:
hdfs namenode -format
注意:提示信息的倒數(shù)第2行出現(xiàn)“>= 0”表示格式化成功,如圖。在Linux中,0表示成功,1表示失敗。因此,如果返回“1”,就應(yīng)該好好分析前面的錯(cuò)誤提示信息,一?般來說是前面配置文件和hosts文件的問題,修改后同步到其他節(jié)點(diǎn)上以保持相同環(huán)境,再接著執(zhí)行格式化操作
執(zhí)行腳本命令群起節(jié)點(diǎn)
cd /home/hadoop/sbin #群起節(jié)點(diǎn) ./start-all.sh
啟動HDFS后,可以發(fā)現(xiàn)jack20節(jié)點(diǎn)作為NameNode,?Node1、?Node2作為DataNode,而Node1也作為輔助NameNode?(?Secondary?NameNode?)。可以通過jps命令在各節(jié)點(diǎn)上驗(yàn)證HDFS是否啟動。jps?也是Windows中的命令,表示開啟的Java進(jìn)程如果出現(xiàn)下圖所示的結(jié)果,就表示驗(yàn)證成功。
客戶端Web訪問測試:
(1)RMwebUI界面http://IP:8088
(2)NameNode的webUI界面http://IP:50070
6.集群基準(zhǔn)測試
(1)使用Hadoop自帶的WordCount例子/share/Hadoop/mapredu?icehadoop-mapreduce-examples-3.1.1.jar驗(yàn)證集群
#創(chuàng)建目錄,目錄/data/wordcount用來存儲Hadoop自帶的WordCount例子的數(shù)據(jù)文件,運(yùn)行這個(gè)MapReduce任務(wù)的結(jié)果輸出到目錄中的/output/wordcount文件中 hdfs dfs -mkdir -p /data/wordcount hdfs dfs -mkdir -p /output/ #將本地文件上傳到HDFS中(這里上傳一個(gè)配置文件),執(zhí)行如下命令 hdfs dfs -put /home/hadoop/etc/hadoop/core-site.xml /data/wordcount
可以查看,上傳后的文件情況,執(zhí)行如下命令
hdfs dfs -ls /data/wordcount
下面運(yùn)行WordCount案例,執(zhí)行如下命令
hadoop jar /home/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.1.jar wordcount /data/wordcount /output/wordcount
(2)DFSIO測試
使用hadoop的DFSIO寫入50個(gè)文件,每個(gè)文件1000M
hadoop jar /home/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.1.1-tests.jar TestDFSIO -write -nrFiles 50 -filesize 1000
可以在RMwebUI界面查看當(dāng)前任務(wù)的基本情況,包括內(nèi)存使用量,CPU使用量等
在NameNode的webUI界面查看剛剛DFSIO測試的各個(gè)節(jié)點(diǎn)HDFS占用情況
(3)計(jì)算圓周率的大小
hadoop jar /home/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.1.1-tests.jar pi 20 20
靜靜等待結(jié)果就可以~
Hadoop 分布式 鯤鵬
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。