自己通過閱讀了解文章和極客時間相關講解,總結該文章,閱讀需要有一定的大資料基礎知識,后續會展開描述細節,
文章目錄
- 大資料的定義
- 三駕馬車和基礎設施
- OLAP 和 OLTP 資料庫
- 大資料的三個維度
大資料的定義
5v:大量,高速,多樣化,價值,真實性,不能用傳統的方法解決
但是大資料從技術方面來講,他的核心理念就是:
第一個,是能夠伸縮到一千臺服務器以上的分布式資料處理集群的技術,集群規模有了數量級上的變化,也就把資料處理能力拉上了一個新的臺階,(可能)
第二個,是這個上千個節點的集群,是采用廉價的 PC 架構搭建起來的,所以大資料技術很容易地在大大小小的公司之間散播開來,使得整個生態繁榮,(便宜)
第三個,把資料中心當作是一臺計算機,開發者能夠像面對單臺計算機編程一樣去寫自己的代碼,而不需要操心系統的可用性、資料的一致性之類的問題,(容易)
三駕馬車和基礎設施
GFS:解決了資料的存盤問題,(優點:分布式存盤,并發寫入 缺點:缺乏高可用,至少一次的弱一致性,)
MapReduce:用簡單的 Map 和 Reduce 兩個函式,對于海量資料計算做了一次抽象,這就讓“處理”資料的人,不再需要深入掌握分布式系統的開發了,(優點:并行計算,系統容錯自動恢復,缺點:計算模型簡單,海量硬碟讀寫)
Bigtable:解決高性能隨機寫的問題,利用GFS為底層存盤,MemTable+SSTable 的底層存盤格式(優點:高性能隨機讀寫,自動調度分片 缺點:缺少Schema 缺少跨行事務)
基礎設施:
保障資料一致性的分布式鎖,(實作了 Paxos 演算法的 Chubby 鎖服務的論文)(Paxos 協議并不容易理解,于是就有了 Raft 這個更容易理解的演算法的出現)
序列化以及分布式系統之間怎么通信,通過 Thrift 序列化,向前向后兼容,
OLAP 和 OLTP 資料庫
OLTP是傳統的關系型資料庫的主要應用,主要是基本的、日常的事務處理,例如銀行交易,
OLAP是資料倉庫系統的主要應用,支持復雜的分析操作,側重決策支持,并且提供直觀易懂的查詢結果,
Hive:披上了一個 SQL 的皮,(更容易寫程式)
Spark:mapreduce多輪迭代,浪費很多的硬碟讀寫,Spark 通過把資料放在記憶體,提高速度,(更快的單輪和多輪迭代)
Bigtable:為了伸縮性,放棄了關系型資料庫的種種特性,但在后面的發展逐漸補上了Schema,事務和類sql的介面,
如果說 MapReduce 對應的迭代進行,是在不斷優化 OLAP 型別的資料處理性能,那么 Bigtable 對應的進化,則是在保障伸縮性的前提下,獲得了更多的關系型資料庫的能力,
實時資料處理:
以上框架都或多或少存在延遲,為了滿足實時的要求,產生了Storm,并提出了流批協同的Lambda 架構
又由于Kafka的精準一次(解決Storm的至少一次),提出了Kappa架構,以及以批代流,進行為微批處理的Spark Streaming,
后來發表的Dataflow 就成為了真正的“流批一體”的大資料處理架構,Flink便是按照他的模型去實作的,
大資料的三個維度
分布式系統:
- 可靠性:資料復制(同步復制的節點可以作為高可用切換的 Backup Master,而異步復制的節點只適合作為只讀的 Shadow Master,)
- 可擴展性:一:區間分片,二:通過Hash分片,最常見的一致性Hash,(單個節點存不下所有資料)
- 可維護性:快速恢復到可以使用的狀態(利用共識演算法,來確保系統中能夠對哪個節點正在正常服務作出判斷,)
單節點的存盤引擎:
- 第一個考慮的就是事務(ACID),但因為分布式的存在,退化為BASE 的模型,通過預寫日志和檢查點這些技術來保證寫入是原子的,
- 如何寫入和存盤:順序讀寫比隨機讀寫快,在記憶體上讀寫比硬碟上快;考慮演算法和資料結構中的時空復雜度,比如 Hash 表的時間復雜度是 O(1),B+ 樹的時間復雜度是 O(logN),通過結合硬體性能、資料結構和演算法特性,我們會看到分布式資料庫最常使用的,其實是基于 LSM 樹(Log-Structured Merge Tree)的 MemTable+SSTable 的解決方案,
- 資料的序列化: Thrift 這樣的二進制序列化方案,減少硬碟吞吐量,Parquet 或者 ORCFile 這樣的列存盤格式,為了在 CPU、網路和硬碟的使用上取得平衡:選擇 Snappy 或者 LZO 這樣的快速壓縮演算法,
計算引擎:
- 離線:mapreduce->spark->Hive/pig
- 實時:“最少一次”的 S4/Storm,和批處理結合,產生Lambda架構->以批代流Spark Streaming,以及“流批一體”,能夠做到“正好一次”的 Kafka 和 Kappa 結構,給出了統一的 Dataflow 模型,伴隨了Flink的誕生,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/427504.html
標籤:其他
上一篇:2022年美賽C題翻譯+思路分享
