SparkML (一) Spark的環境搭建與執行
阿新 • • 發佈:2018-12-25
做Spark也有段時間了,主要是平臺方面的東西原始碼也改過些。不過總覺得還是應用才是王道,加上現在AI日趨火爆,抽點時間學習下SparkML吧。—前言
我部落格裡SparkML系列的文章是基於Spark機器學習這本書(Nick Pentreath著),把每章重點和自己的一些感悟記錄下。
Spark的環境搭建與執行
Spark支援4中執行模式
- 本地單機模式: 在本機的一個JVM裡構造的一個多執行緒版本的Spark執行環境,用於開發測試。
- 叢集單機模式: Spark StandAlone 穩定、搭建簡單,但想同時使用Hadoop MR/hive等不太合適,適合小規模、特定領域的Spark叢集。
- Spark on Mesos: 支援細粒度的資源排程,spark原生就支援的調動器,與docker支援好,適合雲。
- Spark on Yarn: yarn是最有前途的資源排程器,能同時支援多種計算框架,與資料倉庫容易結合,但目前不支援細粒度的資源排程。適合大資料平臺。
Spark應用程式由兩部分組成
- 驅動程式(Driver),有且只有一個,負責資源排程、DAG生成、計算任務排程等也可以進行一些運算。
- 執行程式(Executors),預設是2,可以是0,一般有多個。負責拉取資料進行計算、儲存資料等等。
Spark程式設計模型
SparkContext和SparkConf類
SparkContext類是Spark應用程式的入口,也是Driver程式的核心模組。用來初始化各種配置、連線叢集、控制Executor等。SparkContext物件建立時,需要SparkConf類作為引數,如果不用則使用預設配置。
spark-shell
spark支援scala/python版的REPL,分別是spark-shell和pyspark
RDD(彈性分散式資料集)
RDD是Spark最核心的概念,使用者可以暫時理解為分散式的資料。自帶豐富的api,可以進行各種transformation和action計算。詳情參閱其他文件
廣播變數和累加器
這是Spark中最常用且功能強大的兩種變數型別
廣播變數
累加器 非只讀,且可以累加的變數。又可以分為本地累加器(Executor節點建立,只能訪問自己節點的累加器)和全域性累加器(由Driver建立,並且只允許Driver程式訪問)。
Spark程式設計入門
pass (都是程式碼,沒必要貼了)