大資料發展歷程
阿新 • • 發佈:2022-05-25
整理自 https://www.bilibili.com/video/BV1tF411479W
小資料時代
OLTP(增刪改)OLAP(查詢)二合一的系統,隨著資料量的增大開始分庫分表。之後大量資料的處理(min max avg ...)不易操作。
大資料
所有資料匯聚到一箇中心儲存,這個中心底層是“分散式”,但向上暴露的介面是“單機”的。這極大程度的降低了資料傳輸、儲存、分析的難度。
歷程:
- Hadoop
2006 年出現 Hadoop,其主要包括 1. MR(分散式計算)2. HDFS(分散式儲存)。
使用方法:寫3個函式: map函式、reduce函式、main函式。提交到hadoop叢集由多臺叢集分散式計算。 - Hive
2010 年出現,是一個在Hadoop上層的sql翻譯器,將sql語句翻譯為程式碼提交到Hadoop中執行。 - Hadoop 2.0
將叢集排程功能從MR中剝離,形成“分散式排程”,即Yarn(Yet Another Resource Negotiator)。Yarn的出現擴充套件了Hadoop生態圈,不光MR,後來的Spark、Flink也能跑在Yarn上。
- Yarn
在沒有云的時代,大資料平臺使用Yarn做分散式排程;未來會逐步切換到雲原生(Docker + k8s)
Yarn:管理的是一個個Container,每個Container是一個JVM虛擬機器
k8s:管理的是一個個Docker,每個Docker是一個資源完全隔離的Linux程序 - Spark
寫java spark程式碼比寫MR更簡潔方便,spark比MR計算快許多,因為所有中間結果不落地儲存到hdfs,而是儘可能在記憶體中。
- Spark SQL
與Hive類似,使用者使用上沒有太大變化,都是寫SQL,底層的計算引擎從MR切換到Spark
- pySpark
改寫Java為寫python,降低開發門檻
- Spark Streaming
之前的都是批處理計算,這時出現了“偽流式計算”。按照時間間隔把任務分解為一個一個的小型批處理任務,然後不斷向Spark叢集提交任務。
- Spark 部署方式
目前主要部署再yarn上,未來會遷移到k8s
- Flink
Flink是一種流失計算框架,曾經的流失計算框架Storm已沒落。其與Spark一樣,都支援單機、Yarn、k8s等多種方式部署。
Spark起家於批處理,往流式方向拓展;Flink起家於流式處理,網批處理方向擴充套件。 - SQL只會越來越普及,因為它最簡單;MR是過去時,現在基本上都是Spark/Flink;Yarn是現在,未來是k8s