這本書有8個章節(jié)伟恶,從基礎(chǔ)逐漸展開,但是書籍總共也只有236頁哼鬓,還包含了Hadoop监右、spark和Flink三個知識點。所以感覺講得可能不太會很深入异希。
這里畢竟是書籍的閱讀部分健盒,所以不管實用性強不強,書上說的這里都大概提一下称簿。
首先是第一章節(jié):
大數(shù)據(jù)技術(shù)概述
1. 什么是大數(shù)據(jù)扣癣?
簡單說就是海量、高增長率和多樣化的信息資產(chǎn)憨降。
2. 大數(shù)據(jù)平臺架構(gòu)是什么父虑?
這里講得是一般企業(yè)的大數(shù)據(jù)平臺的一個組成
一般都是5層,數(shù)據(jù)獲取授药、數(shù)據(jù)儲存士嚎、資源的調(diào)度管理呜魄、數(shù)據(jù)分析、數(shù)據(jù)服務(wù)與可視化
數(shù)據(jù)獲取:數(shù)據(jù)總體上可以分為結(jié)構(gòu)化和非結(jié)構(gòu)化莱衩;結(jié)構(gòu)化數(shù)據(jù)就可以簡單理解為行數(shù)據(jù)爵嗅,非結(jié)構(gòu)化數(shù)據(jù)就是視頻啊,圖片之類的笨蚁。
來源不同睹晒,格式不同,那么獲取的技術(shù)肯定也是不同的括细。一般用戶的點擊數(shù)據(jù)就直接使用瀏覽器探針册招;網(wǎng)頁數(shù)據(jù)用爬蟲;MySQL數(shù)據(jù)庫的binlog日志用canal組件勒极;服務(wù)器日志就用flume組件;數(shù)據(jù)獲取后為了方便應(yīng)用虑鼎,都存入kafka消息中間件辱匿。
數(shù)據(jù)存儲
數(shù)據(jù)存儲是大數(shù)據(jù)的基礎(chǔ),但是發(fā)展卻沒有CPU和內(nèi)存快炫彩,這就導(dǎo)致了硬盤儲存的速度不夠匾七,所以大數(shù)據(jù)平臺的很多調(diào)優(yōu)都是集中在磁盤I/O的調(diào)優(yōu)。這里舉個例子江兢,一個1TB的硬盤昨忆,傳輸速度是100M/s,那么需要2.5小時才可以傳輸完杉允。但是如果將硬盤分散到100個小硬盤里面儲存邑贴,并行讀取數(shù)據(jù)就可以在2分鐘讀完。這就涉及到了Hadoop的分布式文件系統(tǒng)HDFS和分布式列式數(shù)據(jù)庫HBase叔磷,后面會提及拢驾。
數(shù)據(jù)處理
大數(shù)據(jù)處理按執(zhí)行時間的跨度分為離線處理和實時處理。
離線處理就是批處理改基,時間跨度基本上是幾分鐘到數(shù)個小時之間繁疤。比如廣電計算收視率計算。早期的離線處理用的是MapReduce秕狰,缺陷就是編程復(fù)雜稠腊,速度慢。后來出現(xiàn)了Spark內(nèi)存計算框架和Flink實時計算框架鸣哀,就將其取代了架忌。這兩個框架在離線和實時處理上都有所應(yīng)用。離線上用得是spark core和Flink Dataset诺舔。
實時處理就是流處理鳖昌,處理時長就在幾秒以內(nèi)备畦,應(yīng)用的非常廣泛當(dāng)前比較流行的是Spark Streaming和Flink datastreaming。后面會細說许昨。
交互式分析 (數(shù)據(jù)處理2)
這個更像是交互式查詢而不是分析懂盐。在完成離線或?qū)崟r分析之后,需要根據(jù)不同的條件進行多維分析查詢糕档。像實時報表分析莉恼、實時大屏等等。
傳統(tǒng)的數(shù)據(jù)庫查詢速那,用的多是MySQL俐银、Oracle等,但是隨著數(shù)據(jù)量的增加端仰,這倆已經(jīng)不夠了捶惜。交互式查詢也采用了分布式技術(shù)。
機器學(xué)習(xí)和數(shù)據(jù)挖掘(數(shù)據(jù)分析3)
大數(shù)據(jù)開發(fā)有時也是會需要用到機器學(xué)習(xí)庫的荔烧,spark中的spark ml可以直接調(diào)用吱七,也可以用它做數(shù)據(jù)挖掘。
資源管理
本質(zhì)就是資源的統(tǒng)一管理和分配鹤竭。大數(shù)據(jù)場景下需要用到很多的框架踊餐,他們在使用時會出現(xiàn)干擾,這個時候就得有yarn這種通用的資源管理系統(tǒng)臀稚。
3. 大數(shù)據(jù)工程師的技能樹
主流開發(fā)語言是Java吝岭,Python主要就是用在業(yè)務(wù)數(shù)據(jù)的挖掘和分析上。
大數(shù)據(jù)平臺構(gòu)建也是一個重要能力吧寺,大數(shù)據(jù)平臺一般指Hadoop集群窜管,至少得會掌握Zookeeper分布式協(xié)調(diào)服務(wù)、HDFS分布式儲存系統(tǒng)撮执、YARN資源管理系統(tǒng)微峰。
大數(shù)據(jù)的采集:數(shù)據(jù)一般有兩種,一是數(shù)據(jù)庫抒钱,二是日志數(shù)據(jù)蜓肆。前者使用Sqoop、canal來完成谋币,后者使用flume來完成仗扬。
大數(shù)據(jù)的儲存與交換:HDFS在這方面其實優(yōu)勢不大,需要HBase來幫助蕾额,也經(jīng)常需要Kafka消息隊列來進行實時的消息中轉(zhuǎn)服務(wù)早芭。
大數(shù)據(jù)的離線和實時計算:離線計算需要掌握的技術(shù)有Hive、Spark Core诅蝶、Spark SQL退个、Flink DataSet募壕;實時計算需要掌握的技術(shù)有Spark Streaming和Flink DataStream。
4. 大數(shù)據(jù)項目需求分析與設(shè)計
4.1 需求項目分析
大數(shù)據(jù)的項目需求以數(shù)據(jù)為中心语盈,大體會分為以下幾個階段:場景舱馅、概念、細節(jié)和界面的需求分析刀荒。
以新聞大數(shù)據(jù)實時分析案例來看代嗤,具體需求如下:
- 采集新聞網(wǎng)站用戶的瀏覽信息
- 統(tǒng)計排名前十的新聞話題
- 分析每天哪些時段的瀏覽新聞量最高
- 分析每日新聞總量
上面的四個階段其實寫得有點復(fù)雜,實際操作時我們需要知道缠借,場景就是要我們明白系統(tǒng)的組織形式和大概功能是什么干毅;概念就是利于用戶的日志信息來分析相應(yīng)的需求結(jié)果;細節(jié)分析就是具體怎么做泼返;界面分析就是最后的展示環(huán)節(jié)了硝逢。
我們的整個系統(tǒng)會包含數(shù)據(jù)的采集、存儲绅喉、過濾清洗趴捅、統(tǒng)計分析和可視化
4.2 系統(tǒng)架構(gòu)設(shè)計
一般情況下完整的大數(shù)據(jù)平臺架構(gòu)包含數(shù)據(jù)獲取、數(shù)據(jù)存儲霹疫、資源管理、數(shù)據(jù)處理综芥、交互式分析丽蝎、機器學(xué)習(xí)與數(shù)據(jù)挖掘和數(shù)據(jù)服務(wù)與可視化。但具體的分析還得看需求膀藐,比如這里明顯就是不需要機器學(xué)習(xí)部分的屠阻,大體架構(gòu)如下:
我將其分為5層:
- 采集層:數(shù)據(jù)來源一般有2個。對于日志文件使用Flume额各,對于關(guān)系型數(shù)據(jù)庫用Sqoop国觉。
- 存儲層:需要用到Kafka的消息隊列、MySQL虾啦、HBase和HDFS麻诀。
- 計算層:這里要用到Flink(實時計算)、Spark(內(nèi)存計算)傲醉、MapReduce(離線計算)和Hive(數(shù)據(jù)倉庫)這里需要yarn來進行資源調(diào)度蝇闭。
以上這幾步還要用zookeeper來進行分布式協(xié)調(diào)服務(wù),到后面服務(wù)層就需要統(tǒng)一一下訪問的接口(Java/Scala API) - 服務(wù)層:查詢服務(wù)接口(HTTP+JSON)硬毕,處理流程呻引,查詢緩存(Redis)
- 應(yīng)用層:HUE、達芬奇吐咳、H5+Echarts(可視化)
以上步驟所使用的開發(fā)工具是IDEA Maven
4.3離線和實時計算數(shù)據(jù)流程設(shè)計
離線:用Flume采集日志服務(wù)器中的數(shù)據(jù)逻悠,然后寫入HBase數(shù)據(jù)庫元践,接著通過Hive和HBase集成對數(shù)據(jù)進行離線分析,并通過Sqoop通過離線結(jié)果導(dǎo)入MySQL數(shù)據(jù)庫童谒,最后應(yīng)用層讀取MySQL數(shù)據(jù)實現(xiàn)大屏展示单旁。
實時:同樣也是Flume采集日志數(shù)據(jù),然后寫入Kafka消息隊列惠啄,接著使用spark streaming或Flink DataStream來對數(shù)據(jù)進行實時分析慎恒,分析結(jié)果放入MySQL,然后大屏展示撵渡。
以上就是書籍1的第一章大數(shù)據(jù)技術(shù)概述