?
第 1 部分 Spark 基礎
Spark 概述
本章介紹 Spark 的一些基本認識.
?
Spark官方地址?
一:什么是 Spark
Spark 是一個快速(基于內存), 通用, 可擴展的集群計算引擎
并且 Spark 目前已經成為 Apache 最活躍的開源項目, 有超過 1000 個活躍的貢獻者.
歷史
2009 年,Spark 誕生于 UC Berkeley(加州大學伯克利分校, CAL) 的 AMP 實驗室, 項目采用 Scala 編程語言編寫.
2010 年, Spark 正式對外開源
2013 年 6 月, 進入 Apache 孵化器
2014 年, 成為 Apache 的頂級項目.
目前最新的版本是3.0.1
?
二:Spark 特點
1:快速
與 Hadoop 的 MapReduce 相比, Spark 基于內存的運算是 MapReduce 的 100 倍.基于硬盤的運算也要快 10 倍以上.
Spark 實現了高效的 DAG 執行引擎, 可以通過基于內存來高效處理數據流
2: 易用
Spark 支持 Scala, Java, Python, R 和 SQL 腳本, 并提供了超過 80 種高性能的算法, 非常容易創建并行 App
而且 Spark 支持交互式的 Python 和 Scala 的 shell, 這意味著可以非常方便地在這些 shell 中使用 Spark 集群來驗證解決問題的方法, 而不是像以前一樣 需要打包, 上傳集群, 驗證等. 這對于原型開發非常重要.
?
???????3:通用
Spark 結合了SQL, Streaming和復雜分析.
Spark 提供了大量的類庫, 包括 SQL 和 DataFrames, 機器學習(MLlib), 圖計算(GraphicX), 實時流處理(Spark Streaming) .
可以把這些類庫無縫的柔和在一個 App 中.
減少了開發和維護的人力成本以及部署平臺的物力成本.
?
???????4:可融合性
Spark 可以非常方便的與其他開源產品進行融合.
比如, Spark 可以使用 Hadoop 的 YARN 和 Appache Mesos 作為它的資源管理和調度器, 并且可以處理所有 Hadoop 支持的數據, 包括 HDFS, HBase等.
???????三:Spark 內置模塊介紹
?
1:集群管理器(Cluster Manager)
Spark 設計為可以高效地在一個計算節點到數千個計算節點之間伸縮計算。
為了實現這樣的要求,同時獲得最大靈活性,Spark 支持在各種集群管理器(Cluster Manager)上運行,目前 Spark 支持 3 種集群管理器:
1:Hadoop YARN(在國內使用最廣泛)
2:Apache Mesos(國內使用較少, 國外使用較多)
3:Standalone(Spark 自帶的資源調度器, 需要在集群中的每臺節點上配置 Spark)
?
???????2:SparkCore
實現了 Spark 的基本功能,包含任務調度、內存管理、錯誤恢復、與存儲系統交互等模塊。SparkCore 中還包含了對彈性分布式數據集(Resilient Distributed DataSet,簡稱RDD)的API定義。
?
???????3:?Spark SQL
是 Spark 用來操作結構化數據的程序包。通過SparkSql,我們可以使用 SQL或者Apache Hive 版本的 SQL 方言(HQL)來查詢數據。Spark SQL 支持多種數據源,比如 Hive 表、Parquet 以及 JSON 等。
?
???????4:?Spark Streaming
是 Spark 提供的對實時數據進行流式計算的組件。提供了用來操作數據流的 API,并且與 Spark Core 中的 RDD API 高度對應。
?
???????5:Spark MLlib
提供常見的機器學習 (ML) 功能的程序庫。包括分類、回歸、聚類、協同過濾等,還提供了模型評估、數據導入等額外的支持功能。
?
Spark 得到了眾多大數據公司的支持,這些公司包括 Hortonworks、IBM、Intel、Cloudera、MapR、Pivotal、百度、阿里、騰訊、京東、攜程、優酷土豆。
當前百度的 Spark 已應用于大搜索、直達號、百度大數據等業務;
阿里利用 GraphX 構建了大規模的圖計算和圖挖掘系統,實現了很多生產系統的推薦算法;
騰訊Spark集群達到 8000 臺的規模,是當前已知的世界上最大的 Spark 集群。
?