大数据处理流程
大數據處理流程
1. 數據處理流程
網站流量日志數據分析是一個純粹的數據分析項目,其整體流程基本上就是依據數據的處理流程進行。有以下幾個大的步驟:
1.1 數據采集
????????數據采集概念,目前行業會有兩種解釋:一是數據從無到有的過程(web服務器打印的日志、自定義采集的日志等)叫做數據采集;另一方面也有把通過使用Flume等工具把數據采集到指定位置的這個過程叫做數據采集。
關于具體含義要結合語境具體分析,明白語境中具體含義即可。
1.2 數據預處理
????????通過mapreduce程序對采集到的原始日志數據進行預處理,比如清洗,格式整理,濾除臟數據等,并且梳理成點擊流模型數據。
1.3 數據入庫
????????將預處理之后的數據導入到HIVE倉庫中相應的庫和表中。
1.4 數據分析
????????項目的核心內容,即根據需求開發ETL分析語句,得出各種統計結果。
1.5 數據展現
????????將分析所得數據進行數據可視化,一般通過圖表進行展示。
擴展:
1、數據處理主要技術
????????Sqoop:作為一款開源的離線數據傳輸工具,主要用于Hadoop(Hive) 與傳統數據庫(MySql,PostgreSQL)間的數據傳遞。它可以將一個關系數據庫中數據導入Hadoop的HDFS中,也可以將HDFS中的數據導入關系型數據庫中。
????????Flume:實時數據采集的一個開源框架,它是Cloudera提供的一個高可用用的、高可靠、分布式的海量日志采集、聚合和傳輸的系統。目前已經是Apache的頂級子項目。使用Flume可以收集諸如日志、時間等數據并將這些數據集中存儲起來供下游使用(尤其是數據流框架,例如Storm)。和Flume類似的另一個框架是Scribe(FaceBook開源的日志收集系統,它為日志的分布式收集、統一處理提供一個可擴展的、高容錯的簡單方案)
????????Kafka:通常來說Flume采集數據的速度和下游處理的速度通常不同步,因此實時平臺架構都會用一個消息中間件來緩沖,而這方面最為流行和應用最為廣泛的無疑是Kafka。它是由LinkedIn開發的一個分布式消息系統,以其可以水平擴展和高吞吐率而被廣泛使用。目前主流的開源分布式處理系統(如Storm和Spark等)都支持與Kafka 集成。Kafka是一個基于分布式的消息發布-訂閱系統,特點是速度快、可擴展且持久。與其他消息發布-訂閱系統類似,Kafka可在主題中保存消息的信息。生產者向主題寫入數據,消費者從主題中讀取數據。作為一個分布式的、分區的、低延遲的、冗余的日志提交服務。和Kafka類似消息中間件開源產品還包括RabbiMQ、ActiveMQ、ZeroMQ等。
????????MapReduce是Google公司的核心計算模型,它將運行于大規模集群上的復雜并行計算過程高度抽象為兩個函數:map和reduce。MapReduce最偉大之處在于其將處理大數據的能力賦予了普通開發人員,以至于普通開發人員即使不會任何的分布式編程知識,也能將自己的程序運行在分布式系統上處理海量數據。
????????Hive:MapReduce將處理大數據的能力賦予了普通開發人員,而Hive進一步將處理和分析大數據的能力賦予了實際的數據使用人員(數據開發工程師、數據分析師、算法工程師、和業務分析人員)。Hive是由Facebook開發并貢獻給Hadoop開源社區的,是一個建立在Hadoop體系結構上的一層SQL抽象。Hive提供了一些對Hadoop文件中數據集進行處理、查詢、分析的工具。它支持類似于傳統RDBMS的SQL語言的查詢語言,一幫助那些熟悉SQL的用戶處理和查詢Hodoop在的數據,該查詢語言稱為Hive SQL。Hive SQL實際上先被SQL解析器解析,然后被Hive框架解析成一個MapReduce可執行計劃,并按照該計劃生產MapReduce任務后交給Hadoop集群處理。
????????Spark:盡管MapReduce和Hive能完成海量數據的大多數批處理工作,并且在打數據時代稱為企業大數據處理的首選技術,但是其數據查詢的延遲一直被詬病,而且也非常不適合迭代計算和DAG(有限無環圖)計算。由于Spark具有可伸縮、基于內存計算能特點,且可以直接讀寫Hadoop上任何格式的數據,較好地滿足了數據即時查詢和迭代分析的需求,因此變得越來越流行。Spark是UC Berkeley AMP Lab(加州大學伯克利分校的 AMP實驗室)所開源的類Hadoop MapReduce的通用并行框架,它擁有Hadoop MapReduce所具有的優點,但不同MapReduce的是,Job中間輸出結果可以保存在內存中,從而不需要再讀寫HDFS ,因此能更好適用于數據挖掘和機器學習等需要迭代的MapReduce算法。Spark也提供類Live的SQL接口,即Spark SQL,來方便數據人員處理和分析數據。Spark還有用于處理實時數據的流計算框架Spark Streaming,其基本原理是將實時流數據分成小的時間片段(秒或幾百毫秒),以類似Spark離線批處理的方式來處理這小部分數據。
????????Storm:MapReduce、Hive和Spark是離線和準實時數據處理的主要工具,而Storm是實時處理數據的。Storm是Twitter開源的一個類似于Hadoop的實時數據處理框架。Storm對于實時計算的意義相當于Hadoop對于批處理的意義。Hadoop提供了Map和Reduce原語,使對數據進行批處理變得非常簡單和優美。同樣,Storm也對數據的實時計算提供了簡單的Spout和Bolt原語。Storm集群表面上和Hadoop集群非常像,但是在Hadoop上面運行的是MapReduce的Job,而在Storm上面運行的是Topology(拓撲)。Storm拓撲任務和Hadoop MapReduce任務一個非常關鍵的區別在于:1個MapReduce Job最終會結束,而1一個Topology永遠運行(除非顯示的殺掉它,),所以實際上Storm等實時任務的資源使用相比離線MapReduce任務等要大很多,因為離線任務運行完就釋放掉所使用的計算、內存等資源,而Storm等實時任務必須一直占有直到被顯式的殺掉。Storm具有低延遲、分布式、可擴展、高容錯等特性,可以保證消息不丟失,目前Storm, 類Storm或基于Storm抽象的框架技術是實時處理、流處理領域主要采用的技術。
????????Flink:在數據處理領域,批處理任務和實時流計算任務一般被認為是兩種不同的任務,一個數據項目一般會被設計為只能處理其中一種任務,例如Storm只支持流處理任務,而MapReduce, Hive只支持批處理任務。Apache Flink是一個同時面向分布式實時流處理和批量數據處理的開源數據平臺,它能基于同一個Flink運行時(Flink Runtime),提供支持流處理和批處理兩種類型應用的功能。Flink在實現流處理和批處理時,與傳統的一些方案完全不同,它從另一個視角看待流處理和批處理,將二者統一起來。Flink完全支持流處理,批處理被作為一種特殊的流處理,只是它的數據流被定義為有界的而已。基于同一個Flink運行時,Flink分別提供了流處理和批處理API,而這兩種API也是實現上層面向流處理、批處理類型應用框架的基礎。
2、數據存儲主要技術
????????HDFS:Hadoop Distributed File System,簡稱FDFS,是一個分布式文件系統。它有一定高度的容錯性和高吞吐量的數據訪問,非常適合大規模數據集上的應用。HDFS提供了一個高容錯性和高吞吐量的海量數據存儲解決方案。在Hadoop的整個架構中,HDFS在MapReduce任務處理過程在中提供了對文件操作的和存儲的的支持,MapReduce在HDFS基礎上實現了任務的分發、跟蹤和執行等工作,并收集結果,兩者相互作用,共同完成了Hadoop分布式集群的主要任務。
????????HBase:HBase是一種構建在HDFS之上的分布式、面向列族的存儲系統。在需要實時讀寫并隨機訪問超大規模數據集等場景下,HBase目前是市場上主流的技術選擇。
HBase技術來源于Google論文《Bigtable :一個結構化數據的分布式存儲系統》。如同Bigtable利用了Google File System提供的分布式數據存儲方式一樣,HBase在HDFS之上提供了類似于Bigtable的能力。
????????HBase解決了傳遞數據庫的單點性能極限。實際上,傳統的數據庫解決方案,尤其是關系型數據庫也可以通過復制和分區的方法來提高單點性能極限,但這些都是后知后覺的,安裝和維護都非常復雜。
而HBase從另一個角度處理伸縮性的問題,即通過線性方式從下到上增加節點來進行擴展。
?????????????HBase 不是關系型數據庫,也不支持SQL,它的特性如下:
1、大:一個表可以有上億上,上百萬列。
2、面向列:面向列表(簇)的存儲和權限控制,列(簇)獨立檢索。
3、稀疏:為空(null)的列不占用存儲空間,因此表可以設計的非常稀疏。
4、無模式::每一行都有一個可以排序的主鍵和任意多的列。列可以根據需求動態增加,同一張表中不同的行可以有截然不同的列。
5、數據多版本:每個單元的數據可以有多個版本,默認情況下,版本號字段分開,它是單元格插入時的時間戳。
6、數據類型單一:HBase中數據都是字符串,沒有類型。
總結
- 上一篇: 微服务负载均衡实现高可用_使用负载平衡实
- 下一篇: [html] 实现一个居中半透明的模态