前言
回顧之前講了python語法編程 ,必修入門基礎(chǔ)和網(wǎng)絡(luò)編程,多線程/多進(jìn)程/協(xié)程等方面的內(nèi)容,后續(xù)講到了數(shù)據(jù)庫編程篇MySQL,Redis,MongoDB篇,和機(jī)器學(xué)習(xí),全棧開發(fā),數(shù)據(jù)分析前面沒看的也不用往前翻,系列文已經(jīng)整理好了:
1.跟我一起從零開始學(xué)python(一)編程語法必修
2.跟我一起從零開始學(xué)python(二)網(wǎng)絡(luò)編程
3.跟我一起從零開始學(xué)python(三)多線程/多進(jìn)程/協(xié)程
4.跟我一起從零開始學(xué)python(四)數(shù)據(jù)庫編程:MySQL數(shù)據(jù)庫
5.跟我一起從零開始學(xué)python(五)數(shù)據(jù)庫編程:Redis數(shù)據(jù)庫
6.跟我一起從零開始學(xué)python(六)數(shù)據(jù)庫編程:MongoDB數(shù)據(jù)庫
7.跟我一起從零開始學(xué)python(七)機(jī)器學(xué)習(xí)
8.跟我一起從零開始學(xué)python(八)全棧開發(fā)
9.跟我一起從零開始學(xué)python(九)數(shù)據(jù)分析
本系列文根據(jù)以下學(xué)習(xí)路線展開講述,由于內(nèi)容較多,:
從零開始學(xué)python到高級進(jìn)階路線圖
關(guān)注我:python技術(shù)訓(xùn)練營,學(xué)習(xí)進(jìn)階一步到位
適用于零基礎(chǔ)學(xué)習(xí)和進(jìn)階人群的python資源:文章來源:http://www.zghlxwxcb.cn/news/detail-672557.html
① 騰訊認(rèn)證python完整項(xiàng)目實(shí)戰(zhàn)教程筆記PDF
② 十幾個大廠python面試專題PDF
③ python全套視頻教程(零基礎(chǔ)-高級進(jìn)階JS逆向)
④ 百個項(xiàng)目實(shí)戰(zhàn)+源碼+筆記
⑤ 編程語法-機(jī)器學(xué)習(xí)-全棧開發(fā)-數(shù)據(jù)分析-爬蟲-APP逆向等全套項(xiàng)目+文檔文章來源地址http://www.zghlxwxcb.cn/news/detail-672557.html
推薦收藏!2萬字圖解Hadoop
今天我用圖解的方式講解Hadoop的用法,內(nèi)容較長建議收藏,梳理不易,點(diǎn)贊支持。
學(xué)習(xí) Python 編程,給我的經(jīng)驗(yàn)就是:技術(shù)要學(xué)會分享、交流,不建議閉門造車。一個人可能走的很快、但一堆人可以走的更遠(yuǎn)。
第一部分:初識Hadoop
1.Hadoop介紹
- Hadoop是一個由Apache基金會所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)。
- 主要解決海量數(shù)據(jù)的存儲和海量數(shù)據(jù)的分析計(jì)算的問題。
- 廣義上來說,Hadoop 通常是指一個更廣泛的概念——Hadoop 生態(tài)圈。
2.Hadoop的版本
hadoop的三大發(fā)行版本:Apache、Cloudera、Hortonworks。
- Apache版本最原始(最基礎(chǔ)),對入門學(xué)習(xí)最好。
- Cloudera內(nèi)部集成了很多大數(shù)據(jù)框架,對應(yīng)產(chǎn)品CDH。
- Hortonworks文檔較好,對應(yīng)產(chǎn)品HDP 。
- Hortonwork和Cloudera合并
3.Hadoop的特點(diǎn)
高可靠性:Hadoop底層維護(hù)多個數(shù)據(jù)副本,即使某個計(jì)算單元存儲出現(xiàn)故障,也不會導(dǎo)致數(shù)據(jù)丟失。
- 高拓展性:在集群之間分配任務(wù)數(shù)據(jù),可方便的擴(kuò)展數(shù)以萬計(jì)節(jié)點(diǎn)。
- 高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任務(wù)處理速度。
- 高容錯性:能夠自動將失敗的任務(wù)重新分配。
4.Hadoop的組成
Hadoop1.X版本的組成,MapReduce負(fù)責(zé)計(jì)算和計(jì)算所需的cpu、內(nèi)存等資源的調(diào)度
Hadoop2.X版本的組成,增加了Yarn進(jìn)行資源調(diào)度,原來的MapReduce只負(fù)責(zé)計(jì)算。
Hadoop3.X版本的組成沒啥區(qū)別,在細(xì)節(jié)上還是有區(qū)別的。
5.HDFS
HDFS(Hadoop Distributed File System)是一個分布式文件系統(tǒng)。
大致是這樣的:將一個很大的文件拆成很多部分,然后存儲在一個個DataNode中,而NameNode中只存儲DataNode的位置信息,2NN對NameNode進(jìn)行備份(害怕NameNode掛掉,然后丟失所有信息。)
- NameNode(nn):存儲文件的元數(shù)據(jù),如文件名、文件目錄結(jié)構(gòu)、文件屬性,以及每個文件的塊列表和塊所在的DataNode等。
- DataNode(dn):在本地文件系統(tǒng)存儲文件塊數(shù)據(jù),以及塊數(shù)據(jù)的校驗(yàn)和。
- Secondary NameNode(2nn):每隔一段時間對NameNode進(jìn)行備份。
6.YARN
YARN(Yet Another Resource Negotiator),是一種資源協(xié)調(diào)者,是Hadpood的資源管理器。
- ResourceManager(RM):整個集群資源(內(nèi)存、CPU)的老大。
- NodeManager(NM):單個節(jié)點(diǎn)服務(wù)器資源老大。
- ApplicationMaster(AM):單個任務(wù)運(yùn)行的老大。
- client:客戶端
- Container:容器,相當(dāng)于一臺獨(dú)立的服務(wù)器,里面封裝了運(yùn)行所需的資源,如內(nèi)存、CPU、磁盤、網(wǎng)絡(luò)等。
- 客戶端可有多個、集群上可有運(yùn)行多個ApplicationMaster、每個NodeManager上可以有多個Container.
7.MapReduce
MapReduce將計(jì)算過程劃分為兩個階段:MAP和Reduce
1.Map階段并行處理輸入數(shù)據(jù)。
2.Reduce階段對Map結(jié)果進(jìn)行匯總。
100T的數(shù)據(jù)已經(jīng)被分被存儲到很多臺服務(wù)器上,如果需要找尋某個資料,我們就可以要求各個服務(wù)器并行尋找自己的電腦上有沒有對應(yīng)的內(nèi)容,然后把結(jié)果告訴匯總服務(wù)器。
8.HDFS、YARN和MapReduce三者的關(guān)系
9.大數(shù)據(jù)處理的過程
第二部分:Hadoop之配置java與hadoop環(huán)境
我們學(xué)習(xí)hapood,需要在系統(tǒng)中配置JAVA和Hadoop環(huán)境,今天我們就來使用Xshell配置對應(yīng)環(huán)境。一個hadoop服務(wù)器需要這些東西,我們今天的文章只配置java和hadoop環(huán)境。
1.打開虛擬機(jī)連接xshell
我這里有三臺hadoop虛擬機(jī),我們來配置其中一臺的環(huán)境,其他2臺利用復(fù)制的手段就能夠安裝完成。我們先來配置hadoop103的環(huán)境。
打開Xshell連接上hadoop103.
2.進(jìn)入到我們安裝軟件的文件夾
這里的文件夾可以自己設(shè)置,只要記得自己東西在哪就行,我一般放在/opt/software目錄下。
3.將文件復(fù)制到該目錄下
我們這里使用Xftp將文件從window下拷貝進(jìn)來,點(diǎn)擊Xftp,
把java壓縮包和hadoop壓縮包拖過來。
傳輸完成后我們看看linux中有這倆包嗎?
4.解壓縮文件安裝java的JDK
將JDK解壓到 /opt/modul/文件夾下
tar - zxvf jdk-8u212-linux-x64.tar.gz -c/opt/modul/
然后就會出來解壓過程,等他完成就行。
我們來到解壓縮的文件夾下,看到文件已經(jīng)復(fù)制成功。
cd/opt/moudl/
5.配置java的JDK的環(huán)境變量
使用命令進(jìn)入環(huán)境變量文件夾
cd jdk1.8.0_212/
sudo cd /etc/profile.d/
11
這個樣子:
我們在這里創(chuàng)建一個.sh結(jié)尾的文件,將它放在這里,然后系統(tǒng)啟動時就會加載這個文件,從而加載環(huán)境變量。
sudo vim my_env.sh
在文件里輸入以下內(nèi)容:
#JAVA_HOME
JAVA_HOME=/opt/moudl/jdk1.8.0_212
exprot PATH:$JAVA_HOME/bin
輸入完之后保存關(guān)閉
保存完畢重啟服務(wù)
source /etc/profile
java
重啟后輸入java就行。
出現(xiàn)以下內(nèi)容說明成功!
6.解壓縮Hadoop的壓縮包
將hadoop解壓到 /opt/moudl/文件夾下
tar -zxvf hadoop-3.1.3.tar.gz -c/opt/modul/
結(jié)果如下:
然后又出現(xiàn)復(fù)制的過程信息。就行了。
7.配置Hadoop的環(huán)境變量
cd/opt/modul/hadoop-3.1.3/
來到該文件夾下后
修改環(huán)境變量文件。
sudo vim /etc/profile.d/my_env.sh
添加如下內(nèi)容
#HADOOP_HOOM
export HADOOP _HOOM =/opt/modul/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOOM/sbin
添加完后是這樣的
保存之后重啟資源
source /etc/profile
hapood
出來一大串就成功了
配置結(jié)束
第三部分:Hadoop之文件復(fù)制scp和同步rsync
眾所周知,Hadoop主要有三種運(yùn)行模式
- 單機(jī)模式(服務(wù)器一臺,數(shù)據(jù)由linux管理)
- 偽分布式模式(服務(wù)器一臺,數(shù)據(jù)由HDFS管理)
- 完全分布式模式(服務(wù)器節(jié)點(diǎn)很多,數(shù)據(jù)分布在多臺設(shè)備HDFS管理)
目前主要學(xué)習(xí)完全分布式模式。配置完全分布式的步驟如下:
我們這一章主要是進(jìn)行文件的拷貝(因?yàn)橹煌瓿闪艘慌_客戶機(jī)的環(huán)境配置)
1.scp介紹命令
可以實(shí)現(xiàn)服務(wù)器與服務(wù)器數(shù)據(jù)之間的拷貝
scp -r $pdir/$fname $user@host:$pdir/$fname
命令 遞歸 要拷貝的文件名/名稱 目的地用戶/主機(jī):目的的路徑/名稱
2.拷貝文件
2.1我們將hadoop102上的文件拷貝到hadoop103上
scp -r jdk1.8.0_212/ liuc1997@hadoop103:/opt/modul/
然后叫你輸入密碼,就開始復(fù)制了。來hadoop103看一下,復(fù)制成功!
2.2 我們這次在hadoop103上將hadoop102上的文件拿過來
scp -r liuc1997@hadoop102:/opt/modul/hadoop-3.1.3 ./
然后就會叫你輸入hadoop102的密碼。
然后就會出現(xiàn)復(fù)制的進(jìn)程,最后結(jié)束后查看一下:
沒有問題。
2.3利用hadoop103將hadoop102的數(shù)據(jù)拷貝到hadoop104上
這是兩個跟自己毫無關(guān)系的服務(wù)器也可以操控他們。
scp -r liuc1997@hadoop102:/opt/modul/* liuc1997@hadoop104:/opt/modul/
依次輸入hadoop102和hadoop104的密碼
然后就開始了。來到hadoop104上看一下,復(fù)制成功。
2.rsync介紹命令
上面介紹的復(fù)制命令scp是指把整個文件夾都拷貝過來,而同步是指對兩個文件的差異部分進(jìn)行更新。 第一次同步等同于拷貝
可以實(shí)現(xiàn)服務(wù)器與服務(wù)器數(shù)據(jù)之間的同步
rsync -av $pdir/$fname $user@host:$pdir/$fname
命令 顯示復(fù)制過程 要同步的文件名/名稱 目的地用戶/主機(jī):目的的路徑/名稱
2.1復(fù)制差異信息
我們在hadoop102的主機(jī)上hadoop-3.1.3文件下先創(chuàng)建一個文件hello.txt,然后將該文件復(fù)制給hadoop104,看看效果。
將更改后的文件復(fù)制給104主句
rsync -av hadoop-3.1.3/ liuc1997@hadoop104:/opt/modul/hadoop-3.1.3/
然后飛快的運(yùn)行之后,在104的主機(jī)上就能看見這個文件。
2.2制作同步腳本
我們cd~到用戶目錄下,創(chuàng)建一個bin目錄
cd ~
mkdir bin
cd bin
vim xsync
將下面內(nèi)容粘過去,我們就創(chuàng)建了一個文件同步工具
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#遍歷所有機(jī)器
for host in hadoop102 hadoop103 hadoop104
do
echo ___________________host_________________
#3.遍歷所有目錄,挨個發(fā)送
for file in $@
do
#4.判斷文件是否存在
if [ -e $file ]
then
#5.獲取父目錄
pdir=$(cd -P $(dirname $file); pwd)
#獲取文件夾名稱
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file does not exists!
fi
done
done
然后我們cd ~ 輸入
同步三臺機(jī)器的bin目錄
xsync bin/
第四部分:Hadoop之SSH免密登錄
我們使用大數(shù)據(jù)技術(shù)時,經(jīng)常需要訪問成百上千臺其他服務(wù)器,每次都需要輸入密碼,很繁瑣,于是需要配制SSH免密登錄提高效率。
1. SSH原理
SSH的原理就是服務(wù)器A將自己的公鑰給另一臺服務(wù)器B,代表我倆可以進(jìn)行訪問,然后服務(wù)器A用自己的私鑰]進(jìn)行加密數(shù)據(jù)然后發(fā)送給B,B接受后利用A的公鑰解密數(shù)據(jù)知道了A要什么,然后B把A所要的數(shù)據(jù)利用A的公鑰加密傳輸給A。這就完成了數(shù)據(jù)傳輸?shù)牧鞒獭?br>
2. 配置SSH
先轉(zhuǎn)到自己的用戶目錄下
cd ~
然后查看所有文件包括隱藏文件。
ls-al
查看是否存在.ssh/的文件,如果沒有就輸入
ssh-keygen -t rsa
三次回車。出現(xiàn)以下結(jié)果,說明成功了。
然后再查看
ls -al
就會發(fā)現(xiàn)存在.ssh/文件,我們cd進(jìn)去發(fā)現(xiàn)多了兩個文件,這兩個文件就是SSH的公鑰和私鑰,我們需要將公鑰復(fù)制給我們需要訪問的服務(wù)器。
復(fù)制公鑰給服務(wù)器hadoop102:
ssh-copy-id hadoop102
配置完后給再給hadoop103
ssh-copy-id hadoop103
完成之后就可以通過SSH命令免密訪問其他服務(wù)器了.
ssh hadoop102
第五部分:Hadoop之集群配置和啟動集群(完全分布式)
在經(jīng)歷過前面的環(huán)境配置后,接下來我們進(jìn)行Hadoop的集群配置,什么叫做集群配置,這里是指我們將每個服務(wù)器配置成功后,每臺服務(wù)器的Hadoop并沒有連接起來,我們需要進(jìn)行配置,將Hadoop平臺連接,具體內(nèi)容如下:
1.集群部署
安裝模塊如上:但這里有幾點(diǎn)需要注意
- NameNode和SecondaryNameNode不要放在一臺服務(wù)器上,因?yàn)镹ameNode和SecondaryNameNode都很消耗資源。
- ResourceManager 也很消耗內(nèi)存,不要和NameNode和SecondaryNameNode配置在一臺服務(wù)器上。
2.配置文件
Hadoop的配置文件分為兩大類,一類是默認(rèn)配置文件,一類是自定義配置文件。當(dāng)用戶想修改某些默認(rèn)配置文件時,才需要自定義配置文件。
2.1默認(rèn)配置文件
2.2自定義配置文件
具體看一下所在位置:
配置core-site.xml
我們在core-site.xml插入如下語句:
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:8080</value>
</property>
<!-- 指定hadoop運(yùn)行時產(chǎn)生文件的存儲目錄-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.1.3/data</value>
</property>
配置hdfs-site.xml
<!--nn的web-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop102:9870</value>
</property>
<!-- nn2的web訪問地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:9868</value>
</property>
配置yarn-site.xml
<!--指定MR走shuffle-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--指定resourcemanager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>
<!--環(huán)境變量繼承-->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
配置mapred-site.xml
<!--指定mapreduce運(yùn)行在yarn上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
3.分發(fā)文件
我們將配置好的文件分發(fā)給其他服務(wù)器
xsync hadoop/
4.啟動集群
4.1配置workers
啟動集群之前,我們需要配置workers
vim /opt/modul/hadoop-3.1.3/etc/hadoop/workers
添加一下內(nèi)容,不要有空格!
然后分發(fā)workers
xsync workers
4.2啟動集群
4.2.1配置HDFS
第一次啟動集群,需要在hadoop102主機(jī)上格式化NameNode(格式化NameNode會產(chǎn)生新的集群id,導(dǎo)致NameNode和DataNode的集群id不一致,集群找不到以往數(shù)據(jù)。如果集群在運(yùn)行中報錯,需要重新格式化NameNode的話,一定要先停止namenode和DataNode進(jìn)程,并且要刪除所有機(jī)器的data和logs目錄,再進(jìn)行格式化。)
#格式化HDFS
hdfs namenode -fromat
沒有報錯的話,就會出來這兩個文件。
報錯了一定要終止進(jìn)程并刪除掉data和logs這兩個文件
##終止進(jìn)程的命令
stop-all.sh
檢查一下文件內(nèi)容,有這些東西就是沒有問題了。
接下來我們轉(zhuǎn)到hadoop-3.1.3目錄下進(jìn)入sbin目錄
這里有一個start-dfs.sh啟動集群的命令。
接著輸入以下命令:
#啟動集群
sbin/start-dfs.sh
hadoop102啟動成功:
hadoop103啟動成功:
hadoop104啟動成功:
訪問網(wǎng)址,會出現(xiàn)以下結(jié)果
hadoop102:9870
4.2.2配置YARN
我們的yarn資源ResourceManager是需要在hadoop103上配置,一定要在hadoop103!一定要在hadoop103!一定要在hadoop103!
#啟動yarn
sbin/start-yarn.sh
jps后出現(xiàn)以下界面
hadoop103出現(xiàn):
hadoop102出現(xiàn):
hadoop104出現(xiàn):
yarn的外部界面
hadoop102:8088
關(guān)注我:python技術(shù)訓(xùn)練營,學(xué)習(xí)進(jìn)階一步到位
適用于零基礎(chǔ)學(xué)習(xí)和進(jìn)階人群的python資源:
① 騰訊認(rèn)證python完整項(xiàng)目實(shí)戰(zhàn)教程筆記PDF
② 十幾個大廠python面試專題PDF
③ python全套視頻教程(零基礎(chǔ)-高級進(jìn)階JS逆向)
④ 百個項(xiàng)目實(shí)戰(zhàn)+源碼+筆記
⑤ 編程語法-機(jī)器學(xué)習(xí)-全棧開發(fā)-數(shù)據(jù)分析-爬蟲-APP逆向等全套項(xiàng)目+文檔
到了這里,關(guān)于跟我一起從零開始學(xué)python(十)Hadoop從零開始入門的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!