Apache Kudu 加速對(duì)頻繁更新數(shù)據(jù)的分析

轉(zhuǎn)發(fā)地址:https://zhuanlan.zhihu.com/p/25928166

大數(shù)據(jù)技術(shù)峰會(huì)解讀

大數(shù)據(jù)前沿技術(shù)關(guān)注者

40 人贊了該文章

</header>

今天解讀的內(nèi)容是來自 Hadoop Summit San 2016 關(guān)于 Apache Kudu 的一個(gè)介紹:Apache Kudu & Apache Spark SQL for Fast Analystics on Fast Data(視頻見文章末尾)遣疯。歡迎關(guān)注微信公眾號(hào):大數(shù)據(jù)技術(shù)峰會(huì)解讀(bigdata_summit)谎脯,獲取更多的內(nèi)容和大數(shù)據(jù)技術(shù)峰會(huì)視頻窟绷。

[
視頻封面

Apache Kudu 加速對(duì)頻繁更新數(shù)據(jù)的分析_騰訊視頻

視頻](http://link.zhihu.com/?target=https%3A//v.qq.com/x/page/h03728qz2xm.html)

Kudu Overview

<figure style="margin: 1em 0px;">
image

</figure>

上圖是 Hadoop 生態(tài)體系中华弓,存儲(chǔ)引擎和應(yīng)用場(chǎng)景的對(duì)應(yīng)關(guān)系。

橫軸代表數(shù)據(jù)查詢分析的頻度(Pace of Analysis)凑术,依次為:

  • 歸檔
  • 基于靜態(tài)數(shù)據(jù)的掃描/分析(一次寫入多次讀壤沾小)
  • 基于頻繁更新數(shù)據(jù)的快速分析
  • 實(shí)時(shí)訪問/更新(OLTP)

縱軸代表的是數(shù)據(jù)的更新頻度(Pace of Data)共苛,依次為

  • 只讀
  • 追加(Append-Only)
  • 頻繁更新
  • 實(shí)時(shí)更新

我們知道,HDFS 特別適合歸檔和基于靜態(tài)數(shù)據(jù)的掃描/分析的場(chǎng)景(一次寫入多次讀纫前伞)庄新,也就是上圖中左下角的黃色區(qū)域,而HBase擅長(zhǎng)實(shí)時(shí)高并發(fā)的讀寫應(yīng)用,也就是右上角的藍(lán)色區(qū)域择诈。但是對(duì)于需要在頻繁更新的數(shù)據(jù)之上做快速分析械蹋,也就是上圖中間的虛線區(qū)域,Hadoop社區(qū)卻一直沒有比較好的存儲(chǔ)層產(chǎn)品來滿足吭从。Kudu正是出于填補(bǔ)這個(gè)空白而誕生的朝蜘。

視頻中提到,Kudu的設(shè)計(jì)借鑒了Parque和HBase一些理念 / 思想涩金。

Kudu產(chǎn)品的幾個(gè)要點(diǎn):

  • 數(shù)據(jù)模型和關(guān)系數(shù)據(jù)庫類似谱醇,為結(jié)構(gòu)化的表;列的數(shù)量有限(和HBase/Cassandra相比較而言)
  • 內(nèi)部數(shù)據(jù)組織方式為列式存儲(chǔ)
  • 很好的橫向擴(kuò)展能力步做,目前測(cè)試的是275個(gè)節(jié)點(diǎn)(3PB)副渴,計(jì)劃支持到上千個(gè)節(jié)點(diǎn)(幾十PB)
  • 不錯(cuò)的性能,集群能達(dá)到百萬級(jí)別的TPS全度,單節(jié)點(diǎn)吞吐為幾個(gè)GB/s
  • 本身不提供SQL接口煮剧,只支持類似NoSQL的接口,如 Insert(), Update(), Delete() and Scan() 等
  • 通過與 Spark 和 Impala 等(Drill将鸵,Hive的支持還在進(jìn)行中)的集成勉盅,對(duì)外提供基于 SQL 的查詢分析服務(wù)

Kudu 和 Spark 集成后,能帶來的好處:

  • 帶來和 Parquet 相似的掃描性能顶掉,但卻不存在數(shù)據(jù)更新/插入的延遲草娜,也就是說,對(duì)數(shù)據(jù)的實(shí)時(shí)更新/插入痒筒,對(duì)分析應(yīng)用來說是即時(shí)可見的宰闰,無延遲。
  • Spark對(duì)數(shù)據(jù)的過濾條件(基于判定的過濾條件簿透,即 predicate)可以下推到 Kudu 這一存儲(chǔ)層移袍,能提高數(shù)據(jù)讀取/掃描的性能
  • 相對(duì) Parque,基于主鍵索引的查詢老充,性能更高

Spark Datasource

這部分比較簡(jiǎn)單葡盗,介紹Kudu與Spark集成的代碼片段÷煳基本上就創(chuàng)建一個(gè)kuduDataFrame后戳粒,后續(xù)的操作就和普通的Spark DataFrame API沒什么差別了

Quick Demo

Demo也比較簡(jiǎn)單,有興趣大家可以自己看一下視頻(位置在視頻的 18分26秒)虫啥,就是在 Spark Shell 中操作一個(gè) kuduDataFrame

Use Cases

Kudu 最適合的場(chǎng)景包含這兩個(gè)特點(diǎn):

  • 同時(shí)有順序和隨機(jī)讀寫的場(chǎng)景
  • 對(duì)數(shù)據(jù)更新的時(shí)效性要求比較高

這樣的場(chǎng)景有:

  • 和時(shí)間序列相關(guān)的數(shù)據(jù)分析:對(duì)市場(chǎng)/銷售數(shù)據(jù)的實(shí)時(shí)分析蔚约;反欺詐;網(wǎng)絡(luò)監(jiān)控等
  • 在線報(bào)表和數(shù)據(jù)倉庫應(yīng)用:如ODS(Operational Data Store)

片中還介紹了小米使用Kudu的一個(gè)具體場(chǎng)景涂籽,需求是要收集手機(jī)App和后臺(tái)服務(wù)發(fā)送的 RPC 跟蹤事件數(shù)據(jù)苹祟,然后構(gòu)建一個(gè)服務(wù)監(jiān)控和問題診斷的工具,要求:

  • 高寫入吞吐:每天大于200億條記錄
  • 為了能夠盡快定位和解決問題,要求系統(tǒng)能夠查詢最新的數(shù)據(jù)并能快速返回結(jié)果
  • 為了方便問題診斷树枫,要求系統(tǒng)能夠查詢/搜索明細(xì)數(shù)據(jù)(而不只是統(tǒng)計(jì)信息)

在沒有使用kudu之前直焙,方案的架構(gòu)如下圖所示。

<figure style="margin: 1em 0px;">
image

</figure>

這是典型的Lambda架構(gòu)(存在兩套相對(duì)獨(dú)立的數(shù)據(jù)流水線:批處理和流處理)砂轻,一部分源系統(tǒng)數(shù)據(jù)是通過Scribe(日志聚合系統(tǒng))把數(shù)據(jù)寫到HDFS奔誓,另一部分源系統(tǒng)數(shù)據(jù)(實(shí)時(shí)性要求較高的?)是直接寫入HBase搔涝,然后:

  • 為了能支持交互式/實(shí)時(shí)的查詢厨喂,需要通過Hive/MR/Spark作業(yè)把這兩部分?jǐn)?shù)據(jù)合并成 Parquet 格式存放在HDFS,通過 Impala 對(duì)外提供交互式查詢服務(wù)
  • 線下分析的就直接通過運(yùn)行 Hive/MR/Spark 作業(yè)來完成

我們可以看到庄呈,這樣的數(shù)據(jù)線比較長(zhǎng)蜕煌,帶來兩個(gè)問題:

  • 其一是數(shù)據(jù)時(shí)效性較差(一個(gè)小時(shí)到一天);
  • 其二是需要多次數(shù)據(jù)轉(zhuǎn)換(如:HFile + seqfile ==> Parquet)

還有一個(gè)問題诬留,存儲(chǔ)層中數(shù)據(jù)不是按照時(shí)間戳來排序斜纪,如果有部分?jǐn)?shù)據(jù)沒有及時(shí)到達(dá),那么為了統(tǒng)計(jì)某一天的數(shù)據(jù)文兑,可能就要讀取好幾天的數(shù)據(jù)才能得到盒刚。

使用了Kudu以后,方案的架構(gòu)如下圖所示绿贞。

<figure style="margin: 1em 0px;">
image

</figure>

數(shù)據(jù)都存儲(chǔ)在Kudu中伪冰,分兩條線進(jìn)入Kudu:

  • 對(duì)于需要做加工(ETL)的數(shù)據(jù)或來自壓力較大的系統(tǒng)的數(shù)據(jù)(產(chǎn)生的數(shù)據(jù)較多,源系統(tǒng)無法長(zhǎng)時(shí)間緩存)可以先進(jìn)入Kafka緩存樟蠕,然后通過Storm做實(shí)時(shí)的ETL后進(jìn)入Kudu,這種情況的延時(shí)在 0~10秒的區(qū)間
  • 反之靠柑,源系統(tǒng)的數(shù)據(jù)可以直接寫入 Kudu寨辩,這種情況數(shù)據(jù)沒有任何延遲

然后,一方面可以通過 Impala 對(duì)外提供交互式查詢服務(wù)(基于SQL)歼冰,另一方面也可以直接通過 Kudu API 直接訪問數(shù)據(jù)

這樣的架構(gòu)帶來的好處比較明顯靡狞,一方面是大大提高數(shù)據(jù)的時(shí)效性,另一方面大大簡(jiǎn)化系統(tǒng)架構(gòu)

PPT中還有一張 Kudu + Impala 的方案與 MPP 數(shù)據(jù)庫產(chǎn)品(如 Greenplum隔嫡,Vertica 和 Teradata)進(jìn)行對(duì)比甸怕,但是由于時(shí)間關(guān)系視頻中沒有講,這里簡(jiǎn)單提一下:

他們有存在相似之處:

  • 提供基于SQL的交互式快速查詢/分析
  • 能夠提供插入腮恩、更新和刪除操作

相對(duì)于 MPP 數(shù)據(jù)庫梢杭,Kudu + Impala 方案的優(yōu)勢(shì):

  • 更快的流式數(shù)據(jù)插入(streaming insert)
  • 和 Hadoop 生態(tài)體系有較好的集成:
    • 把 Kudu 和 HDFS 部署在同一個(gè)集群,可以關(guān)聯(lián)分別存儲(chǔ)在 Kudu 和 HDFS 上的表
    • 和 Spark秸滴,F(xiàn)lume等的集成度較好

相對(duì)于 MPP 數(shù)據(jù)庫武契,Kudu + Impala 方案的劣勢(shì):

  • 批量插入的性能相對(duì)較慢
  • 不支持?jǐn)?shù)據(jù)裝載的原子操作,不支持跨行的原子操作,不支持二級(jí)索引

Kudu Roadmap

相對(duì) HDFS 和 HBase咒唆,Kudu還是一個(gè)比較新的項(xiàng)目届垫,視頻介紹了產(chǎn)品路線圖的一些想法:

安全方面:

  • 和 Kerberos 的集成
  • 力度更細(xì)的權(quán)限控制
  • 基于組和角色的權(quán)限管理
  • ...

運(yùn)維方面:

  • 穩(wěn)定性的增強(qiáng)
  • 一些恢復(fù)工具
  • 故障診斷輔助工具

性能和擴(kuò)展性:

  • 具體一些讀寫性能提升的想法
  • 擴(kuò)展性的提升(短期到400節(jié)點(diǎn),長(zhǎng)期上千節(jié)點(diǎn))

客戶端方面:

  • 目前支持Java全释、C++ 和 python装处,Python目前還是短板,有些功能還沒支持
  • 文檔浸船、教程和日志等方面
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末妄迁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子糟袁,更是在濱河造成了極大的恐慌判族,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件项戴,死亡現(xiàn)場(chǎng)離奇詭異形帮,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)周叮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門辩撑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人仿耽,你說我怎么就攤上這事合冀。” “怎么了项贺?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵君躺,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我开缎,道長(zhǎng)棕叫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任奕删,我火速辦了婚禮俺泣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘完残。我一直安慰自己伏钠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布谨设。 她就那樣靜靜地躺著熟掂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪铝宵。 梳的紋絲不亂的頭發(fā)上打掘,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天华畏,我揣著相機(jī)與錄音,去河邊找鬼尊蚁。 笑死亡笑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的横朋。 我是一名探鬼主播仑乌,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼琴锭!你這毒婦竟也來了晰甚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤决帖,失蹤者是張志新(化名)和其女友劉穎厕九,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體地回,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡扁远,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了刻像。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片畅买。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖细睡,靈堂內(nèi)的尸體忽然破棺而出谷羞,到底是詐尸還是另有隱情,我是刑警寧澤溜徙,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布湃缎,位于F島的核電站,受9級(jí)特大地震影響蠢壹,放射性物質(zhì)發(fā)生泄漏雁歌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一知残、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧比庄,春花似錦求妹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至神凑,卻和暖如春净神,著一層夾襖步出監(jiān)牢的瞬間何吝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工鹃唯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留爱榕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓坡慌,卻偏偏與公主長(zhǎng)得像黔酥,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子洪橘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355