偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

大數(shù)據(jù)開發(fā):Spark入門詳解

大數(shù)據(jù) Spark
眾所周知,Spark 它是專門為大規(guī)模數(shù)據(jù)處理而設(shè)計(jì)的快速通用計(jì)算引擎,因此Spark它在數(shù)據(jù)的挖掘等領(lǐng)域便有著非常廣泛的應(yīng)用,而從現(xiàn)階段來講的話它也已經(jīng)形成了一個(gè)高速發(fā)展并且應(yīng)用相當(dāng)廣泛的生態(tài)系統(tǒng)了。所以,今天這篇文章便要為大家做一個(gè)Spark入門基礎(chǔ)的簡單介紹,滿滿干貨,請(qǐng)不要錯(cuò)過。

 眾所周知,Spark 它是專門為大規(guī)模數(shù)據(jù)處理而設(shè)計(jì)的快速通用計(jì)算引擎,因此Spark它在數(shù)據(jù)的挖掘等領(lǐng)域便有著非常廣泛的應(yīng)用,而從現(xiàn)階段來講的話它也已經(jīng)形成了一個(gè)高速發(fā)展并且應(yīng)用相當(dāng)廣泛的生態(tài)系統(tǒng)了。所以,今天這篇文章便要為大家做一個(gè)Spark入門基礎(chǔ)的簡單介紹,滿滿干貨,請(qǐng)不要錯(cuò)過。

一.關(guān)于Spark的概述

我們可以了解到,當(dāng)前,MapReduce編程模型成為了一種比較主流的分布式編程模型,并且它也極大地方便了編程人員在不會(huì)分布式并行編程的情況下,能夠?qū)⒆约旱某绦蜻\(yùn)行在分布式系統(tǒng)上。

但其實(shí)從MapReduce來看它也存在了一些缺陷的,比如說它的高延遲以及不支持DAG模型,Reduce的中間數(shù)據(jù)落地等。因此為了優(yōu)化改進(jìn)MapReduce的項(xiàng)目,比如交互查詢引擎Impala、支持內(nèi)存計(jì)算Spark等這些方面。Spark憑借自身先進(jìn)的設(shè)計(jì)理念,一躍成為了社區(qū)里面的熱門項(xiàng)目。而目前來看Spark相對(duì)于MapReduce的一些優(yōu)勢(shì)有:低延遲、支持DAG和分布式內(nèi)存計(jì)算。

二.Spark應(yīng)用框架

客戶Spark程序(Driver Program)操作Spark集群其實(shí)它是通過SparkContext這個(gè)對(duì)象來進(jìn)行的,而SparkContext自身作為一個(gè)操作和調(diào)度的總?cè)肟?,它在初始化的過程中集群管理器則會(huì)進(jìn)行DAGScheduler作業(yè)調(diào)度和TaskScheduler任務(wù)調(diào)度的創(chuàng)建。

而DAGScheduler作業(yè)調(diào)度模塊則又是依靠于Stage的這個(gè)調(diào)度模塊來進(jìn)行的,DAG全稱 Directed Acyclic Graph。簡單的來講的話,它其實(shí)就是一個(gè)由頂點(diǎn)和有方向性的邊構(gòu)成的圖,然后他可以其中從任意的一個(gè)頂點(diǎn)去出發(fā),但是呢又沒有路徑可以將其帶回到出發(fā)的頂點(diǎn)。并且它為每個(gè)Spark Job計(jì)算具有依賴關(guān)系的多個(gè)Stage任務(wù)階段(通常根據(jù)Shuffle來劃分Stage,比如說groupByKey, reduceByKey等涉及到shuffle的transformation就會(huì)產(chǎn)生新的stage),然后到后面的時(shí)候它又會(huì)將每個(gè)Stage劃分為具體的一組任務(wù),最后就以TaskSets的形式提交給底層的任務(wù)調(diào)度模塊來進(jìn)行一個(gè)具體執(zhí)行。

三.Spark的內(nèi)置項(xiàng)目

Spark Core: 它實(shí)現(xiàn)了的是Spark 中的一個(gè)基本功能,其中它是包含了任務(wù)的調(diào)度、內(nèi)存的管理、錯(cuò)誤的恢復(fù)、以及與存儲(chǔ)系統(tǒng) 交互等模塊。其中Spark Core 中它還包含了對(duì)彈性分布式數(shù)據(jù)集(resilient distributed dataset,簡稱RDD)的 API 定義。

Spark SQL: 這個(gè)是 Spark 所用來進(jìn)行操作結(jié)構(gòu)化數(shù)據(jù)的一個(gè)程序包。并且它通過了 Spark SQL,我們可以使用 SQL 或者 Apache Hive 版本的 SQL 方言(HQL)來查詢數(shù)據(jù)。而我們可以知道Spark SQL 支持多種數(shù)據(jù)源,比 如 Hive 表、Parquet 以及 JSON 等。

Spark Streaming: 這個(gè)是 Spark 提供的對(duì)實(shí)時(shí)數(shù)據(jù)進(jìn)行流式計(jì)算的組件。提供了用來操作數(shù)據(jù)流的 API,并且與 Spark Core 中的 RDD API 高度對(duì)應(yīng)。

Spark MLlib: 提供常見的機(jī)器學(xué)習(xí)(ML)功能的程序庫。包括分類、回歸、聚類、協(xié)同過濾等,還提供了模型評(píng)估、數(shù)據(jù) 導(dǎo)入等額外的支持功能。

集群管理器: Spark 設(shè)計(jì)不僅可以高效地在一個(gè)計(jì)算節(jié)點(diǎn)到數(shù)千個(gè)計(jì)算節(jié)點(diǎn)之間伸縮計(jì) 算。為了實(shí)現(xiàn)這樣的要求,并且同時(shí)能夠獲得一個(gè)最大的靈活性,Spark 支持便會(huì)在各種集群管理器(cluster manager)上運(yùn)行,包括 Hadoop YARN、Apache Mesos,以及 Spark 自帶的一個(gè)簡易調(diào)度器,它也叫作獨(dú)立調(diào)度器。

三.Spark生態(tài)圈介紹

Spark力圖整合機(jī)器學(xué)習(xí)(MLib)、圖算法(GraphX)、流式計(jì)算(Spark Streaming)和數(shù)據(jù)倉庫(Spark SQL)等領(lǐng)域,通過計(jì)算引擎Spark,彈性分布式數(shù)據(jù)集(RDD),架構(gòu)出一個(gè)新的大數(shù)據(jù)應(yīng)用平臺(tái)。

Spark生態(tài)圈以HDFS、S3、Techyon為底層存儲(chǔ)引擎,以Yarn、Mesos和Standlone作為資源調(diào)度引擎;使用Spark,可以實(shí)現(xiàn)MapReduce應(yīng)用;基于Spark,Spark SQL可以實(shí)現(xiàn)即席查詢,Spark Streaming可以處理實(shí)時(shí)應(yīng)用,MLib可以實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法,GraphX可以實(shí)現(xiàn)圖計(jì)算,SparkR可以實(shí)現(xiàn)復(fù)雜數(shù)學(xué)計(jì)算。

四.Spark的優(yōu)點(diǎn)

①減少磁盤I/O:隨著實(shí)時(shí)大數(shù)據(jù)應(yīng)用越來越多,Hadoop作為離線的高吞吐、低響應(yīng)框架已不能滿足這類需求。HadoopMapReduce的map端將中間輸出和結(jié)果存儲(chǔ)在磁盤中,reduce端又需要從磁盤讀寫中間結(jié)果,勢(shì)必造成磁盤IO成為瓶頸。Spark允許將map端的中間輸出和結(jié)果存儲(chǔ)在內(nèi)存中,reduce端在拉取中間結(jié)果時(shí)避免了大量的磁盤I/O。Hadoop Yarn中的ApplicationMaster申請(qǐng)到Container后,具體的任務(wù)需要利用NodeManager從HDFS的不同節(jié)點(diǎn)下載任務(wù)所需的資源(如Jar包),這也增加了磁盤I/O。Spark將應(yīng)用程序上傳的資源文件緩沖到Driver本地文件服務(wù)的內(nèi)存中,當(dāng)Executor執(zhí)行任務(wù)時(shí)直接從Driver的內(nèi)存中讀取,也節(jié)省了大量的磁盤I/O。

②增加并行度:由于將中間結(jié)果寫到磁盤與從磁盤讀取中間結(jié)果屬于不同的環(huán)節(jié),Hadoop將它們簡單的通過串行執(zhí)行銜接起來。Spark把不同的環(huán)節(jié)抽象為Stage,允許多個(gè)Stage既可以串行執(zhí)行,又可以并行執(zhí)行。

③避免重新計(jì)算:當(dāng)Stage中某個(gè)分區(qū)的Task執(zhí)行失敗后,會(huì)重新對(duì)此Stage調(diào)度,但在重新調(diào)度的時(shí)候會(huì)過濾已經(jīng)執(zhí)行成功的分區(qū)任務(wù),所以不會(huì)造成重復(fù)計(jì)算和資源浪費(fèi)。

④可選的Shuffle排序:HadoopMapReduce在Shuffle之前有著固定的排序操作,而Spark則可以根據(jù)不同場景選擇在map端排序或者reduce端排序。

⑤靈活的內(nèi)存管理策略:Spark將內(nèi)存分為堆上的存儲(chǔ)內(nèi)存、堆外的存儲(chǔ)內(nèi)存、堆上的執(zhí)行內(nèi)存、堆外的執(zhí)行內(nèi)存4個(gè)部分。Spark既提供了執(zhí)行內(nèi)存和存儲(chǔ)內(nèi)存之間是固定邊界的實(shí)現(xiàn),又提供了執(zhí)行內(nèi)存和存儲(chǔ)內(nèi)存之間是“軟”邊界的實(shí)現(xiàn)。Spark默認(rèn)使用“軟”邊界的實(shí)現(xiàn),執(zhí)行內(nèi)存或存儲(chǔ)內(nèi)存中的任意一方在資源不足時(shí)都可以借用另一方的內(nèi)存,最大限度的提高資源的利用率,減少對(duì)資源的浪費(fèi)。Spark由于對(duì)內(nèi)存使用的偏好,內(nèi)存資源的多寡和使用率就顯得尤為重要,為此Spark的內(nèi)存管理器提供的Tungsten實(shí)現(xiàn)了一種與操作系統(tǒng)的內(nèi)存Page非常相似的數(shù)據(jù)結(jié)構(gòu),用于直接操作操作系統(tǒng)內(nèi)存,節(jié)省了創(chuàng)建的Java對(duì)象在堆中占用的內(nèi)存,使得Spark對(duì)內(nèi)存的使用效率更加接近硬件。Spark會(huì)給每個(gè)Task分配一個(gè)配套的任務(wù)內(nèi)存管理器,對(duì)Task粒度的內(nèi)存進(jìn)行管理。Task的內(nèi)存可以被多個(gè)內(nèi)部的消費(fèi)者消費(fèi),任務(wù)內(nèi)存管理器對(duì)每個(gè)消費(fèi)者進(jìn)行Task內(nèi)存的分配與管理,因此Spark對(duì)內(nèi)存有著更細(xì)粒度的管理。

以上本篇內(nèi)容便是對(duì)Spark的一些基礎(chǔ)入門的介紹,后續(xù)還將對(duì)Spark做一些后續(xù)的介紹,以便能更加深入的對(duì)Spark做一個(gè)了解。

[[387725]]

責(zé)任編輯:梁菲 來源: 今日頭條
相關(guān)推薦

2021-04-14 09:04:03

大數(shù)據(jù)HDFS大數(shù)據(jù)開發(fā)

2020-09-22 18:01:22

SparkStandalone運(yùn)行

2016-10-12 09:41:45

Hadoop+Spar大數(shù)據(jù)開發(fā)

2019-04-22 15:24:24

HadoopSuffleMap端

2018-09-03 11:57:28

大數(shù)據(jù)存儲(chǔ)Spark

2021-07-20 15:37:37

數(shù)據(jù)開發(fā)大數(shù)據(jù)Spark

2015-04-01 15:03:58

Spark大數(shù)據(jù)

2020-07-23 07:24:40

Kubernetes大數(shù)據(jù)開發(fā)

2012-08-30 14:33:03

Spark

2016-09-22 14:32:46

IBM

2018-07-20 16:57:51

大數(shù)據(jù)書單工程師

2017-08-14 10:30:13

SparkSpark Strea擴(kuò)容

2014-06-25 13:57:50

云計(jì)算大數(shù)據(jù)Spark

2017-10-19 08:28:15

大數(shù)據(jù)HadoopSpark

2015-02-03 03:18:56

SparkSpark內(nèi)核

2021-12-14 09:56:51

HadoopSparkKafka

2019-04-24 13:07:16

HadoopSpark分布式架構(gòu)

2019-06-27 11:18:00

Spark內(nèi)存大數(shù)據(jù)

2019-04-08 17:11:46

大數(shù)據(jù)框架Spark

2018-07-11 13:33:43

大數(shù)據(jù)人工智能Hadoop
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)