深入淺出Spark(三)什麼是Standalone

本系列講座是馮沁原先生對Sameer Farooqui的《Advanced Apache Spark》的解說。

根據對215名學生的調查結果顯示,Spark最主要資源管理方式按排名為Hadoop Yarn, Apache Standalone 和Mesos。在單機使用時,Spark還可以採用最基本的local模式。

圖1.如何部署Spark的統計圖

本節主要介紹Local和Spark Standalone資源管理模式。下一節將介紹YARN。

1. 傳統Hadoop MapReduce的資源管理方式

圖2.有兩個Map Reduce App運行的Hadoop的資源管理

Name Node管理所有節點的情況,每台機器里有Data node, 存儲數據。

Job Tracker將任務發到Task Tracker。 每個Task Tracker啟動Map和Reduce工作。

2.tSpark最基本的Local模式。

圖3. 本地(Local)運行Spark。

帶有8個內核的CPU啟動了一個JVM, 右下黑色的是Driver, 啟動12個task的本地運行環境, 通過內部的線程進行並發運算。

圖3的JVM中存了兩個邏輯RDD, 紫色的RDD有三個分區。藍色的RDD有兩個分區。

右側程序演示了在scala中用SparkConf設置了如左側的運行環境, 注意到這段程序還為Executor分配了3GB的內存。

3.tSpark Standalone模式

Spark Standalone Mode用於多台機器的集群(cluster)管理。一台Master負責管理集群。

每個機器里有一個worker與Spark Master交互。

RDD現在被分塊到了多台機器中。如圖藍色RDD有八個分塊, 每台分到兩個。紫色的RDD分成了兩個分塊,並且複製到了另兩台機器。

每台機器的內核數量不同,可以並發的任務數也不同,左起第二台機器的內核數量多,可以分配更多的並發任務。注意到圖中用SSD作為為中間存儲設備。SSD比硬碟快很多,可以提高性能。

圖4. 單個Master的Standalone調度

多個master時,可以用zookeeper調度,如圖5。

圖5.多個Master時的Standalone模式

一個worker可以調用多個executor, 如圖6。

圖6. 一個Worker調度多個Executor

默認一個Worker為一個Driver調度一個Executor,如果我們希望一個Driver用兩個Executor,則要為該Driver創建兩個Worker。如圖7。

圖7一個Driver調用兩個Executor.

4.tSpark為我們提供了任務執行統計信息的網頁。通過這些頁面我們可以看到當前的任務數量,Worker以及Executor信息,正運行的Job, Stages和Tasks, 內存的使用情況等等信息。

圖8. Spark任務執行統計UI

5.t總結Spark standalone工作模式

  • Spark用Master來管理整個Cluster, worker來與Master進行交互管理當地的執行情況。Worker 有Executor,裡面有多個Job執行。

  • 每個工作(Job)分多個階段(Stage), 每個階段 (Stage)分為多個任務(Task)。

  • RDD的分塊執行。使用統計面板里的具體信息理解任務調度。

    本文作者:Robert Cai

    更多精彩內容,歡迎訪問官網 BitTiger.io 或關注 「論碼農的自我修養」 微信公眾號:bit_tiger

推薦閱讀:

[譯]打造大數據產品:Shiny的Spark之旅
矽谷之路54:深入淺出Spark(七)如何排序100TB
大數據那些事(9):起早貪黑竹籃打水的18摸(IBM)
深度剖析Spark分散式執行原理
一般而言常見的Spark的性能瓶頸有哪些?

TAG:Spark | 信息技术IT | 计算机科学 |