精通實時大數據分析!
Druid項目主要創始人楊仿今、螞蟻金服CTO魯肅、餓瞭麼CTO張雪峰、Testin雲測總裁徐琨、 Druid中國用戶組發起人陳冠誠、 TalkingData CTO肖文峰、 OneAPM創始人,董事長何曉陽、Cloudera大中華區技術總監劉隸放、神策數據公司創始人&CEO;桑文鋒、AdMaster(精碩科技)技術副總裁盧億雷、微軟中國研發中心,高級研發總監 Sherman Tong、AdHoc吆喝科技創始人CEO 王曄聯閤力薦!
Druid 作為一款開源的實時大數據分析軟件,最近幾年快速風靡全球互聯網公司,特彆是對於海量數據和實時性要求高的場景,包括廣告數據分析、用戶行為分析、數據統計分析、運維監控分析等,在騰訊、阿裏、優酷、小米等公司都有大量成功應用的案例。《Druid實時大數據分析原理與實踐》的目的就是幫助技術人員更好地深入理解Druid 技術、大數據分析技術選型、Druid 的安裝和使用、高級特性的使用,也包括一些源代碼的解析,以及一些常見問題的快速迴答。
Druid 的生態係統正在不斷擴大和成熟,Druid 也正在解決越來越多的業務場景。希望本書能幫助技術人員做齣更好的技術選型,深度瞭解Druid 的功能和原理,更好地解決大數據分析問題。《Druid實時大數據分析原理與實踐》適閤大數據分析的從業人員、IT 人員、互聯網從業者閱讀。
歐陽辰,小米商業産品部研發總監,負責廣告架構和數據分析平颱,擅長數據挖掘,大數據分析和廣告搜索架構。之前,在微軟工作10年,任微軟公司高級開發經理,負責Contextual Ads産品研發,開發Bing Index Serve的核心模塊。持有多項關於互聯網廣告及搜索的美國專利。創辦“互聯居”公眾號,緻力於互聯網廣告技術的繁榮。畢業於北京大學計算機係,獲碩士學曆。
劉麒贇,現任Testin雲測公司技術總監,全麵負責領導團隊完成數據分析産品的研發。作為資深數據技術專傢,曾為多個著名開源項目(Hadoop/Sqoop/Oozie/Druid)貢獻源代碼,在互聯網大數據分析、機器學習和統計學應用等方麵擁有豐富的實戰經驗和相關專利。在企業級産品研發和客戶支持方麵也有著豐富的經驗,並曾為中國多地(包括香港和颱灣地區)的龍頭企業成功進行實地支持,為美國與新加坡等地客戶進行遠程支持。之前,曾任OneAPM公司大數據架構師,以及在IBM公司工作七年並任IBM全球大數據平颱産品BigInsights的Advisory Software Engineer。
張海雷,資深工程師。目前在優酷土豆廣告技術團隊負責Druid集群的維護。活躍在Druid中國用戶組,Druid、Redis和Storm的開源項目代碼貢獻者。
高振源,熱愛技術,愛智求真的後颱開發和數據工程師。先後負責過廣告DSP産品、QQ公眾號精準投放平颱、數據分析産品等研發工作。目前在騰訊SNG企業産品部,負責企點産品的數據平颱工作。
許哲,騰訊後颱開發高級工程師,先後參與瞭公司企業産品消息服務後颱、QQ公眾號後颱、QQ公眾號精準投放平颱等研發,目前在騰訊SNG企業産品部,負責騰訊企點的後颱和數據平颱開發工作。
正如許多廣為應用的開源項目,Druid 是為解決某個特定問題而誕生的。我希望通過這本書,您將更深入地瞭解Druid,並用它為您的組織創造價值。
——楊仿今 Druid項目主要創始人Imply公司聯閤創始人,CEO
隻有久經考驗又樂於分享的大數據架構師,纔有這樣的功力,把實時大數據分析技術的原理與實踐講得這麼係統與透徹。書中隨處可見來自實踐的真知灼見。閱讀這本書,就如同由一位老司機帶著開啓的美妙旅程,一路輕鬆、興奮、風景無限。
——魯肅 螞蟻金服 CTO
Druid作為一款優秀的實時大數據分析引擎,非常強大,與之伴隨的是使用上的復雜性,因此理解Druid的架構和運行機製原理對於更好地使用Druid及定製化擴展顯得尤為重要。
——張雪峰 餓瞭麼CTO
大數據實時多維度分析場景充滿技術挑戰,很高興看到Druid完美地解決瞭我們客戶的問題。大數據時代已經到來,Druid無疑是解決大數據多維度實時分析的zui佳選擇,本書則是一把打開該技術之門的鑰匙。
——徐琨 Testin雲測總裁
Druid因其在快速查詢、水平擴展、實時數據攝入和分析這三方麵都有良好的支持,很好地滿足瞭我們的需求。本書的幾位作者都是Druid中國用戶組中非常活躍的技術專傢,他們在社區中的口碑是本書質量的保證,如果你對Druid感興趣,這本書一定不能錯過。
——陳冠誠 Druid中國用戶組發起人
TalkingData自2013年開始關注Druid項目,因為它的特性非常契閤分析的業務場景,能解決海量數據的多維交叉分析問題。同時,為瞭增強其分析能力,我們也在把基於Bitmap的自研分析引擎Atom Cube融閤到Druid中。擁抱開源社區的各種麯摺,有苦有樂,不足道也,但是慶幸有許多熱情的領路人,給予大傢無私的幫助。相信這本書能夠帶大傢領略Druid的魅力,讓大傢少走彎路,真正聚焦在對數據的探索上。
——肖文峰TalkingData CTO
Druid正在開創海量數據實時數據分析的時代,作為一傢以技術創新驅動的公司,OneAPM幸運地在正確的時間選擇瞭正確的技術構築自己的後端處理平颱,我希望OneAPM的經驗能夠給後來者以藉鑒,本書作者之一麒贇是Druid技術在OneAPM落地生根的實踐者,這本書一定能夠給大傢更多的啓迪。
——何曉陽 OneAPM創始人,董事長
開源軟件在過去十年中蓬勃發展,特彆是在大數據等新興領域,開源軟件逐漸在企業級應用中占有一席之地。我們很欣喜地看到Druid這樣有中國元素的開源項目在這個過程中茁壯成長,被企業客戶接受並在核心係統應用中部署。
——劉隸放Cloudera 大中華區技術總監
我用“大、全、細、時”四個字來總結大數據,傳統數據庫在這種數據特性下根本無法支撐。而Druid的齣現,正好比較完美地滿足瞭這四點,特彆是對於維度變換不頻繁的場景,非常適用。本書既講解瞭Druid技術本身,也講解瞭多維數據分析相關的知識,並對業內的分布式存儲和查詢係統都做瞭對比。想要係統掌握Druid技術,推薦閱讀本書。
——桑文鋒 神策數據公司創始人,CEO
本書讓讀者深入瞭解Druid的架構設計、設計理念、安裝配置、集群管理和監控,書中還介紹瞭一些高級特性和核心源碼的導讀,zui後深入分析瞭Druid的zui佳實踐。本書采用由淺入深、循序漸進的方式介紹Druid,是一本非常難得的OLAP的實時分析係統經典書籍。
——盧億雷AdMaster(精碩科技)技術副總裁
Druid 是一套非常棒的大數據軟件,本書也是一本非常棒的Druid 課本。本書齣色之處在於,不僅對Druid 的架構以及細節有深入的闡述,而且有非常詳盡的代碼例子(codelab),甚至有一章專門介紹怎麼安裝和配置,非常適閤工程師一邊學習,一邊上機實踐。
——王曄 AdHoc吆喝科技創始人,CEO
嚮在大數據行業從事多年的架構師、正在如火如荼地開展大數據相關工作的工程師,以及正在準備步入大數據行業的新手推薦這本書。
——Sherman Tong 微軟中國研發中心,高級研發總監
第1 章初識Druid 1
1.1 Druid 是什麼1
1.2 大數據分析和Druid 1
1.3 Druid 的産生3
1.3.1 MetaMarkets 簡介3
1.3.2 失敗總結4
1.4 Druid 的三個設計原則4
1.4.1 快速查詢(Fast Query) 5
1.4.2 水平擴展能力(Horizontal Scalability) 5
1.4.3 實時分析(Realtime Analytics) 6
1.5 Druid 的技術特點6
1.5.1 數據吞吐量大6
1.5.2 支持流式數據攝入6
1.5.3 查詢靈活且快6
1.5.4 社區支持力度大7
1.6 Druid 的Hello World 7
1.6.1 Druid 的部署環境7
1.6.2 Druid 的基本概念7
1.7 係統的擴展性9
1.8 性能指標10
1.9 Druid 的應用場景10
1.9.1 國內公司11
1.9.2 國外公司12
1.10 小結13
參考資料13
第2 章數據分析及相關軟件. 15
2.1 數據分析及相關概念15
2.2 數據分析軟件的發展16
2.3 數據分析軟件的分類17
2.3.1 商業軟件17
2.3.2 時序數據庫22
2.3.3 開源分布式計算平颱23
2.3.4 開源分析數據庫25
2.3.5 SQL on Hadoop/Spark 31
2.3.6 數據分析雲服務33
2.4 小結34
參考資料34
第3 章架構詳解. 35
3.1 Druid 架構概覽35
3.2 Druid 架構設計思想36
3.2.1 索引對樹結構的選擇37
3.2.2 Druid 總體架構41
3.2.3 基於DataSource 與Segment 的數據結構43
3.3 擴展係統45
3.3.1 主要的擴展45
3.3.2 下載與加載擴展46
3.4 實時節點47
3.4.1 Segment 數據文件的製造與傳播47
3.4.2 高可用性與可擴展性48
3.5 曆史節點49
3.5.1 內存為王的查詢之道49
3.5.2 層的分組功能50
3.5.3 高可用性與可擴展性51
3.6 查詢節點51
3.6.1 查詢中樞點51
3.6.2 緩存的使用52
3.6.3 高可用性52
3.7 協調節點53
3.7.1 集群數據負載均衡的主宰53
3.7.2 利用規則管理數據生命周期53
3.7.3 副本實現Segment 的高可用性54
3.7.4 高可用性54
3.8 索引服務54
3.8.1 主從結構的架構54
3.8.2 統治節點55
3.8.3 中間管理者與苦工56
3.8.4 任務56
3.9 小結57
第4 章安裝與配置. 58
4.1 安裝準備58
4.1.1 安裝包簡介58
4.1.2 安裝環境59
4.1.3 Druid 外部依賴60
4.2 簡單示例61
4.2.1 服務運行61
4.2.2 數據導入與查詢62
4.3 規劃與部署65
4.4 基本配置68
4.4.1 基礎依賴配置68
4.4.2 數據節點配置調優69
4.4.3 查詢節點配置調優69
4.5 集群節點配置示例70
4.5.1 節點規劃70
4.5.2 Master 機器配置72
4.5.3 Data 機器配置76
4.6 小結79
第5 章數據攝入. 80
5.1 數據攝入的兩種方式80
5.1.1 流式數據源80
5.1.2 靜態數據源81
5.2 流式數據攝取81
5.2.1 以Pull 方式攝取82
5.2.2 用戶行為數據攝取案例86
5.2.3 以Push 方式攝取89
5.2.4 索引服務任務相關管理接口91
5.3 靜態數據批量攝取94
5.3.1 以索引服務方式攝取94
5.3.2 以Hadoop 方式攝取96
5.4 流式與批量數據攝取的結閤99
5.4.1 Lambda 架構99
5.4.2 解決時間窗口問題100
5.5 數據攝取的其他重要知識101
5.5.1 數據分片101
5.5.2 數據復製106
5.5.3 索引服務之Tranquility 107
5.5.4 高基數維度優化111
5.6 小結116
第6 章數據查詢. 117
6.1 查詢過程117
6.2 組件118
6.2.1 Filter 118
6.2.2 Aggregator 121
6.2.3 Post-Aggregator 125
6.2.4 Search Query 129
6.2.5 Interval 129
6.2.6 Context 130
6.3 案例介紹131
6.4 Timeseries 134
6.5 TopN 138
6.6 GroupBy 144
6.7 Select 149
6.8 Search 151
6.9 元數據查詢153
6.10 小結156
第7 章高級功能和特性. 157
7.1 近似直方圖(Approximate Histogram) 158
7.1.1 分位數和直方圖158
7.1.2 實現原理158
7.1.3 如何使用161
7.1.4 近似直方圖小結163
7.2 數據Sketch 163
7.2.1 DataSketch Aggregator 163
7.2.2 DataSketch Post-Aggregator 167
7.3 地理查詢(Geographic Query) 170
7.3.1 基本原理170
7.3.2 空間索引(Spatial Indexing) 171
7.3.3 空間過濾(Spatial Filter) 171
7.3.4 邊界條件(Boundary Condition) 172
7.3.5 地理查詢小結172
7.4 Router 172
7.4.1 Router 概覽172
7.4.2 路由規則174
7.4.3 配置175
7.4.4 路由策略175
7.5 Ka�軑 索引服務177
7.5.1 設計背景177
7.5.2 實現178
7.5.3 如何使用182
7.6 Supervisor API 186
7.6.1 創建Supervisor 186
7.6.2 關閉Supervisor 186
7.6.3 獲取當前執行的Supervisor 186
7.6.4 獲取Supervisor 規範186
7.6.5 獲取Supervisor 的狀態報告186
7.6.6 獲取所有Supervisor 的曆史187
7.6.7 獲取Supervisor 的曆史187
7.7 最佳實踐187
7.7.1 容量規劃187
7.7.2 Supervisor 的持久化187
7.7.3 Schema 的配置與變更188
7.8 小結188
第8 章核心源代碼探析. 189
8.1 如何編譯Druid 代碼189
8.2 Druid 項目介紹190
8.3 索引結構模塊和層次關係192
8.4 Column 結構192
8.5 Segment 195
8.6 Query 模塊203
8.6.1 基礎組件203
8.6.2 內存池管理206
8.6.3 查詢流程概覽207
8.6.4 查詢引擎225
8.7 Coordinator 模塊229
8.8 小結237
第9 章監控和安全. 238
9.1 Druid 監控238
9.1.1 Druid 監控指標238
9.1.2 常用的監控方法245
9.2 Druid 告警250
9.2.1 Druid 告警信息250
9.2.2 Druid 與告警係統的集成250
9.3 Druid 安全251
9.3.1 Druid 與利用Kerberos 加強安全認證的係統集成251
9.3.2 集成外部權限模塊完成用戶授權255
9.4 小結256
第10 章實踐和應用. 257
10.1 小米257
10.1.1 場景一:小米統計服務258
10.1.2 場景二:廣告平颱實時數據分析260
10.2 優酷土豆262
10.2.1 需求分析262
10.2.2 技術選型及工程實踐263
10.2.3 優化策略266
10.3 騰訊267
10.3.1 工程實踐267
10.3.2 業務實踐270
10.4 藍海訊通279
10.5 小結284
第11 章Druid 生態與展望. 285
11.1 Druid 生態係統285
11.2 Druid 生態係統資源288
11.2.1 IAP 288
11.2.2 Plywood 289
11.2.3 PlyQL 294
11.2.4 Pivot 297
11.2.5 Druid-Metrics-Ka�軑 300
11.2.6 Caravel(Airbnb) 301
11.3 Druid 的社區討論組302
11.4 Druid 展望302
參考資料303
附錄A 常見問題(FAQ) 304
附錄B 常用參數錶. 312
推薦序一
“Druid是一套非常棒的大數據軟件,而本書是一本非常棒的Druid課本。”
閱讀完歐陽辰等人寫的原稿,我很快做齣這樣的判斷,更感嘆大數據技術已經徹底邁入一個全新的爆發時代。
作為曾經服務於大數據技術的先驅公司Google的從業者,我個人認為大數據技術有著明顯的三個曆史發展階段:
1.探索時代
大傢知道,“大數據”與“數據”的核心區彆在於數據的完整性。在互聯網行業還不成熟的時代,傳統行業的數據主要來自於“采樣”,數據集並不完備。對小企業來說,數據采集是高成本、高門檻的;即使是對於信息化程度已經很高的大公司,當時的技術也沒法很快速地處理TB級彆的數據量。
互聯網業務特彆是數字廣告,從第一天開始就嘗試解決數據采集的完備性(考慮到按點擊收費,客戶的微觀廣告數據必須精細采集),也創新性地研發齣能夠快速處理大數據的技術解決方案。SSTable、MapReduce和BigTable等非常成功的實踐解決方案在這些探索中誕生。當然,還有很多探索性的研發都失敗瞭。
這些成功的新技術慢慢在互聯網技術圈傳播,隨著Apache Hadoop框架的成功,大數據技術開始在行業普及。
2.普及時代
隨著社交通信、數字廣告、電子商務、網絡遊戲等商業模式的發展,越來越多的互聯網企業誕生。他們都享受瞭大數據基礎技術的紅利,從初始就具備比較強大的數據收集、分析和處理能力,並且可以用在業務優化上。
很顯然,因為行業的多樣性,業務場景變得越來越復雜,對數據處理的要求已經不僅是體量大和速度快,還要數據結構靈活、編程接口強大、係統可擴展、原子化操作、高效備份、讀性能加速或者寫性能加速等。在這個技術普及的時代,不僅互聯網行業有越來越多的技術人員和數據人員開始參與到大數據工作中,而且很多傳統軟件從業者也慢慢受到吸引,雙方互相藉鑒,進一步擴大瞭大數據技術的能力和影響。可以看到,傳統的數據庫、操作係統、編程語言等技術思想被引入來解決各種復雜的需求。因此而誕生的包括NoSQL、SQL on Hadoop、ElasticSearch這樣的新事物,逐漸把我們推進到一個全新的時代。
3.創新時代
本書所介紹的Druid,是大數據技術新時代的産物。現在的新技術,並不隻是解決各種技術問題,而是更加貼近復雜的創新型業務的需求場景。我們看到,業內的新框架和新産品,都在探索如何讓大數據能為各種不同類型的業務帶來更多的優化,解決數據可用性、垂直性、實時性、靈活性、可視化等問題。
如本書所介紹的,Druid以及相關配套的工作,使我們可以非常靈活地實時分析數據,做復雜的維度切割和條件查詢,而且可以非常方便地做可視化展示。無論是在互聯網企業,還是傳統企業,這個工具的使用場景都是非常豐富的,如監控報警、診斷排錯、生成業務報錶、對接機器學習及策略優化等。
在這個創新時代,還有很多新技術湧現齣來,比如強調可編程與實時性的Spark、與Druid類似的Pinot,還有A/B測試(比如我們吆喝科技提供的解決方案)等。
可以看到,大數據相關技術的發展速度是逐漸加快的。原因自然是相關應用的普及(本書有很多詳盡的相關案例介紹多傢成功公司的應用場景),以及因此而帶來的從業人員規模的增長(感謝互聯網行業招募和培養瞭大批人纔)。
從MapReduce論文2004年問世到Apache Hadoop框架被廣泛使用,經過瞭5年以上的時間。而從Dremel論文問世到Druid被廣泛認可,隻用瞭3年時間。值得指齣的是,在這幾年時間內,還有很多公司藉鑒瞭Lambda Calculus思想自己研發瞭閉源係統(Microsoft Dryad、阿裏巴巴等)。不過經過幾年的實踐摸索,業內逐漸形成瞭以Apache的一係列項目為核心的統一解決方案。大傢逐漸意識到,與其對同一問題采取不同的解決方案,不如一個問題一個解決方案,然後大傢一起來探索解決更多不同場景的問題。這是現代互聯網時代特有的網絡效應和規模效應。
本書很大的貢獻就是普及Druid(以及如Pinot這樣的相似框架),讓更多的技術人員、數據人員和互聯網業務人員可以快速地熟悉和嘗試這個成功的新技術,將它應用在更多場景中,然後能激發更多的創新,進一步推動Druid以及新技術的持續發展。
我在Google總部工作的時候,經常使用Dremel(和Druid類似的工具),也用過基於Dremel的可視化係統PowerDrill。當時的感覺是,一個像SQL一樣好用的工具,卻能快速查詢海量的實時的數據,對業務幫助非常大。舉個例子,當時某個廣告新産品上綫測試後數據不佳,Dremel從實時的數據裏發現在某些瀏覽器裏沒有點擊,於是進一步發現在這些瀏覽器裏渲染有問題,馬上改正。如果沒有Dremel,這個問題的解決可能需要至少1周以上,而不是幾個小時。相信開源的Druid也會像Dremel一樣,在很多企業內成為業務數據分析的利器,大幅度提高大傢的工作效率。
本書特彆齣色的地方在於,不僅對Druid的架構以及細節有深入的闡述,而且有非常詳盡的代碼例子(codelab),甚至有一章專門介紹怎麼安裝和配置,非常適閤工程師一邊學習,一邊上機實踐。在Druid項目文檔還不是特彆完善的情況下,這本書不僅適閤作為大傢的學習材料,還能當作日常工作中的手冊,已備隨時查詢。
本書的作者歐陽辰是大數據領域的頂級專傢,他現在服務的小米公司在大數據創新上非常積極,對於Druid的使用和貢獻也處於業內領先的地位。所以,本書裏有非常多的真實業務場景相關的解析,不僅對技術人員,而且對數據人員和業務人員也非常有藉鑒價值。
如果你想擁抱大數據的新時代,Druid是你的必學,本書是你的必讀。
王曄 AdHoc吆喝科技 創始人 CEO
推薦序二
嚮在大數據行業從事多年的架構師、正在如火如荼地開展大數據相關工作的工程師,以及正在準備步入大數據行業的新手推薦《Druid實時大數據分析原理與實踐》這本書。
在從北京到蘇州的高鐵上花瞭5個小時讀瞭這本書,雖然還沒有讀完,但是我已經可以非常確定地告訴大傢這本書“非常引人入勝”。對我這樣一個在軟件行業做瞭30年的“碼農”、15年以上互聯網從業的老兵來說,也彆開生麵地學瞭很多新知識,又把腦中的和大數據有關的各種係統知識重新更新瞭一遍。
本書非常清晰、明確地介紹瞭Druid是什麼、是為什麼設計的、特點和特長是什麼,以及怎麼使用。
本書在介紹美國MetaMarkets公司為什麼會設計Druid的同時介紹瞭業界流行的和大數據有關的大部分係統,以及這些係統誕生的原因及相互之間的比較和特長,比如經典的Hadoop、飛速發展的Spark、用於實時數據流的kafka,非常引人入勝。
本書在介紹為什麼和如何使用Druid的同時介紹瞭Druid的源代碼結構,對那些心裏癢癢地想給Druid做點貢獻的工程師開啓瞭一條入門的道路。
本書最後一章“Druid生態與展望”很好地介紹瞭在先行使用Druid的用戶中逐漸開發的配套設施,以及這些配套設施如何反過來幫助Druid的發展。想使用或者評估Druid的用戶都能從這一章得到很多新的啓示,並節省用來評估和尋找Druid相關配套設施的時間。
Sherman Tong 微軟中國研發中心,高級研發總監
。
評分書上版本有點老瞭,對於瞭解druid的架構和數據流嚮還能看看,不過案例有點簡單
評分質量非常好,物流相當快,不錯!
評分Druid很不錯實時大數據分析平颱
評分12312312
評分書不錯,還沒看完,看完再評論。
評分京東物流太給力瞭 産品肯定是正品呀京東物流太給力瞭 産品肯定是正品呀京東物流太給力瞭 産品肯定是正品呀京東物流太給力瞭 産品肯定是正品呀
評分非常好,特彆喜歡
評分目前項目裏用瞭這個
本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 book.cndgn.com All Rights Reserved. 新城书站 版權所有