pyspark(一):常用術語及環(huán)境搭建

一、Spark運行模式

1.1 local

本地模式:常用于本地開發(fā)測試

例如,程序中或-Master中傳參數(shù)local[2]。SparkConf().setMaster("local[2]")

local里面的參數(shù)2表示啟動的核數(shù),如果是*,就表示將PC中的所有核數(shù)用盡。

1.2 standalone

Standalone模式使用Spark自帶的資源調(diào)度框架采用Master/Slaves的典型架構,選用ZooKeeper來實現(xiàn)Master的HA框架結構圖如下:


該模式主要的節(jié)點有Client節(jié)點、Master節(jié)點和Worker節(jié)點。其中Driver既可以運行在Master節(jié)點上中,也可以運行在本地Client端。當用spark-shell交互式工具提交Spark的Job時,Driver在Master節(jié)點上運行;當使用spark-submit工具提交Job或者在Eclips、IDEA等開發(fā)平臺上使用”new SparkConf.setManager(“spark://master:7077”)”方式運行Spark任務時,Driver是運行在本地Client端上的

運行過程如下圖:




1.3 yarn

1.3.1 yarn-client

YARN-client的工作流程步驟為:

1.3.2 yarn-cluster

YARN-cluster的工作流程分為以下幾個步驟:

1.3.3 Yarn-clinet 和 Yarn-clust的區(qū)別

? ? ? ? 理解YARN-Client和YARN-Cluster深層次的區(qū)別之前先清楚一個概念:Application Master。在YARN中,每個Application實例都有一個ApplicationMaster進程,它是Application啟動的第一個容器。它負責和ResourceManager打交道并請求資源,獲取資源之后告訴NodeManager為其啟動Container。從深層次的含義講YARN-Cluster和YARN-Client模式的區(qū)別其實就是ApplicationMaster進程的區(qū)別

1)YARN-Cluster模式下,Driver運行在AM(Application Master)中,它負責向YARN申請資源,并監(jiān)督作業(yè)的運行狀況。當用戶提交了作業(yè)之后,就可以關掉Client,作業(yè)會繼續(xù)在YARN上運行,因而YARN-Cluster模式不適合運行交互類型的作業(yè)

2)YARN-Client模式下,Application Master僅僅向YARN請求Executor,Client會和請求的Container通信來調(diào)度他們工作,也就是說Client不能離開

1.4 mesos

? ? 國外用的比較多

1.5 k8s

? ? 國內(nèi)大數(shù)據(jù)平臺用的不多


二、常用術語

Application: Appliction都是指用戶編寫的Spark應用程序,其中包括一個Driver功能的代碼和分布在集群中多個節(jié)點上運行的Executor代碼

Driver:? Spark中的Driver即運行上述Application的main函數(shù)并創(chuàng)建SparkContext,創(chuàng)建SparkContext的目的是為了準備Spark應用程序的運行環(huán)境,在Spark中有SparkContext負責與ClusterManager通信,進行資源申請、任務的分配和監(jiān)控等,當Executor部分運行完畢后,Driver同時負責將SparkContext關閉,通常用SparkContext代表Driver

Executor:? 某個Application運行在worker節(jié)點上的一個進程,該進程負責運行某些Task, 并且負責將數(shù)據(jù)存到內(nèi)存或磁盤上,每個Application都有各自獨立的一批Executor,在Spark on Yarn模式下,其進程名稱為CoarseGrainedExecutor Backend。一個CoarseGrainedExecutor Backend有且僅有一個Executor對象, 負責將Task包裝成taskRunner,并從線程池中抽取一個空閑線程運行Task, 這個每一個oarseGrainedExecutor Backend能并行運行Task的數(shù)量取決與分配給它的cpu個數(shù)

Cluter Manager:指的是在集群上獲取資源的外部服務。目前有三種類型

? ? ?1)Standalone : spark原生的資源管理,由Master負責資源的分配

? ? ?2)Apache Mesos:與hadoop MR兼容性良好的一種資源調(diào)度框架

? ? ?3)Hadoop Yarn: 主要是指Yarn中的ResourceManager

Worker: 集群中任何可以運行Application代碼的節(jié)點,在Standalone模式中指的是通過slave文件配置的Worker節(jié)點,在Spark on Yarn模式下就是NoteManager節(jié)點

Task: 被送到某個Executor上的工作單元,但hadoopMR中的MapTask和ReduceTask概念一樣,是運行Application的基本單位,多個Task組成一個Stage,而Task的調(diào)度和管理等是由TaskScheduler負責

Job: 包含多個Task組成的并行計算,往往由Spark Action觸發(fā)生成, 一個Application中往往會產(chǎn)生多個Job

Stage: 每個Job會被拆分成多組Task, 作為一個TaskSet, 其名稱為Stage,Stage的劃分和調(diào)度是有DAGScheduler來負責的,Stage有非最終的Stage(Shuffle Map Stage)和最終的Stage(Result Stage)兩種,Stage的邊界就是發(fā)生shuffle的地方

DAGScheduler: 根據(jù)Job構建基于Stage的DAG(Directed Acyclic Graph有向無環(huán)圖),并提交Stage給TASkScheduler。 其劃分Stage的依據(jù)是RDD之間的依賴的關系找出開銷最小的調(diào)度方法。

三、spark和hadoop

Hadoop有兩個核心模塊,分布式存儲模塊HDFS和分布式計算模塊Mapreduce

spark本身并沒有提供分布式文件系統(tǒng),因此spark的分析大多依賴于Hadoop的分布式文件系統(tǒng)HDFS

Hadoop的Mapreduce與spark都可以進行數(shù)據(jù)計算,而相比于Mapreduce,spark的速度更快并且提供的功能更加豐富

關系圖如下:

官網(wǎng)說超過百倍的速度提升

四、spark生態(tài)

Spark Core:包含Spark的基本功能;尤其是定義RDD的API、操作以及這兩者上的動作。其他Spark的庫都是構建在RDD和Spark Core之上的

Spark SQL:提供通過Apache Hive的SQL變體Hive查詢語言(HiveQL)與Spark進行交互的API。每個數(shù)據(jù)庫表被當做一個RDD,Spark SQL查詢被轉(zhuǎn)換為Spark操作。

Spark Streaming:對實時數(shù)據(jù)流進行處理和控制。Spark Streaming允許程序能夠像普通RDD一樣處理實時數(shù)據(jù)

MLlib:一個常用機器學習算法庫,算法被實現(xiàn)為對RDD的Spark操作。這個庫包含可擴展的學習算法,比如分類、回歸等需要對大量數(shù)據(jù)集進行迭代的操作。

GraphX:控制圖、并行圖操作和計算的一組算法和工具的集合。GraphX擴展了RDD API,包含控制圖、創(chuàng)建子圖、訪問路徑上所有頂點的操作


?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容