五月婷婷丁香性爱|j久久一级免费片|久久美女福利视频|中文观看在线观看|加勒比四区三区二|亚洲裸女视频网站|超碰97AV在线69网站免费观看|有码在线免费视频|久久青青日本视频|亚洲国产AAAA

Spark簡(jiǎn)介

Spark是基于內(nèi)存的分布式計(jì)算框架。在迭代計(jì)算的場(chǎng)景下,數(shù)據(jù)處理過(guò)程中的數(shù)據(jù)可以存儲(chǔ)在內(nèi)存中,提供了比MapReduce高10到100倍的計(jì)算能力。Spark可以使用HDFS作為底層存儲(chǔ),使用戶(hù)能夠快速地從MapReduce切換到Spark計(jì)算平臺(tái)上去。Spark提供一站式數(shù)據(jù)分析能力,包括小批量流式處理、離線批處理、SQL查詢(xún)、數(shù)據(jù)挖掘等,用戶(hù)可以在同一個(gè)應(yīng)用中無(wú)縫結(jié)合使用這些能力。

Spark的特點(diǎn)如下:

  • 通過(guò)分布式內(nèi)存計(jì)算和DAG(無(wú)回路有向圖)執(zhí)行引擎提升數(shù)據(jù)處理能力,比MapReduce性能高10倍到100倍。
  • 提供多種語(yǔ)言開(kāi)發(fā)接口(Scala/Java/Python),并且提供幾十種高度抽象算子,可以很方便構(gòu)建分布式的數(shù)據(jù)處理應(yīng)用。
  • 結(jié)合SQL、Streaming等形成數(shù)據(jù)處理?xiàng)?,提供一站式?shù)據(jù)處理能力。
  • 支持契合Hadoop生態(tài)環(huán)境,Spark應(yīng)用可以運(yùn)行在Standalone、Mesos或者YARN上,能夠接入HDFS、HBase、Hive等多種數(shù)據(jù)源,支持MapReduce程序平滑轉(zhuǎn)接。

Spark結(jié)構(gòu)介紹

模塊名稱(chēng)
描述

Cluster Manager

集群管理器,管理集群中的資源。Spark支持多種集群管理器,Spark自帶的Standalone集群管理器、Mesos或YARN。Spark集群默認(rèn)采用YARN模式。

Application

Spark應(yīng)用,由一個(gè)Driver Program和多個(gè)Executor組成。

Deploy Mode

部署模式,分為cluster和client模式。cluster模式下,Driver會(huì)在集群內(nèi)的節(jié)點(diǎn)運(yùn)行;而在client模式下,Driver在客戶(hù)端運(yùn)行(集群外)。

Driver Program

是Spark應(yīng)用程序的主進(jìn)程,運(yùn)行Application的main()函數(shù)并創(chuàng)建SparkContext。負(fù)責(zé)應(yīng)用程序的解析、生成Stage并調(diào)度Task到Executor上。通常SparkContext代表Driver Program。

Executor

在Work Node上啟動(dòng)的進(jìn)程,用來(lái)執(zhí)行Task,管理并處理應(yīng)用中使用到的數(shù)據(jù)。一個(gè)Spark應(yīng)用一般包含多個(gè)Executor,每個(gè)Executor接收Driver的命令,并執(zhí)行一到多個(gè)Task。

Worker Node

集群中負(fù)責(zé)啟動(dòng)并管理Executor以及資源的節(jié)點(diǎn)。

Job

一個(gè)Action算子(比如collect算子)對(duì)應(yīng)一個(gè)Job,由并行計(jì)算的多個(gè)Task組成。

Stage

每個(gè)Job由多個(gè)Stage組成,每個(gè)Stage是一個(gè)Task集合,由DAG分割而成。

Task

承載業(yè)務(wù)邏輯的運(yùn)算單元,是Spark平臺(tái)上可執(zhí)行的最小工作單元。一個(gè)應(yīng)用根據(jù)執(zhí)行計(jì)劃以及計(jì)算量分為多個(gè)Task。

Spark原理及相關(guān)介紹

Spark原理

Spark的應(yīng)用運(yùn)行結(jié)構(gòu)如下圖。

運(yùn)行流程如下:

1、應(yīng)用程序(Application)是作為一個(gè)進(jìn)程的集合運(yùn)行在集群上的,由Driver進(jìn)行協(xié)調(diào)。

2、在運(yùn)行一個(gè)應(yīng)用時(shí),Driver會(huì)去連接集群管理器(Standalone、Mesos、YARN)申請(qǐng)運(yùn)行Executor資源,并啟動(dòng)ExecutorBackend。然后由集群管理器在不同的應(yīng)用之間調(diào)度資源。Driver同時(shí)會(huì)啟動(dòng)應(yīng)用程序DAG調(diào)度、Stage劃分、Task生成。

3、然后Spark會(huì)把應(yīng)用的代碼(傳遞給SparkContext的JAR或者Python定義的代碼)發(fā)送到Executor上。

4、所有的Task執(zhí)行完成后,用戶(hù)的應(yīng)用程序運(yùn)行結(jié)束。

Spark Streaming

Spark Streaming是一種構(gòu)建在Spark上的實(shí)時(shí)計(jì)算框架,擴(kuò)展了Spark處理大規(guī)模流式數(shù)據(jù)的能力。當(dāng)前Spark支持兩種數(shù)據(jù)處理方式:Direct Streaming和Receiver方式。

SparkSQL和DataSet

SparkSQL是Spark中用于結(jié)構(gòu)化數(shù)據(jù)處理的模塊。在Spark應(yīng)用中,可以無(wú)縫地使用SQL語(yǔ)句亦或是DataSet API對(duì)結(jié)構(gòu)化數(shù)據(jù)進(jìn)行查詢(xún)。

SparkSQL以及DataSet還提供了一種通用的訪問(wèn)多數(shù)據(jù)源的方式,可訪問(wèn)的數(shù)據(jù)源包括Hive、CSV、Parquet、ORC、JSON和JDBC數(shù)據(jù)源,這些不同的數(shù)據(jù)源之間也可以實(shí)現(xiàn)互相操作。SparkSQL復(fù)用了Hive的前端處理邏輯和元數(shù)據(jù)處理模塊,使用SparkSQL可以直接對(duì)已有的Hive數(shù)據(jù)進(jìn)行查詢(xún)。

另外,SparkSQL還提供了諸如API、CLI、JDBC等諸多接口,對(duì)客戶(hù)端提供多樣接入形式。

SparkSession

SparkSession是Spark編程的統(tǒng)一API,也可看作是讀取數(shù)據(jù)的統(tǒng)一入口。SparkSession提供了一個(gè)統(tǒng)一的入口點(diǎn)來(lái)執(zhí)行以前分散在多個(gè)類(lèi)中的許多操作,并且還為那些較舊的類(lèi)提供了訪問(wèn)器方法,以實(shí)現(xiàn)最大的兼容性。

Structured Streaming

Structured Streaming是構(gòu)建在Spark SQL引擎上的流式數(shù)據(jù)處理引擎,用戶(hù)可以使用Scala、Java、Python或R中的Dataset/DataFrame API進(jìn)行流數(shù)據(jù)聚合運(yùn)算、按事件時(shí)間窗口計(jì)算、流流Join等操作。當(dāng)流數(shù)據(jù)連續(xù)不斷的產(chǎn)生時(shí),Spark SQL將會(huì)增量的、持續(xù)不斷的處理這些數(shù)據(jù)并將結(jié)果更新到結(jié)果集中。同時(shí),系統(tǒng)通過(guò)checkpoint和Write Ahead Logs確保端到端的完全一次性容錯(cuò)保證。

Structured Streaming的核心是將流式的數(shù)據(jù)看成一張不斷增加的數(shù)據(jù)庫(kù)表,這種流式的數(shù)據(jù)處理模型類(lèi)似于數(shù)據(jù)塊處理模型,可以把靜態(tài)數(shù)據(jù)庫(kù)表的一些查詢(xún)操作應(yīng)用在流式計(jì)算中,Spark執(zhí)行標(biāo)準(zhǔn)的SQL查詢(xún),從不斷增加的無(wú)邊界表中獲取數(shù)據(jù)。

Spark與其他組件的關(guān)系

  • Spark和HDFS的配合關(guān)系

    通常,Spark中計(jì)算的數(shù)據(jù)可以來(lái)自多個(gè)數(shù)據(jù)源,如Local File、HDFS等。最常用的是HDFS,用戶(hù)可以一次讀取大規(guī)模的數(shù)據(jù)進(jìn)行并行計(jì)算。在計(jì)算完成后,也可以將數(shù)據(jù)存儲(chǔ)到HDFS。

    分解來(lái)看,Spark分成控制端(Driver)和執(zhí)行端(Executor)??刂贫素?fù)責(zé)任務(wù)調(diào)度,執(zhí)行端負(fù)責(zé)任務(wù)執(zhí)行。

    通常,Spark中計(jì)算的數(shù)據(jù)可以來(lái)自多個(gè)數(shù)據(jù)源,如Local File、HDFS等。最常用的是HDFS,用戶(hù)可以一次讀取大規(guī)模的數(shù)據(jù)進(jìn)行并行計(jì)算。在計(jì)算完成后,也可以將數(shù)據(jù)存儲(chǔ)到HDFS。

    分解來(lái)看,Spark分成控制端(Driver)和執(zhí)行端(Executor)??刂贫素?fù)責(zé)任務(wù)調(diào)度,執(zhí)行端負(fù)責(zé)任務(wù)執(zhí)行。

  • Spark和YARN的配合關(guān)系

    Spark的計(jì)算調(diào)度方式,可以通過(guò)YARN的模式實(shí)現(xiàn)。Spark共享YARN集群提供豐富的計(jì)算資源,將任務(wù)分布式的運(yùn)行起來(lái)。Spark on YARN分兩種模式:YARN Cluster和YARN Client。

    Spark的計(jì)算調(diào)度方式,可以通過(guò)YARN的模式實(shí)現(xiàn)。Spark共享YARN集群提供豐富的計(jì)算資源,將任務(wù)分布式的運(yùn)行起來(lái)。Spark on YARN分兩種模式:YARN Cluster和YARN Client。

華為云MRS Spark基于開(kāi)源Spark做了哪些特性增強(qiáng)?

華為云MRS Spark基于開(kāi)源Spark做了哪些特性增強(qiáng)?

  • CarbonData

    CarbonData是一種新型的Apache Hadoop本地文件格式,使用先進(jìn)的列式存儲(chǔ)、索引、壓縮和編碼技術(shù),以提高計(jì)算效率,有助于加速超過(guò)PB數(shù)量級(jí)的數(shù)據(jù)查詢(xún),可用于更快的交互查詢(xún)。同時(shí),CarbonData也是一種將數(shù)據(jù)源與Spark集成的高性能分析引擎。

    圖1 CarbonData基本結(jié)構(gòu)

    使用CarbonData的目的是對(duì)大數(shù)據(jù)即席查詢(xún)提供超快速響應(yīng)。

    CarbonData將數(shù)據(jù)源集成到Spark生態(tài)系統(tǒng),用戶(hù)可使用Spark SQL執(zhí)行數(shù)據(jù)查詢(xún)和分析。也可以使用Spark提供的第三方工具JDBCServer連接到Spark SQL。

    CarbonData特性

    SQL功能:CarbonData與Spark SQL完全兼容,支持所有可以直接在Spark SQL上運(yùn)行的SQL查詢(xún)操作。

    簡(jiǎn)單的Table數(shù)據(jù)集定義:CarbonData支持易于使用的DDL(數(shù)據(jù)定義語(yǔ)言)語(yǔ)句來(lái)定義和創(chuàng)建數(shù)據(jù)集。CarbonData DDL十分靈活、易于使用,并且足夠強(qiáng)大,可以定義復(fù)雜類(lèi)型的Table。

    便捷的數(shù)據(jù)管理:CarbonData為數(shù)據(jù)加載和維護(hù)提供多種數(shù)據(jù)管理功能。CarbonData支持加載歷史數(shù)據(jù)以及增量加載新數(shù)據(jù)。加載的數(shù)據(jù)可以基于加載時(shí)間進(jìn)行刪除,也可以撤銷(xiāo)特定的數(shù)據(jù)加載操作。

    CarbonData文件格式是HDFS中的列式存儲(chǔ)格式。該格式具有許多新型列存儲(chǔ)文件的特性,例如,分割表,數(shù)據(jù)壓縮等。

    CarbonData關(guān)鍵技術(shù)和優(yōu)勢(shì)

    快速查詢(xún)響應(yīng):高性能查詢(xún)是CarbonData關(guān)鍵技術(shù)的優(yōu)勢(shì)之一。CarbonData查詢(xún)速度大約是Spark SQL查詢(xún)的10倍。CarbonData使用的專(zhuān)用數(shù)據(jù)格式圍繞高性能查詢(xún)進(jìn)行設(shè)計(jì),其中包括多種索引技術(shù)、全局字典編碼和多次的Push down優(yōu)化,從而對(duì)TB級(jí)數(shù)據(jù)查詢(xún)進(jìn)行最快響應(yīng)。

    高效率數(shù)據(jù)壓縮:CarbonData使用輕量級(jí)壓縮和重量級(jí)壓縮的組合壓縮算法壓縮數(shù)據(jù),可以減少60%~80%數(shù)據(jù)存儲(chǔ)空間,很大程度上節(jié)省硬件存儲(chǔ)成本。

    CarbonData索引緩存服務(wù)器

    為了解決日益增長(zhǎng)的數(shù)據(jù)量給driver帶來(lái)的壓力與出現(xiàn)的各種問(wèn)題,現(xiàn)引入單獨(dú)的索引緩存服務(wù)器,將索引從Carbon查詢(xún)的Spark應(yīng)用側(cè)剝離。所有的索引內(nèi)容全部由索引緩存服務(wù)器管理,Spark應(yīng)用通過(guò)RPC方式獲取需要的索引數(shù)據(jù)。這樣,釋放了大量的業(yè)務(wù)側(cè)的內(nèi)存,使得業(yè)務(wù)不會(huì)受集群規(guī)模影響而性能或者功能出現(xiàn)問(wèn)題。

  • 跨源復(fù)雜數(shù)據(jù)的SQL查詢(xún)優(yōu)化

    出于管理和信息收集的需要,企業(yè)內(nèi)部會(huì)存儲(chǔ)海量數(shù)據(jù),包括數(shù)目眾多的各種數(shù)據(jù)庫(kù)、數(shù)據(jù)倉(cāng)庫(kù)等,此時(shí)會(huì)面臨以下困境:數(shù)據(jù)源種類(lèi)繁多,數(shù)據(jù)集結(jié)構(gòu)化混合,相關(guān)數(shù)據(jù)存放分散等,這就導(dǎo)致了跨源復(fù)雜查詢(xún)因傳輸效率低,耗時(shí)長(zhǎng)。

    當(dāng)前開(kāi)源Spark在跨源查詢(xún)時(shí),只能對(duì)簡(jiǎn)單的filter進(jìn)行下推,因此造成大量不必要的數(shù)據(jù)傳輸,影響SQL引擎性能。針對(duì)下推能力進(jìn)行增強(qiáng),當(dāng)前對(duì)aggregate、復(fù)雜projection、復(fù)雜predicate均可以下推到數(shù)據(jù)源,盡量減少不必要數(shù)據(jù)的傳輸,提升查詢(xún)性能。

    目前僅支持JDBC數(shù)據(jù)源的查詢(xún)下推,支持的下推模塊有aggregate、projection、predicate、aggregate over inner join、aggregate over union all等。為應(yīng)對(duì)不同應(yīng)用場(chǎng)景的特殊需求,對(duì)所有下推模塊設(shè)計(jì)開(kāi)關(guān)功能,用戶(hù)可以自行配置是否應(yīng)用上述查詢(xún)下推的增強(qiáng)。