免費(fèi)英文網(wǎng)站建設(shè)學(xué)電商出來一般干什么工作
目錄
1 概述
?2 發(fā)展
3 Spark和Hadoop
4 Spark核心模塊
1 概述
????????Apache Spark是一個(gè)快速、通用、可擴(kuò)展的分布式計(jì)算系統(tǒng),最初由加州大學(xué)伯克利分校的AMPLab開發(fā)。
????????Spark可以處理大規(guī)模數(shù)據(jù)處理任務(wù),包括批處理、迭代式算法、交互式查詢和流處理等。Spark支持多種編程語言,包括Java、Scala、Python和R等。Spark的核心概念是彈性分布式數(shù)據(jù)集(Resilient Distributed Dataset,簡(jiǎn)稱RDD),它是一個(gè)分布式的內(nèi)存抽象,可以讓開發(fā)者在內(nèi)存中高效地處理數(shù)據(jù)。
????????Spark還提供了許多高級(jí)工具,包括Spark SQL、Spark Streaming、MLlib(機(jī)器學(xué)習(xí)庫(kù))和GraphX(圖處理庫(kù)),這些工具可以讓開發(fā)者更方便地處理數(shù)據(jù)和構(gòu)建分布式應(yīng)用程序。
- Spark 是一種由 Scala 語言開發(fā)的快速、通用、可擴(kuò)展的大數(shù)據(jù)分析引擎
- Spark Core 中提供了 Spark 最基礎(chǔ)與最核心的功能
- Spark SQL 是Spark 用來操作結(jié)構(gòu)化數(shù)據(jù)的組件。通過 Spark SQL,用戶可以使用SQL 或者 Apache Hive 版本的 SQL 方言(HQL)來查詢數(shù)據(jù)。
- Spark Streaming 是 Spark 平臺(tái)上針對(duì)實(shí)時(shí)數(shù)據(jù)進(jìn)行流式計(jì)算的組件,提供了豐富的處理數(shù)據(jù)流的API。
?2 發(fā)展
- 2009 年,Spark 誕生于伯克利大學(xué)的AMPLab 實(shí)驗(yàn)室
- 2010 年,伯克利大學(xué)正式開源了 Spark 項(xiàng)目
- 2013 年 6 月,Spark 成為了 Apache 基金會(huì)下的項(xiàng)目
- 2014 年 2 月,Spark 以飛快的速度成為了 Apache 的頂級(jí)項(xiàng)目
- 2015 年至今,Spark 變得愈發(fā)火爆,大量的國(guó)內(nèi)公司開始重點(diǎn)部署或者使用 Spark
3 Spark和Hadoop
?
Hadoop 的 MR 框架和Spark 框架都是數(shù)據(jù)處理框架,那么我們?cè)谑褂脮r(shí)如何選擇?
- Hadoop MapReduce 由于其設(shè)計(jì)初衷并不是為了滿足循環(huán)迭代式數(shù)據(jù)流處理,因此在多并行運(yùn)行的數(shù)據(jù)可復(fù)用場(chǎng)景(如:機(jī)器學(xué)習(xí)、圖挖掘算法、交互式數(shù)據(jù)挖掘算法)中存在諸多計(jì)算效率等問題。所以 Spark 應(yīng)運(yùn)而生,Spark 就是在傳統(tǒng)的MapReduce 計(jì)算框架的基礎(chǔ)上,利用其計(jì)算過程的優(yōu)化,從而大大加快了數(shù)據(jù)分析、挖掘的運(yùn)行和讀寫速度,并將計(jì)算單元縮小到更適合并行計(jì)算和重復(fù)使用的RDD 計(jì)算模型。
- 機(jī)器學(xué)習(xí)中 ALS、凸優(yōu)化梯度下降等。這些都需要基于數(shù)據(jù)集或者數(shù)據(jù)集的衍生數(shù)據(jù)反復(fù)查詢反復(fù)操作。MR 這種模式不太合適,即使多 MR 串行處理,性能和時(shí)間也是一個(gè)問題。數(shù)據(jù)的共享依賴于磁盤。另外一種是交互式數(shù)據(jù)挖掘,MR 顯然不擅長(zhǎng)。而Spark 所基于的 scala 語言恰恰擅長(zhǎng)函數(shù)的處理。
- Spark 是一個(gè)分布式數(shù)據(jù)快速分析項(xiàng)目。它的核心技術(shù)是彈性分布式數(shù)據(jù)集(Resilient Distributed Datasets),提供了比MapReduce 豐富的模型,可以快速在內(nèi)存中對(duì)數(shù)據(jù)集進(jìn)行多次迭代,來支持復(fù)雜的數(shù)據(jù)挖掘算法和圖形計(jì)算算法。
- Spark 和Hadoop 的根本差異是多個(gè)作業(yè)之間的數(shù)據(jù)通信問題 : Spark 多個(gè)作業(yè)之間數(shù)據(jù)通信是基于內(nèi)存,而 Hadoop 是基于磁盤。
- Spark? Task 的啟動(dòng)時(shí)間快。Spark 采用 fork 線程的方式,而 Hadoop 采用創(chuàng)建新的進(jìn)程的方式。
- Spark 只有在 shuffle 的時(shí)候?qū)?shù)據(jù)寫入磁盤,而 Hadoop 中多個(gè) MR 作業(yè)之間的數(shù)據(jù)交互都要依賴于磁盤交互
- Spark 的緩存機(jī)制比HDFS 的緩存機(jī)制高效。
經(jīng)過上面的比較,可以看出在絕大多數(shù)的數(shù)據(jù)計(jì)算場(chǎng)景中,Spark 確實(shí)會(huì)比 MapReduce 更有優(yōu)勢(shì)。但是Spark 是基于內(nèi)存的,所以在實(shí)際的生產(chǎn)環(huán)境中,由于內(nèi)存的限制,可能會(huì)由于內(nèi)存資源不夠?qū)е?Job 執(zhí)行失敗,此時(shí),MapReduce 其實(shí)是一個(gè)更好的選擇,所以 Spark 并不能完全替代 MR。
4 Spark核心模塊
?
- Spark Core
Spark Core 中提供了 Spark 最基礎(chǔ)與最核心的功能,Spark 其他的功能如:Spark SQL, Spark Streaming,GraphX, MLlib 都是在 Spark Core 的基礎(chǔ)上進(jìn)行擴(kuò)展的
- Spark SQL
Spark SQL 是Spark 用來操作結(jié)構(gòu)化數(shù)據(jù)的組件。通過 Spark SQL,用戶可以使用 SQL或者Apache Hive 版本的 SQL 方言(HQL)來查詢數(shù)據(jù)。
- Spark Streaming
Spark Streaming 是 Spark 平臺(tái)上針對(duì)實(shí)時(shí)數(shù)據(jù)進(jìn)行流式計(jì)算的組件,提供了豐富的處理數(shù)據(jù)流的API。
- Spark MLlib
MLlib 是 Spark 提供的一個(gè)機(jī)器學(xué)習(xí)算法庫(kù)。MLlib 不僅提供了模型評(píng)估、數(shù)據(jù)導(dǎo)入等額外的功能,還提供了一些更底層的機(jī)器學(xué)習(xí)原語。
- Spark GraphX
GraphX 是 Spark 面向圖計(jì)算提供的框架與算法庫(kù)。
?