- 企業(yè)大數(shù)據(jù)處理:Spark、Druid、Flume與Kafka應(yīng)用實踐
- 肖冠宇
- 50字
- 2019-01-02 20:35:54
前言
我寫本書的初衷是將自己在企業(yè)工作中應(yīng)用的技術(shù)歸納總結(jié),系統(tǒng)地將大數(shù)據(jù)處理相關(guān)技術(shù)融合在一起,給已經(jīng)從事大數(shù)據(jù)相關(guān)技術(shù)研發(fā)工作的朋友,或是準備從其他行業(yè)轉(zhuǎn)行進入大數(shù)據(jù)領(lǐng)域?qū)W習(xí)相關(guān)技術(shù)的朋友提供一份參考資料。希望本書能夠幫助更多從事大數(shù)據(jù)相關(guān)工作的人,也希望通過本書結(jié)識更多熱愛大數(shù)據(jù)的朋友。
目前,大數(shù)據(jù)已不只停留在概念階段,而是在各領(lǐng)域成功落地,并取得了豐碩的成果。大數(shù)據(jù)已經(jīng)滲透到生活中的各個方面,距離我們最近且與我們生活息息相關(guān)的大數(shù)據(jù)項目有交通大數(shù)據(jù)、醫(yī)療大數(shù)據(jù)、金融大數(shù)據(jù)、社交媒體大數(shù)據(jù)、互聯(lián)網(wǎng)大數(shù)據(jù)等。如此多的大數(shù)據(jù)項目能夠成功落地,關(guān)鍵原因在于數(shù)據(jù)來源的多樣化,數(shù)據(jù)量的爆發(fā)式增長,新興技術(shù)的快速發(fā)展,以及市場創(chuàng)新需求的不斷增多,這為各種大數(shù)據(jù)項目提供了龐大的數(shù)據(jù)源,通過多種技術(shù)的綜合應(yīng)用,可不斷挖掘出大數(shù)據(jù)背后的社會價值和商業(yè)價值。
隨著開源社區(qū)的不斷發(fā)展,越來越多的優(yōu)秀項目被開源,以處理各種大數(shù)據(jù)場景下的問題和挑戰(zhàn)。作為目前大數(shù)據(jù)生態(tài)系統(tǒng)內(nèi)的早期開源項目,Hadoop在廉價機器上實現(xiàn)了分布式數(shù)據(jù)存儲和高性能分布式計算,大大降低了數(shù)據(jù)存儲和計算成本。Hadoop提供的分布式存儲系統(tǒng)HDFS、大數(shù)據(jù)集并行計算編程模型MapReduce、資源調(diào)度框架YARN已經(jīng)被廣泛應(yīng)用,為大數(shù)據(jù)生態(tài)系統(tǒng)的發(fā)展奠定了堅實的基礎(chǔ)。如今,Hadoop大數(shù)據(jù)生態(tài)圈發(fā)展已經(jīng)非常全面,涉及領(lǐng)域眾多,在大數(shù)據(jù)處理系統(tǒng)中常用的技術(shù)框架包括數(shù)據(jù)采集、數(shù)據(jù)存儲、數(shù)據(jù)分析、數(shù)據(jù)挖掘、批處理、實時流計算、數(shù)據(jù)可視化、監(jiān)控預(yù)警、信息安全等。下圖展示了大數(shù)據(jù)生態(tài)系統(tǒng)內(nèi)比較流行并且已經(jīng)在生產(chǎn)環(huán)境驗證過的開源技術(shù)。
(1)Spark
Spark是由加州大學(xué)伯克利分校AMP實驗室開源的分布式大規(guī)模數(shù)據(jù)處理通用引擎,具有高吞吐、低延時、通用易擴展、高容錯等特點。Spark內(nèi)部提供了豐富的開發(fā)庫,集成了數(shù)據(jù)分析引擎Spark SQL、圖計算框架GraphX、機器學(xué)習(xí)庫MLlib、流計算引擎Spark Streaming。Spark在函數(shù)式編程語言Scala中實現(xiàn),提供了豐富的開發(fā)API,支持Scala、Java、Python、R等多種開發(fā)語言。同時,它提供了多種運行模式,既可以采用獨立部署的方式運行,也可以依托Hadoop YARN、Apache Mesos等資源管理器調(diào)度任務(wù)運行。目前,Spark已經(jīng)在金融、交通、醫(yī)療、氣象等多種領(lǐng)域中廣泛使用。

大數(shù)據(jù)生態(tài)系統(tǒng)中的開源技術(shù)
(2)Druid
Druid是由美國MetaMarkets公司創(chuàng)建并開源的分布式提供海量時序數(shù)據(jù)存儲、支持實時多維數(shù)據(jù)分析的OLAP系統(tǒng),主要應(yīng)用于廣告數(shù)據(jù)分析、網(wǎng)絡(luò)系統(tǒng)監(jiān)控等場景。Druid具有高吞吐、易擴展、高容錯、低延遲、按時間序列存儲等特點。
(3)Flume
Flume是由Cloudera公司開發(fā)的分布式、高可用的日志收集系統(tǒng),是Hadoop生態(tài)圈內(nèi)的關(guān)鍵組件之一,目前已開源給Apache。Flume的原始版本為Flume-OG,經(jīng)過對整體架構(gòu)的重新設(shè)計,現(xiàn)已改名為Flume-NG。Flume發(fā)展到現(xiàn)在已經(jīng)不局限于日志收集,還可以通過簡單的配置收集不同數(shù)據(jù)源的海量數(shù)據(jù)并將數(shù)據(jù)準確高效地傳輸?shù)讲煌闹行拇鎯ΑD壳癋lume可對接的主流大數(shù)據(jù)框架有Hadoop、Kafka、ElasticSearch、Hive、HBase等。在使用Flume的過程中,通過配置文件就可以實現(xiàn)整個數(shù)據(jù)收集過程的負載均衡和故障轉(zhuǎn)移,而不需要修改Flume的任何代碼。得益于優(yōu)秀的框架設(shè)計,F(xiàn)lume通過可擴展、插件化、組合式、高可用、高容錯的設(shè)計模式,為用戶提供了簡單、高效、準確的輕量化大數(shù)據(jù)采集工具。
(4)Kafka
Kafka是由LinkedIn開源的分布式消息隊列,能夠輕松實現(xiàn)高吞吐、可擴展、高可用,并且部署簡單快速、開發(fā)接口豐富。目前,各大互聯(lián)網(wǎng)公司已經(jīng)在生產(chǎn)環(huán)境中廣泛使用,而且已經(jīng)有很多分布式處理系統(tǒng)支持使用Kafka,比如Spark、Strom、Druid、Flume等。
(5)InfluxDB
InfluxDB是一款開源分布式時序數(shù)據(jù)庫,非常適合存儲監(jiān)控系統(tǒng)收集的指標數(shù)據(jù)。時序數(shù)據(jù)庫顧名思義就是按照時間順序存儲指標數(shù)據(jù),即監(jiān)控系統(tǒng)的場景大部分是按照時間順序存儲各項指標數(shù)據(jù),過期時間太長的指標可能將不會再關(guān)注,所以為了提高數(shù)據(jù)庫的存儲率,提高查詢性能,需要定期刪除過期指標。InfluxDB的諸多特性非常適合監(jiān)控系統(tǒng)的使用場景。
本書將詳細介紹上述技術(shù)的原理,通過實踐演示每種技術(shù)的實際應(yīng)用場景。希望通過理論與實踐相結(jié)合的方式使內(nèi)容更通俗易懂,幫助讀者根據(jù)實際的業(yè)務(wù)場景選擇合適的技術(shù)方案,相信大數(shù)據(jù)在未來的發(fā)展中還會創(chuàng)造更多的價值。
內(nèi)容概述
本書分三部分展開介紹:
第一部分(第1章)主要介紹了企業(yè)大數(shù)據(jù)系統(tǒng)的前期準備工作,包括如何構(gòu)建企業(yè)大數(shù)據(jù)處理系統(tǒng)的軟件環(huán)境和集群環(huán)境。
第二部分(第2~7章)首先介紹了Spark的基本原理,Spark 2.0版本的Spark SQL、Structured Streaming原理和使用方法,以及Spark的多種優(yōu)化方式;然后,介紹了Druid的基本原理、集群的搭建過程、數(shù)據(jù)攝入過程,以及在查詢過程中如何實現(xiàn)Druid查詢API;接著介紹了日志收集系統(tǒng)Flume的基本架構(gòu)和關(guān)鍵組件,以及分層日志收集架構(gòu)的設(shè)計與實踐;最后介紹了分布式消息隊列Kafka的基本架構(gòu)和集群搭建過程,以及使用Java語言實現(xiàn)客戶端API的詳細過程。
第三部分(第8~9章)主要介紹了企業(yè)大數(shù)據(jù)處理的兩個實際應(yīng)用案例,分別是基于Druid構(gòu)建多維數(shù)據(jù)分析平臺和基于JMX指標的監(jiān)控系統(tǒng)。
目標讀者
本書適合從事大數(shù)據(jù)及相關(guān)工作的工程師閱讀,也適合準備進入大數(shù)據(jù)領(lǐng)域的大數(shù)據(jù)愛好者學(xué)習(xí)、參考。
讀者反饋
本書是在業(yè)余時間完成的,由于水平有限,編寫時間倉促,書中可能會出現(xiàn)介紹不夠詳細或者有錯誤的地方,敬請讀者諒解。如果遇到任何問題或者尋求技術(shù)交流都可以通過如下聯(lián)系方式與筆者進行溝通。
大數(shù)據(jù)愛好者交流QQ群:124154694
個人郵箱:xiaoguanyu_java@163.com
致謝
感謝在本書的寫作過程中幫助過筆者的朋友、同事、老師,感謝你們一次又一次的幫助和支持!
感謝機械工業(yè)出版社楊福川老師,本書從2016年6月份開始籌劃,確定了基本的框架,雖然由于筆者個人原因?qū)е聦懽魉俣染徛菞罾蠋熞恢狈e極推動本書的出版,并且不斷指導(dǎo)筆者寫作,感謝楊老師給予的理解、幫助與支持。感謝機械工業(yè)出版社編輯李藝老師,李藝老師用嚴謹?shù)墓ぷ鲬B(tài)度為本書做了專業(yè)的編輯工作,并且耐心指導(dǎo)筆者完成了本書的編寫工作。
感謝樂視智能中心大數(shù)據(jù)部的同事們,感謝他們在工作中幫助筆者分擔(dān)工作任務(wù);感謝上級領(lǐng)導(dǎo)的耐心指導(dǎo),使筆者能夠順利地完成工作任務(wù)并騰出時間進行寫作。在此特別感謝技術(shù)總監(jiān)羅宏宇、技術(shù)經(jīng)理陸松林、劉韋宏、姚會航、張迪等。
感謝家人在工作和生活中對筆者的幫助和照顧。感謝父母,平時因工作原因很少回家看望,但他們一直在背后支持我、鼓勵我。感謝妻子為家庭和工作的付出。家人的陪伴與支持是筆者不斷學(xué)習(xí)、努力奮斗的強大后盾!
- 程序員修煉之道:從小工到專家
- 大規(guī)模數(shù)據(jù)分析和建模:基于Spark與R
- 云計算環(huán)境下的信息資源集成與服務(wù)
- Oracle RAC 11g實戰(zhàn)指南
- Live Longer with AI
- Creating Dynamic UIs with Android Fragments(Second Edition)
- Spark大數(shù)據(jù)編程實用教程
- Oracle PL/SQL實例精解(原書第5版)
- 編寫有效用例
- Hands-On System Programming with C++
- Microsoft Dynamics NAV 2015 Professional Reporting
- 智能與數(shù)據(jù)重構(gòu)世界
- 數(shù)據(jù)挖掘與機器學(xué)習(xí)-WEKA應(yīng)用技術(shù)與實踐(第二版)
- Kubernetes快速進階與實戰(zhàn)
- 區(qū)塊鏈應(yīng)用開發(fā)指南:業(yè)務(wù)場景剖析與實戰(zhàn)