Hadoop入門

姓名:穆培婷

學(xué)號(hào):17101223414

專業(yè):軟件工程

本文轉(zhuǎn)載自:http://www.cnblogs.com/yinghun/p/6228648.html

【嵌牛導(dǎo)讀】:Hadoop是一個(gè)開發(fā)和運(yùn)行處理大規(guī)模數(shù)據(jù)的軟件平臺(tái),是Appach的一個(gè)用Java語(yǔ)言實(shí)現(xiàn)開源軟件框架,實(shí)現(xiàn)在大量計(jì)算機(jī)組成的集群中對(duì)海量數(shù)據(jù)進(jìn)行分布式計(jì)算.

【嵌牛鼻子】:Hadoop? 分布式計(jì)算 ? 并行

【嵌牛提問(wèn)】:Hadoop是什么?

【嵌牛正文】:

Hadoop是什么?

Hadoop是一個(gè)開發(fā)和運(yùn)行處理大規(guī)模數(shù)據(jù)的軟件平臺(tái),是Appach的一個(gè)用Java語(yǔ)言實(shí)現(xiàn)開源軟件框架,實(shí)現(xiàn)在大量計(jì)算機(jī)組成的集群中對(duì)海量數(shù)據(jù)進(jìn)行分布式計(jì)算.

Hadoop框架中最核心設(shè)計(jì)就是:HDFS和MapReduce.HDFS提供了海量數(shù)據(jù)的存儲(chǔ),MapReduce提供了對(duì)數(shù)據(jù)的計(jì)算.

Hadoop的優(yōu)點(diǎn)

Hadoop是一個(gè)能夠?qū)Υ罅繑?shù)據(jù)進(jìn)行分布式處理的軟件框架。 Hadoop 以一種可靠、高效、可伸縮的方式進(jìn)行數(shù)據(jù)處理。

Hadoop是可靠的,因?yàn)樗僭O(shè)計(jì)算元素和存儲(chǔ)會(huì)失敗,因此它維護(hù)多個(gè)工作數(shù)據(jù)副本,確保能夠針對(duì)失敗的節(jié)點(diǎn)重新分布處理。

Hadoop是高效的,因?yàn)樗圆⑿械姆绞焦ぷ?,通過(guò)并行處理加快處理速度。

Hadoop是可伸縮的,能夠處理 PB 級(jí)數(shù)據(jù)。

此外,Hadoop 依賴于社區(qū)服務(wù),因此它的成本比較低,任何人都可以使用。

Hadoop是一個(gè)能夠讓用戶輕松架構(gòu)和使用的分布式計(jì)算平臺(tái)。用戶可以輕松地在Hadoop上開發(fā)和運(yùn)行處理海量數(shù)據(jù)的應(yīng)用程序。它主要有以下幾個(gè)優(yōu)點(diǎn):

高可靠性:Hadoop按位存儲(chǔ)和處理數(shù)據(jù)的能力值得人們信賴。

高擴(kuò)展性:Hadoop是在可用的計(jì)算機(jī)集簇間分配數(shù)據(jù)并完成計(jì)算任務(wù)的,這些集簇可以方便地?cái)U(kuò)展到數(shù)以千計(jì)的節(jié)點(diǎn)中

高效性:Hadoop能夠在節(jié)點(diǎn)之間動(dòng)態(tài)地移動(dòng)數(shù)據(jù),并保證各個(gè)節(jié)點(diǎn)的動(dòng)態(tài)平衡,因此處理速度非??臁?/p>

高容錯(cuò)性:Hadoop能夠自動(dòng)保存數(shù)據(jù)的多個(gè)副本,并且能夠自動(dòng)將失敗的任務(wù)重新分配。

低成本:與一體機(jī)、商用數(shù)據(jù)倉(cāng)庫(kù)以及QlikView、Yonghong Z-Suite等數(shù)據(jù)集市相比,hadoop是開源的,項(xiàng)目的軟件成本因此會(huì)大大降低。

Hadoop核心架構(gòu)

Hadoop

由許多元素構(gòu)成。其最底部是 Hadoop Distributed File System(HDFS),它存儲(chǔ) Hadoop

集群中所有存儲(chǔ)節(jié)點(diǎn)上的文件。HDFS的上一層是MapReduce 引擎,該引擎由 JobTrackers 和 TaskTrackers

組成。通過(guò)對(duì)Hadoop分布式計(jì)算平臺(tái)最核心的分布式文件系統(tǒng)HDFS、MapReduce處理過(guò)程,以及數(shù)據(jù)倉(cāng)庫(kù)工具Hive和分布式數(shù)據(jù)庫(kù)Hbase的介紹,基本涵蓋了Hadoop分布式平臺(tái)的所有技術(shù)核心。

HDFS

對(duì)外部客戶機(jī)而言,HDFS就像一個(gè)傳統(tǒng)的分級(jí)文件系統(tǒng)。可以創(chuàng)建、刪除、移動(dòng)或重命名文件,等等。但是

HDFS 的架構(gòu)是基于一組特定的節(jié)點(diǎn)構(gòu)建的(參見(jiàn)圖 1),這是由它自身的特點(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)大不相同。塊的大?。ㄍǔ?/p>

64MB)和復(fù)制的塊數(shù)量在創(chuàng)建文件時(shí)由客戶機(jī)決定。NameNode 可以控制所有文件操作。HDFS 內(nèi)部的所有通信都基于標(biāo)準(zhǔn)的 TCP/IP

協(xié)議。

NameNode

NameNode

是一個(gè)通常在 HDFS 實(shí)例中的單獨(dú)機(jī)器上運(yùn)行的軟件。它負(fù)責(zé)管理文件系統(tǒng)名稱空間和控制外部客戶機(jī)的訪問(wèn)。NameNode 決定是否將文件映射到

DataNode 上的復(fù)制塊上。對(duì)于最常見(jiàn)的 3

個(gè)復(fù)制塊,第一個(gè)復(fù)制塊存儲(chǔ)在同一機(jī)架的不同節(jié)點(diǎn)上,最后一個(gè)復(fù)制塊存儲(chǔ)在不同機(jī)架的某個(gè)節(jié)點(diǎn)上。注意,這里需要您了解集群架構(gòu)。

實(shí)際的

I/O事務(wù)并沒(méi)有經(jīng)過(guò) NameNode,只有表示 DataNode 和塊的文件映射的元數(shù)據(jù)經(jīng)過(guò)

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)丟失。

NameNode本身不可避免地具有SPOF(Single Point Of Failure)單點(diǎn)失效的風(fēng)險(xiǎn),主備模式并不能解決這個(gè)問(wèn)題,通過(guò)Hadoop Non-stop namenode才能實(shí)現(xiàn)100% uptime可用時(shí)間。

DataNode

DataNode

也是一個(gè)通常在 HDFS實(shí)例中的單獨(dú)機(jī)器上運(yùn)行的軟件。Hadoop 集群包含一個(gè) NameNode 和大量 DataNode。DataNode

通常以機(jī)架的形式組織,機(jī)架通過(guò)一個(gè)交換機(jī)將所有系統(tǒng)連接起來(lái)。Hadoop 的一個(gè)假設(shè)是:機(jī)架內(nèi)部節(jié)點(diǎn)之間的傳輸速度快于機(jī)架間節(jié)點(diǎn)的傳輸速度。

DataNode

響應(yīng)來(lái)自 HDFS 客戶機(jī)的讀寫請(qǐng)求。它們還響應(yīng)來(lái)自 NameNode 的創(chuàng)建、刪除和復(fù)制塊的命令。NameNode 依賴來(lái)自每個(gè)

DataNode 的定期心跳(heartbeat)消息。每條消息都包含一個(gè)塊報(bào)告,NameNode

可以根據(jù)這個(gè)報(bào)告驗(yàn)證塊映射和其他文件系統(tǒng)元數(shù)據(jù)。如果 DataNode 不能發(fā)送心跳消息,NameNode

將采取修復(fù)措施,重新復(fù)制在該節(jié)點(diǎn)上丟失的塊。

MapReduce

在Hadoop中,一個(gè)MapReduce作業(yè)通常會(huì)把輸入的數(shù)據(jù)集切分為若干獨(dú)立的數(shù)據(jù)塊,由Map任務(wù)以完全并行的方式去處理它們??蚣軙?huì)對(duì)Map的輸出先進(jìn)行排序,然后把結(jié)果輸入給Reduce任務(wù)。通常作業(yè)的輸入和輸出都會(huì)被存儲(chǔ)在文件系統(tǒng)中,整個(gè)框架負(fù)責(zé)任務(wù)的調(diào)度和監(jiān)控,以及重新執(zhí)行已經(jīng)關(guān)閉的任務(wù)。

通常,MapReduce框架和分布式文件系統(tǒng)是運(yùn)行在一組相同的節(jié)點(diǎn)上,也就是說(shuō),計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)通常都是在一起的。這種配置允許框架在那些已經(jīng)存好數(shù)據(jù)的節(jié)點(diǎn)上高效地調(diào)度任務(wù),這可以使得整個(gè)集群的網(wǎng)絡(luò)帶寬被非常高效地利用。

JobTracker

JobTracker是一個(gè)master服務(wù),軟件啟動(dòng)之后JobTracker接收J(rèn)ob,負(fù)責(zé)調(diào)度Job的每一個(gè)子任務(wù)task運(yùn)行于TaskTracker上,并監(jiān)控它們,如果發(fā)現(xiàn)有失敗的task就重新運(yùn)行它。一般情況應(yīng)該把JobTracker部署在單獨(dú)的機(jī)器上。

TaskTracker

TaskTracker是運(yùn)行在多個(gè)節(jié)點(diǎn)上的slaver服務(wù)。TaskTracker主動(dòng)與JobTracker通信,接收作業(yè),并負(fù)責(zé)直接執(zhí)行每一個(gè)任務(wù),而且TaskTracker都需要運(yùn)行在HDFS的DataNode上。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • HDFS的體系結(jié)構(gòu) 設(shè)計(jì)目標(biāo) 自動(dòng)快速檢測(cè)應(yīng)對(duì)硬件錯(cuò)誤 流式訪問(wèn)數(shù)據(jù) 轉(zhuǎn)移計(jì)算本身比轉(zhuǎn)移數(shù)據(jù)更加劃算 簡(jiǎn)單的數(shù)據(jù)一...
    Spike_3154閱讀 982評(píng)論 0 2
  • 首先,我們?cè)谑褂们跋瓤纯碒DFS是什麼?這將有助于我們是以后的運(yùn)維使用和故障排除思路的獲得。 HDFS采用mast...
    W_Bousquet閱讀 4,473評(píng)論 0 2
  • 1.hadoop是什么? 一個(gè)適合大數(shù)據(jù)的分布式存儲(chǔ)和計(jì)算平臺(tái). 是一個(gè)平臺(tái),分布式的存儲(chǔ)和分布式的計(jì)算,在平臺(tái)之...
    君滿樓001閱讀 440評(píng)論 0 3
  • 我想天真無(wú)邪的笑,我想無(wú)憂無(wú)慮的跑,我也想每天不考慮那么多,我也想做個(gè)簡(jiǎn)單的女孩子。 然而事實(shí)并非如此。 和男友分...
    禾子小斤欠閱讀 548評(píng)論 2 0
  • 520后第一次電話打給我。
    Sherrinie閱讀 258評(píng)論 0 0

友情鏈接更多精彩內(nèi)容