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

你必須要掌握的大數(shù)據(jù)計(jì)算技術(shù),都在這了

大數(shù)據(jù) 新聞
分布式的并行計(jì)算框架,從數(shù)據(jù)處理時(shí)效角度可以分為離線的批處理框架和實(shí)時(shí)的流處理框架。當(dāng)前最流行的批處理框架是Spark,流處理框架是Flink。

圖片

01離線批處理

這里所說的批處理指的是大數(shù)據(jù)離線分布式批處理技術(shù),專用于應(yīng)對(duì)那些一次計(jì)算需要輸入大量歷史數(shù)據(jù),并且對(duì)實(shí)時(shí)性要求不高的場(chǎng)景。目前常用的開源批處理組件有MapReduce和Spark,兩者都是基于MapReduce計(jì)算模型的。

1.MapReduce計(jì)算模型?

MapReduce是Google提出的分布式計(jì)算模型,分為Map階段和Reduce階段。在具體開發(fā)中,開發(fā)者僅實(shí)現(xiàn)map()和reduce()兩個(gè)函數(shù)即可實(shí)現(xiàn)并行計(jì)算。Map階段負(fù)責(zé)數(shù)據(jù)切片,進(jìn)行并行處理,Reduce階段負(fù)責(zé)對(duì)Map階段的計(jì)算結(jié)果進(jìn)行匯總。

這里舉一個(gè)通俗的例子幫助你理解。假如現(xiàn)在有3個(gè)人想打一種不需要3~6的撲克牌游戲,需要從一副撲克牌中去掉這些牌,過程描述如下:

第一步,將這一副牌隨機(jī)分成3份,分給3個(gè)人,然后每個(gè)人一張張查看手中的牌,遇到3~6的牌就挑出去;

第二步,等所有人都完成上面的步驟后,再將每個(gè)人手上剩余的牌收集起來。

在這個(gè)過程中,第一步操作屬于Map階段,相當(dāng)于對(duì)每張牌做一次判斷(映射、函數(shù)運(yùn)算),是否保留;第二步屬于Reduce階段,將結(jié)果匯總。

MapReduce數(shù)據(jù)流圖如圖1所示。

圖片

▲圖1 MapReduce數(shù)據(jù)流圖

MapReduce處理的數(shù)據(jù)格式為鍵-值格式,一個(gè)MapReduce作業(yè)就是將輸入數(shù)據(jù)按規(guī)則分割為一系列固定大小的分片,然后在每一個(gè)分片上執(zhí)行Map任務(wù),Map任務(wù)相互獨(dú)立,并行執(zhí)行,且會(huì)在數(shù)據(jù)所在節(jié)點(diǎn)就近執(zhí)行;當(dāng)所有的Map任務(wù)執(zhí)行完成后,通過緩存機(jī)制將分散在多個(gè)節(jié)點(diǎn)的鍵值相同的數(shù)據(jù)記錄拉取到同一節(jié)點(diǎn),完成之后的Reduce任務(wù),最后將結(jié)果輸出到指定文件系統(tǒng),比如HDFS、HBase。基于以上解釋和描述,可以看出MapReduce不適合實(shí)現(xiàn)需要迭代的計(jì)算,如路徑搜索。

2.Spark

Spark是基于內(nèi)存計(jì)算的大數(shù)據(jù)并行計(jì)算框架,最初由美國(guó)加州大學(xué)伯克利分校的AMP實(shí)驗(yàn)室于2009年開發(fā),于2010年開源,是目前最主流的批處理框架,替代了MapReduce。

整個(gè)Spark項(xiàng)目由四部分組成,包括SparkSQL、Spark Streaming、MLlib、Graphx,如圖2所示。其中SparkSQL用于OLAP分析,Streaming用于流式計(jì)算的(微批形式),MLlib是Spark的機(jī)器學(xué)習(xí)庫(kù),Graphx是圖形計(jì)算算法庫(kù)。Spark可在Hadoop YARN、Mesos、Kubernetes上運(yùn)行,可以訪問HDFS、Alluxio、Cassandra、HBase等數(shù)據(jù)源。

圖片

▲圖2 Spark組件

Spark使用先進(jìn)的DAG(Directed Acyclic Graph,有向無環(huán)圖)執(zhí)行引擎,支持中間結(jié)果僅存儲(chǔ)在內(nèi)存中,大大減少了IO開銷,帶來了更高的運(yùn)算效率,并且利用多線程來執(zhí)行具體的任務(wù),執(zhí)行速度比MapReduce快一個(gè)量級(jí)。

在Spark中,Spark應(yīng)用程序(Application)在集群上作為獨(dú)立的進(jìn)程集運(yùn)行,由主程序(稱為Driver)的SparkContext中的對(duì)象協(xié)調(diào),一個(gè)Application由一個(gè)任務(wù)控制節(jié)點(diǎn)(Driver)和若干個(gè)作業(yè)(Job)構(gòu)成。Driver是Spark應(yīng)用程序main函數(shù)運(yùn)行的地方,負(fù)責(zé)初始化Spark的上下文環(huán)境、劃分RDD,并生成DAG,控制著應(yīng)用程序的整個(gè)生命周期。Job執(zhí)行MapReduce運(yùn)算,一個(gè)Job由多個(gè)階段(Stage)構(gòu)成,一個(gè)階段包括多個(gè)任務(wù)(Task),Task是最小的工作單元。在集群環(huán)境中,Driver運(yùn)行在集群的提交機(jī)上,Task運(yùn)行在集群的Worker Node上的Executor中。Executor是運(yùn)行在Spark集群的Worker Node上的一個(gè)進(jìn)程,負(fù)責(zé)運(yùn)行Task,Executor既提供計(jì)算環(huán)境也提供數(shù)據(jù)存儲(chǔ)能力。在執(zhí)行過程中,Application是相互隔離的,不會(huì)共享數(shù)據(jù)。Spark集群架構(gòu)示意圖如圖3所示。

圖片

▲圖3 Spark集群架構(gòu)?

具體來說,當(dāng)在集群上執(zhí)行一個(gè)應(yīng)用時(shí),SparkContext可以連接到集群資源管理器(如YARN),獲取集群的Worker Node的Executor,然后將應(yīng)用程序代碼上傳到Executor中,再將Task發(fā)送給Executor運(yùn)行。

Spark的核心數(shù)據(jù)結(jié)構(gòu)是RDD(Resilient Distributed Dataset,彈性分布式數(shù)據(jù)集),只支持讀操作,如需修改,只能通過創(chuàng)建新的RDD實(shí)現(xiàn)。

02實(shí)時(shí)流處理

當(dāng)前實(shí)時(shí)處理數(shù)據(jù)的需求越來越多,例如實(shí)時(shí)統(tǒng)計(jì)分析、實(shí)時(shí)推薦、在線業(yè)務(wù)反欺詐等。相比批處理模式,流處理不是對(duì)整個(gè)數(shù)據(jù)集進(jìn)行處理,而是實(shí)時(shí)對(duì)每條數(shù)據(jù)執(zhí)行相應(yīng)操作。流處理系統(tǒng)的主要指標(biāo)有以下幾個(gè)方面:時(shí)延、吞吐量、容錯(cuò)、傳輸保障(如支持恰好一次)、易擴(kuò)展性、功能函數(shù)豐富性、狀態(tài)管理(例如窗口數(shù)據(jù))等。

目前市面上有很多成熟的開源流處理平臺(tái),典型的如Storm、Flink、Spark Streaming。三者的簡(jiǎn)單對(duì)比如下:Storm與Flink都是原生的流處理模型,Spark Streaming是基于Spark實(shí)現(xiàn)的微批操作;Spark Streaming的時(shí)延相對(duì)前兩者高;Flink與Streaming的吞吐量高,支持的查詢功能與計(jì)算函數(shù)也比Storm多??傮w來說,F(xiàn)link是這三者中綜合性能與功能更好的流平臺(tái),當(dāng)前的社區(qū)發(fā)展也更火熱。

1.Flink簡(jiǎn)介

Flink最初由德國(guó)一所大學(xué)開發(fā),后進(jìn)入Apache孵化器,現(xiàn)在已成為最流行的流式數(shù)據(jù)處理框架。Flink提供準(zhǔn)確的大規(guī)模流處理,支持高可用,能夠7×24小時(shí)全天候運(yùn)行,支持exactly-once語(yǔ)義、支持機(jī)器學(xué)習(xí),具有高吞吐量和低延遲的優(yōu)點(diǎn),可每秒處理數(shù)百萬(wàn)個(gè)事件,毫秒級(jí)延遲,支持具有不同的表現(xiàn)力和靈活性的分層API,支持批流

一體。

2.Flink的架構(gòu)

Flink是一個(gè)分布式系統(tǒng),可以作為獨(dú)立群集運(yùn)行,也可以運(yùn)行在所有常見的集群資源管理器上,例如Hadoop YARN、Apache Mesos和Kubernetes。

Flink采用主從架構(gòu),F(xiàn)link集群的運(yùn)行程序由兩種類型的進(jìn)程組成:JobManager和一個(gè)或多個(gè)TaskManager。TaskManager連接到JobManager,通知自己可用,并被安排工作。兩者的功能如下所示:

  • JobManager負(fù)責(zé)協(xié)調(diào)Flink應(yīng)用程序的分布式執(zhí)行,完成任務(wù)計(jì)劃、檢查點(diǎn)協(xié)調(diào)、故障恢復(fù)協(xié)調(diào)等工作。高可用性設(shè)置需要用到多個(gè)JobManager,其中一個(gè)作為領(lǐng)導(dǎo)者(leader),其他備用。
  • TaskManager,也稱為Worker,負(fù)責(zé)執(zhí)行數(shù)據(jù)處理流(dataflow)的任務(wù),并緩沖和交換數(shù)據(jù)流。TaskManager中資源調(diào)度的最小單位是任務(wù)槽(slot),TaskManager中slot的數(shù)量代表并發(fā)處理任務(wù)的數(shù)量。

Flink架構(gòu)示意圖如圖4所示。

圖片

▲圖4 Flink架構(gòu)

客戶端(Client)不是Flink運(yùn)行程序的一部分,它在給JobManager發(fā)送作業(yè)后,就可以斷開連接或保持連接狀態(tài)以接收進(jìn)度報(bào)告。

3.Flink對(duì)數(shù)據(jù)的處理方式

流處理是對(duì)沒有邊界數(shù)據(jù)流的處理。執(zhí)行時(shí),應(yīng)用程序映射到由流和轉(zhuǎn)換運(yùn)算符組成的流式數(shù)據(jù)處理流。這些數(shù)據(jù)流形成有向圖,以一個(gè)或多個(gè)源(source)開始,以一個(gè)或多個(gè)輸出(sink)結(jié)束。程序中的轉(zhuǎn)換與運(yùn)算符之間通常是一對(duì)一的關(guān)系,但有時(shí)一個(gè)轉(zhuǎn)換可以包含多個(gè)運(yùn)算符。Flink流式處理步驟示例如圖5所示。

圖片

▲圖5 Flink流式處理步驟示例

4.Flink的接口抽象

Flink為開發(fā)流、批處理的應(yīng)用提供了四層抽象,實(shí)踐中大多數(shù)應(yīng)用程序是基于核心API的DataStream/DataSet API進(jìn)行編程的,四層抽象從低到高的示意圖如圖6所示。


圖片

▲圖6  Flink接口抽象層次


  • Low-level:提供底層的基礎(chǔ)構(gòu)建函數(shù),用戶可以注冊(cè)事件時(shí)間和處理時(shí)間回調(diào),從而允許程序?qū)崿F(xiàn)復(fù)雜的計(jì)算。
  • Core API:DataStream API(有界/無界流)和DataSet API(有界數(shù)據(jù)集)?;谶@些API,用戶可以實(shí)現(xiàn)transformation、join、aggregation、windows、state等形式的數(shù)據(jù)處理。
  • Table API:基于表(table)的聲明性領(lǐng)域特定語(yǔ)言(DSL)。Table API遵循(擴(kuò)展的)關(guān)系模型,表具有附加的表結(jié)構(gòu)(schema),并且該API提供類似關(guān)系模型的操作,例如select、join、group-by、aggregate等。Table API的表達(dá)性不如Core API,但優(yōu)點(diǎn)是使用起來更為簡(jiǎn)潔,編碼更少。Flink支持在表和DataStream/DataSet之間進(jìn)行無縫轉(zhuǎn)換,因此可以將Table API與DataStream/DataSet API混合使用。
  • SQL:此層是最高層的抽象,在語(yǔ)義和表達(dá)方式上均類似于Table API,但是將程序表示為SQL查詢表達(dá)式。
責(zé)任編輯:張燕妮 來源: 數(shù)倉(cāng)寶貝庫(kù)
相關(guān)推薦

2018-03-19 14:43:28

2021-07-18 10:40:53

大數(shù)據(jù)大數(shù)據(jù)技術(shù)

2019-06-20 17:39:12

Android啟動(dòng)優(yōu)化

2021-10-21 08:13:11

Springboot

2018-12-09 16:18:38

物聯(lián)網(wǎng)無線技術(shù)通信

2019-04-22 14:12:12

HBase集群Google

2022-10-12 08:22:44

Guava工具Collection

2019-04-19 08:25:13

HBase基礎(chǔ)Google

2016-09-29 15:49:30

大數(shù)據(jù)上市

2021-12-03 18:04:06

命令 RabbitMQ Web

2020-04-08 17:10:03

GitHub代碼開源

2019-12-25 14:00:26

數(shù)據(jù)科學(xué)人工智能科學(xué)家

2010-03-16 13:57:57

云計(jì)算技術(shù)

2018-06-12 15:55:07

編程語(yǔ)言Java加密方式

2019-06-03 14:35:38

大數(shù)據(jù)數(shù)據(jù)開發(fā)語(yǔ)言

2019-08-15 09:35:03

2019-08-07 15:20:08

Git開源命令

2022-04-25 21:40:54

數(shù)據(jù)建模

2017-12-26 15:24:18

智慧停車大數(shù)據(jù)停車場(chǎng)

2018-01-31 22:30:05

數(shù)據(jù)科學(xué)家數(shù)據(jù)專家工程師
點(diǎn)贊
收藏

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