1. 程式人生 > 其它 >大資料發展歷程

大資料發展歷程

整理自 https://www.bilibili.com/video/BV1tF411479W

小資料時代

OLTP(增刪改)OLAP(查詢)二合一的系統,隨著資料量的增大開始分庫分表。之後大量資料的處理(min max avg ...)不易操作。

大資料

所有資料匯聚到一箇中心儲存,這個中心底層是“分散式”,但向上暴露的介面是“單機”的。這極大程度的降低了資料傳輸、儲存、分析的難度。

歷程:

  1. Hadoop
    2006 年出現 Hadoop,其主要包括 1. MR(分散式計算)2. HDFS(分散式儲存)。
    使用方法:寫3個函式: map函式、reduce函式、main函式。提交到hadoop叢集由多臺叢集分散式計算。
  2. Hive
    2010 年出現,是一個在Hadoop上層的sql翻譯器,將sql語句翻譯為程式碼提交到Hadoop中執行。
  3. Hadoop 2.0
    將叢集排程功能從MR中剝離,形成“分散式排程”,即Yarn(Yet Another Resource Negotiator)。Yarn的出現擴充套件了Hadoop生態圈,不光MR,後來的Spark、Flink也能跑在Yarn上。
  4. Yarn
    在沒有云的時代,大資料平臺使用Yarn做分散式排程;未來會逐步切換到雲原生(Docker + k8s)
    Yarn:管理的是一個個Container,每個Container是一個JVM虛擬機器
    k8s:管理的是一個個Docker,每個Docker是一個資源完全隔離的Linux程序
  5. Spark
    寫java spark程式碼比寫MR更簡潔方便,spark比MR計算快許多,因為所有中間結果不落地儲存到hdfs,而是儘可能在記憶體中。
  6. Spark SQL
    與Hive類似,使用者使用上沒有太大變化,都是寫SQL,底層的計算引擎從MR切換到Spark
  7. pySpark
    改寫Java為寫python,降低開發門檻
  8. Spark Streaming
    之前的都是批處理計算,這時出現了“偽流式計算”。按照時間間隔把任務分解為一個一個的小型批處理任務,然後不斷向Spark叢集提交任務。
  9. Spark 部署方式
    目前主要部署再yarn上,未來會遷移到k8s
  10. Flink
    Flink是一種流失計算框架,曾經的流失計算框架Storm已沒落。其與Spark一樣,都支援單機、Yarn、k8s等多種方式部署。
    Spark起家於批處理,往流式方向拓展;Flink起家於流式處理,網批處理方向擴充套件。
  11. SQL只會越來越普及,因為它最簡單;MR是過去時,現在基本上都是Spark/Flink;Yarn是現在,未來是k8s