python零散的小知識點
1.用圖文闡述Spark生態系統的組成及各元件的功能。
隨著spark的日趨完善,Spark以其優異的效能正逐漸成為下一個業界和學術界的開源大資料處理平臺。隨著Spark1.1.0的釋出和Spark生態圈的不斷擴大,可以預見在今後的一段時間內,Spark將越來越火熱。
Spark生態圈以Spark為核心引擎,以HDFS、S3、Techyon為持久層讀寫原生資料,以Mesos、YARN和自身攜帶的Standalone作為資源管理器排程job,來完成spark應用程式的計算;而這些spark應用程式可以來源於不同的元件,如Spark的批處理應用、SparkStreaming的實時處理應用、Spark SQL的即席查詢、BlinkDB的權衡查詢、MLlib或MLbase的機器學習、GraphX的圖處理等等。
圖源來自:Spark開發指南
Spark
Spark是一個快速的通用大規模資料處理系統,和Hadoop MapRedeuce相比:
更好的容錯性和記憶體計算 高速,在記憶體中運算100倍速度於MapReduce 易用,相同的應用程式程式碼量要比MapReduce少2-5倍 提供了豐富的API 支援互動和迭代程式
Spark大資料平臺之所以能日漸紅火,得益於Spark核心架構的優秀:
- 支援DAG圖的分散式平行計算框架,減少IO開銷
- 支援多次迭代計算(Cache機制),減少IO開銷
- RDD fail掉了也能通過父RDD重建,提高了容錯性
- RDD就近讀取分散式檔案系統中的資料塊到各個節點記憶體中進行計算
- 多執行緒池模型來減少task啟動開銷
- shuffle過程中避免不必要的sort操作
- 用容錯的、高可伸縮性的akka作為通訊框架
而Spark主要有以下幾個元件:
SparkStreaming
SparkStreaming是一個對實時資料流進行高通量、容錯處理的流式處理系統,可以進行類似map、reduce、join、window等複雜操作在不同種類的資料流上,並將結果儲存到外部檔案系統、資料庫等
並且在SparkStreaming中有以下特點:
- 流式計算會被分解成一系列相對較小的批處理作業
- 將執行較慢以及執行失敗的任務放在其它節點上並行執行
- 較強的容錯能力(BDD)
- 語義與BDD相似
圖源來自:Spark程式設計指南
Spark SQL
Spark SQL是一個查詢系統,可以通過SQL、Hive或者Scala DSL在Spark上執行查詢。
Spark SQL的特點:
- 引入了新的RDD型別SchemaRDD,可以象傳統資料庫定義表一樣來定義SchemaRDD,SchemaRDD由定義了列資料型別的行物件構成。
- 可以使用HiveQL從Hive中獲取SchemaRDD,也可以從RDD轉換過來,還可以從Parquet檔案讀入
- 可以混合使用不同來源的資料
- 使用者查詢語句進行自動優化(catalyst)
圖片來源:Spark SQL介紹
MLlib
MLlib是Spark實現一些常見的機器學習演算法和實用程式,包括分類,迴歸,聚類,協同過濾,降維,以及底層
GraphX
GraphX是基於Spark的圖處理和圖平行計算的API。其定義了一個新的概念:彈性分散式屬性圖,一個每個頂點和邊都帶有屬性的定向多重圖;並引入了三種核心RDD:Vertices、Edges、Triplets;並且在不斷的擴充套件圖形演算法和圖形構建工具來簡化圖分析工作。
圖源來自:Spark程式設計指南