搜尋
首頁資料庫RedisRedis怎麼讓Spark提速

Redis怎麼讓Spark提速

Jun 03, 2023 am 11:45 AM
redisspark

Apache Spark is increasingly becoming a model for next-generation big data processing tools.。透過借鑒開源演算法,並將處理任務分散到運算節點叢集上,無論在它們在單一平台上所能執行的資料分析類型方面,或是在執行這些任務的速度方面,Spark和Hadoop這一代框架都輕鬆勝過傳統框架。 Spark利用記憶體處理數據,因而速度比基於磁碟的Hadoop大幅加快(快100倍)。

但如果得到一點幫助,Spark可以運作得還要快。如果結合Spark和Redis(流行的記憶體資料結構儲存技術),你可以再次大幅提升處理分析任務的效能。這歸功於Redis經過優化的資料結構,以及它在執行操作時,能夠盡量降低複雜性和開銷。使用連接器連接到Redis的資料結構和API能夠進一步加快Spark的速度。

提速幅度有多大?如果Redis和Spark結合使用,結果證明,處理資料(以便分析下面描述的時間序列資料)的速度比Spark單單使用進程記憶體或堆外快取來儲存資料要快45倍――不是快45%,而是快整整45倍!

分析交易速度的重要性日益逐漸增長,因為許多公司需要實現與業務交易速度同等快速的分析。越來越多的決策變得自動化,驅動這些決策所需的分析應該要即時進行。 Apache  Spark是一種出色的通用資料處理架構;雖然它並非***即時,還是往更及時地讓資料發揮用途邁出了一大步。

Spark使用彈性分散式資料集(RDD),這些資料集可以儲存在易失性記憶體或HDFS之類的持久性儲存系統中。所有分佈在Spark叢集的節點上的RDD都保持不變,但可以透過轉換操作建立其他RDD。

Redis怎麼讓Spark提速

Spark RDD

#RDD是Spark中的重要抽象物件。它們代表了一種高效地將資料呈現給迭代進程的容錯方法。使用記憶體進行處理意味著相較於使用HDFS和MapReduce,處理時間將減少若干數量級。

Redis是專門為高性能設計的。亞毫秒延遲得益於經過最佳化的資料結構,由於讓操作可以在鄰近資料儲存的地方執行,提高了效率。這種資料結構不僅可以有效地利用記憶體、降低應用程式的複雜性,還降低了網路開銷、頻寬消耗量和處理時間。 Redis支援多個資料結構,其中包括字串、集合、有序集合、雜湊、位圖、hyperloglog和地理空間索引。 Redis資料結構就像樂高積木一樣,為開發人員提供了簡單的通道來實現複雜功能。

為了直覺地顯示這個資料結構如何簡化應用程式的處理時間和複雜性,我們不妨以有序集合(Sorted  Set)資料結構為例。有序集合基本上是一組按分數排序的成員。

Redis怎麼讓Spark提速

Redis有序集合

你可以將多種類型的資料儲存在這裡,它們自動由分數來排序。儲存在有序集合中的常見數據類型包括:物品(按價格)、商品名稱(按數量)、股價等時間序列數據,以及時間戳等感測器讀數。

有序集合的魅力在於Redis的內建操作,讓範圍查詢、多個有序集合交叉、按成員等級和分數檢索及更多事務可以簡單地執行,具有***的速度,還可以大規模執行。內建操作不僅節省了需要編寫的程式碼,記憶體中執行操作還縮短了網路延遲、節省了頻寬,因而能夠實現亞毫秒延遲的高吞吐量。如果將有序集合用於分析時間序列數據,相較於其他記憶體鍵/值儲存系統或基於磁碟的資料庫,通常可以將效能提升好幾個數量級。

Spark-Redis連接件是為了提高Spark的分析能力而由Redis團隊開發的。這個程式包讓Spark得以使用Redis作為其資料來源之一。透過此連接件,Spark可以直接存取Redis的資料結構,從而顯著提高各種類型的分析效能。

Redis怎麼讓Spark提速

Spark Redis連接件

為了展示為Spark帶來的好處,Redis團隊決定在幾個不同的場景下執行時間片(範圍)查詢,以此橫向比較Spark中的時間序列分析。這幾種場景包括:Spark在堆內記憶體中儲存所有數據,Spark使用Tachyon作為堆外緩存,Spark使用HDFS,以及結合Spark和Redis。

Redis團隊使用Cloudera的Spark時間序列套件,建立了Spark-Redis時間序列套件,使用Redis有序集合來加快時間序列分析。該軟體包除了提供讓Spark能夠存取Redis的全部資料結構,還執行了兩項附加任務

自動確保Redis節點與Spark叢集一致,從而確保每個Spark節點使用本地Redis數據,從而優化延遲。

與Spark資料幀和資料來源API整合起來,以便自動將Spark SQL查詢轉換成對Redis中的資料來說***效的那種檢索機制。

簡單地說,這意味著使用者不必擔心Spark和Redis之間的操作一致性,可以繼續使用Spark SQL來分析,同時大幅提升了查詢效能。

在此橫向比較中所使用的時間序列資料包括:隨機產生的金融資料以及32年內每天的1024檔股票。每隻股票由各自的有序集合來表示,分數是日期,數據成員包括開盤價、***價、***價、收盤價、成交量以及調整後的收盤價。 The following image depicts the data representation in a Redis sorted set used for Spark analysis:

Redis怎麼讓Spark提速

Spark Redis時間序列

#在上述上述範例中,就有序集合AAPL而言,有表示每天(1989-01-01)的分數,還有全天中表示為一個相關行的多個值。只要在Redis中使用一個簡單的ZRANGEBYSCORE指令,就可以執行此操作:取得某個時間片的所有值,以取得指定的日期範圍內的所有股價。 Redis可以比其他按鍵/值儲存系統更快執行這類查詢,速度可以快100倍。

這番橫向比較證實了效能提升。結果發現,Spark使用Redis執行時間片查詢的速度比Spark使用HDFS快135倍,比Spark使用堆內(進程)記憶體或Spark使用Tachyon作為堆外快取快45倍。下圖顯示了不同場景所比較的平均執行時間:

Redis怎麼讓Spark提速

#Spark Redis橫向比較

##這個指南會步步引導你安裝標準的Spark叢集和Spark-Redis套件。透過一個簡單的單字計數範例,它示範如何整合Spark和Redis的使用。你在試用Spark和Spark-Redis程式包後,可以進一步探究利用其他Redis資料結構的更多場景。

雖然有序集合很適合時間序列數據,但Redis的其他資料結構(如集合、列表和地理空間索引)可以進一步豐富Spark分析。想像一下:一個Spark進程正在嘗試取得有哪些地區適合發布新產品,考慮人群偏好以及離市中心的距離等因素來優化發布效果。想像一下,具有內建分析功能的資料結構(如地理空間索引和集合)可以顯著加快流程。 Spark-Redis這對組合擁有***的應用前景。

Spark提供廣泛的分析能力,包括SQL、機器學習、圖形計算和Spark Streaming。使用Spark的記憶體處理功能只能讓你達到一定的規模。然而有了Redis後,你可以更進一步:不僅可以透過利用Redis的資料結構來提升效能,還可以更輕鬆自如地擴展Spark,即透過充分利用Redis提供的共享分散式記憶體資料儲存機制,處理數百萬個記錄,乃至數十億個記錄。

時間序列這個例子只是開了個頭。將Redis資料結構用於機器學習和圖形分析同樣有望為這些工作負載帶來執行時間大幅縮短的好處。

以上是Redis怎麼讓Spark提速的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:亿速云。如有侵權,請聯絡admin@php.cn刪除
REDIS與SQL數據庫:關鍵差異REDIS與SQL數據庫:關鍵差異Apr 25, 2025 am 12:02 AM

Redis和SQL數據庫的主要區別在於:Redis是內存數據庫,適用於高性能和靈活性需求;SQL數據庫是關係型數據庫,適用於復雜查詢和數據一致性需求。具體來說,1)Redis提供高速數據訪問和緩存服務,支持多種數據類型,適用於緩存和實時數據處理;2)SQL數據庫通過表格結構管理數據,支持複雜查詢和事務處理,適用於電商和金融系統等需要數據一致性的場景。

REDIS:它如何充當數據存儲和服務REDIS:它如何充當數據存儲和服務Apr 24, 2025 am 12:08 AM

REDISACTSASBOTHADATASTOREANDASERVICE.1)ASADATASTORE,ITUSESIN-MEMORYSTOOGATOFORFOFFASTESITION,支持VariousDatharptructuresLikeKey-valuepairsandsortedsetsetsetsetsetsetsets.2)asaservice,ItprovidespunctionslikeItionitionslikepunikeLikePublikePublikePlikePlikePlikeAndluikeAndluAascriptingiationsmpleplepleclexplectiations

REDIS與其他數據庫:比較分析REDIS與其他數據庫:比較分析Apr 23, 2025 am 12:16 AM

Redis與其他數據庫相比,具有以下獨特優勢:1)速度極快,讀寫操作通常在微秒級別;2)支持豐富的數據結構和操作;3)靈活的使用場景,如緩存、計數器和發布訂閱。選擇Redis還是其他數據庫需根據具體需求和場景,Redis在高性能、低延遲應用中表現出色。

REDIS的角色:探索數據存儲和管理功能REDIS的角色:探索數據存儲和管理功能Apr 22, 2025 am 12:10 AM

Redis在數據存儲和管理中扮演著關鍵角色,通過其多種數據結構和持久化機製成為現代應用的核心。 1)Redis支持字符串、列表、集合、有序集合和哈希表等數據結構,適用於緩存和復雜業務邏輯。 2)通過RDB和AOF兩種持久化方式,Redis確保數據的可靠存儲和快速恢復。

REDIS:了解NOSQL概念REDIS:了解NOSQL概念Apr 21, 2025 am 12:04 AM

Redis是一種NoSQL數據庫,適用於大規模數據的高效存儲和訪問。 1.Redis是開源的內存數據結構存儲系統,支持多種數據結構。 2.它提供極快的讀寫速度,適合緩存、會話管理等。 3.Redis支持持久化,通過RDB和AOF方式確保數據安全。 4.使用示例包括基本的鍵值對操作和高級的集合去重功能。 5.常見錯誤包括連接問題、數據類型不匹配和內存溢出,需注意調試。 6.性能優化建議包括選擇合適的數據結構和設置內存淘汰策略。

REDIS:現實世界的用例和示例REDIS:現實世界的用例和示例Apr 20, 2025 am 12:06 AM

Redis在現實世界中的應用包括:1.作為緩存系統加速數據庫查詢,2.存儲Web應用的會話數據,3.實現實時排行榜,4.作為消息隊列簡化消息傳遞。 Redis的多功能性和高性能使其在這些場景中大放異彩。

REDIS:探索其功能和功能REDIS:探索其功能和功能Apr 19, 2025 am 12:04 AM

Redis脫穎而出是因為其高速、多功能性和豐富的數據結構。 1)Redis支持字符串、列表、集合、散列和有序集合等數據結構。 2)它通過內存存儲數據,支持RDB和AOF持久化。 3)從Redis6.0開始引入多線程處理I/O操作,提升了高並發場景下的性能。

Redis是SQL還是NOSQL數據庫?答案解釋了Redis是SQL還是NOSQL數據庫?答案解釋了Apr 18, 2025 am 12:11 AM

RedisisclassifiedasaNoSQLdatabasebecauseitusesakey-valuedatamodelinsteadofthetraditionalrelationaldatabasemodel.Itoffersspeedandflexibility,makingitidealforreal-timeapplicationsandcaching,butitmaynotbesuitableforscenariosrequiringstrictdataintegrityo

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器