『壹』 基於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:說了一大堆,說白了最適合的還是蹤跡分析因為數據量大,數據還要求實時,查詢還要求快。這才是關鍵。
『貳』 科普Spark,Spark是什麼,如何使用Spark
科普Spark,Spark是什麼,如何使用Spark
1.Spark基於什麼演算法的分布式計算(很簡單)
2.Spark與MapRece不同在什麼地方
3.Spark為什麼比Hadoop靈活
4.Spark局限是什麼
5.什麼情況下適合使用Spark
Spark與Hadoop的對比
Spark的中間數據放到內存中,對於迭代運算效率更高。
Spark更適合於迭代運算比較多的ML和DM運算。因為在Spark裡面,有RDD的抽象概念。
Spark比Hadoop更通用
Spark提供的數據集操作類型有很多種,不像Hadoop只提供了Map和Rece兩種操作。比如map, filter, flatMap, sample, groupByKey, receByKey, union, join, cogroup, mapValues, sort,partionBy等多種操作類型,Spark把這些操作稱為Transformations。同時還提供Count, collect, rece, lookup, save等多種actions操作。
這些多種多樣的數據集操作類型,給給開發上層應用的用戶提供了方便。各個處理節點之間的通信模型不再像Hadoop那樣就是唯一的Data Shuffle一種模式。用戶可以命名,物化,控制中間結果的存儲、分區等。可以說編程模型比Hadoop更靈活。
不過由於RDD的特性,Spark不適用那種非同步細粒度更新狀態的應用,例如web服務的存儲或者是增量的web爬蟲和索引。就是對於那種增量修改的應用模型不適合。
容錯性
在分布式數據集計算時通過checkpoint來實現容錯,而checkpoint有兩種方式,一個是checkpoint data,一個是logging the updates。用戶可以控制採用哪種方式來實現容錯。
可用性
Spark通過提供豐富的Scala, Java,Python API及互動式Shell來提高可用性。
Spark與Hadoop的結合
Spark可以直接對HDFS進行數據的讀寫,同樣支持Spark on YARN。Spark可以與MapRece運行於同集群中,共享存儲資源與計算,數據倉庫Shark實現上借用Hive,幾乎與Hive完全兼容。
Spark的適用場景
Spark是基於內存的迭代計算框架,適用於需要多次操作特定數據集的應用場合。需要反復操作的次數越多,所需讀取的數據量越大,受益越大,數據量小但是計算密集度較大的場合,受益就相對較小(大資料庫架構中這是是否考慮使用Spark的重要因素)
由於RDD的特性,Spark不適用那種非同步細粒度更新狀態的應用,例如web服務的存儲或者是增量的web爬蟲和索引。就是對於那種增量修改的應用模型不適合。總的來說Spark的適用面比較廣泛且比較通用。
運行模式
本地模式
Standalone模式
Mesoes模式
yarn模式
Spark生態系統
Shark ( Hive on Spark): Shark基本上就是在Spark的框架基礎上提供和Hive一樣的H iveQL命令介面,為了最大程度的保持和Hive的兼容性,Shark使用了Hive的API來實現query Parsing和 Logic Plan generation,最後的PhysicalPlan execution階段用Spark代替Hadoop MapRece。通過配置Shark參數,Shark可以自動在內存中緩存特定的RDD,實現數據重用,進而加快特定數據集的檢索。同時,Shark通過UDF用戶自定義函數實現特定的數據分析學習演算法,使得SQL數據查詢和運算分析能結合在一起,最大化RDD的重復使用。
Spark streaming: 構建在Spark上處理Stream數據的框架,基本的原理是將Stream數據分成小的時間片斷(幾秒),以類似batch批量處理的方式來處理這小部分數據。Spark Streaming構建在Spark上,一方面是因為Spark的低延遲執行引擎(100ms+)可以用於實時計算,另一方面相比基於Record的其它處理框架(如Storm),RDD數據集更容易做高效的容錯處理。此外小批量處理的方式使得它可以同時兼容批量和實時數據處理的邏輯和演算法。方便了一些需要歷史數據和實時數據聯合分析的特定應用場合。
Bagel: Pregel on Spark,可以用Spark進行圖計算,這是個非常有用的小項目。Bagel自帶了一個例子,實現了Google的PageRank演算法。
End.
『叄』 sparkSQL和spark有什麼區別
Spark為結構化數據處理引入了一個稱為Spark SQL的編程模塊。簡而言之,sparkSQL是Spark的前身,是在Hadoop發展過程中,為了給熟悉RDBMS但又不理解MapRece的技術人員提供快速上手的工具。
sparkSQL提供了一個稱為DataFrame(數據框)的編程抽象,DF的底層仍然是RDD,並且可以充當分布式SQL查詢引擎。
SparkSql有哪些特點呢?
1)引入了新的RDD類型SchemaRDD,可以像傳統資料庫定義表一樣來定義SchemaRDD。
2)在應用程序中可以混合使用不同來源的數據,如可以將來自HiveQL的數據和來自SQL的數據進行Join操作。
3)內嵌了查詢優化框架,在把SQL解析成邏輯執行計劃之後,最後變成RDD的計算。
『肆』 spark用什麼資料庫好
Spark是UC Berkeley AMP lab所開源的類Hadoop MapRece的通用的並行計算框架,Spark基於map rece演算法實現的分布式計算,擁有Hadoop MapRece所具有的優點;但不同於MapRece的是Job中間輸出和結果可以保存在內存中,從而不再需要讀寫HDFS
因此Spark能更好地適用於數據挖掘與機器學習等需要迭代的map rece的演算法。
『伍』 如何理解spark中RDD和DataFrame的結構
之前對RDD的理解是,用戶自己選定要使用spark處理的數據,然後這些數據經過transaction後會被賦予彈性,分布特性的特點,具備這樣特點的數據集,英文縮寫就是RDD。但RDD再怎麼有特性,還是數據集,在我的理解里就像關系型資料庫里的表,裡面是存儲的數據,抓來就用。
但之後看到dataframe和下面這張圖之後,我迷惑了。。
感覺似乎dataframe的結構才更符合我對rdd的理解。。好像transaction在賦予數據集彈性,分布特性的同時,還順帶把數據變成對象然後序列化存儲了?如果是,那麼是按照什麼樣的標准進行對象化的呢,是按照行,還是按照欄位呢,還是按照非關系型資料庫里的rowkey呢。。那麼這些對象化的數據都是怎麼進行後續處理然後參與運算的呢。。
『陸』 大數據專業主要學什麼啊
1、大數據專業,一般是指大數據採集與管理專業;
2、課程設置,大數據專業將從大數據應用的三個主要層面(即數據管理、系統開發、海量數據分析與挖掘)系統地幫助企業掌握大數據應用中的各種典型問題的解決辦法,包括實現和分析協同過濾演算法、運行和學習分類演算法、分布式Hadoop集群的搭建和基準測試、分布式Hbase集群的搭建和基準測試、實現一個基於、Maprece的並行演算法、部署Hive並實現一個的數據操作等等,實際提升企業解決實際問題的能力。
3、核心技術,
(1)大數據與Hadoop生態系統。詳細介紹分析分布式文件系統HDFS、集群文件系統ClusterFS和NoSQL Database技術的原理與應用;分布式計算框架Maprece、分布式資料庫HBase、分布式數據倉庫Hive。
(2)關系型資料庫技術。詳細介紹關系型資料庫的原理,掌握典型企業級資料庫的構建、管理、開發及應用。
(3)分布式數據處理。詳細介紹分析Map/Rece計算模型和Hadoop Map/Rece技術的原理與應用。
(4)海量數據分析與數據挖掘。詳細介紹數據挖掘技術、數據挖掘演算法–Minhash, Jaccard and Cosine similarity,TF-IDF數據挖掘演算法–聚類演算法;以及數據挖掘技術在行業中的具體應用。
(5)物聯網與大數據。詳細介紹物聯網中的大數據應用、遙感圖像的自動解譯、時間序列數據的查詢、分析和挖掘。
(6)文件系統(HDFS)。詳細介紹HDFS部署,基於HDFS的高性能提供高吞吐量的數據訪問。
(7)NoSQL。詳細介紹NoSQL非關系型資料庫系統的原理、架構及典型應用。
4、行業現狀,
今天,越來越多的行業對大數據應用持樂觀的態度,大數據或者相關數據分析解決方案的使用在互聯網行業,比如網路、騰訊、淘寶、新浪等公司已經成為標准。而像電信、金融、能源這些傳統行業,越來越多的用戶開始嘗試或者考慮怎麼樣使用大數據解決方案,來提升自己的業務水平。
在「大數據」背景之下,精通「大數據」的專業人才將成為企業最重要的業務角色,「大數據」從業人員薪酬持續增長,人才缺口巨大。
『柒』 怎樣讓spark定時讀資料庫數據
RDD:AResilientDistributedDataset(RDD),thebasicabstractioninSpark.rdd是一個分布式的數據集,數據分散在分布式集群的各台機器上,更像是一張關系型數據表,是一種spark獨有的數據格式吧,這種格式的數據可以使用sqlcontext裡面的函數
『捌』 如何利用spark,hadoop等技術實現關系型資料庫的數據快速匯總
如何利用spark,hadoop等技術實現關系型資料庫的數據快速匯總
使用sqoop進行定時的數據抽取工作,並存放到hive數據倉庫中,使用hive的hql進行數據匯總。這個方案中可以使用hive on tez 或者hive on spark進行計算性能提速 可以試試。
『玖』 sparksql 表定義 存儲在哪
Spark SQL是支持在Spark中使用Sql、HiveSql、Scala中的關系型查詢表達式。它的核心組件是一個新增的RDD類型SchemaRDD,它把行對象用一個Schema來描述行裡面的所有列的數據類型,它就像是關系型資料庫裡面的一張表。它可以從原有的RDD創建,也可以是Parquet文件,最重要的是它可以支持用HiveQL從hive裡面讀取數據。
下面是一些案例,可以在Spark shell當中運行。
首先我們要創建一個熟悉的Context,熟悉spark的人都知道吧,有了Context我們才可以進行各種操作。