當前位置:首頁 » 編程語言 » sparksqlvsimpala
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sparksqlvsimpala

發布時間: 2022-05-07 08:18:05

『壹』 為什麼說Spark sql遠遠超越了MPP SQL

這里說的並不是性能,因為我沒嘗試對比過(下文會有簡單的說明),而是嘗試從某種更高一層次的的角度去看,為什麼Spark SQL 是遠遠超越MPP SQL的。
Spark SQL 和 MPP SQL 其實不在一個維度上。簡而言之,
MPP SQL 是 Spark SQL 的一個子集
Spark SQL 成為了一種跨越領域的交互形態
MPP SQL 是 Spark SQL 的一個子集
MPP SQL 要解決的技術問題是海量數據的查詢問題。這里根據實際場景,你還可以加上一些修飾詞彙,譬如秒級,Ad-hoc 之類。
在實際業務中
探索類業務,比如KPI多維分析,用戶畫像查詢,數據科學家摸底數據等
運營類業務,比如報表(現在很多BI系統基本上完全基於SQL來構建),各種運營臨時統計需求
分析類業務,不過這個會比較淺顯。顯然,真實的的分析應該主要依託一些統計類,機器學習等技術的支持
運維類業務,比如實時查詢查看海量的系統日誌等
MPP SQL 是有一定的性能優勢的,從HAWQ,Impala 等都是基於MPP架構的。然而僅限於此。這些功能Spark SQL 目前都已經涵蓋了,MPP SQL能做的事情,Spark SQL都完成的很漂亮。
依託於Spark 自身的全平台性(漂亮的DataSource API以及各個廠商的努力適配),Spark SQL 基本上可以對接任意多個異構數據源進行分析和查詢。大家可參考我的一個簡略實現 利用StreamingPro實現SQL-互動式查詢。
關於性能可以再多說兩句:
得益於一些具有復雜存儲格式的文件的誕生,譬如CarbonData, Spark SQL 已經實現海量數據的秒級查詢
Spark 自身通過Tungsten等項目的優化(尤其是代碼自動生成),速度越來越生猛,而JVM譬如GC帶來的問題則可以進一步通過off-heap的方式減少。
所以 Spark SQL 和 MPP SQL在性能上的差距也會越來越小。
Spark SQL 成為了一種跨越領域的交互形態
Spark 通過使用DS(2.0統一了DF 和 DS,使用一套SQL引擎)極大的增強了交互語意,意味著你可以用SQL(DS)作為統一的交互語言完成流式,批處理,互動式查詢,機器學習等大數據領域常見場景。這在任何一個系統都是不多見的,也可見Spark團隊的抽象能力。
引言中的那篇文章其實是作者吐槽Spark 團隊對Spark core(RDD)那層關注太少了,所以開始發牢騷。
現在我們再回過頭來看我們常見的一些業務:
實時分析類業務
探索類業務
分析預測類業務
運營報表類業務
首先這些業務都可以使用Spark 來實現。其次統一的交互介面都是DS(DF/SQL),並且DS/SQL 是一套極度易用並且廣泛普及和接受的。
當然Spark 也不是一步就做到這點的,原來流式計算和批量計算就是兩套API, DF 和 DS 也是兩套API,後面經過發展,Databricks 團隊也在積極思考和慢慢成長,經過先前已經有的積累,才做到現在的這一步。
所以本質上DS/SQL 已經成為除了RDD API 以外,另外一套通用的,統一的互動式API,涵蓋了流式,批處理,互動式查詢,機器學習等大數據領域。這也是我們第一次達成這樣的統一,目前來看也僅在Spark平台上得以實現,它是的大數據的使用和學習門檻進一步降低,功在千秋。
RDD VS DS/SQL
DS/SQL 是一套數據類型首先,操作種類受限的表達語言,意味著Spark 團隊可以做更好的性能優化,也意味著門檻更低,在易用性和性能上都能取得良好的平衡

『貳』 基於spark SQL之上的檢索與排序對比性能測試

之前做過一年的spark研發,之前在阿里與騰訊也做了很久的hive,所以對這方面比較了解。

第一:其實快多少除了跟spark與hive本身的技術實現外,也跟機器性能,底層操作系統的參數優化息息相關,不能一概而論。

第二:hive 目前應該還是業界的主流,畢竟快與慢很多時候並非是至關重要的,對於一個生產系統來說,更重要的應該是穩定性,spark畢竟還算是比較新興的事務,快確實快,但是穩定性上距離hive相差甚遠。關於spark我們也修復了很多關於內存泄露的BUG,因為您問的是性能,所以不過多介紹(可以跟我要YDB編程指南,裡面有我對這些BUG的修正)

第三:關於性能,我測試的可能不夠全面,只能在排序與檢索過濾上提供我之前的基於YDB的BLOCK sort測試報告供您參考(網路上貼word太費勁,您可以跟我要 word文檔)。

排序可以說是很多日誌系統的硬指標(如按照時間逆序排序),如果一個大數據系統不能進行排序,基本上是這個系統屬於不可用狀態,排序算得上是大數據系統的一個「剛需」,無論大數據採用的是hadoop,還是spark,還是impala,hive,總之排序是必不可少的,排序的性能測試也是必不可少的。
有著計算奧運會之稱的Sort Benchmark全球排序每年都會舉行一次,每年巨頭都會在排序上進行巨大的投入,可見排序速度的高低有多麼重要!但是對於大多數企業來說,動輒上億的硬體投入,實在劃不來、甚至遠遠超出了企業的項目預算。相比大數據領域的暴力排序有沒有一種更廉價的實現方式?

在這里,我們為大家介紹一種新的廉價排序方法,我們稱為blockSort。

500G的數據300億條數據,只使用4台 16核,32G內存,千兆網卡的虛擬機即可實現 2~15秒的 排序 (可以全表排序,也可以與任意篩選條件篩選後排序)。

一、基本的思想是這樣的,如下圖所示:

1.將數據按照大小預先劃分好,如劃分成 大、中、小三個塊(block)。

2.如果想找最大的數據,那麼只需要在最大的那個塊里去找就可以了。

3.這個快還是有層級結構的,如果每個塊內的數據量很多,可以到下面的子快內進行繼續查找,可以分多個層進行排序。

4.採用這種方法,一個億萬億級別的數據(如long類型),最壞最壞的極端情況也就進行2048次文件seek就可以篩選到結果。

五、哪些用戶適合使用YDB?


1.傳統關系型數據,已經無法容納更多的數據,查詢效率嚴重受到影響的用戶。

2.目前在使用SOLR、ES做全文檢索,覺得solr與ES提供的分析功能太少,無法完成復雜的業務邏輯,或者數據量變多後SOLR與ES變得不穩定,在掉片與均衡中不斷惡性循環,不能自動恢復服務,運維人員需經常半夜起來重啟集群的情況。

3.基於對海量數據的分析,但是苦於現有的離線計算平台的速度和響應時間無滿足業務要求的用戶。

4.需要對用戶畫像行為類數據做多維定向分析的用戶。

5.需要對大量的UGC(User Generate Content)數據進行檢索的用戶。

6.當你需要在大數據集上面進行快速的,互動式的查詢時。

7.當你需要進行數據分析,而不只是簡單的鍵值對存儲時。

8.當你想要分析實時產生的數據時。


ps:說了一大堆,說白了最適合的還是蹤跡分析因為數據量大,數據還要求實時,查詢還要求快。這才是關鍵。

『叄』 hive和sparksql的區別

歷史上存在的原理,以前都是使用hive來構建數據倉庫,所以存在大量對hive所管理的數據查詢的需求。而hive、shark、sparlSQL都可以進行hive的數據查詢。shark是使用了hive的sql語法解析器和優化器,修改了執行器,使之物理執行過程是跑在spark上;而sparkSQL是使用了自身的語法解析器、優化器和執行器,同時sparkSQL還擴展了介面,不單單支持hive數據的查詢,可以進行多種數據源的數據查詢。

『肆』 spark寫入impala中需要什麼jar包

phoenix、impala、hive、shark、spark SQL等,本人目前在項目中使用的是phoenix工具,是一個訪問hbase的JDBC驅動jar包,基本像訪問JDBC一樣,可以進行各種CRUD操作,還帶有事務功能,性能據官網介紹還是非常快的

『伍』 Spark SQL真的遠遠超越了MPP SQL嗎

//讀取數據文件。
ReadStudent(Application.dataPath + 「/Wild boar.accdb」);
}
///
/// 讀取表數值的函數
///
/// 數據文件的路徑
internal void ReadStudent(string filetoread)

『陸』 Spark-Hadoop,Hive,Spark 之間是什麼關系

大數據本身是個很寬泛的概念,Hadoop生態圈(或者泛生態圈)基本上都是為了處理超過單機尺度的數據處理而誕生的。你可以把它比作一個廚房所以需要的各種工具。鍋碗瓢盆,各有各的用處,互相之間又有重合。你可以用湯鍋直接當碗吃飯喝湯,你可以用小刀或者刨子去皮。但是每個工具有自己的特性,雖然奇怪的組合也能工作,但是未必是最佳選擇。
大數據,首先你要能存的下大數據
傳統的文件系統是單機的,不能橫跨不同的機器。HDFS(Hadoop Distributed FileSystem)的設計本質上是為了大量的數據能橫跨成百上千台機器,但是你看到的是一個文件系統而不是很多文件系統。比如你說我要獲取/hdfs/tmp/file1的數據,你引用的是一個文件路徑,但是實際的數據存放在很多不同的機器上。你作為用戶,不需要知道這些,就好比在單機上你不關心文件分散在什麼磁軌什麼扇區一樣。HDFS為你管理這些數據。
存的下數據之後,你就開始考慮怎麼處理數據。雖然HDFS可以為你整體管理不同機器上的數據,但是這些數據太大了。一台機器讀取成T上P的數據(很大的數據哦,比如整個東京熱有史以來所有高清電影的大小甚至更大),一台機器慢慢跑也許需要好幾天甚至好幾周。對於很多公司來說,單機處理是不可忍受的,比如微博要更新24小時熱博,它必須在24小時之內跑完這些處理。那麼我如果要用很多台機器處理,我就面臨了如何分配工作,如果一台機器掛了如何重新啟動相應的任務,機器之間如何互相通信交換數據以完成復雜的計算等等。這就是MapRece
/ Tez / Spark的功能。MapRece是第一代計算引擎,Tez和Spark是第二代。MapRece的設計,採用了很簡化的計算模型,只有Map和Rece兩個計算過程(中間用Shuffle串聯),用這個模型,已經可以處理大數據領域很大一部分問題了。
那什麼是Map,什麼是Rece?
考慮如果你要統計一個巨大的文本文件存儲在類似HDFS上,你想要知道這個文本里各個詞的出現頻率。你啟動了一個MapRece程序。Map階段,幾百台機器同時讀取這個文件的各個部分,分別把各自讀到的部分分別統計出詞頻,產生類似(hello, 12100次),(world,15214次)等等這樣的Pair(我這里把Map和Combine放在一起說以便簡化);這幾百台機器各自都產生了如上的集合,然後又有幾百台機器啟動Rece處理。Recer機器A將從Mapper機器收到所有以A開頭的統計結果,機器B將收到B開頭的詞彙統計結果(當然實際上不會真的以字母開頭做依據,而是用函數產生Hash值以避免數據串化。因為類似X開頭的詞肯定比其他要少得多,而你不希望數據處理各個機器的工作量相差懸殊)。然後這些Recer將再次匯總,(hello,12100)+(hello,12311)+(hello,345881)=
(hello,370292)。每個Recer都如上處理,你就得到了整個文件的詞頻結果。
這看似是個很簡單的模型,但很多演算法都可以用這個模型描述了。
Map+Rece的簡單模型很黃很暴力,雖然好用,但是很笨重。第二代的Tez和Spark除了內存Cache之類的新feature,本質上來說,是讓Map/Rece模型更通用,讓Map和Rece之間的界限更模糊,數據交換更靈活,更少的磁碟讀寫,以便更方便地描述復雜演算法,取得更高的吞吐量。
有了MapRece,Tez和Spark之後,程序員發現,MapRece的程序寫起來真麻煩。他們希望簡化這個過程。這就好比你有了匯編語言,雖然你幾乎什麼都能幹了,但是你還是覺得繁瑣。你希望有個更高層更抽象的語言層來描述演算法和數據處理流程。於是就有了Pig和Hive。Pig是接近腳本方式去描述MapRece,Hive則用的是SQL。它們把腳本和SQL語言翻譯成MapRece程序,丟給計算引擎去計算,而你就從繁瑣的MapRece程序中解脫出來,用更簡單更直觀的語言去寫程序了。
有了Hive之後,人們發現SQL對比Java有巨大的優勢。一個是它太容易寫了。剛才詞頻的東西,用SQL描述就只有一兩行,MapRece寫起來大約要幾十上百行。而更重要的是,非計算機背景的用戶終於感受到了愛:我也會寫SQL!於是數據分析人員終於從乞求工程師幫忙的窘境解脫出來,工程師也從寫奇怪的一次性的處理程序中解脫出來。大家都開心了。Hive逐漸成長成了大數據倉庫的核心組件。甚至很多公司的流水線作業集完全是用SQL描述,因為易寫易改,一看就懂,容易維護。
自從數據分析人員開始用Hive分析數據之後,它們發現,Hive在MapRece上跑,真雞巴慢!流水線作業集也許沒啥關系,比如24小時更新的推薦,反正24小時內跑完就算了。但是數據分析,人們總是希望能跑更快一些。比如我希望看過去一個小時內多少人在一些特定頁面駐足,分別停留了多久,對於一個巨型網站海量數據下,這個處理過程也許要花幾十分鍾甚至很多小時。而這個分析也許只是你萬里長征的第一步,你還有很多其他的要分析。你無法忍受等待的折磨,只能跟帥帥的工程師蟈蟈說,快,快,再快一點!
於是Impala,Presto,Drill誕生了(當然還有無數非著名的交互SQL引擎,就不一一列舉了)。三個系統的核心理念是,MapRece引擎太慢,因為它太通用,太強壯,太保守,我們SQL需要更輕量,更激進地獲取資源,更專門地對SQL做優化,而且不需要那麼多容錯性保證(因為系統出錯了大不了重新啟動任務,如果整個處理時間更短的話,比如幾分鍾之內)。這些系統讓用戶更快速地處理SQL任務,犧牲了通用性穩定性等特性。如果說MapRece是大砍刀,砍啥都不怕,那上面三個就是剔骨刀,靈巧鋒利,但是不能搞太大太硬的東西。
這些系統,說實話,一直沒有達到人們期望的流行度。因為這時候又兩個異類被造出來了。他們是Hive on Tez / Spark和SparkSQL。它們的設計理念是,MapRece慢,但是如果我用新一代通用計算引擎Tez或者Spark來跑SQL,那我就能跑的更快。而且用戶不需要維護兩套系統。這就好比如果你廚房小,人又懶,對吃的精細程度要求有限,那你可以買個電飯煲,能蒸能煲能燒,省了好多廚具。
上面的介紹,基本就是一個數據倉庫的構架了。底層HDFS,上面跑MapRece/Tez/Spark,在上面跑Hive,Pig。或者HDFS上直接跑Impala,Drill,Presto。這解決了中低速數據處理的要求。
那如果我要更高速的處理呢?
如果我是一個類似微博的公司,我希望顯示不是24小時熱博,我想看一個不斷變化的熱播榜,更新延遲在一分鍾之內,上面的手段都將無法勝任。於是又一種計算模型被開發出來,這就是Streaming(流)計算。Storm是最流行的流計算平台。流計算的思路是,如果要達到更實時的更新,我何不在數據流進來的時候就處理了?比如還是詞頻統計的例子,我的數據流是一個一個的詞,我就讓他們一邊流過我就一邊開始統計了。流計算很牛逼,基本無延遲,但是它的短處是,不靈活,你想要統計的東西必須預先知道,畢竟數據流過就沒了,你沒算的東西就無法補算了。因此它是個很好的東西,但是無法替代上面數據倉庫和批處理系統。
還有一個有些獨立的模塊是KV Store,比如Cassandra,HBase,MongoDB以及很多很多很多很多其他的(多到無法想像)。所以KV Store就是說,我有一堆鍵值,我能很快速滴獲取與這個Key綁定的數據。比如我用身份證號,能取到你的身份數據。這個動作用MapRece也能完成,但是很可能要掃描整個數據集。而KV
Store專用來處理這個操作,所有存和取都專門為此優化了。從幾個P的數據中查找一個身份證號,也許只要零點幾秒。這讓大數據公司的一些專門操作被大大優化了。比如我網頁上有個根據訂單號查找訂單內容的頁面,而整個網站的訂單數量無法單機資料庫存儲,我就會考慮用KV Store來存。KV Store的理念是,基本無法處理復雜的計算,大多沒法JOIN,也許沒法聚合,沒有強一致性保證(不同數據分布在不同機器上,你每次讀取也許會讀到不同的結果,也無法處理類似銀行轉賬那樣的強一致性要求的操作)。但是丫就是快。極快。
每個不同的KV Store設計都有不同取捨,有些更快,有些容量更高,有些可以支持更復雜的操作。必有一款適合你。
除此之外,還有一些更特製的系統/組件,比如Mahout是分布式機器學習庫,Protobuf是數據交換的編碼和庫,ZooKeeper是高一致性的分布存取協同系統,等等。
有了這么多亂七八糟的工具,都在同一個集群上運轉,大家需要互相尊重有序工作。所以另外一個重要組件是,調度系統。現在最流行的是Yarn。你可以把他看作中央管理,好比你媽在廚房監工,哎,你妹妹切菜切完了,你可以把刀拿去殺雞了。只要大家都服從你媽分配,那大家都能愉快滴燒菜。
你可以認為,大數據生態圈就是一個廚房工具生態圈。為了做不同的菜,中國菜,日本菜,法國菜,你需要各種不同的工具。而且客人的需求正在復雜化,你的廚具不斷被發明,也沒有一個萬用的廚具可以處理所有情況,因此它會變的越來越復雜。

『柒』 Spark與Hadoop MapRece大比拼,誰實力更強

一提到大數據處理,相信很多人第一時間想到的是 Hadoop MapRece。沒錯,Hadoop MapRece 為大數據處理技術奠定了基礎。近年來,隨著 Spark 的發展,越來越多的聲音提到了 Spark。而Spark相比Hadoop MapRece有哪些優勢?
Spark與Hadoop MapRece在業界有兩種說法 :一是 Spark 將代替 Hadoop MapRece,成為未來大數據處理發展的方向 ;二是 Spark 將會和 Hadoop 結合,形成更大的生態圈。其實 Spark 和 Hadoop MapRece 的重點應用場合有所不同。相對於 Hadoop MapRece 來說,Spark 有點「青出於藍」的感覺,Spark 是在Hadoop MapRece 模型上發展起來的,在它的身上我們能明顯看到 MapRece的影子,所有的 Spark 並非從頭創新,而是站在了巨人「MapRece」的肩膀上。千秋功罪,留於日後評說,我們暫且擱下爭議,來看看相比 Hadoop MapRece,Spark 都有哪些優勢。
1、計算速度快
大數據處理首先追求的是速度。Spark 到底有多快?用官方的話說,「Spark 允許 Hadoop 集群中的應用程序在內存中以 100 倍的速度運行,即使在磁碟上運行也能快 10 倍」。可能有的讀者看到這里會大為感嘆,的確如此,在有迭代計算的領域,Spark 的計算速度遠遠超過 MapRece,並且迭代次數越多,Spark 的優勢越明顯。這是因為 Spark 很好地利用了目前伺服器內存越來越大這一優點,通過減少磁碟 I/O 來達到性能提升。它們將中間處理數據全部放到了內存中,僅在必要時才批量存入硬碟中。或許讀者會問 :如果應用程序特別大,內存能放下多少 GB ?答曰 :什麼? GB ?目前 IBM 伺服器內存已經擴展至幾 TB 了。
2、應用靈活,上手容易
知道 AMPLab 的 Lester 為什麼放棄 MapRece 嗎?因為他需要把很多精力放到Map和Rece的編程模型上,極為不便。 Spark在簡單的Map及Rece操作之外,還支持 SQL 查詢、流式查詢及復雜查詢,比如開箱即用的機器學習演算法。同時,用戶可以在同一個工作流中無縫地搭配這些能力,應用十分靈活。
Spark 核心部分的代碼為 63 個 Scala 文件,非常的輕量級。並且允許 Java、Scala、Python 開發者在自己熟悉的語言環境下進行工作,通過建立在Java、Scala、Python、SQL(應對互動式查詢)的標准 API 以方便各行各業使用,同時還包括大量開箱即用的機器學習庫。它自帶 80 多個高等級操作符,允許在 Shell中進行互動式查詢。即使是新手,也能輕松上手應用。
3、兼容競爭對手
Spark 可以獨立運行,除了可以運行在當下的 YARN 集群管理外,還可以讀取已有的任何 Hadoop 數據。它可以運行在任何 Hadoop 數據源上,比如 HBase、HDFS 等。有了這個特性,讓那些想從 Hadoop 應用遷移到 Spark 上的用戶方便了很多。Spark 有兼容競爭對手的胸襟,何愁大事不成?
4、實時處理性能非凡
MapRece 更 加 適 合 處 理 離 線 數 據( 當 然, 在 YARN 之 後,Hadoop也可以藉助其他工具進行流式計算)。Spark 很好地支持實時的流計算,依賴Spark Streaming 對數據進行實時處理。Spark Streaming 具備功能強大的 API,允許用戶快速開發流應用程序。而且不像其他的流解決方案,比如Storm,Spark Streaming 無須額外的代碼和配置,就可以做大量的恢復和交付工作。
5、社區貢獻力量巨大
從 Spark 的版本演化來看,足以說明這個平台旺盛的生命力及社區的活躍度。尤其自 2013 年以來,Spark 一度進入高速發展期,代碼庫提交與社區活躍度都有顯著增長。以活躍度論,Spark 在所有的 Apache 基金會開源項目中位列前三,相較於其他大數據平台或框架而言,Spark 的代碼庫最為活躍。
Spark 非常重視社區活動,組織也極為規范,會定期或不定期地舉行與 Spark相關的會議。會議分為兩種 :一種是 Spark Summit,影響力極大,可謂全球 Spark頂尖技術人員的峰會,目前已於 2013—2015 年在 San Francisco 連續召開了三屆Summit 大會 ;另一種是 Spark 社區不定期地在全球各地召開的小型 Meetup 活動。Spark Meetup 也會在我國的一些大城市定期召開,比如北京、深圳、西安等地,讀者可以關注當地的微信公眾號進行參與。
Spark 的適用場景
從大數據處理需求來看,大數據的業務大概可以分為以下三類 :
(1)復雜的批量數據處理,通常的時間跨度在數十分鍾到數小時之間。
(2)基於歷史數據的互動式查詢,通常的時間跨度在數十秒到數分鍾之間。
(3)基於實時數據流的數據處理,通常的時間跨度在數百毫秒到數秒之間。
目前已有很多相對成熟的開源和商業軟體來處理以上三種情景 :第一種業務,可以利用 MapRece 來進行批量數據處理 ;第二種業務,可以用 Impala 來進行互動式查詢 ;對於第三種流式數據處理,可以想到專業的流數據處理工具Storm。但是這里有一個很重要的問題 :對於大多數互聯網公司來說,一般會同時遇到以上三種情景,如果採用不同的處理技術來面對這三種情景,那麼這三種情景的輸入/ 輸出數據無法無縫共享,它們之間可能需要進行格式轉換,並且每個開源軟體都需要一支開發和維護團隊,從而提高了成本。另外一個不便之處就是,在同一個集群中對各個系統協調資源分配比較困難。
那麼,有沒有一種軟體可以同時處理以上三種情景呢? Spark 就可以,或者說有這樣的潛力。Spark 同時支持復雜的批處理、互操作和流計算,而且兼容支持HDFS 和 Amazon S3 等分布式文件系統,可以部署在 YARN 和 Mesos 等流行的集群資源管理器上。
從 Spark 的設計理念(基於內存的迭代計算框架)出發,其最適合有迭代運算的或者需要多次操作特定數據集的應用場合。並且迭代次數越多,讀取的數據量越大,Spark 的應用效果就越明顯。因此,對於機器學習之類的「迭代式」應用,Spark 可謂拿手好戲,要比 Hadoop MapRece 快數十倍。另外,Spark Streaming因為內存存儲中間數據的特性,處理速度非常快,也可以應用於需要實時處理大數據的場合。
當然,Spark 也有不適用的場合。對於那種非同步細粒度更新狀態的應用,例如 Web 服務的存儲或增量的 Web 爬蟲和索引,也就是對於那種增量修改的應用模型不適合。Spark 也不適合做超級大的數據量的處理,這里所說的「超級大」是相對於這個集群的內存容量而言的,因為 Spark 要將數據存儲在內存中。一般來說,10TB 以上(單次分析)的數據就可以算是「超級大」的數據了。
一般來說,對於中小企業的數據中心而言,在單次計算的數據量不大的情況下,Spark 都是很好的選擇。另外,Spark 也不適合應用於混合的雲計算平台,因為混合的雲計算平台的網路傳輸是很大的問題,即便有專屬的寬頻在雲端 Cluster和本地 Cluster 之間傳輸數據,相比內存讀取速度來說,依然不抵。

『捌』 impala為什麼比spark快

應該不會,Impala是相當專注於傳統企業客戶和OLAP和數據倉庫工作負載。Shark支持傳統OLAP。

比較:
一、總體上
Shark擴展了Apache Hive,大大加快在內存和磁碟上的查詢。而Impala是企業級數據倉庫系統, 可以很好地使用Hive/ HDFS,從架構層來說,類似於傳統的並行資料庫。這兩個系統有著很多共同的目標,但也有很大差異。
二、與現有系統的兼容性
Shark直接建立在Apache/Hive代碼庫上,所以它自然支持幾乎所有Hive特點。它支持現有的Hive SQL語言,Hive數據格式(SerDes),用戶自定義函數(UDF),調用外部腳本查詢。因為Impala使用自定義的C++運行,它不支持Hive UDF。這兩個系統將會與許多BI工具整合,這一直是Impala的主要目標。Shark正在被用於一些BI工具,如Tableau,不過這並沒有被探索更多。
三、內存中的數據處理
Shark允許用戶顯式地載入在內存中的數據,以加快查詢處理,其內存使用有效率的,壓縮的面向列的格式。Impala還沒有提供在內存中的存儲。
四、容錯
Shark被設計為支持短期和長時間運行的查詢。它可以從查詢故障恢復(感謝底層Spark引擎)。Impala目前是更側重於短查詢,不容錯(如果節點發生故障,查詢必須重新啟動,對短查詢來說這無疑是可以接受的)。
五、性能
做全面的比較太早了點。Shark和Impala都報告比Hive快10-100倍,但這都依賴具體情況和系統負載。兩個項目也都在未來6個月內會做重要優化。以我們的經驗來看,Sharkr當前版本,如果是內存的數據一般比Hive快100倍,如果是磁碟上的數據一般快5-10倍,這取決於查詢(帶關聯連接的查詢,能比Hive快很多)。