- Hadoop構(gòu)建數(shù)據(jù)倉庫實踐
- 王雪迎
- 1667字
- 2020-11-28 16:11:53
3.2 Hadoop簡介
Hadoop是較早用來處理大數(shù)據(jù)集合的分布式存儲計算基礎(chǔ)架構(gòu),最早由Apache軟件基金會開發(fā)。利用Hadoop,用戶可以在不了解分布式底層細節(jié)的情況下,開發(fā)分布式程序,充分利用集群的威力,執(zhí)行高速運算和存儲。簡單地說,Hadoop是一個平臺,在它之上可以更容易地開發(fā)和運行處理大規(guī)模數(shù)據(jù)的軟件。
Hadoop軟件庫是一個計算框架,在這個框架下,可以使用一種簡單的編程模式,通過多臺計算機構(gòu)成的集群,分布式處理大數(shù)據(jù)集。Hadoop被設(shè)計成可擴展的,它可以方便地從單一服務(wù)器擴展到數(shù)千臺機器,每臺機器進行本地計算和存儲。除了依賴于硬件交付的高可用性,軟件庫本身也提供數(shù)據(jù)保護,并可以在應(yīng)用層做失敗處理,從而在計算機集群的頂層提供高可用服務(wù)。
3.2.1 Hadoop的構(gòu)成
Hadoop包括以下四個基本模塊:
● Hadoop基礎(chǔ)功能庫:支持其他Hadoop模塊的通用程序包。
● HDFS:一個分布式文件系統(tǒng),能夠以高吞吐量訪問應(yīng)用的數(shù)據(jù)。
● YARN:一個作業(yè)調(diào)度和資源管理框架。
● MapReduce:一個基于YARN的大數(shù)據(jù)并行處理程序。
除了基本模塊,Hadoop相關(guān)的其他項目還包括:
● Ambari:一個基于Web的工具,用于配置、管理和監(jiān)控Hadoop集群。支持HDFS、MapReduce、Hive、HCatalog、HBase、ZooKeeper、Oozie、Pig和Sqoop。Ambari還提供顯示集群健康狀況的儀表盤,如熱點圖等。Ambari以圖形化的方式查看MapReduce、Pig和Hive應(yīng)用程序的運行情況,因此可以通過對用戶友好的方式診斷應(yīng)用的性能問題。
● Avro:一個數(shù)據(jù)序列化系統(tǒng)。
● Cassandra:一個可擴展的無單點故障的NoSQL多主數(shù)據(jù)庫。
● Chukwa:一個用于大型分布式系統(tǒng)的數(shù)據(jù)采集系統(tǒng)。
● HBase:一個可擴展的分布式數(shù)據(jù)庫,支持大表的結(jié)構(gòu)化數(shù)據(jù)存儲。
● Hive:一個數(shù)據(jù)倉庫基礎(chǔ)架構(gòu),提供數(shù)據(jù)匯總和命令行的即席查詢功能。
● Mahout:一個可擴展的機器學習和數(shù)據(jù)挖掘庫。
● Pig:一個用于并行計算的高級數(shù)據(jù)流語言和執(zhí)行框架。
● Spark:一個處理Hadoop數(shù)據(jù)的、高速的、通用的計算引擎。Spark提供了一種簡單而富于表達能力的編程模式,支持包括ETL、機器學習、數(shù)據(jù)流處理、圖像計算等多種應(yīng)用。
● Tez:一個完整的數(shù)據(jù)流編程框架,在YARN之上建立,提供強大而靈活的引擎,執(zhí)行任意的有向無環(huán)圖(DAG)數(shù)據(jù)處理任務(wù),既支持批處理又支持交互式的用戶場景。Tez已經(jīng)被Hive、Pig等Hadoop生態(tài)圈的組件所采用,用來替代MapReduce作為底層執(zhí)行引擎。
● ZooKeeper:一個用于分布式應(yīng)用的高性能協(xié)調(diào)服務(wù)。
3.2.2 Hadoop的主要特點
● 擴容能力:能可靠地存儲和處理PB級的數(shù)據(jù)。
● 成本低:可以利用廉價通用的機器組成的服務(wù)器群分發(fā)、處理數(shù)據(jù)。這些服務(wù)器群總計可達數(shù)千個節(jié)點。
● 高效率:通過分發(fā)數(shù)據(jù),Hadoop可以在數(shù)據(jù)所在的節(jié)點上并行地處理它們,這使得處理非常快速。
● 可靠性:Hadoop能自動地維護數(shù)據(jù)的多份復制,并且在任務(wù)失敗后能自動地重新部署計算任務(wù)。
3.2.3 Hadoop架構(gòu)
Hadoop集群架構(gòu)如圖3-1所示。

圖3-1 一個多節(jié)點Hadoop集群架構(gòu)
Hadoop由通用包、MapReduce(MapReduce/MR1或YARN/MR2)、HDFS所構(gòu)成。通用包提供文件系統(tǒng)和操作系統(tǒng)級別的抽象,包含有必需的JavaArchive(JAR)和啟動Hadoop集群所需的相關(guān)腳本。
為了有效調(diào)度任務(wù),每一個與Hadoop兼容的文件系統(tǒng)都應(yīng)該具有位置感知的功能,簡單說位置感知就是知道工作節(jié)點所處的機架(準確地說是網(wǎng)絡(luò)交換機),因此也叫機架感知。Hadoop應(yīng)用能夠使用這一信息執(zhí)行數(shù)據(jù)所在節(jié)點上的代碼。當任務(wù)失敗時,在相同交換機上的節(jié)點之間進行失敗切換,這會節(jié)省網(wǎng)絡(luò)流量。HDFS使用機架感知在多個交換機的節(jié)點間復制數(shù)據(jù),用于數(shù)據(jù)冗余。這種方法降低了機架掉電或交換機故障產(chǎn)生的影響,如果一個硬件出現(xiàn)問題,數(shù)據(jù)仍然是可用的。
一個小規(guī)模的Hadoop集群包含一個主節(jié)點和多個從節(jié)點(工作節(jié)點)。主節(jié)點上的進程有Job Tracker(對應(yīng)MR2的Resource Manager)、NameNode,依據(jù)配置可能還會有Task Tracker(對應(yīng)MR2的Node Manager)和DataNode。從節(jié)點或工作節(jié)點上的進程有DataNode和TaskTracker,盡管該節(jié)點可能只是一個數(shù)據(jù)工作節(jié)點,或者只是一個計算工作節(jié)點。這種架構(gòu)一般只用于非標準的小型應(yīng)用。
在一個大型Hadoop集群中,HDFS節(jié)點通過專用的NameNode服務(wù)器進行管理,NameNode服務(wù)器上保存有文件系統(tǒng)的索引。SecondaryNameNode可以產(chǎn)生NameNode內(nèi)存結(jié)構(gòu)的快照,因此可以防止NameNode文件系統(tǒng)損壞造成的數(shù)據(jù)丟失。類似地,也有一個獨立的JobTracker服務(wù)器管理節(jié)點間的作業(yè)調(diào)度。當HadoopMapReduce運行在其他文件系統(tǒng)上時,HDFS的NameNode、SecondaryNameNode和DataNode會被與特定文件系統(tǒng)相關(guān)的等價結(jié)構(gòu)所代替。
Hadoop需要JRE 1.6及其以上版本。標準的集群啟動和關(guān)閉腳本需要在集群節(jié)點間配置ssh。
- 同步:秩序如何從混沌中涌現(xiàn)
- 數(shù)據(jù)挖掘原理與實踐
- Python絕技:運用Python成為頂級數(shù)據(jù)工程師
- SQL Server入門經(jīng)典
- 從0到1:數(shù)據(jù)分析師養(yǎng)成寶典
- 圖解機器學習算法
- Hadoop 3.x大數(shù)據(jù)開發(fā)實戰(zhàn)
- 大數(shù)據(jù)技術(shù)入門
- 科研統(tǒng)計思維與方法:SPSS實戰(zhàn)
- 云數(shù)據(jù)中心網(wǎng)絡(luò)與SDN:技術(shù)架構(gòu)與實現(xiàn)
- Oracle 11g+ASP.NET數(shù)據(jù)庫系統(tǒng)開發(fā)案例教程
- Gideros Mobile Game Development
- 區(qū)塊鏈應(yīng)用開發(fā)指南:業(yè)務(wù)場景剖析與實戰(zhàn)
- SOLIDWORKS 2018中文版機械設(shè)計基礎(chǔ)與實例教程
- 全球智庫評價報告(2015)