官术网_书友最值得收藏!

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等前端可視化框架展示處理結果。

主站蜘蛛池模板: 云浮市| 大埔区| 如东县| 新密市| 隆安县| 屯昌县| 定安县| 措勤县| 西乌| 汨罗市| 城固县| 镶黄旗| 利辛县| 武城县| 镇安县| 罗定市| 交城县| 宣威市| 徐闻县| 西乌珠穆沁旗| 逊克县| 天气| 谢通门县| 泰兴市| 焉耆| 建瓯市| 霍邱县| 黄大仙区| 若尔盖县| 佛山市| 阜城县| 宁津县| 芒康县| 霍林郭勒市| 板桥市| 古丈县| 宁德市| 丽江市| 建平县| 东莞市| 双桥区|