1.概述
本課程的視頻教程地址:《項目整體概述》
本節給大家分享的主題如下圖所示:
下面我開始為大家分享第二節的內容——《項目整體概述》,下面開始今天的分享內容。
2.內容
從本節開始,我們將進入到Hadoop項目的整體概述一節學習,本節課程為大家介紹的主要知識點有一下內容,如下圖所示:
下面,我們首先來看看項目的整體流程,其流程如下圖所示:
項目流程可以分為4個模塊,他們分別是數據收集,集群存儲,分析計算和結果處理。
下面我分別為大家講解這4個模塊的作用。 我們知道,在做統計時,數據源是前提,有了數據源我們才能在此基礎上做相應的計算和分析。 收集數據一般都有專門的集群去負責收集這方面的工作。
在完成收集工作后,我們需要將這些文件集中起來,這里存儲采用的是分布式文件系統(HDFS)。我們將收集的數據 按一定的規則分類,並存儲在指定的HDFS文件系統中。從收集到存儲,數據源的准備階段就算完成了。接着,我們可以對數據源進行相關指標的分析與計算,在Hadoop 2.x 版本后編程模型有了良好的拓展,除了支持MapReduce,還支持其以外的模型,如:Spark。另外,還有Hive,Pig,Tez 等相關技術,來輔助我們完成分析計算這塊,所以在分析,計算這塊技術選擇很多,本課程選用MapReduce和Hive組合來 完成相關工作,其它相關技術大家可以在課下對其做相應的補充學習。
完成分析計算后,我們會得到統計后的結果,這些結果是存放在HDFS文件系統上的,如何去處理這些結果,讓這些結果變得 可視化。這就涉及到最后一個模塊--結果處理。由於這些結果是存儲在HDFS文件系統中的,為了及時響應外界請求,我們需要將HDFS的數據導出到關系型數據庫(如:Mysql) 或非關系型數據庫(如:HBase)。在導入到關系型數據庫時,我們需要借助一個Hadoop組件--Sqoop,這是一款開源的工具, 主要用於在Hadoop與傳統的數據庫(如:Mysql)間進行數據的傳遞,可將一個關系型數據庫(如:Mysql)中的數據導入到 Hadoop的HDFS中,也可以將HDFS的數據導入到關系型數據庫。在HDFS與HBase之間進行數據傳遞時,我們可以直接使用 HBase提供的導入與導出工具,這些工具包含在HBase的JAR包中。他們使用MapReduce進行導入導出操作,可以將數據由 HBase導出到HDFS,或者是將HDFS上的數據導出到HBase。最后,我們將數據庫中的結果通過Thrift這樣的RPC協議,對外提供數據接口。
在項目流程中,我講過數據收集模塊,下面為大家詳細講解這些數據源的獲取方式。 如下圖所示:
數據源的產生包含:
1.Web日志(如Nginx,JBoss,WebLogic等一些Web容器記錄產生的日志信息)
2.SystemLog(系統日志),這部分日志包含服務端應用記錄的日志。
3.DB(存於數據庫中的數據)
在實際業務中,我們一般采用Flume NG集群來收集分發日志,它是一個高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸的系統, Flume支持在日志系統中定制各類數據發送方,用於收集數據;同時,Flume提供對數據進行簡單處理, 並寫到各種數據接受方(可定制)的能力,如收集Web日志和SystemLog日志,我們可以分別在Web日志節點和SystemLog節點部署Flume的Agent即可,而DB(如:存在於Mysql數據庫中的數據),我們可以使用ETL工程抽取清洗后,在由Agent代理發送到Flume,最后Flume將數據存儲到HDFS文件系統上。
關於Flume的集群的收集演示過程,大家可以參考視頻進行演示——《項目整體概述》
3.結束語
這就是本節的主要內容,主要就對Hadoop項目的整體流程進行概述,對后續學習Hadoop項目實戰做一個准備工作。
如果本教程能幫助到您,希望您能點擊進去觀看一下,謝謝您的支持!
轉載請注明出處,謝謝合作!
本課程的視頻教程地址:《項目整體概述》