1. 程式人生 > >【轉載】HBase實踐 | 使用Spark分析雲HBase的資料

【轉載】HBase實踐 | 使用Spark分析雲HBase的資料

雲HBase具有很好的線上入庫和查詢能力,不過在分析上面有比較大的欠缺,這篇文章主要介紹如何使用Spark對雲HBase中資料做複雜分析。

1 雲HBase查詢分析的現狀

  • HBase原生API:HBase原生API適合基於row key做點查,這個是HBase最擅長的查詢場景

  • Phoenix:Phoenix作為HBase的SQL層,使用二級索引的技術,擅長多條件組合查詢;Phoenix沒有自己的計算資源,類似groupby這樣的複雜查詢需要藉助HBase的協處理器來完成,這樣一方面效能不好,同時會影響HBase叢集的穩定性;

  • Spark:具有豐富的運算元支援複雜分析,使用Spark叢集的計算資源,通過併發分析的方式可以提高效能,同時不影響HBase叢集的穩定性。

 

2 Spark分析HBase的方式對比

Spark分析HBase資料有“RDD API”、“SQL API”、“HFILE”三種方式,相關對比如下:

對於資料動態更新增加的小表推薦使用SQL API的方式,可以有效的優化分析,減少對HBase叢集穩定性的影響;對於靜態表或者全量靜態表的分析推薦使用分析HFILE的方式直讀HDFS,這樣可以完全不影響HBase叢集穩定性;不推薦使用RDD API 的方式,這種方式一方沒有優化效能差,同時在高併發以及表資料量大時,會嚴重影響HBase叢集的穩定性,從而影響線上業務。

3 三種方式的具體使用

雲HBase團隊為大家提供了一個github專案供大家參考使用上面的三種方式來開發Spark分析HBase的程式,專案地址:

https://github.com/lw309637554/alicloud-hbase-spark-examples?spm=a2c4e.11153940.blogcont573569.14.1b6077b4MNpI9X

  • 依賴項:需要下載雲HBase及雲Phoenix的client包

  • 分析HFILE:

    • 需要先開通雲HBase的HDFS訪問許可權,參考文件

    • 在hbase shell中對錶生成snapshot表“snapshot 'sourceTable', ‘snapshotName'”

    • 在專案中配置自己的hdfs-sit.xml檔案,然後通過直讀HDFS的方式分析snapshot表

  • 具體的example

    • RDD API對應:org.apache.spark.hbase.NativeRDDAnalyze

    • SQL API對應:org.apache.spark.sql.execution.datasources.hbase.SqlAnalyze

    • 分析HFILE對應:org.apache.spark.hfile.SparkAnalyzeHFILE

原文連結:http://blog.itpub.net/31562040/viewspace-2285172