Hadoop是一個(gè)由Apache基金會(huì)所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)。
用戶可以在不了解分布式底層細(xì)節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力進(jìn)行高速運(yùn)算和存儲(chǔ)。
Hadoop實(shí)現(xiàn)了一個(gè)分布式文件系統(tǒng)(Hadoop Distributed File System),簡稱HDFS。HDFS有高容錯(cuò)性的特點(diǎn),并且設(shè)計(jì)用來部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)來訪問應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集(large data set)的應(yīng)用程序。HDFS放寬了(relax)POSIX的要求,可以以流的形式訪問(streaming access)文件系統(tǒng)中的數(shù)據(jù)。
Hadoop的框架最核心的設(shè)計(jì)就是:HDFS和MapReduce。HDFS為海量的數(shù)據(jù)提供了存儲(chǔ),則MapReduce為海量的數(shù)據(jù)提供了計(jì)算。
基于Hadoop的校園云存儲(chǔ)系統(tǒng)
服務(wù)器使用Linux操作系統(tǒng),采用MapReduce編程算法實(shí)現(xiàn)并行處理。
HDFS(Hadoop Distributed File System)是一個(gè)運(yùn)行在普通硬件之上的分布式文件系統(tǒng)。HDFS系統(tǒng)采用Master/Slave框架,一個(gè)HDFS集群系統(tǒng)是由一個(gè)Master和多個(gè)Slaver構(gòu)成。前者叫做名字節(jié)點(diǎn)(NameNode),是一個(gè)中心服務(wù)器負(fù)責(zé)元數(shù)據(jù)的管理工作,主要包括文件系統(tǒng)的名字空間管理和客戶機(jī)對(duì)文件的訪問操作。后者叫做數(shù)據(jù)節(jié)點(diǎn)(DataNode),在集群系統(tǒng)中一般一個(gè)節(jié)點(diǎn)是由一個(gè)DataNode構(gòu)成的,主要負(fù)責(zé)對(duì)節(jié)點(diǎn)上它們附帶的存儲(chǔ)進(jìn)行管理。
HDFS系統(tǒng)中文件的目錄結(jié)構(gòu)獨(dú)立存儲(chǔ)在NameNode上,對(duì)于具體的文件數(shù)據(jù)來說,一個(gè)文件數(shù)據(jù)其實(shí)被拆分成若干block,這些block冗余存儲(chǔ)在DataNode集合數(shù)據(jù)里。NameNode負(fù)責(zé)執(zhí)行文件系統(tǒng)的Namespace管理工作,主要包括關(guān)閉,打開和重命名數(shù)據(jù)文件和目錄等操作,同時(shí)負(fù)責(zé)建立block和DataNode節(jié)點(diǎn)的映射關(guān)系??蛻魴C(jī)的讀寫需求是由DataNode節(jié)點(diǎn)響應(yīng)完成的,同時(shí)DataNode節(jié)點(diǎn)在NameNode的統(tǒng)一指揮下進(jìn)行Block的創(chuàng)建,刪除和復(fù)制等操作。
MapReduce編程模型是一種編程模型,是云計(jì)算的核心計(jì)算模式,用于大規(guī)模數(shù)據(jù)集的并行計(jì)算。MapReduce借用了函數(shù)式編程的思想,把海量數(shù)據(jù)集的常見操作抽象為Map(映射)和Reduce(化簡)兩種集合操作。通過Map函數(shù)將被分割后數(shù)據(jù)映射成不同的區(qū)塊,然后由計(jì)算機(jī)集群對(duì)分配的數(shù)據(jù)進(jìn)行分布式運(yùn)算處理,再由Reduce函數(shù)對(duì)數(shù)據(jù)結(jié)果進(jìn)行統(tǒng)一匯整,最后輸出用戶想要的數(shù)據(jù)結(jié)果。MapReduce的軟件實(shí)現(xiàn)是指定一個(gè)Map函數(shù),用來把一組鍵值對(duì)映射成一組新的鍵值對(duì),指定并發(fā)的Reduce(化簡)函數(shù),用來保證所有映射的鍵值對(duì)中的每一個(gè)共享相同的鍵組。
Master包括NameNode和JobTracker,Slaves包括DataNodes和TaskTrackers.HDFS的工作主要由NameNode和DataNodes共同完成,MapReduce的工作主要由JobTracker和TaskTrackers共同完成。模型工作流程:服務(wù)控制集群SCC(Service Controller Cluster)主要負(fù)責(zé)對(duì)用戶應(yīng)用請(qǐng)求進(jìn)行接收,并根據(jù)用戶的請(qǐng)求完成應(yīng)答工作。存儲(chǔ)節(jié)點(diǎn)集群SNC(Storage Node Cluster)主要負(fù)責(zé)處理數(shù)據(jù)資源的存取工作。JobTracker可以運(yùn)行在集群系統(tǒng)中的每一臺(tái)計(jì)算機(jī)上,主要完成管理和調(diào)度其它計(jì)算機(jī)上的TaskTracker。
不同的是TaskTracker必須運(yùn)行在數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的DataNode上,主要完成執(zhí)行任務(wù)工作。JobTracker負(fù)責(zé)將每一個(gè)Map和Reduce任務(wù)分配給空閑的TaskTracker處理,完成對(duì)每個(gè)數(shù)據(jù)文件并行計(jì)算處理任務(wù),同時(shí)將每個(gè)任務(wù)運(yùn)行完成的情況進(jìn)行監(jiān)控。當(dāng)其中一個(gè)TaskTracker發(fā)生故障時(shí),JobTracker會(huì)主動(dòng)將其負(fù)責(zé)的任務(wù)轉(zhuǎn)交給另外一個(gè)空閑的TaskTracker重新執(zhí)行完成這個(gè)任務(wù)。用戶本身不直接通過Hadoop架構(gòu)進(jìn)行讀寫數(shù)據(jù),這由可以避免大量的讀寫操作造成的系統(tǒng)擁塞。當(dāng)用戶通過Hadoop架構(gòu)把信息傳給SCC后,將直接與存儲(chǔ)節(jié)點(diǎn)進(jìn)行交互,同時(shí)完成數(shù)據(jù)讀取操作。
系統(tǒng)采用Hadoop軟件,7臺(tái)PC,其中一臺(tái)為Master,namenode(集群主節(jié)點(diǎn));另外六臺(tái)為Slave, datanode(從節(jié)點(diǎn))。
集群部署步驟:
(1)。 集群配置SSH,實(shí)現(xiàn)機(jī)器間免密碼登陸。在每臺(tái)機(jī)器上生成ssh密鑰,然后交換公鑰,將namenode的公鑰拷貝到每臺(tái)datanode,這樣互相訪問就不需要密碼了。
(2)。 在每臺(tái)機(jī)器上安裝JDK,配置java環(huán)境。
(3)。 安裝配置hadoop。
(4)。 啟動(dòng)hadoop服務(wù)。
(5)。 安裝eclipse,搭建集成開發(fā)環(huán)境。
基于Hadoop平臺(tái)的云存儲(chǔ)
云計(jì)算(Cloud Computing)是一種基于因特網(wǎng)的超級(jí)計(jì)算模式,在遠(yuǎn)程的數(shù)據(jù)中心里,成千上萬臺(tái)電腦和服務(wù)器連接成一片電腦云。用戶通過電腦、筆記本、手機(jī)等方式接人數(shù)據(jù)中心,按自己的需求進(jìn)行運(yùn)算。目前,對(duì)于云計(jì)算仍沒有普遍一致的定義。結(jié)合上述定義,可以總結(jié)出云計(jì)算的一些本質(zhì)特征,即分布式計(jì)算和存儲(chǔ)特性、高擴(kuò)展性、用戶友好性、良好的管理性。
1云存儲(chǔ)架構(gòu)圖
橘色的作為存儲(chǔ)節(jié)點(diǎn)(Storage Node)負(fù)責(zé)存放文件,藍(lán)色作為控制節(jié)點(diǎn)((Control Node)則是負(fù)責(zé)文件索引,并負(fù)責(zé)監(jiān)控存儲(chǔ)節(jié)點(diǎn)間容量及負(fù)載的均衡,這兩個(gè)部分合起來便組成一個(gè)云存儲(chǔ)。存儲(chǔ)節(jié)點(diǎn)與控制節(jié)點(diǎn)都是單純的服務(wù)器,只是存儲(chǔ)節(jié)點(diǎn)的硬盤多一些,存儲(chǔ)節(jié)點(diǎn)服務(wù)器不需要具備RAID的功能,只要能安裝Linux即可,控制節(jié)點(diǎn)為了保護(hù)數(shù)據(jù),需要有簡單的RAID level O1的功能。
云存儲(chǔ)不是要取代現(xiàn)有的盤陣,而是為了應(yīng)付高速成長的數(shù)據(jù)量與帶寬而產(chǎn)生的新形態(tài)存儲(chǔ)系統(tǒng),因此云存儲(chǔ)在設(shè)計(jì)時(shí)通常會(huì)考慮以下三點(diǎn):
(1)容量、帶寬的擴(kuò)容是否簡便
擴(kuò)容是不能停機(jī),會(huì)自動(dòng)將新的存儲(chǔ)節(jié)點(diǎn)容量納入原來的存儲(chǔ)池。不需要做繁復(fù)的設(shè)定。
圖1云存儲(chǔ)架構(gòu)圖
(2)帶寬是否線形增長
使用云存儲(chǔ)的客戶,很多是考慮未來帶寬的增長,因此云存儲(chǔ)產(chǎn)品設(shè)計(jì)的好壞會(huì)產(chǎn)生很大的差異,有些十幾個(gè)節(jié)點(diǎn)便達(dá)到飽和,這樣對(duì)未來帶寬的擴(kuò)容就有不利的影響,這一點(diǎn)要事先弄清楚,否則等到發(fā)現(xiàn)不符合需求時(shí),已經(jīng)買了幾百TB,后悔就來不及了。
(3)管理是否容易。
2云存儲(chǔ)關(guān)鍵技術(shù)
云存儲(chǔ)必須具備九大要素:①性能;②安全性;③自動(dòng)ILM存儲(chǔ);④存儲(chǔ)訪問模式;⑤可用性;⑥主數(shù)據(jù)保護(hù);⑦次級(jí)數(shù)據(jù)保護(hù);⑧存儲(chǔ)的靈活;⑨存儲(chǔ)報(bào)表。
云計(jì)算的發(fā)展離不開虛擬化、并行計(jì)算、分布式計(jì)算等核心技術(shù)的發(fā)展成熟。下面對(duì)其介紹如下:
(1)集群技術(shù)、網(wǎng)格技術(shù)和分布式文件系統(tǒng)
云存儲(chǔ)系統(tǒng)是一個(gè)多存儲(chǔ)設(shè)備、多應(yīng)用、多服務(wù)協(xié)同工作的集合體,任何一個(gè)單點(diǎn)的存儲(chǔ)系統(tǒng)都不是云存儲(chǔ)。
既然是由多個(gè)存儲(chǔ)設(shè)備構(gòu)成的,不同存儲(chǔ)設(shè)備之間就需要通過集群技術(shù)、分布式文件系統(tǒng)和網(wǎng)格計(jì)算等技術(shù),實(shí)現(xiàn)多個(gè)存儲(chǔ)設(shè)備之間的協(xié)同工作,使多個(gè)的存 儲(chǔ)設(shè)備可以對(duì)外提供同一種服務(wù),并提供更大更強(qiáng)更好的數(shù)據(jù)訪問性能。如果沒有這些技術(shù)的存在,云存儲(chǔ)就不可能真正實(shí)現(xiàn),所謂的云存儲(chǔ)只能是一個(gè)一個(gè)的獨(dú)立 系統(tǒng),不能形成云狀結(jié)構(gòu)。
(2)CDN內(nèi)容分發(fā)、P2P技術(shù)、數(shù)據(jù)壓縮技術(shù)、重復(fù)數(shù)據(jù)刪除技術(shù)、數(shù)據(jù)加密技術(shù)
CDN內(nèi)容分發(fā)系統(tǒng)、數(shù)據(jù)加密技術(shù)保證云存儲(chǔ)中的數(shù)據(jù)不會(huì)被未授權(quán)的用戶所訪問,同時(shí),通過各種數(shù)據(jù)備份和容災(zāi)技術(shù)保證云存儲(chǔ)中的數(shù)據(jù)不會(huì)丟失,保證云存儲(chǔ)自身的安全和穩(wěn)定。如果云存儲(chǔ)中的數(shù)據(jù)安全得不到保證,也沒有人敢用云存儲(chǔ)了。
(3)存儲(chǔ)虛擬化技術(shù)、存儲(chǔ)網(wǎng)絡(luò)化管理技術(shù)
云存儲(chǔ)中的存儲(chǔ)設(shè)備數(shù)量龐大且分布多在不同地域,如何實(shí)現(xiàn)不同廠商、不同型號(hào)甚至于不同類型(例如FC存儲(chǔ)和IP存儲(chǔ))的多臺(tái)設(shè)備之間的邏輯卷管 理、存儲(chǔ)虛擬化管理和多鏈路冗余管理將會(huì)是一個(gè)巨大的難題,這個(gè)問題得不到解決,存儲(chǔ)設(shè)備就會(huì)是整個(gè)云存儲(chǔ)系統(tǒng)的性能瓶頸,結(jié)構(gòu)上也無法形成一個(gè)整體,而 且還會(huì)帶來后期容量和性能擴(kuò)展難等問題。
3部署Hadoop
從歷史上看,數(shù)據(jù)分析軟件面對(duì)當(dāng)今的海量數(shù)據(jù)已顯得力不從心,這種局面正在悄然轉(zhuǎn)變。新的海量數(shù)據(jù)分析引擎已經(jīng)出現(xiàn)。例如Apache的Hadoop,實(shí)踐證明,Hadoop在數(shù)據(jù)處理方面是做得最好的且是開源的平臺(tái)之一。
云存儲(chǔ)中心是由大量服務(wù)器構(gòu)成Hadoop的數(shù)據(jù)節(jié)點(diǎn)((DataNodes),負(fù)責(zé)保存文件的內(nèi)容,實(shí)現(xiàn)文件的分布式存儲(chǔ)、負(fù)載平衡以及文件的容錯(cuò)控制。
下面將利用Hadoop作為實(shí)驗(yàn)平臺(tái),一步一步演示如何部署一個(gè)三個(gè)節(jié)點(diǎn)的集群,并測試一下MapRe-dace分布式處理的強(qiáng)大功能,在Hadoop分布式文件系統(tǒng)(HDFS)中存人兩個(gè)文件,并采用MapReduce計(jì)算出兩個(gè)namelist文件中各個(gè)名字出現(xiàn)的次數(shù),程序架構(gòu)設(shè)計(jì)如圖2所示。
圖2 3個(gè)節(jié)點(diǎn)的Hadoop集群
其中NameNode主節(jié)點(diǎn)和DataNode從節(jié)點(diǎn)的分布情況如下:
表1
(1)啟動(dòng)Hadoop集群
只需要在NameNode主節(jié)點(diǎn)上執(zhí)行start-all.sh命令即可,同時(shí)Master節(jié)點(diǎn)可以通過ssh登錄到各,lave節(jié)點(diǎn)去啟動(dòng)其他相關(guān)進(jìn)程。
(2) MapRudce測試
在NameNode和DataNode兩個(gè)結(jié)點(diǎn)都運(yùn)行正常的時(shí)候,也就是Hadoop部署成功了之后,我們?cè)贜ameNode主節(jié)點(diǎn)上準(zhǔn)備兩個(gè)名單文件。名單文件的內(nèi)容如下:
4運(yùn)行實(shí)驗(yàn)及結(jié)果
5結(jié)語
結(jié)果跟我們預(yù)期的一樣,這樣在以Hadoop為平臺(tái)進(jìn)行了對(duì)HDFS的文件存儲(chǔ),并且統(tǒng)計(jì)了文件中數(shù)據(jù)的數(shù)量,然后顯示出來。
-
云存儲(chǔ)
+關(guān)注
關(guān)注
7文章
779瀏覽量
47163 -
Hadoop
+關(guān)注
關(guān)注
1文章
90瀏覽量
16743
發(fā)布評(píng)論請(qǐng)先 登錄


#硬聲創(chuàng)作季 云計(jì)算基礎(chǔ)入門:18-rpm痛點(diǎn)及解決方案
視頻監(jiān)控業(yè)務(wù)上云方案解析
從零開始學(xué)習(xí)hadoop?hadoop快速入門
hadoop和spark的區(qū)別
阿里云應(yīng)用上邊緣云解決方案助力互聯(lián)網(wǎng)All in Cloud
如何用MRAM和NVMe SSD構(gòu)建未來的云存儲(chǔ)的解決方案
用Linux和Apache Hadoop進(jìn)行云計(jì)算

云計(jì)算是什么?云存儲(chǔ)技術(shù)與應(yīng)用解決方案

評(píng)論