天天看點

大資料處理邏輯與關鍵技術(非原創)

文章大綱

一、大資料概念介紹

二、大資料處理邏輯

三、資料庫處理關鍵技術

四、資料相關從業者和角色

五、參考文章

大資料處理邏輯與關鍵技術(非原創)

一、大資料概念介紹

https://www.jianshu.com/p/5b488c39af80

二、大資料處理邏輯

大資料處理的資料級别通常在PB以上(PB是資料存儲容量的機關,它等于2的50次方個位元組,或者在數值上大約等于1000個TB)

大資料處理邏輯與關鍵技術(非原創)
大資料處理邏輯與關鍵技術(非原創)
大資料處理邏輯與關鍵技術(非原創)

三、資料庫處理關鍵技術

1. 資料采集主要技術

Sqoop

(發音:skup)作為一款開源的離線資料傳輸工具,主要用于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等。

2. 資料處理主要技術

MapReduce

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也是實作上層面向流處理、批處理類型應用架構的基礎。

Beam

Google開源的Beam在Flink基礎上更進了一步,不但希望統一批處理和流處理,而且希望統一大資料處理範式和标準。Apache Beam項目重點在于資料處理的的程式設計範式和接口定義,并不涉及具體執行引擎的實作。Apache Beam希望基于Beam開發的資料處理程式可以執行在任意的分布式計算引擎上。

Apache Beam主要由Beam SDK和Beam Runner組成,Beam SDK定義了開發分布式資料處理任務業務邏輯的API接口,生成的分布式資料處理任務Pipeline交給具體的Beam Runner執行引擎。Apache Flink

目前支援的API是由Java語言實作的,它支援的底層執行引擎包括Apache Flink、Apache Spark和Google Cloud Flatform。

3. 資料存儲主要技術

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中資料都是字元串,沒有類型。

4. 資料應用主要技術

資料有很多應用方式,如固定報表、即時分析、資料服務、資料分析、資料挖掘和機器學習等。下面說下即時分析Drill架構、資料分析R語言、機器學習TensorFlow架構。

Drill

Apache Drill是一個開源實時大資料分布式查詢引擎,目前已成為Apache的頂級項目。Drill開源版本的Google Dremel。Dremel是Google的“互動式”資料分析系統,可以組建成規模上千的叢集,處理PB級别的資料。

MapReduce處理資料一般在分鐘甚至小時級别,而Dremel将處理時間縮短至秒級,即Drill是對MapReduce的有力補充。Drill相容ANSI SQL文法作為接口,支援本地檔案、HDFS、Hive、HBase、MongoDb作為存儲的資料查詢。檔案格式支援Parquet、CSV、TSV以及Json這種無模式(schema-free)資料。所有這些資料都像傳統資料庫的表查詢一樣進行快速實時查詢。

R語言

R是一種開源的資料分析解決方案。R流行原因如下:

(1)R是自由軟體:完全免費、開源。可在官方網站及其鏡像中下載下傳任何有關的安裝程式、源代碼、程式包及其源代碼、文檔資料,标準的安裝檔案自身就帶有許多子產品和内嵌統計函數,安裝好後可以直接實作許多常用的統計功能。

(2)R是一種可程式設計的語言:作為一個開放的統計程式設計環境,R語言的文法通俗易懂,而且目前大多數新的統計方法和技術都可以在R中找到。

(3)R具有很強的互動性:除了圖形輸出在另外的視窗,它的熟入輸出都是在一個視窗進行的,輸入文法中如果有錯馬上會在視窗中給出提示,對以前輸入過的指令有記憶功能,可以随時再現、編輯、修改以滿足使用者的需要,輸出的圖形可以直接儲存為JPG、BMP、PNG等圖檔格式,還可以直接儲存為PDF檔案。此外,R語言和其它程式設計語言和資料庫直接有很好的接口。

TensorFlow

TensorFlow是一個非常靈活的架構,它能夠運作在個人電腦或伺服器的單個/多個cpu和GPU上,甚至是移動裝置上,它最早是為了研究機器學習和深度神經網絡而開發的,後來因為通用而開源。

TensorFlow是基于資料流圖的處理架構,TensorFlow節點表示數學運算,邊表示運算節點之間的資料互動。TensorFlow從字母意義上來講有兩層含義:一是Tensor代表的是節點之間傳遞的資料,通常這個資料

是一個多元度矩陣(multidimensional data arrays)或一維向量;二是Flow指的資料流,形象了解就是資料按照流的形式進入資料運算圖的各個節點。

四、資料相關從業者和角色

大資料處理邏輯與關鍵技術(非原創)
大資料處理邏輯與關鍵技術(非原創)
大資料處理邏輯與關鍵技術(非原創)

資料埋點

背景資料庫和日志檔案一般隻能滿足正常的統計分析,對于具體的産品和項目來說,一般還要根據項目的目标和分析需求進行針對性的“資料埋點”工作,所謂埋點:就是在額外的正常功能邏輯上添加針對性的邏輯統計,即期望的事件是否發生,發生後應該記錄那些資訊,比如使用者在目前頁面是否用滑鼠滾動頁面、有關的頁面區域是否曝光了、目前的使用者操作的的時間是多少、停留時長多少、這些都需要前端工程師進行針對性的埋點才能滿足有關的分析需求。

資料埋點工作一般由産品經理和分析師預先确定分析需求,然後由資料開發團隊對接前端和後端開發完成具體的埋點工作。

五、參考文章

    1. https://blog.csdn.net/caiexu/article/details/84847565
    2. https://www.douban.com/group/topic/109858772/
    3. https://blog.csdn.net/lmseo5hy/article/details/79542571

轉載于:https://www.cnblogs.com/WUXIAOCHANG/p/11027226.html

繼續閱讀