1. 程式人生 > >SparkML (一) Spark的環境搭建與執行

SparkML (一) Spark的環境搭建與執行

做Spark也有段時間了,主要是平臺方面的東西原始碼也改過些。不過總覺得還是應用才是王道,加上現在AI日趨火爆,抽點時間學習下SparkML吧。—前言

我部落格裡SparkML系列的文章是基於Spark機器學習這本書(Nick Pentreath著),把每章重點和自己的一些感悟記錄下。

Spark的環境搭建與執行

Spark支援4中執行模式

  1. 本地單機模式: 在本機的一個JVM裡構造的一個多執行緒版本的Spark執行環境,用於開發測試。
  2. 叢集單機模式: Spark StandAlone 穩定、搭建簡單,但想同時使用Hadoop MR/hive等不太合適,適合小規模、特定領域的Spark叢集。
  3. Spark on Mesos: 支援細粒度的資源排程,spark原生就支援的調動器,與docker支援好,適合雲。
  4. Spark on Yarn: yarn是最有前途的資源排程器,能同時支援多種計算框架,與資料倉庫容易結合,但目前不支援細粒度的資源排程。適合大資料平臺。

Spark應用程式由兩部分組成

  1. 驅動程式(Driver),有且只有一個,負責資源排程、DAG生成、計算任務排程等也可以進行一些運算。
  2. 執行程式(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中最常用且功能強大的兩種變數型別
廣播變數

是隻讀的變數。由sparkcontext建立併發布到所有Executor,從而減少了Executor頻繁讀取同一份資料的開銷。
累加器 非只讀,且可以累加的變數。又可以分為本地累加器(Executor節點建立,只能訪問自己節點的累加器)和全域性累加器(由Driver建立,並且只允許Driver程式訪問)。

Spark程式設計入門

pass (都是程式碼,沒必要貼了)