大數據開發實戰:數據流圖及相關數據技術

  1、大數據流程圖

    

?

  2、大數據各個環節主要技術

    

  2.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等。

?

    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。

?

  2.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中數據都是字符串,沒有類型。

        

?  2.3、數據應用主要技術

    數據有很多應用方式,如固定報表、即時分析、數據服務、數據分析、數據挖掘和機器學習等。下面說下即時分析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指的數據流,形象理解就是數據按照流的形式進入數據運算圖的各個節點。

?

  3、數據相關從業者和角色

    

    

    

    

?

  4、數據埋點

    后臺數據庫和日志文件一般只能滿足常規的統計分析,對于具體的產品和項目來說,一般還要根據項目的目標和分析需求進行針對性的“數據埋點”工作,所謂埋點:就是在額外的正常功能邏輯上添加針對性的邏輯統計,即期望的

  事件是否發生,發生后應該記錄那些信息,比如用戶在當前頁面是否用鼠標滾動頁面、有關的頁面區域是否曝光了、當前的用戶操作的的時間是多少、停留時長多少、這些都需要前端工程師進行針對性的埋點才能滿足有關的分析需求。

    數據埋點工作一般由產品經理和分析師預先確定分析需求,然后由數據開發團隊對接前端和后端開發完成具體的埋點工作。

?

  參考資料:《離線和實時大數據開發實戰》

轉載于:https://www.cnblogs.com/shaosks/p/9431040.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253887.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253887.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253887.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

oracle 中時間類型 date 與 long 互轉

我們在保存時間到數據庫時,有時候會保存long型的數據,固定長度是13位,是用當前時間減去1970-01-01,再換算成毫秒得到的結果。 但是要考慮到時區問題中國的時區時8區所以時間要加上8小時 oracle中的實現方式: ---------…

Linux對包管理闡述

Centos/Redhat/Fedora的軟件包,都是rpm后綴的文件。包管理器rpm(Redhat packages manager) linux的哲學思想是簡單命令解決復雜任務,因此每個軟件的功能較單一,所以各種包之間有著復雜的依賴關系,為了解決這種可以使用前端工具&am…

跨時鐘域電路設計——亞穩態及雙鎖存器

一、同步電路 定義:電路中所有受時鐘控制的單元,全部由一個統一的時鐘控制。 優點:在同步設計中,EDA工具可以保證電路系統的時序收斂,避免電路設計中的競爭冒險。 缺點:時鐘樹綜合需要加入大量延遲單元&…

linux setsockopt詳解

1.closesocket(一般不會立即關閉而經歷TIME_WAIT的過程)后想繼續重用該socket: BOOL bReuseaddrTRUE; setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL)); 2. 如果要已經處于連接狀態的soket在調用closes…

[TOOLS] 移動端調試進行時 - whistle

1、本地安裝、啟動whistle 安裝實操請查看官方文檔不贅述 復制代碼 2、手機設置代理 實操請查看官方文檔 !!!注意:代理ip填寫whistle右上角online選項中的ip 復制代碼 3、whistle上設置對應rules、weinre whistle設置代理(!!!注意支持tunnel協議): rules…

函數動態參數實現format

變量賦值一種是字符串格式化,一種是通過format的方式 1.字符串格式化 s"i am %s,age %d"%(Jasper,23)print(s)打印輸出:i am Jasper,age 232.format格式化 s"i am {name},age {age}".format(namejasper,age23)print(s)或 s2"i …

跨時鐘域電路設計——單bit信號

前面提到了簡單的雙電平鎖存器,下面是一些單bit同步電路。 一、慢時鐘域向快時鐘域 邊沿檢測同步器 將慢時鐘域的脈沖搬移并縮小為快時鐘域的脈沖。 既可以檢測上升沿,也可以檢測下降沿。 如上圖,慢時鐘下一個有效脈沖的最短周期為慢時鐘的…

數據同步 rsync+notify架構

rsync 同步命令,非常好用 notify是監控本地文件的變化的 、安裝配置 1. 安裝rsync,inotify-tools sudo apt-get install rsync inotify-tools 2. 拷貝rsync配置文件 mkdir /etc/rsync cp /usr/share/doc/rsync/examples/rsyncd.conf /etc/rsync/ 3. 服…

OC_KVC與KVO簡單介紹

KVC KVC概述 KVC 即 Key-value coding 鍵值編碼,是指iOS的開發中,可以允許開發者通過Key名直接訪問對象的屬性,或者給對象的屬性賦值。 KVC案例 interface Person : NSObjectproperty (nonatomic,assign) int age; property (nonatomic,copy)…

C語言100例01 PHP版(練習)

題目:有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少? 程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列后再去 掉不滿足條件的排列。 代碼: 1 for($i1;$i&l…

嵌入式根文件系統制作

1:文件系統分類: 基于flash的文件系統:flash有兩種,一種是NOR,另一種NAND。NOR型 FLASH主要用于存放程序。NAND型 FLASH主要用于存放數據。NOR的特點是可在芯片內執行。這樣應用程序可以直接在flash內存內運行,不必再把代碼讀到…

跨時鐘域電路設計——結繩法

信號從快時鐘域到慢時鐘域過渡時,慢時鐘可能無法對快時鐘變化太快的信號進行采樣。 之前的同步器法對兩個時鐘間的關系有要求,結繩法適用于任何時鐘域之間的過渡。 結繩法的原理是將快時鐘信號的脈沖周期延長,等到慢時鐘周期采樣后再“解繩”…

我之理解---計時器setTimeout 和clearTimeout

今天在寫個圖片切換的問題 有動畫滯后的問題,才動手去查setTimeout 和clearTimeout。之前寫的圖片播放器也有類似的問題,有自動start按鈕 和stop按鈕, 其他都正常,問題出在每次多次快速的點擊start按鈕時,圖片播放的速…

002服務提供者Eureka

1、POM配置 和普通Spring Boot工程相比&#xff0c;僅僅添加了Eureka、Spring Boot Starter Actuator依賴和Spring Cloud依賴管理 <dependencies><!--添加Eureka Server依賴--><dependency><groupId>org.springframework.cloud</groupId><art…

使用Busybox構造cramfs根文件系統

使用Busybox構造cramfs根文件系統 11.1、下載Busybox&#xff0c;如果系統中沒有mkcramfs工具則還要下載mkcramfs壓縮工具。本文件系統使用Busybox-1.10.1&#xff0c;cramfs-1.1。壓縮文件Busybox-1.10.1.tar.bz2&#xff0c;cramfs-1.1.tar.gz。 22.解壓文件&#xff1a; tar…

關于二維碼分塊上色(彩色二維碼)的算法研究

原文:關于二維碼分塊上色&#xff08;彩色二維碼&#xff09;的算法研究眾所周知&#xff0c;二維碼通常是黑白的&#xff0c;而且是由若干個長方形或正方形小塊平鋪而成。但從人們的審美角度來看&#xff0c;常見的黑白二維碼不免讓人審美疲勞。本文試著從分塊上色的角度對二維…

20145309信息安全系統設計基礎第12周學習總結后篇

指針與聲明 聲明 1、C語言中變量的聲明 類型&#xff08;type&#xff09; 聲明符&#xff08;declarator&#xff09; 2、最簡單的聲明是變量 3、指針數組 指針數組是一個數組數組里的元素都是指針例&#xff1a;int *daytab[13]4、數組指針 數組指針是一個指針指針指向一個類…

跨時鐘域電路設計——多bit信號FIFO

多個bit信號的跨時鐘域僅僅通過簡單的同步器同步時不安全的。 如下圖&#xff1a; 雖然信號都同步到目的時鐘域&#xff0c;可完成的功能卻與設計的初衷不相符。 解決方案之一為對信號進行格雷碼編碼&#xff0c;但此方案只適用于連續變化的信號。另一種方案為增加新的控制信號…

嵌入式linux系統中設備驅動程序

嵌入式linux系統中設備驅動程序是內核的一部分&#xff0c;完成對設備初始、讀寫操作和控制等功能。驅動程序隱藏了硬件設備的具體細節&#xff0c;對不同的設備提供一致的接口&#xff0c;這些接口通過file_Operation結構來定義&#xff0c;設計驅動程序的大部分工作就是根據硬…

WPF 打印實例

原文:WPF 打印實例在WPF 中可以通過PrintDialog 類方便的實現應用程序打印功能&#xff0c;本文將使用一個簡單實例進行演示。首先在VS中編輯一個圖形&#xff08;如下圖所示&#xff09;。 將需要打印的內容放入同一個<Canvas>中&#xff0c;并起名為“printArea”&…