spark简介(大数据技术)
Apache Spark 是專為大規(guī)模數(shù)據(jù)處理而設計的快速通用的計算引擎。Spark是UC Berkeley AMP lab (加州大學伯克利分校的AMP實驗室)所開源的類Hadoop MapReduce的通用并行框架,Spark,擁有Hadoop MapReduce所具有的優(yōu)點;但不同于MapReduce的是——Job中間輸出結(jié)果可以保存在內(nèi)存中,從而不再需要讀寫HDFS,因此Spark能更好地適用于數(shù)據(jù)挖掘與機器學習等需要迭代的MapReduce的算法。
Spark 是一種與 Hadoop 相似的開源集群計算環(huán)境,但是兩者之間還存在一些不同之處,這些有用的不同之處使 Spark 在某些工作負載方面表現(xiàn)得更加優(yōu)越,換句話說,Spark 啟用了內(nèi)存分布數(shù)據(jù)集,除了能夠提供交互式查詢外,它還可以優(yōu)化迭代工作負載。
Spark 是在 scala 語言中實現(xiàn)的,它將 Scala 用作其應用程序框架。與 Hadoop 不同,Spark 和 scala能夠緊密集成,其中的 scala 可以像操作本地集合對象一樣輕松地操作分布式數(shù)據(jù)集。
盡管創(chuàng)建 Spark 是為了支持分布式數(shù)據(jù)集上的迭代作業(yè),但是實際上它是對 Hadoop 的補充,可以在 Hadoop 文件系統(tǒng)中并行運行。通過名為 Mesos 的第三方集群框架可以支持此行為。Spark 由加州大學伯克利分校 AMP 實驗室 (Algorithms, Machines, and People Lab) 開發(fā),可用來構(gòu)建大型的、低延遲的數(shù)據(jù)分析應用程序。
? 易用性
Spark 提供了80多個高級運算符。
? 通用性
Spark 提供了大量的庫,包括Spark Core、Spark SQL、Spark Streaming、MLlib、GraphX。 開發(fā)者可以在同一個應用程序中無縫組合使用這些庫。
? 支持多種資源管理器
Spark 支持 Hadoop YARN,Apache Mesos,及其自帶的獨立集群管理器
? Spark生態(tài)系統(tǒng)
? Shark:Shark基本上就是在Spark的框架基礎上提供和Hive一樣的HiveQL命令接口,為了最大程度的保持和Hive的兼容性,Spark使用了Hive的API來實現(xiàn)query Parsing和 Logic Plan generation,最后的PhysicalPlan execution階段用Spark代替HadoopMapReduce。通過配置Shark參數(shù),Shark可以自動在內(nèi)存中緩存特定的RDD,實現(xiàn)數(shù)據(jù)重用,進而加快特定數(shù)據(jù)集的檢索。同時,Shark通過UDF用戶自定義函數(shù)實現(xiàn)特定的數(shù)據(jù)分析學習算法,使得SQL數(shù)據(jù)查詢和運算分析能結(jié)合在一起,最大化RDD的重復使用。
? SparkR:SparkR是一個為R提供了輕量級的Spark前端的R包。 SparkR提供了一個分布式的data frame數(shù)據(jù)結(jié)構(gòu),解決了 R中的data frame只能在單機中使用的瓶頸,它和R中的data frame 一樣支持許多操作,比如select,filter,aggregate等等。(類似dplyr包中的功能)這很好的解決了R的大數(shù)據(jù)級瓶頸問題。 SparkR也支持分布式的機器學習算法,比如使用MLib機器學習庫。 [3] SparkR為Spark引入了R語言社區(qū)的活力,吸引了大量的數(shù)據(jù)科學家開始在Spark平臺上直接開始數(shù)據(jù)分析之旅。 [4]
基本原理
Spark Streaming:構(gòu)建在Spark上處理Stream數(shù)據(jù)的框架,基本的原理是將Stream數(shù)據(jù)分成小的時間片段(幾秒),以類似batch批量處理的方式來處理這小部分數(shù)據(jù)。Spark Streaming構(gòu)建在Spark上,一方面是因為Spark的低延遲執(zhí)行引擎(100ms+),雖然比不上專門的流式數(shù)據(jù)處理軟件,也可以用于實時計算,另一方面相比基于Record的其它處理框架(如Storm),一部分窄依賴的RDD數(shù)據(jù)集可以從源數(shù)據(jù)重新計算達到容錯處理目的。此外小批量處理的方式使得它可以同時兼容批量和實時數(shù)據(jù)處理的邏輯和算法。方便了一些需要歷史數(shù)據(jù)和實時數(shù)據(jù)聯(lián)合分析的特定應用場合。
計算方法
? Bagel: Pregel on Spark,可以用Spark進行圖計算,這是個非常有用的小項目。Bagel自帶了一個例子,實現(xiàn)了Google的PageRank算法。
? 當下Spark已不止步于實時計算,目標直指通用大數(shù)據(jù)處理平臺,而終止Spark,開啟SparkSQL或許已經(jīng)初見端倪。
? 近幾年來,大數(shù)據(jù)機器學習和數(shù)據(jù)挖掘的并行化算法研究成為大數(shù)據(jù)領域一個較為重要的研究熱點。早幾年國內(nèi)外研究者和業(yè)界比較關注的是在 Hadoop 平臺上的并行化算法設計。然而, HadoopMapReduce 平臺由于網(wǎng)絡和磁盤讀寫開銷大,難以高效地實現(xiàn)需要大量迭代計算的機器學習并行化算法。隨著 UC Berkeley AMPLab 推出的新一代大數(shù)據(jù)平臺 Spark 系統(tǒng)的出現(xiàn)和逐步發(fā)展成熟,近年來國內(nèi)外開始關注在 Spark 平臺上如何實現(xiàn)各種機器學習和數(shù)據(jù)挖掘并行化算法設計。為了方便一般應用領域的數(shù)據(jù)分析人員使用所熟悉的 R 語言在 Spark 平臺上完成數(shù)據(jù)分析,Spark 提供了一個稱為 SparkR 的編程接口,使得一般應用領域的數(shù)據(jù)分析人員可以在 R 語言的環(huán)境里方便地使用 Spark 的并行化編程接口和強大計算能力。 [5]
總結(jié)
以上是生活随笔為你收集整理的spark简介(大数据技术)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vb.net 获取IP地址
- 下一篇: minGW64安装和使用 极简教程