都说Hadoop与大数据平台难懂?我就花了6分钟,但是看得明明白白
我今天花了大半個下午的時間,寫了這篇hadoop的架構(gòu),全篇都是以大白話的形式,也算是為后面更加詳細的每一部分開了個好頭吧,如果喜歡請點轉(zhuǎn)發(fā)和關(guān)注,如果有疑問,直接在評論里說出來,大家一起解決,才能進步。
一、概念
Hadoop誕生于2006年,一個分布式系統(tǒng)基礎(chǔ)架構(gòu),由Apache基金會開發(fā)。Hadoop的主要目標是對分布式環(huán)境下的“大數(shù)據(jù)”以一種可靠、高效、可伸縮的方式處理。
Hadoop框架透明地為應(yīng)用提供可靠性和數(shù)據(jù)移動。它實現(xiàn)了名為MapReduce的編程范式:應(yīng)用程序被分割成許多小部分,而每個部分都能在集群中的任意節(jié)點上執(zhí)行或重新執(zhí)行。
Hadoop還提供了分布式文件系統(tǒng),用以存儲所有計算節(jié)點的數(shù)據(jù),這為整個集群帶來了非常高的帶寬。MapReduce和分布式文件系統(tǒng)的設(shè)計,使得整個框架能夠自動處理節(jié)點故障。它使應(yīng)用程序與成千上萬的獨立計算的電腦和PB級的數(shù)據(jù)。
?
二、組成
1.Hadoop的核心組件
?
分析:Hadoop的核心組件分為:HDFS(分布式文件系統(tǒng))、MapRuduce(分布式運算編程框架)、YARN(運算資源調(diào)度系統(tǒng))
2.HDFS的文件系統(tǒng)
?
HDFS
1.定義
整個Hadoop的體系結(jié)構(gòu)主要是通過HDFS(Hadoop分布式文件系統(tǒng))來實現(xiàn)對分布式存儲的底層支持,并通過MR來實現(xiàn)對分布式并行任務(wù)處理的程序支持。
HDFS是Hadoop體系中數(shù)據(jù)存儲管理的基礎(chǔ)。它是一個高度容錯的系統(tǒng),能檢測和應(yīng)對硬件故障,用于在低成本的通用硬件上運行。HDFS簡化了文件的一致性模型,通過流式數(shù)據(jù)訪問,提供高吞吐量應(yīng)用程序數(shù)據(jù)訪問功能,適合帶有大型數(shù)據(jù)集的應(yīng)用程序。
?
MapReduce
1.定義
Hadoop MapReduce是google MapReduce 克隆版。
MapReduce是一種計算模型,用以進行大數(shù)據(jù)量的計算。其中Map對數(shù)據(jù)集上的獨立元素進行指定的操作,生成鍵-值對形式中間結(jié)果。Reduce則對中間結(jié)果中相同“鍵”的所有“值”進行規(guī)約,以得到最終結(jié)果。MapReduce這樣的功能劃分,非常適合在大量計算機組成的分布式并行環(huán)境里進行數(shù)據(jù)處理。
2.組成
?
分析:
(1)JobTracker
JobTracker叫作業(yè)跟蹤器,運行到主節(jié)點(Namenode)上的一個很重要的進程,是MapReduce體系的調(diào)度器。用于處理作業(yè)(用戶提交的代碼)的后臺程序,決定有哪些文件參與作業(yè)的處理,然后把作業(yè)切割成為一個個的小task,并把它們分配到所需要的數(shù)據(jù)所在的子節(jié)點。
Hadoop的原則就是就近運行,數(shù)據(jù)和程序要在同一個物理節(jié)點里,數(shù)據(jù)在哪里,程序就跑去哪里運行。這個工作是JobTracker做的,監(jiān)控task,還會重啟失敗的task(于不同的節(jié)點),每個集群只有唯一一個JobTracker,類似單點的NameNode,位于Master節(jié)點
(2)TaskTracker
TaskTracker叫任務(wù)跟蹤器,MapReduce體系的最后一個后臺進程,位于每個slave節(jié)點上,與datanode結(jié)合(代碼與數(shù)據(jù)一起的原則),管理各自節(jié)點上的task(由jobtracker分配),
每個節(jié)點只有一個tasktracker,但一個tasktracker可以啟動多個JVM,運行Map Task和Reduce Task;并與JobTracker交互,匯報任務(wù)狀態(tài),
Map Task:解析每條數(shù)據(jù)記錄,傳遞給用戶編寫的map(),并執(zhí)行,將輸出結(jié)果寫入本地磁盤(如果為map-only作業(yè),直接寫入HDFS)。
Reducer Task:從Map Task的執(zhí)行結(jié)果中,遠程讀取輸入數(shù)據(jù),對數(shù)據(jù)進行排序,將數(shù)據(jù)按照分組傳遞給用戶編寫的reduce函數(shù)執(zhí)行。
Hive
1.定義
Hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供完整的sql查詢功能,可以將sql語句轉(zhuǎn)換為MapReduce任務(wù)進行運行。
Hive是建立在 Hadoop 上的數(shù)據(jù)倉庫基礎(chǔ)構(gòu)架。它提供了一系列的工具,可以用來進行數(shù)據(jù)提取轉(zhuǎn)化加載(ETL),這是一種可以存儲、查詢和分析存儲在 Hadoop 中的大規(guī)模數(shù)據(jù)的機制。
Hive 定義了簡單的類 SQL 查詢語言,稱為 HQL,它允許熟悉 SQL 的用戶查詢數(shù)據(jù)。同時,這個語言也允許熟悉 MapReduce 開發(fā)者的開發(fā)自定義的 mapper 和 reducer 來處理內(nèi)建的 mapper 和 reducer 無法完成的復(fù)雜的分析工作。
2.組成
?
分析:Hive架構(gòu)包括:CLI(Command Line Interface)、JDBC/ODBC、Thrift Server、WEB GUI、Metastore和Driver(Complier、Optimizer和Executor),這些組件分為兩大類:服務(wù)端組件和客戶端組件
3.Hive與傳統(tǒng)數(shù)據(jù)庫的異同
(1)查詢語言
由于 SQL 被廣泛的應(yīng)用在數(shù)據(jù)倉庫中,因此專門針對Hive的特性設(shè)計了類SQL的查詢語言HQL。熟悉SQL開發(fā)的開發(fā)者可以很方便的使用Hive進行開發(fā)。
(2)數(shù)據(jù)存儲位置
Hive是建立在Hadoop之上的,所有Hive的數(shù)據(jù)都是存儲在HDFS中的。而數(shù)據(jù)庫則可以將數(shù)據(jù)保存在塊設(shè)備或者本地文件系統(tǒng)中。
(3)數(shù)據(jù)格式
Hive中沒有定義專門的數(shù)據(jù)格式,數(shù)據(jù)格式可以由用戶指定,用戶定義數(shù)據(jù)格式需要指定三個屬性:列分隔符(通常為空格、”\t”、”\\\x001″)、行分隔符(”\n”)以及讀取文件數(shù)據(jù)的方法(Hive中默認有三個文件格式TextFile,SequenceFile以及RCFile)。
(4)數(shù)據(jù)更新
由于Hive是針對數(shù)據(jù)倉庫應(yīng)用設(shè)計的,而數(shù)據(jù)倉庫的內(nèi)容是讀多寫少的。因此,Hive中不支持
對數(shù)據(jù)的改寫和添加,所有的數(shù)據(jù)都是在加載的時候中確定好的。而數(shù)據(jù)庫中的數(shù)據(jù)通常是需要經(jīng)常進行修改的,因此可以使用INSERT INTO … VALUES添加數(shù)據(jù),使用UPDATE … SET修改數(shù)據(jù)。
(5)索引
Hive在加載數(shù)據(jù)的過程中不會對數(shù)據(jù)進行任何處理,甚至不會對數(shù)據(jù)進行掃描,因此也沒有對數(shù)據(jù)中的某些Key建立索引。Hive要訪問數(shù)據(jù)中滿足條件的特定值時,需要暴力掃描整個數(shù)據(jù),因此訪問延遲較高。
由于MapReduce的引入, Hive可以并行訪問數(shù)據(jù),因此即使沒有索引,對于大數(shù)據(jù)量的訪問,Hive仍然可以體現(xiàn)出優(yōu)勢。數(shù)據(jù)庫中,通常會針對一個或者幾個列建立索引,因此對于少量的特定條件的數(shù)據(jù)的訪問,數(shù)據(jù)庫可以有很高的效率,較低的延遲。
由于數(shù)據(jù)的訪問延遲較高,決定了Hive不適合在線數(shù)據(jù)查詢。
(6)執(zhí)行
Hive中大多數(shù)查詢的執(zhí)行是通過Hadoop提供的MapReduce來實現(xiàn)的(類似select * from tbl的查詢不需要MapReduce)。而數(shù)據(jù)庫通常有自己的執(zhí)行引擎。
(7)數(shù)據(jù)規(guī)模
由于Hive建立在集群上并可以利用MapReduce進行并行計算,因此可以支持很大規(guī)模的數(shù)據(jù);對應(yīng)的,數(shù)據(jù)庫可以支持的數(shù)據(jù)規(guī)模較小。
Hbase
1.定義
HBase – Hadoop Database,是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統(tǒng),利用HBase技術(shù)可在廉價PC Server上搭建起大規(guī)模結(jié)構(gòu)化存儲集群。
HBase是Google Bigtable的開源實現(xiàn),類似Google Bigtable利用GFS作為其文件存儲系統(tǒng),HBase利用Hadoop HDFS作為其文件存儲系統(tǒng);
Google運行MapReduce來處理Bigtable中的海量數(shù)據(jù),HBase同樣利用Hadoop MapReduce來處理HBase中的海量數(shù)據(jù);
Google Bigtable利用 Chubby作為協(xié)同服務(wù),HBase利用Zookeeper作為協(xié)同服務(wù)。
2.組成
?
?
分析:從上圖可以看出:Hbase主要由Client、Zookeeper、HMaster和HRegionServer組成,由Hstore作存儲系統(tǒng)。
- Client
HBase Client使用HBase的RPC機制與HMaster和HRegionServer進行通信,對于管理類操作,Client與 HMaster進行RPC;對于數(shù)據(jù)讀寫類操作,Client與HRegionServer進行RPC
- Zookeeper
Zookeeper Quorum 中除了存儲了 -ROOT- 表的地址和 HMaster 的地址,HRegionServer 也會把自己以 Ephemeral 方式注冊到 Zookeeper 中,使得 HMaster 可以隨時感知到各個HRegionServer 的健康狀態(tài)。
三、Hadoop的應(yīng)用實例
1.回顧Hadoop的整體架構(gòu)
?
2.Hadoop的應(yīng)用——流量查詢系統(tǒng)
(1)流量查詢系統(tǒng)總體框架
?
(2)流量查詢系統(tǒng)總體流程
?
(3)流量查詢系統(tǒng)數(shù)據(jù)預(yù)處理功能框架
?
(4)流量查詢系統(tǒng)數(shù)據(jù)預(yù)處理流程
?
(5)流量查詢NoSQL數(shù)據(jù)庫功能框架
?
(6)流量查詢服務(wù)功能框架
?
(7)實時流計算數(shù)據(jù)處理流程圖
歡迎關(guān)注我的公眾號“商業(yè)智能研究”,私信回復(fù)“資料包”,即可領(lǐng)取大數(shù)據(jù)、數(shù)據(jù)中臺、商業(yè)智能、數(shù)據(jù)倉庫等6G精華資料!
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的都说Hadoop与大数据平台难懂?我就花了6分钟,但是看得明明白白的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 老板要做数字化转型,干了3个月的脏活累活
- 下一篇: 01-第一章 Java开发中通用的方法和