文章目錄
- 前言
- 1 大資料技術體系
- 2 大資料平臺演變
- 3 Hadoop:
- 4 Hadoop生態圈
- 4.1 Hive:一個基于Hadoop的資料倉庫工具
- 4.2 HBase:一款分布式資料庫
- 4.3 Kafka:一種訊息中間件
- 4.4 ZooKeeper:一個用于分布式應用的高性能協調服務
- 5 Spark
- 6 Flink
- 6 結尾
前言
我們現在生活的時代是一個資料時代,近年來隨著互聯網的高速發展,每分每秒都在產生資料,那么產生的這些資料如何進行存盤和相應的分析處理呢?各大公司紛紛研發和采用一批新技術來應對日益龐大的資料處理需求,主要包括分布式檔案系統、分布式計算框架等,這些都是我們需要學習和掌握的,
要想學習一門技術,我通常先從全域的角度出發,首先建立起對這門技術的認識,了解其發展現狀,以及技術體系,然后循序漸進的去了解這項技術應用到的知識,把它們梳理清楚,串聯起來,
1 大資料技術體系
- 基礎技術:大資料基礎技術為應對大資料時代的多種資料特征而產生,大資料時代,資料量大、資料源異構多樣、資料實效性高等特征催生了高效完成海量異構資料存盤與計算的技術需求,
- 資料管理技術:企業與組織內部的大量資料因缺乏有效的管理普遍存在著資料質量低、獲取難、整合不易、標準混亂等問題,使得資料后續的使用存在眾多障礙,在此情況下,用于資料整合的資料集成技術,以及用于實作一系列資料資產管理職能的資料管理技術隨之出現,
- 資料分析應用技術:資料分析應用技術發掘資料資源的內蘊價值,在擁有充足的存盤計算能力以及高質量可用資料的情況下,如何將資料中蘊涵的價值充分挖掘并同相關的具體業務結合以實作資料的增值成為了關鍵,用以發掘資料價值的資料分析應用技術,包括以BI Business Intelligence )工具為代表的簡單統計分析與可視化展現技術,及以傳統機器學習、基于深度神經網路的深度學習為基礎的挖掘分析建模技術紛紛涌現,幫助用戶發掘資料價值并進一步將分析結果和模型應用于實際業務場景中,
- 資料安全流通技術:資料安全流通技術助力安全合規的資料使用及共享,在資料價值的釋放初現曙光的同時,資料安全問題也愈加凸顯,資料泄露、資料丟失、資料濫用等安全事件層出不窮,對國家、企業和個人用戶造成了惡劣影響,如何應對大資料時代下嚴峻的資料安全威脅,在安全合規的前提下共享及使用資料成為了備受矚目的問題,訪問控制、身份識別、資料加密、資料脫敏等傳統資料保護技術正積極向更加適應大資料場景的方向不斷發展,同時,側重于實作安全資料流通的隱私計算技術也成為了熱點發展方向,

摘自中國信通院出版的《大資料白皮書(2020年)》
2 大資料平臺演變
大資料技術體系的核心始終是面向海量資料的存盤、計算、處理等基礎技術,
2000年前后,在互聯網高速發展的時代背景下,資料量急劇增大、資料型別愈加復雜、資料處理速度需求不斷提高,大資料時代全面到來,

摘自中國信通院出版的《大資料白皮書(2021年)》
3 Hadoop:
Hadoop是較早出現的一種分布式架構,得到了大量的應用,
Hadoop四大基本組件:
- Hadoop基礎功能庫:支持其他Hadoop模塊的通用程式包,
- HDFS:一個分布式檔案系統,能夠以高吞吐量訪問應用的資料,
- YARN:一個作業調度和資源管理框架,
- MapReduce:一個基于YARN的大資料并行處理程式,

4 Hadoop生態圈
除了基本組成部分,Hadoop生態圈中還有很多其他的工具組件,Hadoop生態圈就是為了處理大資料而產生的解決方案,本問主要介紹:
- Hive:一個基于Hadoop的資料倉庫工具;
- Hbase:一款分布式資料庫;
- Kafka:一種訊息中間件;
- Zookeeper:一個用于分布式應用的高性能協調服務;
4.1 Hive:一個基于Hadoop的資料倉庫工具
Hive,構建在Hadoop大資料平臺之上,是一個基于Hadoop的資料倉庫工具,
Hive能夠幫助用戶屏蔽掉復雜的Map Reduce邏輯,借助Hive,能夠讓開發人員能夠通過SQL來計算和處理HDFS上的結構化資料,它可以將結構化的資料檔案映射為一張資料庫表,并提供完整的類SQL查詢功能,
具體地說,Hive資料存盤依賴于HDFS,HiveSQL的執行引擎依賴MapReduce、Spark、Tez等分布式計算引擎,Hive作業的資源調度依賴于YARN、Mesos等大資料資源調度管理組件,
所以到底為什么要使用Hive?
使用Hadoop的Map Reduce進行資料處理時面臨著人員學習成本太高、專案周期要求太短、Map Reduce實作復雜邏輯開發難度太大等問題,這就是我們使用Hive的原因所在了,當我們使用Hive時,操作介面采用類SQL語法,提供了快速開發的能力,避免了寫Map Reduce,減少了開發人員的學習成本,而且擴展功能很方便,
Hive和傳統資料庫的區別?
Hive具有SQL資料庫的很多類似功能,但應用場景完全不同,Hive只適合做批量資料統計分析,

摘自《Hadoop與Spark的大資料開發實戰》,2018年出版
4.2 HBase:一款分布式資料庫
HBase(Hadoop Database)是一個高可靠、高性能、面向列、可伸縮的分布式資料庫,利用HBase技術可在廉價PC上搭建起大規模結構化存盤集群,HBase,使用HDFS作為底層檔案存盤系統,在其上可以運行MapReduce批量處理資料,使用ZooKeeper作為協同服務組件,
HDFS可以存盤海量資料,但訪問和查詢速度比較慢,HBase可以提供給用戶毫秒級的實時查詢服務,它是一個基于HDFS的分布式資料庫,
HBase還是一種非關系型資料庫,即NoSQL資料庫,作為NoSQL家庭的一員,HBase的出現彌補了Hadoop只能離線批處理的不足,同時能夠存盤小檔案,提供海量資料的隨機檢索,并保證一定的性能,而這些特性也完善了整個Hadoop生態系統,泛化其大資料的處理能力,結合其高性能、穩定、擴展性好的特行,給使用大資料的企業帶來了福音,
NoSQL在大資料中扮演的角色
NoSQL,是Not only SQL的縮寫,泛指非關系型的資料庫,與關系型資料庫相比,NoSQL存在許多顯著的不同點,其中最重要的是NoSQL不使用SQL作為查詢語言,其資料存盤可以不需要固定的表模式,也通常會避免使用SQL的JOIN操作,一般又都具備水平可擴展的特性,NoSQL的實作具有兩個特征:使用硬碟和把隨機存盤器作存盤載體,
Hive和Hbase的關系:在大資料架構中,Hive和HBase是協作關系,資料流一般如下:
- 通過ETL工具將資料源抽取到HDFS存盤;
- 通過Hive清洗、處理和計算原始資料;
- HIve清洗處理后的結果,如果是面向海量資料隨機查詢場景的可存入Hbase
- 資料應用從HBase查詢資料;
參考:
- 《Hbase企業應用開發實戰》2014
- 《Hbase原理與實踐》2019
4.3 Kafka:一種訊息中間件
(1)先了解:什么是訊息中間件?
在計算機領域,但凡在兩個不同應用或系統間傳遞的資料,都可以稱為訊息,
這些訊息可以表現為字串、JSON物件或AVRO物件等,當在兩個業務邏輯處理單元間傳遞訊息時,需要先將這些訊息物件序列化為位元組陣列,然后經網路傳遞,最后由訊息消費方接收并反序列化,恢復為最初的訊息模樣,
(2)訊息中間件的作業模式
- 點對點模式(Point-to-Point,P2P)
點對點模式,是訊息中間件最簡單的作業模式,
用Java中的BlockingQueue來描述點對點模式是非常合適的,訊息生產者將訊息發送到訊息中間件的某個佇列中,同時訊息消費者從這個佇列的另一端接收訊息,生產者和消費者之間是相互獨立的,點對點模式的訊息中間件支持多個消費者,但是一條訊息只能由一個消費者消費,圖展示了訊息中間件點對點模式的作業原理,

2. 發布/訂閱模式
發布/訂閱模式是訊息中間件的另一種作業模式,發布訂閱模式的功能更強,使用場景更多,是大多數訊息中間件的主要作業模式,
在發布訂閱模式中,我們先定義好一個具有特定意義的主題( topic),訊息生產者將所有屬于這個主題的訊息發送到訊息中間件中代表這個主題的訊息佇列上,然后任何訂閱了這個主題、對該主題感興趣的訊息消費者都可以接收這些訊息,發布訂閱模式使得訊息生產者和訊息消費者之間的通信不再是一種點到點的傳輸,而是由訊息中間件作為代理人統一管理訊息的接收、組織、存盤和轉發,這樣減少了系統中所有生產者和消費者之間的連接數量,從而降低整個系統的復雜度,和點對點方式不同,發布到主題的訊息會被所有訂閱者消費,圖8-2展示了訊息中間件發布/訂閱模式的作業原理,

(3)Kafka:訊息中間件的一種
Kafka是由LinkedIn開源的一個用于管理和處理流式資料的發布/訂閱訊息系統,它具備超高性能、分布式、錯誤容忍等優良特性,非常適合用于實時傳輸流式大資料,可以說,Kafka是我們構建流計算系統的必備利器,

摘自《實時流計算系統與實作》,2021,推薦這本書!
4.4 ZooKeeper:一個用于分布式應用的高性能協調服務
Hadoop生態圈中很多組件使用動物來命名,形成了一個大型“動物園”,ZooKeeper是這個動物園的管理者,主要負責分布式環境的協調,

5 Spark
Spark是基于記憶體計算的大資料并行計算框架,因為它基于記憶體計算,所以提高了在大資料環境下資料處理的實時性,同時保證了高容錯性和高可伸縮性,允許用戶將Spark部署在大量廉價硬體之上,形成集群,
Spark提供了一個強有力的一堆疊式通用的解決方案,使用Spark能完成批處理、互動式查詢(Spark SQL)、實時流處理(Spark Streaming)、圖計算(Graph X)及機器學習(MLlib),Spark內部的這些組件都可以在一個Spark應用程式中無縫對接、綜合使用,

Spark與Hadoop的關系
首先這兩個名字后面都代表了業界先進的大資料技術生態圈,從這個角度上來說,兩者肯定是存在競爭關系的,但在實際情況中,由于Hadoop存量用戶數太多,加之Spark生態圈技術成熟度的一些問題,因此,更多情況下,Spark和Hadoop會互補形成生產環境的解決方案,它們之間的關系是競爭與合作并存,
Spark執行的特點Hadoop中包含計算框架MapReduce和分布式檔案系統HDFS,Spark是MapReduce的替代方案,而且兼容HDFS、Hive等分布式存盤層,融入Hadoop的生態系統,并彌補MapReduce的不足,
—《spark大資料分析實戰》
6 Flink
在大資料領域,現在已經不缺少資料處理框架了,但是沒有一個框架能夠完全滿足不同的處理需求,
批處理與流處理一般被認為是兩種截然不同的任務,一個大資料框架一般會被設計為只能處理其中一種任務,比如,Storm只支持流處理任務,而MapReduce、Spark只支持批處理任務,SparkStreaming是ApacheSpark之上支持流處理任務的子系統,這看似是一個特例,其實不然,
但是,Flink是一款新的大資料處理引擎,目標是統一不同來源的資料處理,這個目標看起來和spark和類似,沒錯,flink也在嘗試解決spark在解決的問題,這兩套系統都在嘗試建立一個統一的平臺可以運行批量,流式,互動式,圖處理,機器學習等應用,所以,flink和spark的目標差別并不大,他們最主要的區別在于實作的細節,

6 結尾
以上整理的內容,均是摘自看過的書中,書中介紹的內容遠不止此,有興趣的童鞋可以根據書名,繼續深入探索喲,后續也會一邊學習,一邊整理,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/432165.html
標籤:其他
