近來云計(jì)算越來越熱門了,云計(jì)算已經(jīng)被看作IT業(yè)的新趨勢(shì)。云計(jì)算可以粗略地定義為使用自己環(huán)境之外的某一服務(wù)提供的可伸縮計(jì)算資源,并按使用量付費(fèi)??梢酝ㄟ^ Internet 訪問“云”中的任何資源,而不需要擔(dān)心計(jì)算能力、帶寬、存儲(chǔ)、安全性和可靠性等問題。
從企業(yè)的角度來說,日益增長(zhǎng)的信息已經(jīng)很難存儲(chǔ)在標(biāo)準(zhǔn)關(guān)系型數(shù)據(jù)庫(kù)甚至數(shù)據(jù)倉(cāng)庫(kù)中。這些問題提到了一些在實(shí)踐中已存在多年的難題。例如:怎樣查詢一個(gè)十億行的表?怎樣跨越數(shù)據(jù)中心所有服務(wù)器上的所有日志來運(yùn)行一個(gè)查詢?更為復(fù)雜的問題是,大量需要處理的數(shù)據(jù)是非結(jié)構(gòu)化或者半結(jié)構(gòu)化的,這就更難查詢了。
“云計(jì)算”領(lǐng)域已經(jīng)成為眾多跨國(guó)IT巨頭未來“決斗”的主戰(zhàn)場(chǎng)。由于意識(shí)到“云計(jì)算”將是一場(chǎng)改變IT格局的劃時(shí)代變革,幾乎所有重量級(jí)跨國(guó)IT巨頭從不同領(lǐng)域和角度開始在“云計(jì)算”領(lǐng)域扎根,這個(gè)陣營(yíng)的主力包括Amazon、Google、IBM、Mircosoft、VMware、Cisoco、Intel、AMD、Oracle、SAP、HP、Dell、Citrix、 Redhat、Novell、Yahoo等等。美國(guó)硅谷目前已約有150家涉及“云計(jì)算”的企業(yè),新的商業(yè)模式層出不窮。
“云計(jì)算”龐大的市場(chǎng)規(guī)模超乎想象。按照最樂觀估計(jì),IDC推算未來3年全球“云計(jì)算”領(lǐng)域?qū)⒂?000億美元的新業(yè)務(wù)收入。顯然,全球各IT巨頭競(jìng)相進(jìn)入“云計(jì)算”領(lǐng)域背后的原因是未來天文數(shù)字般的市場(chǎng)規(guī)模以及由此帶來的無比光明的發(fā)展前景。自2011年開始,各大IT企業(yè)已經(jīng)展開一場(chǎng)硝煙滾滾的爭(zhēng)奪戰(zhàn),以實(shí)現(xiàn)自己在“云計(jì)算”市場(chǎng)中未來的霸主地位。
Hadoop簡(jiǎn)介
Apache Hadoop 是一個(gè)軟件框架,它可以分布式地操縱大量數(shù)據(jù)。它于2006年首次提及,由 Google、Yahoo! 和 IBM 等公司支持。可以認(rèn)為它是一種 PaaS 模型。
它的設(shè)計(jì)核心是 MapReduce 實(shí)現(xiàn)和 HDFS (Hadoop Distributed File System),它們?cè)醋?MapReduce(由一份 Google 文件引入)和 Google File System。
MapReduce 是 Google 引入的一個(gè)軟件框架,它支持在計(jì)算機(jī)(即節(jié)點(diǎn))集群上對(duì)大型數(shù)據(jù)集進(jìn)行分布式計(jì)算。它由兩個(gè)過程組成,映射(Map)和縮減(Reduce)。
在映射過程中,主節(jié)點(diǎn)接收輸入,把輸入分割為更小的子任務(wù),然后把這些子任務(wù)分布到工作者節(jié)點(diǎn)。
工作者節(jié)點(diǎn)處理這些小任務(wù),把結(jié)果返回給主節(jié)點(diǎn)。
然后,在縮減過程中,主節(jié)點(diǎn)把所有子任務(wù)的結(jié)果組合成輸出,這就是原任務(wù)的結(jié)果。
MapReduce 的優(yōu)點(diǎn)是它允許對(duì)映射和縮減操作進(jìn)行分布式處理。因?yàn)槊總€(gè)映射操作都是獨(dú)立的,所有映射都可以并行執(zhí)行,這會(huì)減少總計(jì)算時(shí)間。
對(duì)外部客戶機(jī)而言,HDFS 就像一個(gè)傳統(tǒng)的分級(jí)文件系統(tǒng)??梢詣?chuàng)建、刪除、移動(dòng)或重命名文件,等等。但是 HDFS 的架構(gòu)是基于一組特定的節(jié)點(diǎn)構(gòu)建的,這是由它自身的特點(diǎn)決定的。這些節(jié)點(diǎn)包括 NameNode(僅一個(gè)),它在 HDFS 內(nèi)部提供元數(shù)據(jù)服務(wù);DataNode,它為 HDFS 提供存儲(chǔ)塊。由于僅存在一個(gè) NameNode,因此這是 HDFS 的一個(gè)缺點(diǎn)(單點(diǎn)失敗)。
存儲(chǔ)在 HDFS 中的文件被分成塊,然后將這些塊復(fù)制到多個(gè)計(jì)算機(jī)中(DataNode)。這與傳統(tǒng)的 RAID 架構(gòu)大不相同。塊的大小(通常為 64MB)和復(fù)制的塊數(shù)量在創(chuàng)建文件時(shí)由客戶機(jī)決定。NameNode 可以控制所有文件操作。HDFS 內(nèi)部的所有通信都基于標(biāo)準(zhǔn)的 TCP/IP 協(xié)議。
NameNode 是一個(gè)通常在 HDFS 實(shí)例中的單獨(dú)機(jī)器上運(yùn)行的軟件。它負(fù)責(zé)管理文件系統(tǒng)名稱空間和控制外部客戶機(jī)的訪問。NameNode 決定是否將文件映射到 DataNode 上的復(fù)制塊上。對(duì)于最常見的 3 個(gè)復(fù)制塊,第一個(gè)復(fù)制塊存儲(chǔ)在同一機(jī)架的不同節(jié)點(diǎn)上,最后一個(gè)復(fù)制塊存儲(chǔ)在不同機(jī)架的某個(gè)節(jié)點(diǎn)上。注意,這里需要您了解集群架構(gòu)。
實(shí)際的 I/O 事務(wù)并沒有經(jīng)過 NameNode,只有表示 DataNode 和塊的文件映射的元數(shù)據(jù)經(jīng)過 NameNode。當(dāng)外部客戶機(jī)發(fā)送請(qǐng)求要求創(chuàng)建文件時(shí),NameNode 會(huì)以塊標(biāo)識(shí)和該塊的第一個(gè)副本的 DataNode IP 地址作為響應(yīng)。這個(gè) NameNode 還會(huì)通知其他將要接收該塊的副本的 DataNode。
NameNode 在一個(gè)稱為 FsImage 的文件中存儲(chǔ)所有關(guān)于文件系統(tǒng)名稱空間的信息。這個(gè)文件和一個(gè)包含所有事務(wù)的記錄文件(這里是 EditLog)將存儲(chǔ)在 NameNode 的本地文件系統(tǒng)上。FsImage 和 EditLog 文件也需要復(fù)制副本,以防文件損壞或 NameNode 系統(tǒng)丟失。