Spark2.x寫入Elasticsearch的性能測試

1、Spark集成ElasticSearch的設計動機web

ElasticSearch 毫秒級的查詢響應時間仍是很驚豔的。其優勢有:編程

1.    優秀的全文檢索能力架構

2.    高效的列式存儲與查詢能力框架

3.    數據分佈式存儲(Shard 分片)elasticsearch

相應的也存在一些缺點:分佈式

1.    缺少優秀的SQL支持函數

2.    缺少水平擴展的Reduce(Merge)能力,現階段的實現侷限在單機oop

3.    JSON格式的查詢語言,缺少編程能力,難以實現很是複雜的數據加工,自定義函數(相似Hive的UDF等)性能

Spark 做爲一個計算引擎,能夠克服ES存在的這些缺點:優化

1.    良好的SQL支持

2.    強大的計算引擎,能夠進行分佈式Reduce

3.    支持自定義編程(採用原生API或者編寫UDF等函數對SQL作加強)

因此在構建即席多維查詢系統時,Spark 能夠和ES取得良好的互補效果

2、Spark與ElasticSearch結合的架構和原理

ES-Hadoop無縫打通了ES和Hadoop兩個很是優秀的框架,咱們既能夠把HDFS的數據導入到ES裏面作分析,也能夠將es數據導出到HDFS上作備份,歸檔,其中值得一提的是ES-Hadoop全面的支持了Spark框架,其中包括Spark,Spark Streaming,Spark SQL,此外也支持Hive,Pig,Storm,Cascading,固然還有標準的MapReduce,不管用那一個框架集成ES,都是很是簡潔的。最後還可使用Kibana提供的可視化的數據分析一條龍服務,很是棒的組合

整個數據流轉圖以下

而咱們今天要介紹的,就是使用ES-Hadoop裏面的ES-Spark插件,來完成使用spark向ES裏面大批量插入數據和加載數據。

3、集羣的硬件配置

Spark集羣含有3個節點,FEA-spk和Spark集羣的交互採用yarn-client。

主機

cpu

mem

disk

10.68.23.89

1200MHZ*8

50g

400g

10.68.23.90

1200MHZ*8

50g

400g

10.68.23.91

1200MHZ*8

50g

400g

4、寫入elasticsearch的數據介紹

elasticsearch副本數量是2個,每個副本的大小是216.4g

數據的條數爲88762914,字段的個數73個

5、FEA-spk寫入ElasticSearch的原語實現

(1)   建立spk的鏈接

(2)   建立ElasticSearch的鏈接

(3)   加載數據到es中

數據的格式以下表所示

(4)   查看一下df1表的前十行

(5)將df1表的數據寫回到ES裏面,其中spark是index,people是type

因爲數據量比較大,因此咱們選擇後臺運行

進入spark web界面,查看運行狀況

咱們能夠看到花費了2.3小時,若是對集羣的資源和參數優化,時間可能會更短

6、Spark寫回數據到ES的性能計算

每秒處理的數據條數=總條數/總時間=88762914/(2.5*60*60)=9863條

每條記錄的大小=總大小/總條數=216.4*1024*1024k/88762914=3K

每秒能寫多少兆=每秒處理的數據條數*每條記錄的大小/1024=9863*3/1024=29M

7、FEA-spk結合ES適用的場景

不會使用Spark,想使用Spark分析存放在ES中的數據,把結果寫入到ES裏面,FEA-spk是一個不錯的選擇。

相關文章
相關標籤/搜索