粗略了解什么是云計(jì)算胡野?
答:云計(jì)算其實(shí)就是不在同一臺(tái)機(jī)器上同時(shí)做計(jì)算璃哟,而是分布式運(yùn)算矿酵,把計(jì)算分發(fā)給多臺(tái)機(jī)器同時(shí)來(lái)進(jìn)行婴梧。
分布式計(jì)算?
答:設(shè)計(jì)原則:移動(dòng)的是計(jì)算辨绊,而不是數(shù)據(jù)奶栖。即要計(jì)算多臺(tái)機(jī)器的數(shù)據(jù)時(shí)不需要把這些數(shù)據(jù)移動(dòng)到同一臺(tái)機(jī)器上, 而是把寫(xiě)好的計(jì)算程序分別放到各自存放數(shù)據(jù)的機(jī)器上進(jìn)行計(jì)算门坷,然后再簡(jiǎn)化進(jìn)一步地進(jìn)行計(jì)算宣鄙。
一、YARN簡(jiǎn)介
是hadoop2才出現(xiàn)的資源調(diào)度層默蚌,是在HDFS上抽象的一層冻晤,其上面可以提供多種計(jì)算模型,比如MapReduce绸吸、storm等等鼻弧。YARN只為這些計(jì)算模型做資源調(diào)度,比如HDFS哪臺(tái)機(jī)器是空閑的锦茁,就把計(jì)算模型的計(jì)算指定到哪臺(tái)機(jī)器上攘轩。
進(jìn)行類比學(xué)習(xí),yarn和hdfs差不多码俩,都可以用主從架構(gòu)來(lái)學(xué)習(xí)度帮,比如在master機(jī)器上配置resourcemanager節(jié)點(diǎn),在slave機(jī)器上配置nodemanager節(jié)點(diǎn)稿存,resourcemanager節(jié)點(diǎn)管理著nodemanager節(jié)點(diǎn)笨篷。一個(gè)job來(lái)了先訪問(wèn)resourcemanager瞳秽,然后resourcemanager分發(fā)給不同的nodemanager做計(jì)算,在生成環(huán)境中resourcemanager和namenode往往是不再同一臺(tái)機(jī)器上率翅,還有yarn和hdfs在邏輯上是獨(dú)立分離的练俐,yarn可以單獨(dú)運(yùn)行,不一定要跑在hdfs上安聘,所以沒(méi)啟動(dòng)hdfs也照樣可以啟動(dòng)yarn痰洒。
二、啟動(dòng)YARN
- 1浴韭、先配置
yarn-site.xml
文件,在configuration標(biāo)簽組里加上下面的配置脯宿,聲明哪臺(tái)機(jī)器是resourcemanager念颈。然后就可以在master機(jī)器上輸入命令start-yarn.sh
啟動(dòng)resourcemanager然后就會(huì)根據(jù)之前配置的slaves文件去啟動(dòng)對(duì)應(yīng)不同機(jī)器的nodemanager了。注意:四臺(tái)機(jī)器的yarn-site.xml
文件都要配置如下连霉,否則會(huì)出現(xiàn)明明啟動(dòng)了所有nodemanager榴芳,但隔一段時(shí)間nodemanager就消失了。
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
主機(jī)IP名:端口號(hào)(默認(rèn)是8088)
就可以訪問(wèn)了跺撼,比如10.14.28.100:8088
窟感,也可以通過(guò)直接機(jī)器名:端口號(hào)(默認(rèn)是8088)
,比如master:8088
歉井,通過(guò)機(jī)器名訪問(wèn)的這種需要在我們windows的C:\Windows\System32\drivers\etc
目錄下修改hosts文件柿祈,把映射加上,瀏覽器在訪問(wèn)網(wǎng)址時(shí)會(huì)先在這個(gè)文件掃描查找有無(wú)IP對(duì)應(yīng)的主機(jī)名哩至。如下配置:
10.14.28.100 master
10.14.28.101 slave1
10.14.28.102 slave2
10.14.28.103 slave3
- 2躏嚎、配置
mapred-site.xml.template
文件,在configuration標(biāo)簽組中加入如下配置菩貌,指定MapReduce計(jì)算使用YARN作為資源調(diào)度卢佣。不配置的話MapReduce程序默認(rèn)在本地運(yùn)行。
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
如下圖箭阶,啟動(dòng)YARN完畢虚茶。三、把一個(gè)MapReduce程序在YARN上進(jìn)行調(diào)度
- 1仇参、經(jīng)過(guò)上述步驟嘹叫,通過(guò)
start-yarn.sh
、start-dfs.sh
命令把YARN集群冈敛、HDFS集群?jiǎn)?dòng)后待笑,通過(guò)hadoop fs -put test.txt /
命令在hdfs上準(zhǔn)備好一個(gè)test.txt文件,用來(lái)做一個(gè)統(tǒng)計(jì)詞數(shù)的小例子抓谴。 - 2暮蹂、通過(guò)命令
find /usr/local/hadoop -name *example*.jar
來(lái)在指定路徑目錄查找含關(guān)鍵詞的文件寞缝。下面劃線的jar里包含著很多example程序,wordcount統(tǒng)計(jì)詞數(shù)就是其中一個(gè)仰泻。圖片.png - 3荆陆、使用
hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.4.jar wordcount /test.txt /wcoutput
命令把運(yùn)行程序?qū)χ付ǖ?test.txt文件進(jìn)行統(tǒng)計(jì),并把結(jié)果輸出到/wcoutput目錄下集侯。最后進(jìn)入/wcoutput目錄去查看結(jié)果被啼。如下圖:圖片.png - 4、WordCount(即MapReduce)的工作流程:
先經(jīng)過(guò)input輸入文件-->接著split按行拆分文件棠枉,變成key-value形式的數(shù)據(jù)-->接著map映射浓体,相當(dāng)于繼續(xù)拆分,按單詞拆分文件-->接著shuffle派發(fā)辈讶,這時(shí)候會(huì)移動(dòng)數(shù)據(jù)了命浴,根據(jù)key把相同的單詞放在一起-->然后再reduce縮減,把單詞統(tǒng)計(jì)整理下-->最后再output輸出文件贱除。數(shù)據(jù)都存儲(chǔ)在HDFS中圖片.png
附:通俗易懂理解MapReduce工作原理