日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

分布式计算框架Hadoop

發(fā)布時間:2025/3/17 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分布式计算框架Hadoop 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

http://blog.csdn.net/x15594/article/details/6275493


Hadoop是Apache軟件基金會所開發(fā)的并行計算框架與分布式文件系統(tǒng)。最核心的模塊包括Hadoop Common、HDFS與MapReduce。

HDFS

???????HDFS是Hadoop分布式文件系統(tǒng)(Hadoop Distributed File System)的縮寫,為分布式計算存儲提供了底層支持。采用Java語言開發(fā),可以部署在多種普通的廉價機器上,以集群處理數(shù)量積達(dá)到大型主機處理性能。

???????HDFS?架構(gòu)原理

???????HDFS采用master/slave架構(gòu)。一個HDFS集群包含一個單獨的NameNode和多個DataNode。

???????NameNode作為master服務(wù),它負(fù)責(zé)管理文件系統(tǒng)的命名空間和客戶端對文件的訪問。NameNode會保存文件系統(tǒng)的具體信息,包括文件信息、文件被分割成具體block塊的信息、以及每一個block塊歸屬的DataNode的信息。對于整個集群來說,HDFS通過NameNode對用戶提供了一個單一的命名空間。

???????DataNode作為slave服務(wù),在集群中可以存在多個。通常每一個DataNode都對應(yīng)于一個物理節(jié)點。DataNode負(fù)責(zé)管理節(jié)點上它們擁有的存儲,它將存儲劃分為多個block塊,管理block塊信息,同時周期性的將其所有的block塊信息發(fā)送給NameNode。

???????下圖為HDFS系統(tǒng)架構(gòu)圖,主要有三個角色,Client、NameNode、DataNode。


???????文件寫入時:

??????????????Client向NameNode發(fā)起文件寫入的請求。

??????????????NameNode根據(jù)文件大小和文件塊配置情況,返回給Client它所管理部分DataNode的信息。

??????????????Client將文件劃分為多個block塊,并根據(jù)DataNode的地址信息,按順序?qū)懭氲矫恳粋€DataNode塊中。

???????當(dāng)文件讀取:

??????????????Client向NameNode發(fā)起文件讀取的請求。

??????????????NameNode返回文件存儲的block塊信息、及其block塊所在DataNode的信息。

??????????????Client讀取文件信息。

???????HDFS?數(shù)據(jù)備份

???????HDFS被設(shè)計成一個可以在大集群中、跨機器、可靠的存儲海量數(shù)據(jù)的框架。它將所有文件存儲成block塊組成的序列,除了最后一個block塊,所有的block塊大小都是一樣的。文件的所有block塊都會因為容錯而被復(fù)制。每個文件的block塊大小和容錯復(fù)制份數(shù)都是可配置的。容錯復(fù)制份數(shù)可以在文件創(chuàng)建時配置,后期也可以修改。HDFS中的文件默認(rèn)規(guī)則是write one(一次寫、多次讀)的,并且嚴(yán)格要求在任何時候只有一個writer。NameNode負(fù)責(zé)管理block塊的復(fù)制,它周期性地接收集群中所有DataNode的心跳數(shù)據(jù)包和Blockreport。心跳包表示DataNode正常工作,Blockreport描述了該DataNode上所有的block組成的列表。


???????備份數(shù)據(jù)的存放:

???????備份數(shù)據(jù)的存放是HDFS可靠性和性能的關(guān)鍵。HDFS采用一種稱為rack-aware的策略來決定備份數(shù)據(jù)的存放。通過一個稱為Rack Awareness的過程,NameNode決定每個DataNode所屬rack id。缺省情況下,一個block塊會有三個備份,一個在NameNode指定的DataNode上,一個在指定DataNode非同一rack的DataNode上,一個在指定DataNode同一rack的DataNode上。這種策略綜合考慮了同一rack失效、以及不同rack之間數(shù)據(jù)復(fù)制性能問題。

???????副本的選擇:

???????為了降低整體的帶寬消耗和讀取延時,HDFS會盡量讀取最近的副本。如果在同一個rack上有一個副本,那么就讀該副本。如果一個HDFS集群跨越多個數(shù)據(jù)中心,那么將首先嘗試讀本地數(shù)據(jù)中心的副本。

???????安全模式:

???????系統(tǒng)啟動后先進(jìn)入安全模式,此時系統(tǒng)中的內(nèi)容不允許修改和刪除,直到安全模式結(jié)束。安全模式主要是為了啟動檢查各個DataNode上數(shù)據(jù)塊的安全性。

MapReduce

???????MapReduce?來源

???????MapReduce是由Google在一篇論文中提出并廣為流傳的。它最早是Google提出的一個軟件架構(gòu),用于大規(guī)模數(shù)據(jù)集群分布式運算。任務(wù)的分解(Map)與結(jié)果的匯總(Reduce)是其主要思想。Map就是將一個任務(wù)分解成多個任務(wù),Reduce就是將分解后多任務(wù)分別處理,并將結(jié)果匯總為最終結(jié)果。熟悉Function Language的人一定感覺很熟悉,不是什么新的思想。

???????MapReduce?處理流程

???????上圖就是MapReduce大致的處理流程。在Map之前,可能還有對輸入數(shù)據(jù)的Split過程以保證任務(wù)并行效率,在Map之后可能還有Shuffle過程來提高Reduce的效率以及減小數(shù)據(jù)傳輸?shù)膲毫Α?/p>

Hadoop

???????Hadoop被定位為一個易于使用的平臺,以HDFS、MapReduce為基礎(chǔ),能夠運行上千臺PCServer組成的系統(tǒng)集群,并以一種可靠、容錯的方式分布式處理請求。

???????Hadoop?部署

???????下圖顯示Hadoop部署結(jié)構(gòu)示意圖

???????在Hadoop的系統(tǒng)中,會有一臺master,主要負(fù)責(zé)NameNode的工作以及JobTracker的工作。JobTracker的主要職責(zé)就是啟動、跟蹤和調(diào)度各個Slave的任務(wù)執(zhí)行。還會有多臺slave,每一臺slave通常具有DataNode的功能并負(fù)責(zé)TaskTracker的工作。TaskTracker根據(jù)應(yīng)用要求來結(jié)合本地數(shù)據(jù)執(zhí)行Map任務(wù)以及Reduce任務(wù)。

???????Hadoop?處理流程

???????在描述Hadoop處理流程之前,先提一個分布式計算最為重要的設(shè)計原則:Moving Computation is Cheaper than Moving Data。意思是指在分布式計算中,移動計算的代價總是低于移動數(shù)據(jù)的代價。本地計算使用本地數(shù)據(jù),然后匯總才能保證分布式計算的高效性。

???????下圖所示Hadoop處理流程:

???????Hadoop?安裝

???????到目前為止,已經(jīng)完成了基礎(chǔ)理論的介紹,下面介紹Hadoop的安裝過程。

???????硬件條件:3臺PCServer。

HostName

IP

Plan

fa1

10.143.20.211

master

fa2

10.143.20.212

slave

fa3

10.143.20.213

slave


???????預(yù)裝:操作系統(tǒng)Linux,JDK1.6,ssh,并且保證 sshd一直運行。

???????安裝步驟:

???????1. 在所有機器上新建hadoop用戶,home目錄設(shè)置為/home/hadoop/

???????2. 下載Hadoop(這里下載的是hadoop-0.18.3),先解壓到master上。

???????3. 進(jìn)入/home/hadoop/hadoop-0.18.3/conf目錄,修改hadoop-site.xml文件。

??????????????hadoop-site.xml文件默認(rèn)配置為空,它主要被用來覆蓋hadoop-default.xml的系統(tǒng)級配置。

<property>

<name>fs.default.name</name>

<value>hdfs:// 10.143.20.211:8980/</value>

</property>

<property>

<name>mapred.job.tracker</name>

<value>hdfs:// 10.143.20.211:8990/</value>

</property>

<property>

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

<value>/home/hadoop/hadoop-0.18.3/tmp/</value>

</property>

<property>

<name> dfs.block.size </name>

<value>51200</value>

????????</property>

???????4. 進(jìn)入/home/hadoop/hadoop-0.18.3/conf目錄,修改hadoop-env.sh文件。

??????????????export JAVA_HOME= /usr/lib/java6

???????5. 建立master到slave的ssh訪問授權(quán)。

???????6. 通過scp將master上的hadoop-0.18.3目錄拷貝到所有slave同名目錄上。

???????7. 在每個slave上修改hadoop-env.sh文件,設(shè)置JAVA_HOME。

???????8. 修改profile文件,擴(kuò)展PATH路徑。

??????????????export HADOOP_HOME=/home/hadoop/hadoop-0.18.3/

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

???????9. 在master上執(zhí)行hadoop namenode -format

???????10. 執(zhí)行start-all.sh啟動。

?

?

?

參考文獻(xiàn):

http://hadoop.apache.org/hdfs/docs/current/hdfs_design.html

http://hadoop.apache.org/mapreduce/docs/current/mapred_tutorial.html

http://www.slideshare.net/waue/hadoop-map-reduce-3019713

http://www.infoq.com/cn/articles/hadoop-intro


轉(zhuǎn)載于:https://blog.51cto.com/3855471/1651282

總結(jié)

以上是生活随笔為你收集整理的分布式计算框架Hadoop的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。