注:
1. 本文鏈接中,包含[]的為已翻譯的文檔鏈接,不包含的為官方文檔鏈接。
2. 涉及到編程語言的部分,以翻譯Scala的部分為主
Spark概述
Apache Spark是一個快速的,通用的集群計算系統。在Java,Scala,Python和R語言中提供了高層API,并提供一個支持一般圖形計算的優化引擎。Spark支持一個豐富的高層工具集,包括Spark SQL用于SQL和結構化數據處理,MLLib用于機器學習,GraphX用于圖處理和Spark Streaming。
下載
從官網下載頁面獲取Spark。本文檔適用于Spark 2.1.0版本。Spark為使用HDFS和YARN而需要用到Hadoop客戶端庫。下載包是為適配主流Hadoop版本預先打包好的。用戶還可以下載"Hadoop free"二進制文件,然后通過配置Spark的classpath在任意版本的Hadoop中運行Spark。Scala和Java用戶可以使用maven cooridnates在項目中包含Spark。將來Python用戶也可以從PyPI中安裝Spark。
如果想要從源碼編譯Spark,訪問構建Spark。
Spark可以在Windows和類UNIX系統(如Linux,Mac OS)上運行。Spark很容易在一臺機器上本地運行——你需要做的就是在系統PATH上安裝了Java,或者在JAVA_HOME環境變量中指定了Java的安裝路徑。
Spark可以運行在Java 7+,Python 2.6+/3.4+,R 3.1+環境上。對于Scala API,Spark 2.1.0使用的是Scala 2.11。你需要使用一個可兼容的Scala版本(2.11.x)。
請注意,從Spark 2.0.0開始,對Java 7和Python 2.6的支持已棄用,從Spark 2.1.0開始,對Scala 2.10和Hadoop 2.6之前版本的支持已棄用,在Spark 2.2.0時可能會被刪除。
運行示例和Shell
Spark自帶幾個示例程序。Scala,Java,Python和R語言的示例在 examples/src/main
目錄下。要運行Java或者Scala示例程序,在Spark的根目錄中使用bin/run-example <class> [params]
(在后臺,將調用更通用的spark-submit腳本來啟動應用程序)。例如:
./bin/run-example SparkPi 10
也可以使用一個修改版的Scala Shell以交互方式運行Spark。這是一種學習框架非常好的方式。
./bin/spark-shell --master local[2]
其中--master
選項指定了分布式集群的master URL,local
以單線程在本地運行,local[N]
以N個線程在本地運行。你應該首先使用local
來進行測試。完整的選項列表,可使用--help
選項來運行Spark。
Spark也提供了Python API。要在Python解釋器中以交互方式運行Spark,使用bin/pyspark
:
./bin/pyspark --master local[2]
Spark也提供了Python的示例應用程序,例如,
./bin/spark-submit examples/src/main/python/pi.py 10
Spark從1.4版本開始就提供了一個實驗的R API(只包含DataFrames API)。要在R語言解釋器中交互式地運行Spark,使用bin/sparkR
:
./bin/sparkR --master local[2]
Spark也提供了R語言的示例應用程序,例如,
./bin/spark-submit examples/src/main/r/dataframe.R
在集群上運行
Spark集群模式概述解釋了在集群上運行Spark的關鍵概念。Spark可以獨立運行,或者在多個現有的集群管理器上運行。目前提供了集中部署選項:
- Standalone Deploy Mode:在私有集群上部署Spark最簡單的方法
- Apache Mesos
- Hadoop YARN
從這里開始
編程指南:
- [Quick Start]:Spark的快速介紹,從這開始吧!
- [Spark Programming Guide]:Spark在所有支持語言(Scala,Java,Python,R)中的詳細概述。
- 構建在Spark上的模塊:
- Spark Streaming:處理實時數據流
- Spark SQL, Datasets, and DataFrames:支持結構化數據和關系查詢
- MLlib:內置的機器學習庫
- GraphX:Spark用于圖形處理的新API
API文檔:
- Spark Scala API (Scaladoc)
- Spark Java API (Javadoc)
- Spark Python API (Sphinx)
- Spark R API (Roxygen2)
部署指南:
- 集群概述:在集群運行時的概念和組件概述
- 提交應用程序:打包和部署應用程序
- 部署模式:
- Amazon EC2:讓你在5分鐘之內在EC2上啟動集群的腳本
- Standalone Deploy Mode:不使用第三方集群管理器的情況下快速啟動獨立集群
- Mesos:使用Apache Mesos部署一個私有集群
- YARN:在Hadoop NextGen (YARN)上部署Spark
其它文檔
- 配置:通過配置系統定制Spark
- 監控:跟蹤你的應用程序的行為
- 優化指南:優化性能和內存使用的最佳實踐
- 任務調度:在應用程序內和跨應用程序調度資源
- 安全性:Spark的安全性支持
- 硬件配置:對集群硬件配置的建議
- 與其它存儲系統集成
- 構建Spark:使用Maven系統來構建Spark
- 給Spark做貢獻
- 第三方項目:相關的第三方Spark項目
外部資源
- Spark主頁
- Spark社區:資源,包括一些當地的聚會
- StackOverflow tag apache-spark
- 郵件列表:可以在這里問Spark的問題
- AMP Camps:在加州大學伯克利分校的一系列訓練營,關于Spark,Spark Streaming,Mesos以及更多內容的特色演講和練習。視頻,幻燈片和練習可以在網上免費獲取。
-
代碼示例:可以在Spark(Scala, Java, Python, R)的
examples
子文件夾中獲取更多示例。