- Spark大數據分析實戰
- 張偉洋
- 773字
- 2021-03-26 22:18:40
2.1 大數據開發總體架構
在正式講解Spark之前,讀者首先需要了解大數據開發的總體架構,如圖2-1所示。

圖2-1 大數據開發總體架構
? 數據來源層
在大數據領域,數據的來源往往是關系型數據庫、日志文件(用戶在Web網站和手機App中瀏覽相關內容時,服務器端會生成大量的日志文件)、其他非結構化數據等。要想對這些大量的數據進行離線或實時分析,需要使用數據傳輸工具將其導入Hadoop平臺或其他大數據集群中。
? 數據傳輸層
數據傳輸工具常用的有Flume、Sqoop、Kafka。Flume是一個日志收集系統,用于將大量日志數據從許多不同的源進行收集、聚合,最終移動到一個集中的數據中心進行存儲;Sqoop主要用于將數據在關系型數據庫和Hadoop平臺之間進行相互轉移;Kafka是一個發布與訂閱消息系統,它可以實時處理大量消息數據以滿足各種需求,相當于數據中轉站。
? 數據存儲層
數據可以存儲于分布式文件系統HDFS中,也可以存儲于分布式數據庫HBase中,而HBase的底層實際上還是將數據存儲于HDFS中。此外,為了滿足對大量數據的快速檢索與統計,可以使用Elasticsearch作為全文檢索引擎。
? 資源管理層
YARN是大數據開發中常用的資源管理器,它是一個通用資源(內存、CPU)管理系統,不僅可以集成于Hadoop中,也可以集成于Spark等其他大數據框架中。
? 數據計算層
MapReduce是Hadoop的核心組成,可以結合Hive通過SQL的方式進行數據的離線計算,當然也可以單獨編寫MapReduce應用程序進行計算;Storm用于進行數據的實時計算,可以非常容易地實時處理無限的流數據;而Spark既可以做離線計算(Spark SQL),又可以做實時計算(Spark Streaming),它們底層都使用的是Spark的核心Spark Core。
? 任務調度層
Oozie是一個用于Hadoop平臺的工作流調度引擎,可以使用工作流的方式對編寫好的大數據任務進行調度。若任務不復雜,則可以使用Linux系統自帶的Crontab定時任務進行調度。
? 業務模型層
對大量數據的處理結果,最終需要通過可視化的方式進行展示,可以使用Java、PHP等處理業務邏輯,查詢結果數據庫,最終結合ECharts等前端可視化框架展示處理結果。
- Building Computer Vision Projects with OpenCV 4 and C++
- Python數據分析與挖掘實戰
- Mastering Ninject for Dependency Injection
- Architects of Intelligence
- MySQL 8.x從入門到精通(視頻教學版)
- The Game Jam Survival Guide
- 數據中心數字孿生應用實踐
- Visual FoxPro數據庫技術基礎
- Cognitive Computing with IBM Watson
- Oracle 11g數據庫管理員指南
- 代碼的未來
- Kafka權威指南(第2版)
- MySQL 8.0從入門到實戰
- Hive性能調優實戰
- 云原生數據庫:原理與實踐