基于HBase和Spark構(gòu)建企業(yè)級(jí)數(shù)據(jù)處理平臺(tái)
面臨的場(chǎng)景
金融風(fēng)控
- 用戶畫像庫
- 爬蟲抓取信息
- 反欺詐系統(tǒng)
- 訂單數(shù)據(jù)
個(gè)性化推薦
- 用戶行為分析
- 用戶畫像
- 推薦引擎
- 海量實(shí)時(shí)數(shù)據(jù)處理
社交Feeds
- 海量帖子、文章
- 聊天、評(píng)論
- 海量實(shí)時(shí)數(shù)據(jù)處理
時(shí)空時(shí)序
- 監(jiān)控?cái)?shù)據(jù)
- 軌跡、設(shè)備數(shù)據(jù)
- 地理信息
- 區(qū)域分布統(tǒng)計(jì)
- 區(qū)域查詢
大數(shù)據(jù)
- 維表和結(jié)果表
- 離線分析
- 海量實(shí)時(shí)數(shù)據(jù)存儲(chǔ)
新的挑戰(zhàn)
Apache HBase(在線查詢) 的特點(diǎn)有:
- 松散表結(jié)構(gòu)(Schema free)
- 隨機(jī)查詢、范圍查詢
- 原生海量數(shù)據(jù)分布式存儲(chǔ)
- 高吞吐、低延遲
- 在線分布式數(shù)據(jù)庫
- 多版本、增量導(dǎo)入、多維刪除
面臨的新的挑戰(zhàn):
- 流式及批量入庫
- 復(fù)雜分析
- 機(jī)器學(xué)習(xí)、圖計(jì)算
- 生態(tài)及聯(lián)邦分析
選擇Spark的原因

- 快:通過query的執(zhí)行優(yōu)化、Cache等技術(shù),Spark能夠?qū)θ我鈹?shù)據(jù)量的數(shù)據(jù)進(jìn)行快速分析。邏輯回歸場(chǎng)景比Hadoop快100倍
- 一站式:Spark同時(shí)支持復(fù)雜SQL分析、流式處理、機(jī)器學(xué)習(xí)、圖計(jì)算等模型,且一個(gè)應(yīng)用中可組合上面多個(gè)模型解決場(chǎng)景問題
- 開發(fā)者友好:同時(shí)友好支持SQL、Python、Scala、Java、R多種開發(fā)者語言
- 優(yōu)秀的生態(tài):支持與Ka=a、HBase、Cassandra、MongoDB、Redis、MYSQL、SQL Server等配合使用
平臺(tái)機(jī)構(gòu)及案例
一站式數(shù)據(jù)處理平臺(tái)架構(gòu)

- 數(shù)據(jù)入庫:借助于Spark Streaming,能夠做流式ETL以及增量入庫到HBase/Phoenix。
- 在線查詢:HBase/Phoenix能夠?qū)ν馓峁└卟l(fā)的在線查詢
- 離線分析及算法:如果HBase/Phoenix的數(shù)據(jù)需要做復(fù)雜分析及算法分析,可以使用Spark的SQL、機(jī)器學(xué)習(xí)、圖計(jì)算等
典型業(yè)務(wù)場(chǎng)景:爬蟲+搜索引擎

- 性能:流吞吐 20萬條/秒
- 查詢能力:HBase自動(dòng)同步到solr對(duì)外提供全文檢索的查詢
- 一站式解決方案:Spark服務(wù)原生支持通過SQL讀取HBase 數(shù)據(jù)能力進(jìn)行ETL,Spark + HBase +Solr一站式數(shù)據(jù)處理平臺(tái)
典型業(yè)務(wù)場(chǎng)景:大數(shù)據(jù)風(fēng)控系統(tǒng)

- Spark同時(shí)支持事中及事后風(fēng)控
- Spark友好對(duì)接HBase、RDS、MongoDB多種在線庫
典型業(yè)務(wù)場(chǎng)景:構(gòu)建數(shù)據(jù)倉庫(推薦、風(fēng)控)
- 毫秒級(jí)識(shí)別攔截代充訂單,并發(fā)十萬量級(jí)
- Spark優(yōu)秀的計(jì)算能力:Spark基于列式存儲(chǔ)Parquet的分析在數(shù)據(jù)量大的情況下比Greenplum集群有10倍的性能提升
- 一站式解決方案:Spark服務(wù)原生支持通過SQL讀取
- HBase SQL(Phoenix)數(shù)據(jù)能力
- 聚焦業(yè)務(wù):全托管的Spark服務(wù)保證了作業(yè)運(yùn)行的穩(wěn)定性,釋放運(yùn)維人力,同時(shí)數(shù)據(jù)工作臺(tái)降低了spark作業(yè)管理成本
原理及實(shí)踐
Spark API的發(fā)展經(jīng)歷了RDD、DataFrame、DataSet

Spark Streaming采用的是Micro-Batch方式處理實(shí)時(shí)數(shù)據(jù)。

作業(yè)堆積、延遲高、并發(fā)不夠?
- 每批次的并發(fā):調(diào)大kafka的訂閱的分區(qū)、spark.streaming.blockInterval
- 代碼熱點(diǎn)優(yōu)化:查看堆棧、broadcast、代碼優(yōu)化
Spark流式處理入庫HBase
Micro-Batch Processing:100ms延遲ConKnuous Processing:1ms延遲
Spark HBase Connector的一些優(yōu)化

代碼托管在:https://github.com/aliyun/aliyun-apsaradb-hbase-demo (包含Spark操作Hbase和Phoenix)
本文整理自來自阿里巴巴的沐遠(yuǎn)的分享,由大數(shù)據(jù)技術(shù)與架構(gòu)進(jìn)行整理和分享。場(chǎng)景需求和挑戰(zhàn)