apache ignite_使用Apache Ignite优化Spark作业性能(第1部分)
apache ignite
來(lái)看看他們是如何工作的!
本文的某些部分摘自我的書《 Apache Ignite的高性能內(nèi)存計(jì)算》 。 如果您對(duì)這篇文章感興趣,請(qǐng)查看本書的其余部分,以獲取更多有用的信息。
Apache Ignite提供了多種方法來(lái)提高Spark作業(yè)的性能:Ignite RDD(將Ignite緩存表示為Spark RDD抽象)和Ignite IGFS(可透明地插入Spark部署中的內(nèi)存文件系統(tǒng))。 Ignite RDD允許輕松地在不同的Spark作業(yè)或應(yīng)用程序之間共享內(nèi)存中的狀態(tài)。 使用Ignite內(nèi)存共享RDD,任何Spark作業(yè)都可以將一些數(shù)據(jù)放入Ignite緩存中,其他Spark作業(yè)以后可以訪問(wèn)。 Ignite RDD是作為Ignite分布式緩存上的視圖實(shí)現(xiàn)的,該緩存可以部署在Spark作業(yè)執(zhí)行過(guò)程中或Spark工作者上。
在繼續(xù)討論更高級(jí)的主題之前,讓我們看一下Spark的歷史以及Ignite RDD可以解決哪些類型的問(wèn)題。
AMPLab發(fā)明了Apache Spark來(lái)進(jìn)行快速計(jì)算。 它建立在Hadoop MapReduce之上,并擴(kuò)展了MapReduce模型以有效使用更多類型的操作,例如交互式查詢和流處理。
Spark和Hadoop MapReduce之間的主要區(qū)別在于,在執(zhí)行過(guò)程中,Spark嘗試將數(shù)據(jù)保留在內(nèi)存中,而Hadoop MapReduce將數(shù)據(jù)隨機(jī)混入和移出磁盤。 Hadoop MapReduce花費(fèi)大量時(shí)間將中間數(shù)據(jù)寫入磁盤并回讀。 消除了這些冗余磁盤操作,使Spark幅值更快。 Spark可以將數(shù)據(jù)(中間)存儲(chǔ)在內(nèi)存中,而無(wú)需任何I / O,因此您可以非??焖俚貙?duì)相同數(shù)據(jù)進(jìn)行操作。
為了將數(shù)據(jù)存儲(chǔ)到內(nèi)存中,Spark提供了名為Spark RDD的特殊數(shù)據(jù)集。 Spark RDD代表Spark彈性分布式數(shù)據(jù)集。 Spark RDD具有Apache Spark大規(guī)模數(shù)據(jù)處理框架的基本組件。 下圖顯示了Spark RDD上的迭代操作。
請(qǐng)注意,上圖是從Spark文檔獲得的。 Spark RDD是一個(gè)不變的,容錯(cuò)的分布式數(shù)據(jù)元素集合。 您可以將Spark RDD想象為內(nèi)存中的Hadoop HDFS。 Spark RDD支持兩種類型的操作:
通過(guò)使用Spark轉(zhuǎn)換功能來(lái)創(chuàng)建Spark RDD。 Spark轉(zhuǎn)換功能可以從各種來(lái)源(例如文本文件)創(chuàng)建Spark RDD。 除了從文本文件創(chuàng)建Spark RDD外,還可以從外部存儲(chǔ)(例如RDBMS,HBase,Cassandra或與Hadoop輸入格式兼容的任何其他數(shù)據(jù)源)創(chuàng)建Spark RDD。
大多數(shù)時(shí)候,Spark RDD會(huì)從一個(gè)RDD轉(zhuǎn)換為另一個(gè)新的Spark RDD,以便為將來(lái)的處理準(zhǔn)備數(shù)據(jù)集。 讓我們考慮一下Spark中的以下數(shù)據(jù)轉(zhuǎn)換步驟:
Spark RDD用于通過(guò)Spark動(dòng)作對(duì)RDD數(shù)據(jù)集執(zhí)行計(jì)算,例如
count或
reduce 。 但是Spark RDD有一個(gè)問(wèn)題:Spark RDD無(wú)法在Spark Jobs或SparkContext之間共享,因?yàn)镾park RDD已綁定到Spark應(yīng)用程序。 使用本機(jī)Spark分發(fā),在不同Spark作業(yè)之間共享RDD的唯一方法是將數(shù)據(jù)集寫入HDFS或文件系統(tǒng)中的某個(gè)位置,然后將RDD放入其他作業(yè)中。 但是,使用Alluxio(以前稱為Tachyon)或Apache Ignite可以實(shí)現(xiàn)相同的功能。
Apache Ignite的以內(nèi)存為中心的體系結(jié)構(gòu)以非常有效的方式實(shí)現(xiàn)了RDD共享。 Apache Ignite提供IgniteContext和IgniteRDD在Spark應(yīng)用程序之間共享RDD。
getPrefferredLocations以便RDD計(jì)算使用數(shù)據(jù)局部性。
在本系列的下一部分中,我們將安裝Apache Spark并執(zhí)行以下操作:
wordcount示例來(lái)驗(yàn)證Spark安裝。
翻譯自: https://www.javacodegeeks.com/2017/12/optimizing-spark-job-performance-apache-ignite-part-1.html
apache ignite
總結(jié)
以上是生活随笔為你收集整理的apache ignite_使用Apache Ignite优化Spark作业性能(第1部分)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 唬组词和拼音 唬有什么组词
- 下一篇: 手机整晚充电对电池有害吗?