天天看點

大資料生态系統架構HadoopSparkSpark StreamingSpark SQL和DataFrame

Hadoop

  • MapReduce屬于Hadoop生态體系之一,Spark屬于BDAS生态體系之一。

    目前Hadoop有兩種版本:Apache和CDH版本。

一、優缺點

  1. Apache版本
  2. CDH版本

Kafka和flume對比

  1. kafka和flume都是日志系統。kafka是分布式消息中間件,自帶存儲。flume分為agent(資料采集器),collector(資料簡單處理和寫入),storage(存儲器)三部分,每一部分都是可以定制的。
  2. kafka做日志緩存應該是更為合适的,但是flume的資料采集部分做的很好,可以定制很多資料源,減少開發量。是以比較流行flume+kafka模式,如果為了利用flume寫hdfs的能力,也可以采用kafka+flume的方式。
  3. Flume:Flume 是管道流方式,提供了很多的預設實作,讓使用者通過參數部署,及擴充API。

    Kafka:Kafka是一個可持久化的分布式的消息隊列。

  4. 典型用法:

    線上資料->flume->kafka->hdfs->MR離線計算

Spark

Spark算子

  • Value資料類型的Transformation算子。
  • Key-Value資料類型的Transformation算子。
  • Action算子。

Spark子產品

  1. Spark core // 核心子產品
  2. Spark SQL // SQL
  3. Spark Streaming // 流計算
  4. Spark NLlib // 機器學習
  5. Spark graph // 圖計算

Spark Streaming

Spark Streaming是核心Spark API的擴充。

- 資料可以從Kafka、Flume、TCP Socekts等許多資源中擷取。可以使用複雜的算法處理。最後,可以将處理過的資料推送到檔案系統。

  1. 離散流或DStream是有Spark Streaming提供的基本抽象。DStream由一組連續的RDDs表示。
  2. DStream時間視窗。

    時間視窗運作Spark Streaming消費過去一段時間(多個批次)内的資料。

Spark SQL和DataFrame

  • Spark SQL是執行使用基本SQL文法或HiveQL編寫的SQL查詢。Spark SQL可以從現有的Hive安裝中讀取資料。
  • DataFrame是一個分布式資料集,相當于關系資料庫中一張表。

DataFrame和RDD的差別

  1. RDD是分布式Java對象的集合。
  2. DataFrame是一種以RDD為基礎的分布式資料集,也就是分布式Row對象的集合(每個Row對象代表一行記錄)。

加載json資料轉為DataFrame算子:

scala> val df=sqlContext.read.json("路徑/name.json")
scala> df.show()
           

并行: 叢集計算并行計算

并行: 線程,并發執行

繼續閱讀