本篇內(nèi)容主要講解“redis怎么讓Spark提速”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“Redis怎么讓Spark提速”吧!
創(chuàng)新互聯(lián)公司長期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為煙臺企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè),煙臺網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
Apache Spark已逐漸儼然成為下一代大數(shù)據(jù)處理工具的典范。通過借鑒開源算法,并將處理任務(wù)分布到計算節(jié)點集群上,無論在它們在單一平臺上所能執(zhí)行的數(shù)據(jù)分析類型方面,還是在執(zhí)行這些任務(wù)的速度方面,Spark和Hadoop這一代框架都輕松勝過傳統(tǒng)框架。Spark利用內(nèi)存來處理數(shù)據(jù),因而速度比基于磁盤的Hadoop大幅加快(快100倍)。
但是如果得到一點幫助,Spark可以運行得還要快。如果結(jié)合Spark和Redis(流行的內(nèi)存數(shù)據(jù)結(jié)構(gòu)存儲技術(shù)),你可以再次大幅提升處理分析任務(wù)的性能。這歸功于Redis經(jīng)過優(yōu)化的數(shù)據(jù)結(jié)構(gòu),以及它在執(zhí)行操作時,能夠盡量降低復(fù)雜性和開銷。通過借助連接件訪問Redis數(shù)據(jù)結(jié)構(gòu)和API,Spark可以進(jìn)一步加快速度。
提速幅度有多大?如果Redis和Spark結(jié)合使用,結(jié)果證明,處理數(shù)據(jù)(以便分析下面描述的時間序列數(shù)據(jù))的速度比Spark單單使用進(jìn)程內(nèi)存或堆外緩存來存儲數(shù)據(jù)要快45倍――不是快45%,而是快整整45倍!
為什么這很重要?許多公司日益需要分析交易的速度與業(yè)務(wù)交易本身的速度一樣快。越來越多的決策變得自動化,驅(qū)動這些決策所需的分析應(yīng)該實時進(jìn)行。Apache Spark是一種出色的通用數(shù)據(jù)處理框架;雖然它并非***實時,還是往更及時地讓數(shù)據(jù)發(fā)揮用途邁出了一大步。
Spark使用彈性分布式數(shù)據(jù)集(RDD),這些數(shù)據(jù)集可以存儲在易失性內(nèi)存中或HDFS之類的持久性存儲系統(tǒng)中。RDD不會變化,分布在Spark集群的所有節(jié)點上,它們經(jīng)轉(zhuǎn)換化可以創(chuàng)建其他RDD。
Spark RDD
RDD是Spark中的重要抽象對象。它們代表了一種高效地將數(shù)據(jù)呈現(xiàn)給迭代進(jìn)程的容錯方法。由于處理工作在內(nèi)存中進(jìn)行,這表示相比使用HDFS和MapReduce,處理時間縮短了好幾個數(shù)量級。
Redis是專門為高性能設(shè)計的。亞毫秒延遲得益于經(jīng)過優(yōu)化的數(shù)據(jù)結(jié)構(gòu),由于讓操作可以在鄰近數(shù)據(jù)存儲的地方執(zhí)行,提高了效率。這種數(shù)據(jù)結(jié)構(gòu)不僅可以高效地利用內(nèi)存、降低應(yīng)用程序的復(fù)雜性,還降低了網(wǎng)絡(luò)開銷、帶寬消耗量和處理時間。Redis數(shù)據(jù)結(jié)構(gòu)包括字符串、集合、有序集合、哈希、位圖、hyperloglog和地理空間索引。開發(fā)人員可以像使用樂高積木那樣使用Redis數(shù)據(jù)結(jié)構(gòu)――它們就是提供復(fù)雜功能的簡單管道。
為了直觀地表明這種數(shù)據(jù)結(jié)構(gòu)如何簡化應(yīng)用程序的處理時間和復(fù)雜性,我們不妨以有序集合(Sorted Set)數(shù)據(jù)結(jié)構(gòu)為例。有序集合基本上是一組按分?jǐn)?shù)排序的成員。
Redis有序集合
你可以將多種類型的數(shù)據(jù)存儲在這里,它們自動由分?jǐn)?shù)來排序。存儲在有序集合中的常見數(shù)據(jù)類型包括:物品(按價格)、商品名稱(按數(shù)量)、股價等時間序列數(shù)據(jù),以及時間戳等傳感器讀數(shù)。
有序集合的魅力在于Redis的內(nèi)置操作,讓范圍查詢、多個有序集合交叉、按成員等級和分?jǐn)?shù)檢索及更多事務(wù)可以簡單地執(zhí)行,具有***的速度,還可以大規(guī)模執(zhí)行。內(nèi)置操作不僅節(jié)省了需要編寫的代碼,內(nèi)存中執(zhí)行操作還縮短了網(wǎng)絡(luò)延遲、節(jié)省了帶寬,因而能夠?qū)崿F(xiàn)亞毫秒延遲的高吞吐量。如果將有序集合用于分析時間序列數(shù)據(jù),相比其他內(nèi)存鍵/值存儲系統(tǒng)或基于磁盤的數(shù)據(jù)庫,通??梢詫⑿阅芴嵘脦讉€數(shù)量級。
Redis團隊的目標(biāo)是提升Spark的分析功能,為此開發(fā)了Spark-Redis連接件。這個程序包讓Spark得以使用Redis作為其數(shù)據(jù)源之一。該連接件將Redis的數(shù)據(jù)結(jié)構(gòu)暴露在Spark面前,可以針對所有類型的分析大幅提升性能。
Spark Redis連接件
為了展示給Spark帶來的好處,Redis團隊決定在幾種不同的場景下執(zhí)行時間片(范圍)查詢,以此橫向比較Spark中的時間序列分析。這幾種場景包括:Spark在堆內(nèi)內(nèi)存中存儲所有數(shù)據(jù),Spark使用Tachyon作為堆外緩存,Spark使用HDFS,以及結(jié)合使用Spark和Redis。
Redis團隊使用Cloudera的Spark時間序列程序包,構(gòu)建了一個Spark-Redis時間序列程序包,使用Redis有序集合來加快時間序列分析。除了讓Spark可以訪問Redis的所有數(shù)據(jù)結(jié)構(gòu)外,該程序包另外做兩件事:
自動確保Redis節(jié)點與Spark集群一致,從而確保每個Spark節(jié)點使用本地Redis數(shù)據(jù),因而優(yōu)化延遲。
與Spark數(shù)據(jù)幀和數(shù)據(jù)源API整合起來,以便自動將Spark SQL查詢轉(zhuǎn)換成對Redis中的數(shù)據(jù)來說***效的那種檢索機制。
簡單地說,這意味著用戶不必?fù)?dān)心Spark和Redis之間的操作一致性,可以繼續(xù)使用Spark SQL來分析,同時大大提升了查詢性能。
用于這番橫向比較的時間序列數(shù)據(jù)包括:隨機生成的金融數(shù)據(jù),每天1024支股票,時間范圍是32年。每只股票由各自的有序集合來表示,分?jǐn)?shù)是日期,數(shù)據(jù)成員包括開盤價、***價、***價、收盤價、成交量以及調(diào)整后的收盤價。下圖描述了用于Spark分析的Redis有序集合中的數(shù)據(jù)表示:
Spark Redis時間序列
在上述例子中,就有序集合AAPL而言,有表示每天(1989-01-01)的分?jǐn)?shù),還有全天中表示為一個相關(guān)行的多個值。只要在Redis中使用一個簡單的ZRANGEBYSCORE命令,就可以執(zhí)行這一操作:獲取某個時間片的所有值,因而獲得指定的日期范圍內(nèi)的所有股價。Redis執(zhí)行這種類型的查詢的速度比其他鍵/值存儲系統(tǒng)快100倍。
這番橫向比較證實了性能提升。結(jié)果發(fā)現(xiàn),Spark使用Redis執(zhí)行時間片查詢的速度比Spark使用HDFS快135倍,比Spark使用堆內(nèi)(進(jìn)程)內(nèi)存或Spark使用Tachyon作為堆外緩存快45倍。下圖顯示了針對不同場景所比較的平均執(zhí)行時間:
Spark Redis橫向比較
該指南將逐步引導(dǎo)你安裝典型的Spark集群和Spark-Redis程序包。它還用一個簡單的單詞計數(shù)例子,表明了可以如何結(jié)合使用Spark和Redis。你在試用過Spark和Spark-Redis程序包后,可以進(jìn)一步探究利用其他Redis數(shù)據(jù)結(jié)構(gòu)的更多場景。
雖然有序集合很適合時間序列數(shù)據(jù),但Redis的其他數(shù)據(jù)結(jié)構(gòu)(比如集合、列表和地理空間索引)可以進(jìn)一步豐富Spark分析。設(shè)想一下:一個Spark進(jìn)程試圖根據(jù)人群偏好以及鄰近市中心,獲取在哪個地區(qū)發(fā)布新產(chǎn)品效果***的信息?,F(xiàn)在設(shè)想一下,內(nèi)置分析自帶的數(shù)據(jù)結(jié)構(gòu)(比如地理空間索引和集合)可以大大加快這個進(jìn)程。Spark-Redis這對組合擁有***的應(yīng)用前景。
Spark支持一系列廣泛的分析,包括SQL、機器學(xué)習(xí)、圖形計算和Spark Streaming。使用Spark的內(nèi)存處理功能只能讓你達(dá)到一定的規(guī)模。然而有了Redis后,你可以更進(jìn)一步:不僅可以通過利用Redis的數(shù)據(jù)結(jié)構(gòu)來提升性能,還可以更輕松自如地擴展Spark,即通過充分利用Redis提供的共享分布式內(nèi)存數(shù)據(jù)存儲機制,處理數(shù)百萬個記錄,乃至數(shù)十億個記錄。
時間序列這個例子只是開了個頭。將Redis數(shù)據(jù)結(jié)構(gòu)用于機器學(xué)習(xí)和圖形分析同樣有望為這些工作負(fù)載帶來執(zhí)行時間大幅縮短的好處。
到此,相信大家對“Redis怎么讓Spark提速”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
網(wǎng)站欄目:Redis怎么讓Spark提速
本文地址:http://muchs.cn/article26/gciocg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、網(wǎng)頁設(shè)計公司、Google、用戶體驗、網(wǎng)站設(shè)計公司、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)