一终蒂、 大數(shù)據(jù)簡介
1. 大數(shù)據(jù)的定義
?數(shù)據(jù)是指?法在?定時(shí)間范圍內(nèi)?常規(guī)軟件?具進(jìn)?捕捉散休、管理和處理的數(shù)據(jù)集合,是需要新處理模式才能具有更強(qiáng)的決策?、洞察發(fā)現(xiàn)?和流程優(yōu)化能?的海量、?增?率和多樣化的信息資產(chǎn)扳炬。
2. 大數(shù)據(jù)的特點(diǎn)
?數(shù)據(jù)的特點(diǎn)可以? IBM 曾經(jīng)提出的 “5V” 來描述,如下:
-
大量
采集、存儲和計(jì)算的數(shù)據(jù)量都?常?虽填。大數(shù)據(jù)領(lǐng)域數(shù)據(jù)量基本上以PB為最小單位,而PB級數(shù)據(jù)量有多?曹动?是怎樣的?個(gè)概念斋日?
假如?機(jī)播放MP3的速度為平均每分鐘1MB,?1?歌曲的平均時(shí)?為4分鐘墓陈,那么1PB存量的歌 曲可以連續(xù)播放2000年恶守。
1PB 也相當(dāng)于50%的全美學(xué)術(shù)研究圖書館藏書咨詢內(nèi)容。
基于IDC的報(bào)告預(yù)測贡必,從2013年到2020年兔港,全球數(shù)據(jù)量會從4.4ZB猛增到44ZB!?到了2025 年仔拟,全球會有163ZB的數(shù)據(jù)量衫樊!根據(jù)存儲單位換算,1ZB = 1024 * 1024PB理逊,所以全球的數(shù)據(jù)量已經(jīng)?到爆了橡伞!?傳統(tǒng)的關(guān)系型數(shù)據(jù)庫根本處理不了如此海量的數(shù)據(jù)!
-
高速
在?數(shù)據(jù)時(shí)代晋被,數(shù)據(jù)的創(chuàng)建兑徘、存儲、分析都要求被?速處理羡洛,?如電商?站的個(gè)性化推薦盡可能要 求實(shí)時(shí)完成推薦挂脑,這也是?數(shù)據(jù)區(qū)別于傳統(tǒng)數(shù)據(jù)挖掘的顯著特征。
-
多樣
數(shù)據(jù)形式和來源多樣化欲侮。包括結(jié)構(gòu)化崭闲、半結(jié)構(gòu)化和?結(jié)構(gòu)化數(shù)據(jù),具體表現(xiàn)為?絡(luò)?志威蕉、?頻刁俭、視頻、圖?韧涨、地理位置信息等等牍戚,多類型的數(shù)據(jù)對數(shù)據(jù)的處理能?提出了更?的要求侮繁。
-
真實(shí)
確保數(shù)據(jù)的真實(shí)性,才能保證數(shù)據(jù)分析的正確性
-
低價(jià)值
數(shù)據(jù)價(jià)值密度相對較低如孝,或者說是浪?淘沙卻?彌?珍貴宪哩。互聯(lián)?發(fā)展催?了?量數(shù)據(jù)第晰,信息海 量锁孟,但價(jià)值密度較低,如何結(jié)合業(yè)務(wù)邏輯并通過強(qiáng)?的機(jī)器算法來挖掘數(shù)據(jù)價(jià)值茁瘦,是?數(shù)據(jù)時(shí)代最 需要解決的問題品抽,也是?個(gè)有難度的課題。
3. 大數(shù)據(jù)的應(yīng)用場景
隨著?數(shù)據(jù)的發(fā)展腹躁,?數(shù)據(jù)技術(shù)已經(jīng)?泛應(yīng)?在眾多?業(yè)桑包,?如倉儲物流、電商零售纺非、汽?哑了、電信、?物醫(yī)學(xué)烧颖、??智能弱左、智慧城市等等領(lǐng)域,包括在疫情防控戰(zhàn)中炕淮,?數(shù)據(jù)技術(shù)也發(fā)揮了重要的作?拆火。
- 倉儲物流
- 電商零售
- 個(gè)性推薦
- “雙十一購物節(jié)”實(shí)時(shí)銷售額大屏
- 汽車無人駕駛領(lǐng)域
- 電信
- 生物醫(yī)學(xué)
- 人工智能
- 智慧城市
二、 Hadoop簡介
1. 什么是Hadoop
Hadoop 是?個(gè)適合?數(shù)據(jù)的分布式存儲和計(jì)算平臺涂圆。
從狹義上講: Hadoop 就是一個(gè)框架平臺们镜,它包括以下三部分:
HDFS:分布式文件系統(tǒng)
Map Reduce:分布式離線計(jì)算框架。負(fù)責(zé)計(jì)算
Yarn:分布式資源調(diào)度框架润歉,負(fù)責(zé)資源調(diào)度
由此我們可以得出模狭,狹義上的Hadoop解決的是海量數(shù)據(jù)的存儲和離線計(jì)算
從廣義上講: Hadoop不僅僅包括狹義上的內(nèi)容,還包括其他輔助框架踩衩,實(shí)際上指的是一個(gè)大數(shù)據(jù)生態(tài)圈,例如:
- Flume:日志數(shù)據(jù)采集
- Sqoop:關(guān)系型數(shù)據(jù)庫數(shù)據(jù)采集(ETL工具
- Hive:數(shù)據(jù)倉庫工具
- Kafka:高吞吐消息中間件
- HBase:海量列式非關(guān)系型數(shù)據(jù)庫
2. Hadoop的特點(diǎn)
3. Hadoop的發(fā)行版本
?前Hadoop發(fā)?版?常多嚼鹉,在企業(yè)中主要?到的三個(gè)版本分別是:Apache Hadoop版本(最原始的,所有發(fā)?版均基于這個(gè)版 本進(jìn)?改進(jìn))驱富、Cloudera版本(Cloudera’s Distribution Including Apache Hadoop锚赤,簡稱“CDH”)、 Hortonworks版本(Hortonworks Data Platform褐鸥,簡稱“HDP”)线脚。
-
Apache Hadoop 原始版本
官?地址:http://hadoop.apache.org/
優(yōu)點(diǎn):擁有全世界的開源貢獻(xiàn),代碼更新版本?較快
缺點(diǎn):版本的升級,版本的維護(hù)酒贬,以及版本之間的兼容性又憨,學(xué)習(xí)?常?便
Apache所有軟件的下載地址(包括各種歷史版本):http://archive.apache.org/dist/
-
軟件收費(fèi)版本ClouderaManager CDH版本 --?產(chǎn)環(huán)境使?
官?地址:https://www.cloudera.com/
Cloudera主要是美國?家?數(shù)據(jù)公司在Apache開源Hadoop的版本上翠霍,通過??公司內(nèi)部的各種 補(bǔ)丁锭吨,實(shí)現(xiàn)版本之間的穩(wěn)定運(yùn)?,?數(shù)據(jù)?態(tài)圈的各個(gè)版本的軟件都提供了對應(yīng)的版本寒匙,解決了版 本的升級困難零如,版本兼容性等各種問題,?產(chǎn)環(huán)境強(qiáng)烈推薦使?
-
免費(fèi)開源版本HortonWorks HDP版本--?產(chǎn)環(huán)境使?
Hortonworks主要是雅?主導(dǎo)Hadoop開發(fā)的副總裁锄弱,帶領(lǐng) ???個(gè)核?成員成?Hortonworks考蕾,核?產(chǎn)品軟件HDP(ambari),HDF免費(fèi)開源会宪,并且提供 ?整套的web管理界?肖卧,供我們可以通過web界?管理我們的集群狀態(tài)
web管理界?軟件HDF? 址(http://ambari.apache.org/)
4. Apache Hadoop版本更迭
0.x 系列版本:Hadoop當(dāng)中最早的?個(gè)開源版本,在此基礎(chǔ)上演變?來的1.x以及2.x的版本
1.x 版本系列:Hadoop版本當(dāng)中的第?代開源版本掸鹅,主要修復(fù)0.x版本的?些bug等
2.x 版本系列:架構(gòu)產(chǎn)?重?變化塞帐,引?了yarn平臺等許多新特性
3.x 版本系列:EC技術(shù)、YARN的時(shí)間軸服務(wù)等新特性
5. Hadoop的優(yōu)缺點(diǎn)
Hadoop的優(yōu)點(diǎn)
- Hadoop具有存儲和處理數(shù)據(jù)能?的?可靠性巍沙。
- Hadoop通過可?的計(jì)算機(jī)集群分配數(shù)據(jù)葵姥,完成存儲和計(jì)算任務(wù),這些集群可以?便地?cái)U(kuò)展到數(shù)以千計(jì)的節(jié)點(diǎn)中句携,具有?擴(kuò)展性榔幸。
- Hadoop能夠在節(jié)點(diǎn)之間進(jìn)?動態(tài)地移動數(shù)據(jù),并保證各個(gè)節(jié)點(diǎn)的動態(tài)平衡矮嫉,處理速度?诚髋兀快,具有?效性蠢笋。
- Hadoop能夠?動保存數(shù)據(jù)的多個(gè)副本拨齐,并且能夠?動將失敗的任務(wù)重新分配,具有?容錯(cuò)性挺尿。
Hadoop的缺點(diǎn)
- Hadoop不適?于低延遲數(shù)據(jù)訪問奏黑。
- Hadoop不能?效存儲?量??件。
- Hadoop不?持多?戶寫?并任意修改?件编矾。
6. Apache Hadoop的重要組成
Hadoop=HDFS(分布式?件系統(tǒng))+MapReduce(分布式計(jì)算框架)+Yarn(資源協(xié)調(diào)框架)+Common模塊
6.1 HDFS
Hadoop Distribute File System熟史,?個(gè)?可靠、?吞吐量的分布式?件系統(tǒng)
-
分而治之思想窄俏,數(shù)據(jù)切割蹂匹、制作副本、分散儲存
圖中涉及到的角色:
- NameNode(nn): 存儲?件的元數(shù)據(jù)凹蜈,?如?件名限寞、?件?錄結(jié)構(gòu)忍啸、?件屬性(?成時(shí)間、副本 數(shù)履植、?件權(quán)限)计雌,以及每個(gè)?件的塊列表和塊所在的DataNode等。
- **SecondaryNameNode(2nn): **輔助NameNode更好的?作玫霎,?來監(jiān)控HDFS狀態(tài)的輔助后臺程 序凿滤,每隔?段時(shí)間獲取HDFS元數(shù)據(jù)快照。
- DataNode(dn): 在本地?件系統(tǒng)存儲?件塊數(shù)據(jù)庶近,以及塊數(shù)據(jù)的校驗(yàn)
注: NN翁脆,2NN,DN這些既是??名稱,進(jìn)程名稱鼻种,代指電腦節(jié)點(diǎn)名稱反番!
6.2 MapReduce
MapReduce計(jì)算 = Map階段 + Reduce階段
Map階段就是“分”的階段,負(fù)責(zé)并行處理輸入數(shù)據(jù)
-
Reduce階段就是“合”的階段叉钥,對Map階段結(jié)果進(jìn)行匯總
從圖中我們可以看出罢缸,MapReduce就是一個(gè)分布式的離線計(jì)算框架,將一個(gè)任務(wù)進(jìn)行拆解沼侣,分散處理祖能,最終匯總結(jié)果,做到一臺機(jī)器處理不了蛾洛,那就將任務(wù)拆解成多個(gè)任務(wù)养铸,利用多臺機(jī)器進(jìn)行處理,最終匯總各臺機(jī)器的處理結(jié)果轧膘。
6.3 Yarn
作業(yè)調(diào)度與集群資源管理的框架
圖中涉及到的角色:
- ResourceManager(rm): 處理客戶端請求钞螟、啟動/監(jiān)控ApplicationMaster、監(jiān)控NodeManager谎碍、資 源分配與調(diào)度鳞滨;
- NodeManager(nm): 單個(gè)節(jié)點(diǎn)上的資源管理、處理來?ResourceManager的命令蟆淀、處理來? ApplicationMaster的命令拯啦;
- ApplicationMaster(am): 數(shù)據(jù)切分、為應(yīng)?程序申請資源熔任,并分配給內(nèi)部任務(wù)褒链、任務(wù)監(jiān)控與容錯(cuò)。
- Container: 對任務(wù)運(yùn)?環(huán)境的抽象疑苔,封裝了CPU甫匹、內(nèi)存等多維資源以及環(huán)境變量、啟動命令等任務(wù)運(yùn) ?相關(guān)的信息。
- ResourceManager是??兵迅,NodeManager是?弟抢韭,ApplicationMaster是計(jì)算任務(wù)專員。
注: 和HDFS一樣恍箭,這些角色既是??名稱刻恭,進(jìn)程名稱,也代指電腦節(jié)點(diǎn)名稱季惯!
6.4 Common
?持其他模塊的?具模塊(Configuration吠各、RPC、序列化機(jī)制勉抓、?志操作)
三、 Hadoop集群搭建
-
軟件和操作系統(tǒng)版本
- Hadoop框架是采?Java語?編寫候学,需要java環(huán)境(jvm)
- JDK版本:JDK8版本
-
Hadoop搭建方式
- 單機(jī)模式:單節(jié)點(diǎn)模式藕筋,?集群,?產(chǎn)不會使?這種?式
- 單機(jī)偽分布式模式:單節(jié)點(diǎn)梳码,多線程模擬集群的效果隐圾,?產(chǎn)不會使?這種?式
- 完全分布式模式:多臺節(jié)點(diǎn),真正的分布式Hadoop集群的搭建(?產(chǎn)環(huán)境建議使?這種?式)
1. 虛擬機(jī)環(huán)境準(zhǔn)備
三臺虛擬機(jī)(靜態(tài)IP掰茶,關(guān)閉防?墻暇藏,修改主機(jī)名,配置免密登錄濒蒋,集群時(shí)間同步)
-
在/opt?錄下創(chuàng)建?件夾
# 軟件安裝包存放?錄 mkdir -p /opt/lagou/software # 軟件安裝?錄 mkdir -p /opt/lagou/servers
-
Hadoop下載地址:
https://archive.apache.org/dist/hadoop/common/hadoop-2.9.2/
Hadoop官?地址:
http://hadoop.apache.org/
2. 集群規(guī)劃
框架 | linux121 | linux122 | linux123 |
---|---|---|---|
HDFS | NameNode盐碱、DataNode | DataNode | SecondaryNameNode、DataNode |
YARN | NodeManager | NodeManager | NodeManager沪伙、ResourceManager |
3. 安裝Hadoop
-
登錄linux121節(jié)點(diǎn)瓮顽;進(jìn)?/opt/lagou/software,解壓安裝?件到/opt/lagou/servers
tar -zxvf hadoop-2.9.2.tar.gz -C /opt/lagou/servers
-
添加Hadoop到環(huán)境變量 vim /etc/profile
# HADOOP_HOME export HADOOP_HOME=/opt/lagou/servers/hadoop-2.9.2 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin
-
使環(huán)境變量?效
source /etc/profile
-
驗(yàn)證hadoop
hadoop version
校驗(yàn)結(jié)果:
-
hadoop?錄
上圖中標(biāo)注的目錄解釋:
1:bin?錄:對Hadoop進(jìn)?操作的相關(guān)命令,如hadoop,hdfs等
2:etc?錄:Hadoop的配置?件?錄围橡,?hdfs-site.xml,core-site.xml等
3:lib?錄:Hadoop本地庫(解壓縮的依賴)
4:sbin?錄:存放的是Hadoop集群啟動停?相關(guān)腳本暖混,命令
5:share?錄:Hadoop的?些jar,官?案例jar,?檔等
4. 集群配置
Hadoop集群配置 = HDFS集群配置 + MapReduce集群配置 + Yarn集群配置
-
HDFS集群配置
- 將JDK路徑明確配置給HDFS(修改hadoop-env.sh)
- 指定NameNode節(jié)點(diǎn)以及數(shù)據(jù)存儲?錄(修改core-site.xml)
- 指定SecondaryNameNode節(jié)點(diǎn)(修改hdfs-site.xml)
- 指定DataNode從節(jié)點(diǎn)(修改etc/hadoop/slaves?件翁授,每個(gè)節(jié)點(diǎn)配置信息占??)
-
MapReduce集群配置
- 將JDK路徑明確配置給MapReduce(修改mapred-env.sh)
- 指定MapReduce計(jì)算框架運(yùn)?Yarn資源調(diào)度框架(修改mapred-site.xml)
-
Yarn集群配置
- 將JDK路徑明確配置給Yarn(修改yarn-env.sh)
- 指定ResourceManager??節(jié)點(diǎn)所在計(jì)算機(jī)節(jié)點(diǎn)(修改yarn-site.xml)
- 指定NodeManager節(jié)點(diǎn)(會通過slaves?件內(nèi)容確定)
4.1 HDFS集群配置
- 進(jìn)入配置文件目錄
cd /opt/lagou/servers/hadoop-2.9.2/etc/hadoop
-
配置:hadoop-env.sh
將JDK路徑明確配置給HDFSvim hadoop-env.sh # 增加以下內(nèi)容 export JAVA_HOME=/opt/lagou/servers/jdk1.8.0_231
-
指定NameNode節(jié)點(diǎn)以及數(shù)據(jù)存儲?錄(修改core-site.xml)
官方默認(rèn)配置:https://hadoop.apache.org/docs/r2.9.2/hadoop-project-dist/hadoop-common/core-default.xml
官方默認(rèn)hdfs的RPC端口號是 8020拣播,這里改為9000vim core-site.xml # 增加以下內(nèi)容 <!-- 指定HDFS中NameNode的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://linux121:9000</value> </property> <!-- 指定Hadoop運(yùn)?時(shí)產(chǎn)??件的存儲?錄 --><property> <name>hadoop.tmp.dir</name> <value>/opt/lagou/servers/hadoop-2.9.2/data/tmp</value> </property>
-
指定secondarynamenode節(jié)點(diǎn)(修改hdfs-site.xml)
官方默認(rèn)配置:https://hadoop.apache.org/docs/r2.9.2/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
vim hdfs-site.xml # 增加以下內(nèi)容 <!-- 指定Hadoop輔助名稱節(jié)點(diǎn)主機(jī)配置 --> <property> <name>dfs.namenode.secondary.http-address</name> <value>linux123:50090</value> </property> <!--副本數(shù)量 --> <property> <name>dfs.replication</name> <value>3</value> </property>
-
指定datanode從節(jié)點(diǎn)(修改slaves?件,每個(gè)節(jié)點(diǎn)配置信息占??)
vim slaves # 增加以下內(nèi)容 linux121 linux122 linux123
注:該?件中添加的內(nèi)容結(jié)尾不允許有空格收擦,?件中不允許有空?
4.2 MapReduce集群配置
- 指定MapReduce使?的jdk路徑(修改mapred-env.sh)
vim mapred-env.sh # 增加以下內(nèi)容 export JAVA_HOME=/opt/lagou/servers/jdk1.8.0_231
- 指定MapReduce計(jì)算框架運(yùn)?Yarn資源調(diào)度框架(修改mapred-site.xml)
官方默認(rèn)配置:https://hadoop.apache.org/docs/r2.9.2/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml
# 復(fù)制一份mapred-site.xml.template并改名為mapred-site.xml cp mapred-site.xml.template mapred-site.xml # 修改mapred-site.xml vim mapred-site.xml # 增加以下內(nèi)容 <!-- 指定MR運(yùn)?在Yarn上 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
4.3 Yarn集群配置
- 指定JDK路徑
vim yarn-env.sh # 增加以下內(nèi)容 export JAVA_HOME=/opt/lagou/servers/jdk1.8.0_231
- 指定ResourceMnager的master節(jié)點(diǎn)信息(修改yarn-site.xml)
官方默認(rèn)配置:https://hadoop.apache.org/docs/r2.9.2/hadoop-yarn/hadoop-yarn-common/yarn-default.xml
vim yarn-site.xml # 增加以下內(nèi)容 <!-- 指定YARN的ResourceManager的地址 --> <property> <name>yarn.resourcemanager.hostname</name> <value>linux123</value> </property> <!-- Reducer獲取數(shù)據(jù)的?式 --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>
- 指定NodeManager節(jié)點(diǎn)
在HDFS配置時(shí)已經(jīng)配置了slaves?件贮配,此時(shí)無需配置
注意:
Hadoop安裝?錄所屬?戶和所屬?戶組信息,默認(rèn)是501 dialout炬守,?我們操作Hadoop集群的?戶使?的是虛擬機(jī)的root?戶牧嫉,所以為了避免出現(xiàn)信息混亂,修改Hadoop安裝?錄所屬?戶和?戶組!酣藻!
chown -R root:root /opt/lagou/servers/hadoop-2.9.2
4.4 分發(fā)配置
4.4.1 rsync 遠(yuǎn)程同步?具
rsync主要?于備份和鏡像曹洽。具有速度快、避免復(fù)制相同內(nèi)容和?持符號鏈接的優(yōu)點(diǎn)辽剧。
-
rsync和scp區(qū)別:
rsync做?件的復(fù)制要?scp的速度快
rsync只對差異?件做更新送淆。scp是把所有? 件都復(fù)制過去
rsync基本語法
rsync -rvl $pdir/$fname $user@$host:$pdir/$fname
命令 選項(xiàng)參數(shù) 要拷?的?件路徑/名稱 ?的?戶@主機(jī):?的路徑/名稱
-
選項(xiàng)參數(shù)說明
- -r :遞歸
- -v:顯示復(fù)制過程
- -l:拷?符號連接
-
rsync案例
-
三臺虛擬機(jī)安裝rsync (執(zhí)?安裝需要保證機(jī)器聯(lián)?)
yum install -y rsync
-
把linux121機(jī)器上的/opt/lagou/software?錄同步到linux122服務(wù)器的root?戶下的/opt/?錄
rsync -rvl /opt/lagou/software/root@linux122:/opt/lagou/software
-
4.4.2 集群分發(fā)腳本編寫
-
需求:循環(huán)復(fù)制?件到集群所有節(jié)點(diǎn)的相同?錄下
rsync命令原始拷?:
rsync -rvl /opt/module root@linux123:/opt/
期望腳本:腳本+要同步的?件名稱
說明:在/usr/local/bin這個(gè)?錄下存放的腳本,root?戶可以在系統(tǒng)任何地?直接執(zhí)?怕轿。
-
腳本實(shí)現(xiàn)
-
在/usr/local/bin?錄下創(chuàng)建?件rsync-script
touch rsync-script
-
在?件中編寫shell代碼
vim rsync-script
#!/bin/bash #1 獲取命令輸?參數(shù)的個(gè)數(shù)偷崩,如果個(gè)數(shù)為0,直接退出命令 paramnum=$# if((paramnum==0)); then echo no params; exit; fi #2 根據(jù)傳?參數(shù)獲取?件名稱 p1=$1 file_name=`basename $p1` echo fname=$file_name #3 獲取輸?參數(shù)的絕對路徑 pdir=`cd -P $(dirname $p1); pwd` echo pdir=$pdir #4 獲取?戶名稱 user=`whoami` #5 循環(huán)執(zhí)?rsync for((host=121; host<124; host++)); do echo ------------------- linux$host -------------- rsync -rvl $pdir/$file_name $user@linux$host:$pdir done
命令細(xì)節(jié)說明:
- basename 命令可取得文件的文件名撞羽,如:
basename /usr/local/bin/rsync-script
阐斜,則結(jié)果是rsync-script
- dirname 命令可取得文件所在目錄,如:
dirname /usr/local/bin/rsync-script
诀紊,則結(jié)果是/usr/local/bin
- 在腳本文件中要用 這對符號 ```` 獲取命令的結(jié)果谒出,然后才能賦值給變量 ,如:
file_name=`basename $p1`
- 在以下腳本中邻奠,如果拷貝文件的時(shí)候笤喳,文件名不帶路徑,那么
dirname
命令得到的結(jié)果是.
碌宴,表示當(dāng)前目錄杀狡。可以在此命令基礎(chǔ)上再加一條命令:cd -P
贰镣,表示進(jìn)入物理路徑呜象,如:cd -P .
,此時(shí)會進(jìn)入該目錄中八孝,然后通過pwd
打印出當(dāng)前目錄董朝,即可獲得該文件所在目錄的路徑,以下是一個(gè)例子:pdir=`cd -P $(dirname $p1); pwd`
- basename 命令可取得文件的文件名撞羽,如:
-
-
修改腳本 rsync-script 的執(zhí)行權(quán)限
chmod 777 rsync-script
-
調(diào)?腳本形式:rsync-script ?件名稱
rsync-script /usr/local/bin/rsync-script
-
調(diào)?腳本分發(fā)Hadoop安裝?錄到其它節(jié)點(diǎn)
rsync-script /opt/lagou/servers/hadoop-2.9.2
5. 啟動集群
注意: 如果集群是第?次啟動干跛,需要在Namenode所在節(jié)點(diǎn)格式化NameNode子姜,?第?次不?執(zhí)?格 式化Namenode操作!楼入!
- 格式化命令:
hadoop namenode -format
-
格式化命令執(zhí)?效果
- 格式化后創(chuàng)建的?件:
/opt/lagou/servers/hadoop-2.9.2/data/tmp/dfs/name/current
5.1 單節(jié)點(diǎn)啟動
- 在linux121上啟動NameNode
[root@linux121 hadoop-2.9.2]$ hadoop-daemon.sh start namenode [root@linux121 hadoop-2.9.2]$ jps 3461 NameNode 3608 Jps
- 在linux121哥捕、linux122以及l(fā)inux123上分別啟動DataNode
[root@linux121 hadoop-2.9.2]$ hadoop-daemon.sh start datanode [root@linux121 hadoop-2.9.2]$ jps 3461 NameNode 3608 Jps 3561 DataNode
[root@linux122 hadoop-2.9.2]$ hadoop-daemon.sh start datanode [root@linux122 hadoop-2.9.2]$ jps 3190 DataNode 3279 Jps
[root@linux123 hadoop-2.9.2]$ hadoop-daemon.sh start datanode [root@linux123 hadoop-2.9.2]$ jps 3237 Jps 3163 DataNode
-
web端查看Hdfs界?
查看HDFS集群正常節(jié)點(diǎn):
- Yarn集群單節(jié)點(diǎn)啟動
[root@linux123 servers]# yarn-daemon.sh start resourcemanager [root@linux123 servers]# yarn-daemon.sh start nodemanager [root@linux123 servers]# jps 7881 ResourceManager 8166 NodeManager8094 Jps
[root@linux122 servers]# yarn-daemon.sh start nodemanager [root@linux122 servers]# jps 8166 NodeManager 8223 Jps
[root@linux121 servers]# yarn-daemon.sh start nodemanager [root@linux121 servers]# jps 8166 NodeManager 8223 Jps
5.2 集群群起
-
啟動HDFS
[root@linux121 hadoop-2.9.2]$ sbin/start-dfs.sh [root@linux121 hadoop-2.9.2]$ jps 4166 NameNode 4482 Jps 4263 DataNode
[root@linux122 hadoop-2.9.2]$ jps 3218 DataNode 3288 Jps
[root@linux123 hadoop-2.9.2]$ jps 3221 DataNode 3283 SecondaryNameNode 3364 Jps
-
啟動YARN
[root@linux122 hadoop-2.9.2]$ sbin/start-yarn.sh
注意:
- HDFS啟動腳本應(yīng)該在NameNode上執(zhí)行
- YARN啟動腳本應(yīng)該在ResouceManager上執(zhí)行
- 集群群起要以配置ssh為前提,否則無法群起
5.3 Hadoop集群啟動停?命令匯總
-
分別啟動/停?HDFS組件
hadoop-daemon.sh start / stop namenode / datanode / secondarynamenode
-
啟動/停?YARN
yarn-daemon.sh start / stop resourcemanager / nodemanager
-
整體啟動/停?HDFS—>常用
start-dfs.sh / stop-dfs.sh
-
整體啟動/停?YARN—>常用
start-yarn.sh / stop-yarn.sh
6. 集群測試
-
HDFS 分布式存儲初體驗(yàn)
# 從linux本地?件系統(tǒng)上傳下載?件驗(yàn)證HDFS集群?作正常 # 在hdfs創(chuàng)建一個(gè)目錄 hdfs dfs -mkdir -p /test/input #本地hoome?錄創(chuàng)建?個(gè)?件 cd /root vim test.txt hello hdfs #上傳linxu?件到Hdfs hdfs dfs -put /root/test.txt /test/input #從Hdfs下載?件到linux本地 hdfs dfs -get /test/input/test.txt
-
MapReduce 分布式計(jì)算初體驗(yàn)
# 在HDFS?件系統(tǒng)根?錄下?創(chuàng)建?個(gè)wcinput?件夾 hdfs dfs -mkdir /wcinput # 在/root/?錄下創(chuàng)建?個(gè)wc.txt?件(本地?件系統(tǒng)) cd /root/ touch wc.txt # 編輯wc.txt?件 vim wc.txt # 在?件中輸?如下內(nèi)容 hadoop mapreduce yarn hdfs hadoop mapreduce mapreduce yarn lagou lagou lagou # 上傳wc.txt到Hdfs?錄/wcinput下 hdfs dfs -put wc.txt /wcinput # 回到Hadoop?錄/opt/lagou/servers/hadoop-2.9.2 cd /opt/lagou/servers/hadoop-2.9.2 # 執(zhí)?程序 hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount /wcinput /wcoutput # 查看結(jié)果 hdfs dfs -cat /wcoutput/part-r-00000 # 結(jié)果如下 hadoop 2 hdfs 1 lagou 3 mapreduce 3 yarn 2
7. 配置歷史服務(wù)器
在Yarn中運(yùn)?的任務(wù)產(chǎn)?的?志數(shù)據(jù)不能查看嘉熊,為了查看程序的歷史運(yùn)?情況遥赚,需要配置?下歷史?志 服務(wù)器。具體配置步驟如下:
- 配置mapred-site.xml
vim mapred-site.xml # 增加以下內(nèi)容 <!-- 歷史服務(wù)器端地址 --> <property> <name>mapreduce.jobhistory.address</name> <value>linux121:10020</value> </property> <!-- 歷史服務(wù)器web端地址 --> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>linux121:19888</value> </property>
- 分發(fā)mapred-site.xml到其它節(jié)點(diǎn)
rsync-script mapred-site.xml
- 啟動歷史服務(wù)器
sbin/mr-jobhistory-daemon.sh start historyserver
- 查看歷史服務(wù)器是否啟動
jps
- 查看JobHistory
http://linux121:19888/jobhistory
8. 配置?志的聚集
- ?志聚集:應(yīng)?(Job)運(yùn)?完成以后阐肤,將應(yīng)?運(yùn)??志信息從各個(gè)task匯總上傳到HDFS系統(tǒng)上凫佛。
- ?志聚集功能好處:可以?便的查看到程序運(yùn)?詳情讲坎,?便開發(fā)調(diào)試。
注意: 開啟?志聚集功能愧薛,需要重新啟動NodeManager 晨炕、ResourceManager和HistoryManager。
開啟?志聚集功能具體步驟如下:
- 配置yarn-site.xml
vim yarn-site.xml # 增加以下內(nèi)容 <!-- ?志聚集功能使能 --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!-- ?志保留時(shí)間設(shè)置7天 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property>
- 分發(fā)yarn-site.xml到集群其它節(jié)點(diǎn)
rsync-script yarn-site.xml
- 關(guān)閉NodeManager 毫炉、ResourceManager和HistoryManager
[root@linux121 hadoop-2.9.2]$ sbin/yarn-daemon.sh stop resourcemanager [root@linux121 hadoop-2.9.2]$ sbin/yarn-daemon.sh stop nodemanager [root@linux121 hadoop-2.9.2]$ sbin/mr-jobhistory-daemon.sh stop historyserver
- 啟動NodeManager 瓮栗、ResourceManager和HistoryManager
[root@linux121 hadoop-2.9.2]$ sbin/yarn-daemon.sh start resourcemanager [root@linux121 hadoop-2.9.2]$ sbin/yarn-daemon.sh start nodemanager [root@linux121 hadoop-2.9.2]$ sbin/mr-jobhistory-daemon.sh start historyserver
- 刪除HDFS上已經(jīng)存在的輸出?件
bin/hdfs dfs -rm -R /wcoutput
- 執(zhí)?WordCount程序
hadoop jar share/hadoop/mapreduce/hadoopmapreduce-examples-2.9.2.jar wordcount /wcinput /wcoutput
- 查看?志,如圖所示
地址:http://linux121:19888/jobhistory
對大數(shù)據(jù)感興趣的小伙伴可以關(guān)注我的公眾號:大數(shù)據(jù)學(xué)習(xí)寶典瞄勾,在上面會定期更新學(xué)習(xí)筆記和一些心得费奸!