- 企業(yè)級大數(shù)據(jù)項目實戰(zhàn):用戶搜索行為分析系統(tǒng)從0到1
- 張偉洋
- 2162字
- 2024-12-28 12:20:40
1.3 項目架構設計
本節(jié)對“用戶搜索行為分析系統(tǒng)”項目中所使用的大數(shù)據(jù)框架Hadoop、ZooKeeper、Kafka、Flume、HBase、Spark等進行簡要介紹,為后續(xù)的系統(tǒng)搭建打下理論基礎??蚣艿脑敿毥榻B讀者可查閱筆者的《Hadoop 3.x大數(shù)據(jù)開發(fā)實戰(zhàn)(視頻教學版)》一書。
Apache Hadoop是大數(shù)據(jù)開發(fā)所使用的一個核心框架,是一個允許使用簡單編程模型跨計算機集群分布式處理大型數(shù)據(jù)集的系統(tǒng)。使用Hadoop可以方便地管理分布式集群,將海量數(shù)據(jù)分布式地存儲在集群中,并使用分布式并行程序來處理這些數(shù)據(jù)。它被設計成從單個服務器擴展到數(shù)千臺計算機,每臺計算機都提供本地計算和存儲。Hadoop本身的設計目的是不依靠硬件來提供高可用性,而是在應用層檢測和處理故障。
隨著Hadoop生態(tài)系統(tǒng)的成長,出現(xiàn)了越來越多的新項目,這些項目有的需要依賴Hadoop,有的可以獨立運行,有的對Hadoop提供了很好的補充。
本書講解的“用戶搜索行為分析系統(tǒng)”項目的架構設計如圖1-3所示。

圖1-3 “用戶搜索行為分析系統(tǒng)”技術架構
1.數(shù)據(jù)來源層
用戶在Web網(wǎng)站和手機App中瀏覽相關信息,服務器端會生成大量的日志文件記錄用戶的瀏覽行為。日志文件屬于半結構化數(shù)據(jù),和普通純文本相比,半結構化數(shù)據(jù)具有一定的結構性,有基本固定的結構模式,例如日志文件、XML文檔、JSON文檔、Email等都屬于半結構化數(shù)據(jù)。
2.數(shù)據(jù)傳輸層
使用Flume+Kafka構建數(shù)據(jù)傳輸層。
Apache Flume是一個分布式的、可靠和易用的日志收集系統(tǒng),用于將大量日志數(shù)據(jù)從許多不同的源進行收集、聚合,最終移動到一個集中的數(shù)據(jù)中心進行存儲。Flume的使用不僅限于日志數(shù)據(jù)聚合,由于數(shù)據(jù)源是可定制的,因此Flume可以用于傳輸大量數(shù)據(jù),包括但不限于網(wǎng)絡流量數(shù)據(jù)、社交媒體生成的數(shù)據(jù)、電子郵件消息和幾乎所有可能的數(shù)據(jù)源。
Kafka是一個基于ZooKeeper的高吞吐量低延遲的分布式的發(fā)布與訂閱消息系統(tǒng),它可以實時處理大量消息數(shù)據(jù)以滿足各種需求。即便使用非常普通的硬件,Kafka每秒也可以處理數(shù)百萬條消息,其延遲最低只有幾毫秒。
為了使Flume收集的數(shù)據(jù)和下游系統(tǒng)之間解耦合,保證數(shù)據(jù)傳輸?shù)牡脱舆t,采用Kafka作為消息中間件進行日志的中轉。
3.數(shù)據(jù)存儲層
大數(shù)據(jù)項目使用HDFS、HBase、Hive和MySQL構成數(shù)據(jù)存儲層。
HDFS(Hadoop Distributed File System)是Hadoop項目的核心子項目,在大數(shù)據(jù)開發(fā)中通過分布式計算對海量數(shù)據(jù)進行存儲與管理。它基于流數(shù)據(jù)模式訪問和處理超大文件的需求而開發(fā),可以運行在廉價的商用服務器上,為海量數(shù)據(jù)提供了不懼故障的存儲方法,進而為超大數(shù)據(jù)集的應用處理帶來了很多便利。
HBase是一個分布式的、非關系型的列式數(shù)據(jù)庫,數(shù)據(jù)存儲于分布式文件系統(tǒng)HDFS中,并且使用ZooKeeper作為協(xié)調服務。HDFS為HBase提供了高可靠性的底層存儲支持,ZooKeeper則為HBase提供了穩(wěn)定的服務和失效恢復機制。
HBase的設計目的是處理非常龐大的表,甚至可以使用普通計算機處理超過10億行的、由數(shù)百萬列組成的表的數(shù)據(jù)。
Hive是一個基于Hadoop的數(shù)據(jù)倉庫架構,使用SQL語句讀、寫和管理大型分布式數(shù)據(jù)集。Hive可以將SQL語句轉換為MapReduce(或Apache Spark和Apache Tez)任務執(zhí)行,大大降低了Hadoop的使用門檻,減少了開發(fā)MapReduce程序的時間成本。
我們可以將Hive理解為一個客戶端工具,它提供了一種類SQL查詢語言,稱為HiveQL。這使得Hive十分適合數(shù)據(jù)倉庫的統(tǒng)計分析,能夠輕松使用HiveQL開啟數(shù)據(jù)倉庫任務,如提取/轉換/加載(ETL)、分析報告和數(shù)據(jù)分析。Hive不僅可以分析HDFS文件系統(tǒng)中的數(shù)據(jù),也可以分析其他存儲系統(tǒng)(例如HBase)中的數(shù)據(jù)。
MySQL是最好的關系數(shù)據(jù)庫管理系統(tǒng)應用軟件。本書使用MySQL存儲用戶行為數(shù)據(jù)的計算結果,便于后續(xù)通過Web應用等輕量級框架讀取結果進行用戶端展示。
4.數(shù)據(jù)計算層
數(shù)據(jù)計算層的核心是Spark計算引擎。
Spark是一個快速通用的集群計算系統(tǒng)。它提供了Java、Scala、Python和R的高級API,以及一個支持通用的執(zhí)行圖計算的優(yōu)化引擎。它還支持一組豐富的高級工具,包括使用SQL進行結構化數(shù)據(jù)處理的Spark SQL、用于機器學習的MLlib、用于圖處理的GraphX,以及用于實時流處理的Spark Streaming。
Spark的核心(Spark Core)是一個對由很多計算任務組成的、運行在多個工作機器或者一個計算機集群上的應用進行調度、分發(fā)以及監(jiān)控的計算引擎。在Spark Core的基礎上,Spark提供了一系列面向不同應用需求的組件,例如Spark SQL和Spark Streaming。
Spark SQL和Spark Streaming都屬于Spark系統(tǒng)的組件,它們都依賴于底層的Spark Core。Spark SQL可結合HBase進行數(shù)據(jù)的查詢與分析,Spark Streaming可以進行實時流數(shù)據(jù)的處理。這兩種不同的處理方式可以在同一應用中無縫使用,大大降低了開發(fā)和維護的人力成本。
5.服務層
使用JavaWeb構建系統(tǒng)頂層服務,方便用戶通過瀏覽器訪問系統(tǒng)、查看分析結果等。將數(shù)據(jù)計算層的分析結果存儲于關系數(shù)據(jù)庫MySQL中,JavaWeb程序只需讀取MySQL中的結果數(shù)據(jù)進行展示即可。
6.接口層
服務層使用JavaWeb獲取結果數(shù)據(jù)后,需要使用前端技術展示在瀏覽器的網(wǎng)頁中,便于用戶查看。若需要實時展示最新結果數(shù)據(jù),則需要使用WebSocket技術。WebSocket是基于TCP的一種新的網(wǎng)絡協(xié)議,它可以使客戶端和服務器之間的數(shù)據(jù)交換變得更加簡單,允許服務器端主動向客戶端推送數(shù)據(jù)。在WebSocket API中,瀏覽器和服務器只需要完成一次握手,兩者之間就可以直接創(chuàng)建持久性的連接,并進行雙向數(shù)據(jù)傳輸,從而實現(xiàn)數(shù)據(jù)的前端實時展示。
7.展示層
為了讓結果數(shù)據(jù)在瀏覽器網(wǎng)頁中的展示更加直觀、易于理解,往往需要使用圖表進行展示,例如柱形圖、餅形圖等。HTML5對圖表的支持非常友好,因此可以借助目前比較流行的HTML5圖表組件ECharts實現(xiàn)數(shù)據(jù)圖表化。
ECharts是一個使用JavaScript實現(xiàn)的開源可視化庫,可以流暢地運行在個人計算機(PC)和移動設備上,兼容當前絕大部分瀏覽器(IE9/10/11、Chrome、Firefox、Safari等),提供直觀、交互豐富、可高度個性化定制的數(shù)據(jù)可視化圖表。
- 企業(yè)數(shù)字化創(chuàng)新引擎:企業(yè)級PaaS平臺HZERO
- Mastering Ninject for Dependency Injection
- 新型數(shù)據(jù)庫系統(tǒng):原理、架構與實踐
- 企業(yè)大數(shù)據(jù)系統(tǒng)構建實戰(zhàn):技術、架構、實施與應用
- Python數(shù)據(jù)分析、挖掘與可視化從入門到精通
- Python醫(yī)學數(shù)據(jù)分析入門
- 數(shù)據(jù)庫技術及應用教程
- 深入淺出 Hyperscan:高性能正則表達式算法原理與設計
- 數(shù)據(jù)科學實戰(zhàn)指南
- INSTANT Android Fragmentation Management How-to
- The Natural Language Processing Workshop
- 數(shù)據(jù)應用工程:方法論與實踐
- 工業(yè)大數(shù)據(jù)分析實踐
- 實用數(shù)據(jù)結構基礎(第四版)
- SQL應用開發(fā)參考手冊