最近學習了spark大數據技術,這裏開始分享本階段的學習心得。作爲個人的【spark】系列,包含了spark的《簡介》,《RDD》,《DataFrame》,《GraphFrame》等板塊。下面進入第一個板塊——《簡介》。部分內容整理自辛立偉老師處
spark是什麼?
spark是一個用於大規模數據處理的統一分析引擎、它基於hadoop mapreduce 並擴展了mapreduce模型,能用於覆蓋範圍廣泛的工作負載,有效的用於交互式查詢、流處理等更多類型的計算,它能將計算劃分到內存執行,大大提升了程序的處理速度。
Spark是開源的,其社區也是大數據中最活躍的,有近50多家公司在做貢獻,未來的主流方向趨於流處理和深度學習。它具有特性:
1.運行速度快,使用DAG執行引擎以支持循環數據流與內存計算;
2.容易使用,支持使用Scala、 Java、 Python和R語言進行編程, 可以通過Spark Shell進行交互式編程;
3.通用性,Spark提供了完整而強大的技術棧, 包括SQL查詢、 流式計算、 機器學習和圖算法組件;
4.可運行於獨立的集羣模式中,可運行在Hadoop中,也可運行於Amazon EC2等雲環境中,並且可以訪問HDFS、Cassandra、 HBase、 Hive等多種數據源。
Spark組件
Spark Core
• Spark Core是Spark平臺底層通用執行引擎, 所有其他功能都建立在它之上
• Spark Core提供了內存中的計算和對外部存儲系統中數據集的引用
• Spark Core中提供了抽象的數據結構RDD
Spark SQL
• Spark SQL位於Spark Core之上的一個組件
• 它引入了新的數據抽象: DataFrame和DataSet
Spark Streaming
• Spark流利用Spark Core的快速調度功能來執行流分析
• 它以小批量的方式來處理數據, 並在這些小批量數據上執行RDD轉換
MLlib (Machine Learning Library)
• MLlib是在Spark之上的分佈式機器學習框架.
GraphX
• GraphX是在Spark之上的分佈式圖處理框架, 它提供了一個用於表達圖計算的API, 可以使用Pregel抽象API對用戶定義的圖進行建模
• 它還爲這種抽象提供了一個優化的運行時
Spark啓動模式
Spark 基於yarn的模式:
Spark Hadoop和Spark的統一部署:
Spark交互方式
spark的交互方式有很多種:
Spark VS MapReduce
spark與傳統MapReduce的比較。
–基本原理
• MapReduce是基於磁盤的大數據批量處理框架。
• Spark是基於內存的大數據綜合處理框架。
–應用場景
• MapReduce可以處理超大規模數據 , 適用於處理具有較少迭代
次數的長任務。
• Spark適用於處理具有較多迭代次數的任務。
–容錯性
• MapReduce的數據主要來源於HDFS。 具有完善的容錯機制。
• Spark 的容錯性都是基於RDD實現的 。
小結
通過上面文章的介紹,我們知道:
1.spark是一個大規模數據處理的統一分析引擎;
2.spark能夠運行在本地單機模式、spark自帶的簡單資源管理的集羣、其他資源管理的集羣下。
3.spark的交互方式可以是命令行、.jar包、第三方工具。
4.spark本質是MapReduce模型的擴展。