《基于大數據的日志采集系統的設計與實現》11000字_第1頁
《基于大數據的日志采集系統的設計與實現》11000字_第2頁
《基于大數據的日志采集系統的設計與實現》11000字_第3頁
《基于大數據的日志采集系統的設計與實現》11000字_第4頁
《基于大數據的日志采集系統的設計與實現》11000字_第5頁
已閱讀5頁,還剩34頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第3頁基于大數據的日志采集系統的設計與實現目錄TOC\o"1-2"\h\u31441基于大數據的日志采集系統的設計與實現 15536摘要 2231001緒論 3159361.1選題的背景 3270971.2選題的意義 3226761.3研究現狀 337131.4系統設計思想及實施方案 587831.4章節安排 621076第6章介紹了該系統運行的情況及四個任務的展示圖表。 670142主要技術和工具簡介 788332.1HDFS 7238532.2Flume 762412.3Kafka 8213872.4Zookeeper 842042.5Hive 9124422.6本章小節 996783系統需求分析 10303123.1采集日志需求分析 1081013.2系統功能分析 1140313.3本章小節 1513274系統詳細設計 16307414.1采集日志功能設計 16308364.2數據清洗功能設計 17133324.3用戶行為分析設計 18131014.4數據展示功能設計 20100814.6本章小節 2081875系統具體實現 21311055.1系統開發環境 2166895.2系統數據庫表設計 2228385.3系統環境搭建 25287795.4系統功能實現 27178605.5本章小節 31276186實驗結果展示 3293426.1運行 32249516.2實驗結果展示 34325306.3本章小節 3619930結論 3715141參考文獻 38摘要伴隨著IT行業的飛速發展以及去中心化,使得各種行業都離不開互聯網了,與之帶來的是數據的規模越來越大,信息越來越多。隨著門檻的降低,電商企業也是發展的越來越多,面對大數據時代的來臨,電商行業對于用戶所產生的日志數據的需求也越來越大,從用戶日志中可以提取出價值高的用戶畫像信息對業務發展非常有幫助。對于如何達到上述效果,本文設計了一個基于大數據的日志采集系統,該系統實現了日志采集、數據清洗、用戶行為分析、數據展示等功能。日志采集主要通過Flume+KafKa+Flume管道將日志文件采集到HDFS;數據清洗則是在采集的過程中對一些格式不對,未采集完或空的數據進行過濾、清洗;用戶行為分析則通過對業務需求劃分然后通過SparkSQL進行計算分析;數據展示則是通過Sqoop傳輸數據到Mysql,然后通過可視化工具Superset展示在WEB端。日志采集系統的架構則是從兩點考慮,第一點是日志采集系統采用框架與工具的考慮,根據日志模型的特點與用戶行為分析來設計;第二點則是從日志采集系統的高可用及可靠性設計,從系統的整體流程來進行設計。關鍵詞:數據采集,HDFS,Mysql,Spark,Kafka。1緒論1.1選題的背景 隨著時代的發展,人們對互聯網行業的深入研究和其互聯網的飛速發展,使得互聯網技術在這幾年得到社會極大的普及,生活中吃穿住行都已經是互聯網中的主流的業務,使得互聯網已經稱為生活中必不可少的一部分了,其豐富的選擇,便利的服務,使人們的生活品質越來越高。由于IT技術的高速發展及去中心化,大量的數據產生,其規模越來越大。大量的數據和復雜的數據類型聚集在一起構造成的數據集,以及如何處理大量數據,體現了大數據時代的背景。大數據有四大特點:數據規模量大,產生速率快,各種各樣的的數據,及數據價值積少成多。就個人而言,本人的計算機容量已經達到1TB了,身邊的同學也大多都是這個量級左右,互聯網用戶越來越多,所產生的數據規模也會越來越大,所以建立一個日志采集系統勢在必行。1.2選題的意義單論日志的意義其實并不大,其中有價值的地方在于日志中能分析出來什么。對于電商來說,日志分析的作用主要體現在用戶行為分析。電商企業可以對用戶的各種行為進行分析,來優化自己業務的流程,使得能為用戶提供更好的體驗;也可以將用戶行為統計,分析出用戶的畫像,推薦喜愛的東西。這就是日志存在的意義。1.3研究現狀1.3.1Hadoop研究現狀日志采集系統最核心的技術是數據的采集與存儲,Hadoop框架負責其中存儲的部分。Hadoop來源于谷歌發行的三篇論文,后來加入了Apache基金會,其基礎架構為分布式。Hadoop在2.X版本后只由三部分構成,第一個是分布式文件系統HDFS,它為Hadoop提供了存儲數據的服務;第二個是分布式編輯模型MapReduce,Hadoop中的計算引擎;,第三個是資源調度管理器Yarn,對整個集群的資源作管理與調度。2004年Hadoop成為Apache基金會的一個子項目,在1.X版本的時候還沒有Yarn,當時MapReduce即負責計算,又負責資源調度管理,只有一個節點干這些任務的話,對服務器壓力太大,所以2.X版本的時候Hadoop增加了Yarn。Hadoop又分為三個發行版本,Apache是最為基礎的;Cloudera最為簡便,因為它里面集成了很多大數據的框架;讓人上手最快的是HortOnworks,它提供的文檔閱讀起來比較方便。由于大數據的熱門,早在2008年的時候國內就已經有許多大型互聯網公司研究大數據框架了,比如阿里在08年的時候就已經開始研究基于Hadoop技術的數據處理平臺“云梯“了,更有甚者,百度在12年的時候,其大數據集群節點已然超過2800個了,當然,對于早期的Hadoop框架來說,其內部也存在一些不合理的設計,而華為公司在處理這些設計時,給Hadoop提供了HA方案來解決高可用的問題。同時,在國外,著名的雅虎以及FaceBook等互聯網公司也很早就使用了Hadoop技術,并根據自身業務需求調優了Hadoop。Hadoop從1.X版本發展到3.X版本目前已經非常成熟,雖然還是有些小BUG,但是可以使用其他工具來解決,并且生態體系也比較完善。本課題從日志采集系統的實際情況和業務需求出發,研究一套適用于互聯網數據采集的一套日志采集系統并進行設計與實現。1.3.2日志收集方式研究現狀目前國內外公司都有比較成熟的日志采集系統或者使用主流開源的日志采集工具處理業務。本節分析研究了目前比較主流的一些日志采集系統與開源工具并進行了比較。其中,較為著名的有Chukwa、Scribe、Kafka這幾個框架與工具。 Chukwa與Hadoop相似,并且也是一個基于Apache的開源項目。Chukwa與Hadoop相似的地方在于,chukwa中有很多組件其實就是Hadoop的,比如HDFS,MaoReduce這兩個。但是在計算分析時,Chukwa與Hadoop不同的地方在于,Chukwa使用了很多模塊來進行計算分析,其中有三個是Chukwa自己的,比如Adaptor數據源,它的功能是給封裝文件,同時能夠使用Unix命令等;并且有一個能夠操控Adaptor的組件Agent,它可以啟動關閉Adaptor,并且記錄Adaptor的狀態信息,還有一個Collector可以合并多個數據源里的數據。Chukwa的架構圖如圖1-1所示:圖1-1Chukwa架構圖Scribe是一個開源的日志收集系統,是基于另一個框架Thrift來是實習的,所以其安裝較為繁瑣,但是容錯性高,Scribe由兩個ScribeServer組成,一個是central,另一個是local,central相當于父節點,而local相當于子節點,這種關系是對一個組內來說,在這個組內,子節點收集消息然后發給父節點。Scribe架構圖如圖1-2所示:圖1-2Scribe架構圖Kafka是一個由Scala語言編寫的開源項目,相當于一個分布式消息系統。它具有高吞吐、高性能的兩個特點并且可以與zookeeper搭配使用達到負載均衡的特點。Topic為消息主題,生產者生產的消息都要放在主題中,主題里有分區partition和副本兩個概念。消費者想要消費數據需要先訂閱消費哪個主題。1.4系統設計思想及實施方案本系統將采用Linux服務器,利用Hadoop框架、Flume框架、Kafka框架、Sqoop傳輸工具、Mysql數據庫、Hive數據庫、Spark分析引擎、Superset可視化工具、Zokeeper協調系統等眾多技術與工具對日志數據進行分析處理。以電商為例提供一系列指標,由電商工資人員對比查看,了解網站的發展情況,并結合數據分析處理后的結果,對網站做出進一步的改進。本系統總體由四部份組成:日志采集、數據清洗、用戶行為分析、數據展示。日志采集:負責將日志文件通過Flume+Kafka通道采集到HDFS上。數據清洗:負責將采集的日志文件內的臟數據與空數據清理。用戶行為分析:負責按照用戶行為分析將采集到的數據上傳到Hive數據庫中然后查詢完成需求。數據展示:將用戶行為分析的數據使用Sqoop導出到Mysql數據庫中,然后使用superset鏈接mysql數據源,從而以圖表的方式將數據展示在頁面中。1.4章節安排第1章介紹了日志采集系統的選題背景以及選題意義,然后介紹了Hadoop框架,國內外日志采集的方式,并分析了日志采集系統對現代互聯網發展的必要性。第2章介紹了日志采集系統所使用的框架以及工具,并分別介紹了這些框架及工具的原理及架構。第3章介紹了日志采集系統中的需求分析以及功能分析,其中在需求分析中介紹了日志及用戶行為分析。第4章介紹了日志采集系統的詳細設計以及模擬電商需求,將用戶行為分析劃分為四個任務。第5章介紹了系統的所需要的開發環境,對數據庫表進行設計,將系統所需要的環境搭建好,并實現了系統功能。第6章介紹了該系統運行的情況及四個任務的展示圖表。2主要技術和工具簡介2.1HDFSHDFS是一個分布式文件存儲系統,它由三部分組成:NameNode、DataNode、SecondaryNameNode。NameNode用來管理元數據及處理對數據的讀寫請求,DataNode負責存儲數據,響應NameNode的請求,SecondaryNameNode用于將NameNode的信息備份下來,其工作機制如圖2-1所示:圖2-1SecondaryNameNode工作機制圖2.2FlumeFlume是一個分布式日志采集系統。具有高可靠、高可用的特點。其架構圖如下:圖2-2Flume架構圖其中Source、Channel、Sink是Flume的三個組件。Source負責接受數據,Channel負責緩存數據、Sink負責傳輸數據。每個組件之間都是由Event進行傳輸的,如果拉取過程中失敗,那么這一次操作都不會執行。2.3KafkaKafka是一個居于分布式的消息隊列,具有發布/訂閱消息的功能。它有幾個核心概念:主題Topic、機器Broker、生產者Producer、消費者Consumer。Kafka架構圖如圖2-3所示:圖2-3Kafka架構圖其中topic中有分區和副本的概念,而一個topic中是以message為單位的。生產者必須指定主題,而消費者也必須指定主題才能進行生產與消費。2.4ZookeeperZookeeper是一個為應用提供協調服務的系統,是分布式的、開源的。在日志采集系統中,Kafka和Hadoop都是由Zookeeper進行節點管理和集群服務的。Zookeeper的架構圖如圖2.4所示:圖2-4Zookeeper架構圖如圖所示,Zookeeper集群中角色分為leader與follower,其中只要集群中存活一半以上的節點就可以運行下去。2.5HiveHive是一個類似Mysql的數據統計工具,它可以將結構化的數據映射稱為一張表,然后提供類似于sql的查詢功能。它的底層實現其實是將sql語句按照模板轉換成為一個mapreduce程序。2.6本章小節本章介紹了日志采集系統需要的框架與工具,并介紹了它們的原理及框架結構,如HDFS組件,Flume框架,Kafka框架,Zookeeper框架,Hive數據庫工具。通過介紹這些工具與框架,為下文整體系統的架構提供了理解的思路與架構方向。3系統需求分析3.1采集日志需求分析3.1.1日志簡介本文提到的日志是電商用戶行為日志。用戶在使用APP或瀏覽器訪問頁面時,會觸發頁面的埋點操作,這些埋點操作會將請求頭部的信息記錄。這些記錄的信息統計出來,就是日志信息。日志信息也有分類,一種是普通的頁面埋點日志,一種是啟動日志。普通埋點日志模型如圖3-1所示:啟動日志模型如圖3-2所示:3.1.2日志采集日志生產后存放的位置都是在服務器上,本系統模擬的日志信息也在服務器上,而在分布式架構上,電商網站會有很多的節點服務器,一般這些服務器會采用負載均衡的策略來減緩服務器的壓力。由于負載均衡的存在,后臺服務器會根據每臺服務器壓力情況選擇哪臺服務器處理請求,所以日志可能存在于每臺服務器上。在這種情況下,需要進行日志采集,將每臺服務器上的日志數據都采集到同一臺服務器上,這樣再做日志分析時,就不用繁瑣的從每臺服務器上分析完再做統計了。根據整個日志采集系統的工作流程來看,該系統應做到以下幾點:可靠性:在采集日志整個流程中,應使得數據不會丟失,在服務器節點出現問題后,會有備用的節點頂上,使其整個系統不會出現癱瘓等情況。擴展性:由于日志采集系統是基于分布式架構實現的,其目的是處理大規模的日志數據,當節假日的時候,服務器可能會出現壓力瓶頸時,此時可以橫向擴展節點,緩解服務器的壓力,高峰期過去時,再將節點取消即可。3.1.3用戶行為分析從電商用戶日志的需求進行分析來說行為分析是指從日志中提取出用戶操作,根據需求任務進行統計操作。但是日志結構大部分都屬于半結構化,無法直接使用,需要將日志內的數據轉換為結構化的,才能對日志數據進行統計分析。根據3.1.1節中電商日志的模型來說,其中頁面埋點日志中具有動作日志,這段日志中包含action_id動作id、item目標id、item_type目標類型、ts動作時間戳這些信息,這些信息在項目中是比較重要的,對這些信息進行聚類,聚類的內容是用戶的動作信息,然后將大量的用戶的動作信息存入數據庫中,篩選分類,可以得出用戶對電商網站的熱點聚集在哪一塊。電商網站可以通過這些數據進一步的分析出網站服務的優化。3.2系統功能分析電商網站可能每時每刻都會產生日志,對其日志信息的格式設置為json,這樣之后將數據導入至Hive中也比較方便。然后將日志采集到HDFS上,在采集的過程中對數據進行清洗,清洗后將數據導入到Spark-Hive中,根據需求和指標進行統計分析,之后將分析后的數據存入到Hive中,然后使用sqoop導出數據到Mysql,最后再用superser鏈接到mysql,然后用圖表的方式把數據展示在web端中。從上可得出日志采集系統可以分為四部分:采集日志、數據清洗、用戶行為分析、導出模塊。系統用例圖如圖3-3所示:圖3-3系統用例圖系統活動圖如圖3-4所示:圖3-4系統活動圖采集日志:利用Flume+Kafka管道把日志數據上傳到HDFS上,其活動圖如圖3-5所示:圖3-5日志收集與上傳活動圖數據清洗:使用自定義Flume攔截器對收集的日志進行清洗轉換。數據清洗轉換活動圖如圖3-6所示:圖3-6數據清洗與轉換活動圖用戶行為分析:使用SparkSql將清洗后的數據按照用戶行為劃分的任務進行分析計算。數據統計分析活動圖如圖3-7所示:圖3-7數據統計分析活動圖數據導出:將Hive中的數據導出到Mysql中。數據導出活動圖如圖3-8所示:圖3-8數據導出活動圖數據展現:用superset鏈接上mysql后,將表內的數據以圖表的形式展現出。數據展現活動圖如圖3-9所示:圖3-9數據展現活動圖3.3本章小節本章介紹了日志采集系統采集日志的格式及描述信息,然后對日志采集時所需要的需求作了描述,總結出日志采集系統在采集日志時需要可靠性、擴展性、規模性等特點。然后指出用戶行為分析需求的標準及需要分析的指標,再做這些操作時需要篩選出日志的哪些信息等,最后分析出日志采集系統所需要的功能模塊有哪些并畫出了流程圖及用例圖等。4系統詳細設計根據3.2節的功能分析,可以畫出系統架構設計圖,日志采集系統的設計架構圖如圖4-1所示。圖4-1系統架構設計圖其中logfile為模擬的日志文件,然后使用采集Flume進行采集,Kafka當緩存件,再由消費Flume消費到HDFS上,經過Spark-on-Hive統計分析按層生成數據庫表,然后將由Sqoop將業務需求導出到Mysql,最后再由數據可視化工具將數據展示在WEB頁面中。4.1采集日志功能設計采集日志功能使用Flume+Kafka管道來實現功能,此管道需要保持較高的吞吐量,所以需要并發Flume來實現,當有一臺Flume掛掉時,相同屬性的Flume會繼續完成工作。Kafka在整個系統中提供了緩存與分發的功能,Flume通過Kafka生產者的身份將數據發送到topic中,而Kafka的topic又提供了訂閱功能。假如在高峰時段,很有可能會出現消費者的消費速率遠遠低于生產者的生產速率,而這時,Kafka會將還沒有被消費的數據緩存到消息隊列中,等待消費者消費。根據以上說法,想要滿足系統的穩定性、高效性、容錯性,就需要采用分布式架構保證容錯性,將所有的服務器節點放在同一網絡下保證高效性,采用具有容災機制的框架,可以保證系統的穩定性。日志采集系統使用三臺服務器部署系統,三臺服務器上都要安裝Flume,因為要保持高速傳輸與穩定,所以采集Flume與消費Flume每個都至少要有兩臺或兩臺以上。生產Flume內部配置采用斷點續傳、多目錄的TailDirSource,Channel采用KafkaChannel,省去Sink,提高效率。KafkaChannel數據存儲在Kafka里面,而Kafka的數據又是存在磁盤中的,所以KafkaChannel其實也是存儲在磁盤中的。采集到Kafka的流程如圖4-2所示:圖4-2日志采集流程圖生產Flume先讀取到日志文件,然后傳入攔截器將不符合條件的數據全都篩選掉,之后將數據傳入kafkachannel中,KafkaChannel再將數據傳入到Kafka的topic中,然后再由Flume消費到HDFS上。Flume消費Kafka流程如圖4-3所示:圖4-3日志消費流程圖Flume消費的內部配置采用KafkaSource連接kafka進行主題消費,FlieChannel將文件緩存在本地以防數據丟失,HDFSSink,將文件傳到HDFS文件系統中。4.2數據清洗功能設計在采集到的日志數據中,可能會存在一些空數據或者臟數據。采集到的日志數據圖如圖4-4:圖4-4日志數據圖利用Flume中可以自定義攔截器這一點,在Flume采集中,將編寫的臟數據攔截器配置加上,在Channel后,Sink前把臟數據過濾掉,在Flume消費中,將編寫的修改時間攔截器配置加上,將時間錯誤的數據改正時間,達到數據清洗的。Flume內部攔截器結構如圖4-5所示。圖4-5Flume過濾器結構圖4.3用戶行為分析設計統計分析的功能由HiveonSpark實現,也可以由SparkSQL實現。其中SparkSQL更靈活,可以使用使用Spark中提供的API進行編程,寫HQL、DSL,SparkSQL中的DF、DS轉為RDD編程,而解析的時候,HQL、DSL會經過Spark的HQL解析器和優化器生成執行計劃,而HiveonSpark這種模式只能由Hive去作解析與優化的功能,這樣效率會低下。本系統將采用SparkSQL這種模式,對于日志數據來說,需要根據電商角度設置需要分析的內容。該模塊總體流程大致為設置需求、建表、查詢日志信息中的數據、將所需要的數據導入到表中。其中,日志信息模型如圖4-6所示。圖4-6日志信息模型圖公共信息里包含了地區編碼、手機品牌、渠道、手機型號、設備id、操作系統、會員id、app版本號等信息。事件主要記錄應用內一個具體的操作行為,如操作類型、操作對象、操作描述等信息。曝光類型主要記錄了用戶對商品或頁面的一種特殊操作,例如用戶停留在某個商品上,那么此時曝光的類型就是商品。頁面數據基于一個頁面的用戶訪問情況,包括訪問時間、停留時間、頁面路徑等信息。錯誤信息中記錄了哪個設備在什么時間啟動,然后啟動的時候發生了什么錯誤。根據電商需求,將用戶行為日志劃分為四個任務:每日活躍度、每日新增設備、訪客留存率、訪問次數各渠道占比。每日活躍度:從0點開始算起,到次日0點時,中間的訪問設備個數,其中相同的設備ID只算1次。在日志啟動表中,將設備ID統計,然后去重累加,即可得到每日活躍度。每日新增設備:日志信息中有啟動類型日志數據,其中有個is_new字段,當此字段的值為1時,即為新設備,為0時即為已經訪問過的設備,只需要統計日志啟動表中的is_new的值為1的字段,即可得知每日新增設備。最近連續三周活躍用戶數:從前兩個星期到這個星期中訪問過的用戶數,其中時間可以以當天減去21天來算,統計這21天中訪問過的用戶的id然后去重即可得到。訪問次數各渠道占比:統計每個訪問渠道的訪問次數,然后相加得到總的訪問次數,最后在拿訪問渠道的次數除上總的訪問次數即可得到訪問次數各渠道占比。4.4數據展示功能設計此部分的主要工作是利用Sqoop工具,連接到Hive與Mysql中,將用戶行為分析劃分的四個任務的數據從Hive導出到Mysql中。Hive中雖然也存在導出命令,但是其命令繁瑣,效率低下,假如需要導出較多張表就會很浪費時間,所以采用Sqoop導出數據既省時又省力。然后使用可視化工具Superset,在其里面設計數據源及表信息,然后用圖表的形式將數據展示出來即可。4.6本章小節本章主要對日志采集系統的具體設計進行了細致的劃分及具體內容的介紹,并畫出了系統架構圖。首先介紹了如果采集日志及消費日志到HDFS上,然后介紹了數據清洗用的自定義攔截器及時間攔截器,又將用戶行為分析分為四個分析需求、分別是每日活躍度、每日新增設備、訪客留存率、訪問次數各渠道占比。最后設計了使用工具完成數據展示的功能。5系統具體實現5.1系統開發環境系統自身使用三臺服務器進行部署,其中兩臺FlumeCollector節點,三臺服務器kafka集群,一臺服務器部署spark,一臺服務器部署hive硬件環境如表5-1所示。表5-1系統開發環境配置項配置內容虛擬機數量3臺虛擬機系統CentOS7.0CPU4核內存8GB硬盤50GBHadoop版本3.1.3Spark版本3.0.0Hive版本3.1.2Kafka版本2.4.1Mysql版本5.7.24Flume版本1.9.0Sqoop版本1.4.6表5-2服務器節點安裝服務表服務名稱子服務服務器sn101服務器sn102服務器sn103HDFSNameNode√DataNode√√√SecondaryNameNode√YarnNodeManager√√√Resourcemanager√ZookeeperZookeeperServer√√√Flume(采集日志)Flume√√KafkaKafka√√√Flume(消費Kafka)Flume√HiveHive√MySQLMySQL√SqoopSqoop√SparkSuperset√服務數總計10665.2系統數據庫表設計在該數據庫系統中,可以將日志文件分為兩種類型的表,一種啟動表,一種事件表,這些表中都包含了一些公共的信息。曝光日志表內記錄了事件類型為曝光的每次曝光類型、曝光對象等等信息。表5.3曝光日志表(dwd_display_log)字段名稱類型大小是否為空描述area_codevarchar10是地區編碼brandvarchar20是手機品牌channelvarchar20是渠道is_newint20是是否首次啟動modelvarchar20是手機型號mid_idint20是設備idosvarchar20是操作系統user_idint20是會員idversion_codevarchar10是app版本號during_timeint20是app版本號page_itemint20是目標idpage_item_typevarchar50是目標類型last_page_idint10是上頁類型page_idint10是頁面IDsource_typevarchar20是來源類型tsint20是app版本號display_typevarchar20是曝光類型itemint20是曝光對象iditem_typevarchar20是時間orderint20是曝光順序pos_idint20是曝光位置dtvarchar20是 啟動日志表里記錄了每次啟動的設備信息等,及廣告加載和用戶跳過廣告時間等信息。表5.4啟動日志表(dwd_start_log)字段名稱類型大小是否為空描述area_codevarchar10是地區編碼brandvarchar20是手機品牌channelvarchar20是渠道is_newint20是是否首次啟動modelvarchar20是手機型號mid_idint20是設備idosvarchar20是操作系統user_idint20是會員idversion_codevarchar10是app版本號entryvarchar50是icon手機圖標notice通知install安裝后啟動loading_timeint20是啟動加載時間open_ad_idvarchar20是廣告頁IDopen_ad_msint20是廣告總共播放時間open_ad_skip_msint20是用戶跳過廣告時點tsint20是時間dtvarchar20是 頁面日志表里記錄了設備每次訪問的頁面信息,及停留時間等。表5.5頁面日志表(dwd_page_log)字段名稱類型大小是否為空描述area_codevarchar10是地區編碼brandvarchar20是手機品牌channelvarchar20是渠道is_newint20是是否首次啟動modelvarchar20是手機型號mid_idint20是設備idosvarchar20是操作系統user_idint20是會員idversion_codevarchar10是app版本號during_timeint20是持續時間毫秒page_itemint20是目標idpage_item_typevarchar50是目標類型last_page_idint10是上頁類型page_idint10是頁面IDsource_typevarchar20是來源類型tsint20是dtvarchar20是 錯誤日志表里記錄了設備啟動的時候一些錯誤碼及錯誤信息等。表5.6錯誤日志表(dwd_error_log)字段名稱類型大小是否為空描述area_codevarchar10是地區編碼brandvarchar20是手機品牌channelvarchar20是渠道is_newint20是是否首次啟動modelvarchar20是手機型號mid_idint20是設備idosvarchar20是操作系統user_idint20是會員idversion_codevarchar10是app版本號page_itemint20是目標idpage_item_typevarchar50是目標類型last_page_idint10是上頁類型page_idint10是頁面IDsource_typevarchar20是來源類型entryvarchar50是icon手機圖標notice通知install安裝后啟動loading_timevarchar50是啟動加載時間open_ad_idint20是廣告頁IDopen_ad_msint20是廣告總共播放時間open_ad_skip_msint20是用戶跳過廣告時點actionsvarchar20是動作displaysvarchar20是曝光tsvarchar20是時間error_codevarchar20是錯誤碼msgvarchar20是錯誤信息dtvarchar20是 動作日志表里記錄了設備啟動后的一些動作信息,這些信息表明了設備在APP上在哪個頁面干了什么等信息。表5.7動作日志表(dwd_action_log)字段名稱類型大小是否為空描述area_codevarchar10是地區編碼brandvarchar20是手機品牌channelvarchar20是渠道is_newint20是是否首次啟動modelvarchar20是手機型號mid_idint20是設備idosvarchar20是操作系統user_idint20是會員idversion_codevarchar10是app版本號during_timeint20是持續時間毫秒page_itemint20是目標idpage_item_typevarchar50是目標類型last_page_idint10是上頁類型page_idint10是頁面IDsource_typevarchar20是來源類型action_idvarchar20是動作iditemint10是目標iditem_typevarchar20是目標類型tsint20是時間dtvarchar20是5.3系統環境搭建實現本系統,首先要安裝與配置相應的環境與配置,如Hadoop框架搭建、Kafka搭建、Flume搭建、Hive搭建、Sqoop搭建、Zookeeper搭建、Superset搭建等。下面為相應環境搭建給出具體的實現步驟:5.3.1Hadoop搭建日志采集系統是基于Hadoop框架來搭建的,所以要在服務器上配置Hadoop框架及其所需要的各種環境。在PC上安裝VM虛擬機軟件及服務器系統,并配置IP等相關配置。本系統采用的是CentOs7。在服務器上創建新用戶,不用root用戶是因為如果操作錯誤會不可逆。添加sn用戶,設置用戶密碼為sn,修改權限,使sn用戶具有使用sudo命令的權限。修改主機名進入到/etc/目錄下,修改network中hostname的值為sn101,然后重啟即可,其他節點修改為sn102、sn103。關閉防火墻,修改靜態Ip使用命令sudosystemctlstopfirewalld關閉防火墻,然后修改/etc/sysconfig/network-scripts/ifcfg-ens33中的配置信息,最后在/etc/hosts中映射其他主機的靜態IP即可。配置SSH免密登錄需要在每臺節點上都生產密鑰然后拷貝到其他節點上,除此之外,NameNode所在節點要單獨配置root用戶密鑰然后拷貝到其他節點上。Hadoop安裝下載hadoop安裝包并解壓安裝包到/opt/module下。修改核心配置文件core-site.xml。修改HDFS配置文件hdfs-site.xml。修改YARN配置文件yarn-site.xml。修改MapReduce配置文件mapred-site.xml。添加DateNode聯系其他節點信息workers。添加Hadoop的環境變量。將修改完成后的Hadoop分發給其他服務器節點,并將環境變量文件也分發出去。Hadoop啟動Hadoop第一次啟動前需要使用命令:hadoopnamenode-format格式化一次。然后使用start-all.sh命令啟動,之后用Jps查看是否全部啟動成功。在sn101上編寫群起hadoop腳本,命名為hd.sh。5.3.1Zookeeper搭建下載zookeeper安裝包并解壓安裝包到/opt/module下。配置服務器編號。修改配置文件zoo.cfg。將zookeeper目錄下的bin文件夾。分發zookeeper目錄及環境變量文件,并在每臺服務器節點上修改服務器編號。在sn101上編寫群起zookeeper腳本,命名為zk.sh。5.3.2Flume搭建下載flume安裝包并解壓安裝包到/opt/module下。修改配置文件flume-env.sh。配置環境變量。驗證是否安裝成功,命令為flume-ngversion,如果顯示版本信息即為安裝成功。分發flume目錄及環境變量文件。5.3.3Hive搭建下載hive安裝包并解壓安裝包到/opt/module下。修改配置文件hive-site.xml。將JDBC驅動放到./bin下。將./bin添加到系統環境變量中。啟動元數據服務。查看是否安裝成功,使用命令:hive就能驗證。5.3.3Sqoop搭建下載sqoop安裝包并解壓安裝包到/opt/module下。下載mysql驅動到sqoop目錄下的lib文件夾中。修改默認配置文件sqoop-env.sh。驗證sqoop是否配置正確,使用命令sqoophelp。5.4系統功能實現5.4.1采集日志功能實現采集日志功能需要用Flume+Kafka實現。首先需要編寫一個flume采集的配置文件去采集日志到kafka緩存中,配置如圖5-1所示:圖5-1采集Flume配置圖然后在編寫一個flume消費,把存在Kafka中的數據消費到HDFS上即可。同理也要編寫一個flume配置文件,配置如圖5-2所示:圖5-2消費Flume配置圖由于日志采集系統的日志文件均為隨機生成的模擬文件,只需要在flume中指定生成文件的位置,然后啟動flume采集與flume消費即可完成日志采集功能。為了方便功能的使用,需要在編寫兩個腳本來控制flume采集與消費的啟動、停止。5.4.2數據清洗功能實現數據清洗功能是有前后兩部分組成,第一部分是過濾掉空數據,不完整的數據,其具體的實現步驟如下:創建一個maven工程。把需要的依賴加載進去。繼承interpector類,并實現它的四個方法,其具體代碼在附錄中。打包,將jar包放在flume中的lib文件夾下。在配置文件中加載自定義攔截器。完成之后其采集到的數據從圖5-3變成了圖5-4。圖5-3未過濾之前的數據圖5-4過濾后的數據第二部分是將凌晨時采集到的錯誤時間數據改成,其實現步驟與第一部分相同。5.4.3用戶行為分析實現首先將導入進HDFS中的日志文件提取字段,然后導入到設計好的相應的事件表中。根據詳細設計中的四個任務的需求創建任務表,然后按照所需要的信息進行查詢,將查詢后的結果導入到任務表中即可。在IDEA中連接Hive數據庫后創建表,如圖5-5所示。圖5-5鏈接Hive數據庫然后新建一個Query查詢按照需求查詢即可。5.4.4數據展示功能實現首先使用sqoop將數據從hive中導入到mysql中,然后使用superset展示出來。先使用Superset配置數據源,如圖5-4所示。圖5-4配置superset數據源配置Table表,此處只配置一張表示例。如圖5-5所示圖5-5配置顯示table5.5本章小節本章主要描述了搭建日志采集系統中具體的實現過程。在創建系統之前需要先安裝所需要的軟件,并且搭建好系統所需要的實驗環境。然后對系統的數據庫表進行設計并展示表信息。之后對系統的采集日志功能、數據清洗功能、用戶行為分析功能、數據展示功能分別進行了實現。6實驗結果展示6.1運行根據上文對系統的設計與實現后,下面將對系統的運行做詳細的介紹:運行服務器,使用sn用戶,查看服務器運行程序情況。如圖6-1所示:圖6-1服務器運行程序從上圖來看,服務器運行了Spark、Yarn、Hive、HDFS、Zookepper、等程序,其中從三臺節點都有DataNode得知,當前運行的是Hadoop的分布式模式,同理,Zookepper也是。查看當前服務器安裝程序狀況,通過命令cd/opt/module進入目錄,然后通過ll查看當前目錄下的文件及文件夾,如圖6-2所示:圖6-2服務器安裝程序圖由上圖可知,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論