官术网_书友最值得收藏!

前言

我寫本書的初衷是將自己在企業工作中應用的技術歸納總結,系統地將大數據處理相關技術融合在一起,給已經從事大數據相關技術研發工作的朋友,或是準備從其他行業轉行進入大數據領域學習相關技術的朋友提供一份參考資料。希望本書能夠幫助更多從事大數據相關工作的人,也希望通過本書結識更多熱愛大數據的朋友。

目前,大數據已不只停留在概念階段,而是在各領域成功落地,并取得了豐碩的成果。大數據已經滲透到生活中的各個方面,距離我們最近且與我們生活息息相關的大數據項目有交通大數據、醫療大數據、金融大數據、社交媒體大數據、互聯網大數據等。如此多的大數據項目能夠成功落地,關鍵原因在于數據來源的多樣化,數據量的爆發式增長,新興技術的快速發展,以及市場創新需求的不斷增多,這為各種大數據項目提供了龐大的數據源,通過多種技術的綜合應用,可不斷挖掘出大數據背后的社會價值和商業價值。

隨著開源社區的不斷發展,越來越多的優秀項目被開源,以處理各種大數據場景下的問題和挑戰。作為目前大數據生態系統內的早期開源項目,Hadoop在廉價機器上實現了分布式數據存儲和高性能分布式計算,大大降低了數據存儲和計算成本。Hadoop提供的分布式存儲系統HDFS、大數據集并行計算編程模型MapReduce、資源調度框架YARN已經被廣泛應用,為大數據生態系統的發展奠定了堅實的基礎。如今,Hadoop大數據生態圈發展已經非常全面,涉及領域眾多,在大數據處理系統中常用的技術框架包括數據采集、數據存儲、數據分析、數據挖掘、批處理、實時流計算、數據可視化、監控預警、信息安全等。下圖展示了大數據生態系統內比較流行并且已經在生產環境驗證過的開源技術。

(1)Spark

Spark是由加州大學伯克利分校AMP實驗室開源的分布式大規模數據處理通用引擎,具有高吞吐、低延時、通用易擴展、高容錯等特點。Spark內部提供了豐富的開發庫,集成了數據分析引擎Spark SQL、圖計算框架GraphX、機器學習庫MLlib、流計算引擎Spark Streaming。Spark在函數式編程語言Scala中實現,提供了豐富的開發API,支持Scala、Java、Python、R等多種開發語言。同時,它提供了多種運行模式,既可以采用獨立部署的方式運行,也可以依托Hadoop YARN、Apache Mesos等資源管理器調度任務運行。目前,Spark已經在金融、交通、醫療、氣象等多種領域中廣泛使用。

大數據生態系統中的開源技術

(2)Druid

Druid是由美國MetaMarkets公司創建并開源的分布式提供海量時序數據存儲、支持實時多維數據分析的OLAP系統,主要應用于廣告數據分析、網絡系統監控等場景。Druid具有高吞吐、易擴展、高容錯、低延遲、按時間序列存儲等特點。

(3)Flume

Flume是由Cloudera公司開發的分布式、高可用的日志收集系統,是Hadoop生態圈內的關鍵組件之一,目前已開源給Apache。Flume的原始版本為Flume-OG,經過對整體架構的重新設計,現已改名為Flume-NG。Flume發展到現在已經不局限于日志收集,還可以通過簡單的配置收集不同數據源的海量數據并將數據準確高效地傳輸到不同的中心存儲。目前Flume可對接的主流大數據框架有Hadoop、Kafka、ElasticSearch、Hive、HBase等。在使用Flume的過程中,通過配置文件就可以實現整個數據收集過程的負載均衡和故障轉移,而不需要修改Flume的任何代碼。得益于優秀的框架設計,Flume通過可擴展、插件化、組合式、高可用、高容錯的設計模式,為用戶提供了簡單、高效、準確的輕量化大數據采集工具。

(4)Kafka

Kafka是由LinkedIn開源的分布式消息隊列,能夠輕松實現高吞吐、可擴展、高可用,并且部署簡單快速、開發接口豐富。目前,各大互聯網公司已經在生產環境中廣泛使用,而且已經有很多分布式處理系統支持使用Kafka,比如Spark、Strom、Druid、Flume等。

(5)InfluxDB

InfluxDB是一款開源分布式時序數據庫,非常適合存儲監控系統收集的指標數據。時序數據庫顧名思義就是按照時間順序存儲指標數據,即監控系統的場景大部分是按照時間順序存儲各項指標數據,過期時間太長的指標可能將不會再關注,所以為了提高數據庫的存儲率,提高查詢性能,需要定期刪除過期指標。InfluxDB的諸多特性非常適合監控系統的使用場景。

本書將詳細介紹上述技術的原理,通過實踐演示每種技術的實際應用場景。希望通過理論與實踐相結合的方式使內容更通俗易懂,幫助讀者根據實際的業務場景選擇合適的技術方案,相信大數據在未來的發展中還會創造更多的價值。

內容概述

本書分三部分展開介紹:

第一部分(第1章)主要介紹了企業大數據系統的前期準備工作,包括如何構建企業大數據處理系統的軟件環境和集群環境。

第二部分(第2~7章)首先介紹了Spark的基本原理,Spark 2.0版本的Spark SQL、Structured Streaming原理和使用方法,以及Spark的多種優化方式;然后,介紹了Druid的基本原理、集群的搭建過程、數據攝入過程,以及在查詢過程中如何實現Druid查詢API;接著介紹了日志收集系統Flume的基本架構和關鍵組件,以及分層日志收集架構的設計與實踐;最后介紹了分布式消息隊列Kafka的基本架構和集群搭建過程,以及使用Java語言實現客戶端API的詳細過程。

第三部分(第8~9章)主要介紹了企業大數據處理的兩個實際應用案例,分別是基于Druid構建多維數據分析平臺和基于JMX指標的監控系統。

目標讀者

本書適合從事大數據及相關工作的工程師閱讀,也適合準備進入大數據領域的大數據愛好者學習、參考。

讀者反饋

本書是在業余時間完成的,由于水平有限,編寫時間倉促,書中可能會出現介紹不夠詳細或者有錯誤的地方,敬請讀者諒解。如果遇到任何問題或者尋求技術交流都可以通過如下聯系方式與筆者進行溝通。

大數據愛好者交流QQ群:124154694

個人郵箱:xiaoguanyu_java@163.com

致謝

感謝在本書的寫作過程中幫助過筆者的朋友、同事、老師,感謝你們一次又一次的幫助和支持!

感謝機械工業出版社楊福川老師,本書從2016年6月份開始籌劃,確定了基本的框架,雖然由于筆者個人原因導致寫作速度緩慢,但是楊老師一直積極推動本書的出版,并且不斷指導筆者寫作,感謝楊老師給予的理解、幫助與支持。感謝機械工業出版社編輯李藝老師,李藝老師用嚴謹的工作態度為本書做了專業的編輯工作,并且耐心指導筆者完成了本書的編寫工作。

感謝樂視智能中心大數據部的同事們,感謝他們在工作中幫助筆者分擔工作任務;感謝上級領導的耐心指導,使筆者能夠順利地完成工作任務并騰出時間進行寫作。在此特別感謝技術總監羅宏宇、技術經理陸松林、劉韋宏、姚會航、張迪等。

感謝家人在工作和生活中對筆者的幫助和照顧。感謝父母,平時因工作原因很少回家看望,但他們一直在背后支持我、鼓勵我。感謝妻子為家庭和工作的付出。家人的陪伴與支持是筆者不斷學習、努力奮斗的強大后盾!

主站蜘蛛池模板: 夏邑县| 宜黄县| 秦皇岛市| 长汀县| 亚东县| 桑日县| 万荣县| 镇江市| 南木林县| 冷水江市| 河北省| 紫金县| 大余县| 寿光市| 自治县| 金阳县| 临邑县| 息烽县| 益阳市| 奉新县| 安福县| 利川市| 乐东| 长白| 繁昌县| 兰西县| 锡林郭勒盟| 十堰市| 紫阳县| 开平市| 赤城县| 天峻县| 扶余县| 南江县| 南阳市| 邓州市| 林周县| 英超| 峨山| 日土县| 竹溪县|