隨著大數(shù)據(jù)時(shí)代的到來,在大數(shù)據(jù)觀念不斷提出的今天,加強(qiáng)數(shù)據(jù)大數(shù)據(jù)挖掘及時(shí)的應(yīng)用已成為大勢(shì)所趨。大數(shù)據(jù)分析處理是對(duì)紛繁復(fù)雜的海量數(shù)據(jù)價(jià)值的提煉,而其中最有價(jià)值的地方在于預(yù)測(cè)性分析,即可以通過數(shù)據(jù)可視化、統(tǒng)計(jì)模式識(shí)別、數(shù)據(jù)描述等數(shù)據(jù)挖掘形式幫助數(shù)據(jù)科學(xué)家更好的理解數(shù)據(jù),根據(jù)數(shù)據(jù)挖掘的結(jié)果得出預(yù)測(cè)性決策。其中主要工作環(huán)節(jié)參見《大數(shù)據(jù)分析流程是什么》。這些工作環(huán)節(jié)都需要什么技術(shù)?今天AAA教育小編姐姐簡(jiǎn)單分析一下大數(shù)據(jù)分析技術(shù):
一、大數(shù)據(jù)流程圖
二、大數(shù)據(jù)各個(gè)環(huán)節(jié)主要技術(shù)
2.1、數(shù)據(jù)處理主要技術(shù)
Sqoop:(發(fā)音:skup)作為一款開源的離線數(shù)據(jù)傳輸工具,主要用于Hadoop(Hive) 與傳統(tǒng)數(shù)據(jù)庫(kù)(MySql,PostgreSQL)間的數(shù)據(jù)傳遞。它可以將一個(gè)關(guān)系數(shù)據(jù)庫(kù)中數(shù)據(jù)導(dǎo)入Hadoop的HDFS中,也可以將HDFS中的數(shù)據(jù)導(dǎo)入關(guān)系型數(shù)據(jù)庫(kù)中。
Flume:實(shí)時(shí)數(shù)據(jù)采集的一個(gè)開源框架,它是Cloudera提供的一個(gè)高可用用的、高可靠、分布式的海量日志采集、聚合和傳輸?shù)南到y(tǒng)。目前已經(jīng)是Apache的頂級(jí)子項(xiàng)目。使用Flume可以收集諸如日志、時(shí)間等數(shù)據(jù)并將這些數(shù)據(jù)集中存儲(chǔ)起來供下游使用(尤其是數(shù)據(jù)流框架,例如Storm)。和Flume類似的另一個(gè)框架是Scribe(FaceBook開源的日志收集系統(tǒng),它為日志的分布式收集、統(tǒng)一處理提供一個(gè)可擴(kuò)展的、高容錯(cuò)的簡(jiǎn)單方案)
Kafka:通常來說Flume采集數(shù)據(jù)的速度和下游處理的速度通常不同步,因此實(shí)時(shí)平臺(tái)架構(gòu)都會(huì)用一個(gè)消息中間件來緩沖,而這方面最為流行和應(yīng)用最為廣泛的無疑是Kafka。它是由LinkedIn開發(fā)的一個(gè)分布式消息系統(tǒng),以其可以水平擴(kuò)展和高吞吐率而被廣泛使用。目前主流的開源分布式處理系統(tǒng)(如Storm和Spark等)都支持與Kafka 集成。
Kafka是一個(gè)基于分布式的消息發(fā)布-訂閱系統(tǒng),特點(diǎn)是速度快、可擴(kuò)展且持久。與其他消息發(fā)布-訂閱系統(tǒng)類似,Kafka可在主題中保存消息的信息。生產(chǎn)者向主題寫入數(shù)據(jù),消費(fèi)者從主題中讀取數(shù)據(jù)。
作為一個(gè)分布式的、分區(qū)的、低延遲的、冗余的日志提交服務(wù)。和Kafka類似消息中間件開源產(chǎn)品還包括RabbiMQ、ActiveMQ、ZeroMQ等。
MapReduce:MapReduce是Google公司的核心計(jì)算模型,它將運(yùn)行于大規(guī)模集群上的復(fù)雜并行計(jì)算過程高度抽象為兩個(gè)函數(shù):map和reduce。MapReduce最偉大之處在于其將處理大數(shù)據(jù)的能力賦予了普通開發(fā)人員,以至于普通開發(fā)人員即使不會(huì)任何的分布式編程知識(shí),也能將自己的程序運(yùn)行在分布式系統(tǒng)上處理海量數(shù)據(jù)。
Hive:MapReduce將處理大數(shù)據(jù)的能力賦予了普通開發(fā)人員,而Hive進(jìn)一步將處理和分析大數(shù)據(jù)的能力賦予了實(shí)際的數(shù)據(jù)使用人員(數(shù)據(jù)開發(fā)工程師、數(shù)據(jù)分析師、算法工程師、和業(yè)務(wù)分析人員)。
Hive是由Facebook開發(fā)并貢獻(xiàn)給Hadoop開源社區(qū)的,是一個(gè)建立在Hadoop體系結(jié)構(gòu)上的一層SQL抽象。Hive提供了一些對(duì)Hadoop文件中數(shù)據(jù)集進(jìn)行處理、查詢、分析的工具。它支持類似于傳統(tǒng)RDBMS的SQL語言的查詢語言,一幫助那些熟悉SQL的用戶處理和查詢Hodoop在的數(shù)據(jù),該查詢語言稱為Hive SQL。Hive SQL實(shí)際上先被SQL解析器解析,然后被Hive框架解析成一個(gè)MapReduce可執(zhí)行計(jì)劃,并按照該計(jì)劃生產(chǎn)MapReduce任務(wù)后交給Hadoop集群處理。
Spark:盡管MapReduce和Hive能完成海量數(shù)據(jù)的大多數(shù)批處理工作,并且在打數(shù)據(jù)時(shí)代稱為企業(yè)大數(shù)據(jù)處理的首選技術(shù),但是其數(shù)據(jù)查詢的延遲一直被詬病,而且也非常不適合迭代計(jì)算和DAG(有限無環(huán)圖)計(jì)算。由于Spark具有可伸縮、基于內(nèi)存計(jì)算能特點(diǎn),且可以直接讀寫Hadoop上任何格式的數(shù)據(jù),較好地滿足了數(shù)據(jù)即時(shí)查詢和迭代分析的需求,因此變得越來越流行。
Spark是UC Berkeley AMP Lab(加州大學(xué)伯克利分校的 AMP實(shí)驗(yàn)室)所開源的類Hadoop MapReduce的通用并行框架,它擁有Hadoop MapReduce所具有的優(yōu)點(diǎn),但不同MapReduce的是,Job中間輸出結(jié)果可以保存在內(nèi)存中,從而不需要再讀寫HDFS ,因此能更好適用于數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)等需要迭代的MapReduce算法。
Spark也提供類Live的SQL接口,即Spark SQL,來方便數(shù)據(jù)人員處理和分析數(shù)據(jù)。
Spark還有用于處理實(shí)時(shí)數(shù)據(jù)的流計(jì)算框架Spark Streaming,其基本原理是將實(shí)時(shí)流數(shù)據(jù)分成小的時(shí)間片段(秒或幾百毫秒),以類似Spark離線批處理的方式來處理這小部分?jǐn)?shù)據(jù)。
Storm:MapReduce、Hive和Spark是離線和準(zhǔn)實(shí)時(shí)數(shù)據(jù)處理的主要工具,而Storm是實(shí)時(shí)處理數(shù)據(jù)的。
Storm是Twitter開源的一個(gè)類似于Hadoop的實(shí)時(shí)數(shù)據(jù)處理框架。Storm對(duì)于實(shí)時(shí)計(jì)算的意義相當(dāng)于Hadoop對(duì)于批處理的意義。Hadoop提供了Map和Reduce原語,使對(duì)數(shù)據(jù)進(jìn)行批處理變得非常簡(jiǎn)單和優(yōu)美。同樣,Storm也對(duì)數(shù)據(jù)的實(shí)時(shí)計(jì)算提供了簡(jiǎn)單的Spout和Bolt原語。Storm集群表面上和Hadoop集群非常像,但是在Hadoop上面運(yùn)行的是MapReduce的Job,而在Storm上面運(yùn)行的是Topology(拓?fù)?。
Storm拓?fù)淙蝿?wù)和Hadoop MapReduce任務(wù)一個(gè)非常關(guān)鍵的區(qū)別在于:1個(gè)MapReduce Job最終會(huì)結(jié)束,而一個(gè)Topology永遠(yuǎn)運(yùn)行(除非顯示的殺掉它),所以實(shí)際上Storm等實(shí)時(shí)任務(wù)的資源使用相比離線MapReduce任務(wù)等要大很多,因?yàn)殡x線任務(wù)運(yùn)行完就釋放掉所使用的計(jì)算、內(nèi)存等資源,而Storm等實(shí)時(shí)任務(wù)必須一直占有直到被顯式的殺掉。Storm具有低延遲、分布式、可擴(kuò)展、高容錯(cuò)等特性,可以保證消息不丟失,目前Storm, 類Storm或基于Storm抽象的框架技術(shù)是實(shí)時(shí)處理、流處理領(lǐng)域主要采用的技術(shù)。
Flink:在數(shù)據(jù)處理領(lǐng)域,批處理任務(wù)和實(shí)時(shí)流計(jì)算任務(wù)一般被認(rèn)為是兩種不同的任務(wù),一個(gè)數(shù)據(jù)項(xiàng)目一般會(huì)被設(shè)計(jì)為只能處理其中一種任務(wù),例如Storm只支持流處理任務(wù),而MapReduce, Hive只支持批處理任務(wù)。
Apache Flink是一個(gè)同時(shí)面向分布式實(shí)時(shí)流處理和批量數(shù)據(jù)處理的開源數(shù)據(jù)平臺(tái),它能基于同一個(gè)Flink運(yùn)行時(shí)(Flink Runtime),提供支持流處理和批處理兩種類型應(yīng)用的功能。Flink在實(shí)現(xiàn)流處理和批處理時(shí),與傳統(tǒng)的一些方案完全不同,它從另一個(gè)視角看待流處理和批處理,將二者統(tǒng)一起來。Flink完全支持流處理,批處理被作為一種特殊的流處理,只是它的數(shù)據(jù)流被定義為有界的而已?;谕粋€(gè)Flink運(yùn)行時(shí),F(xiàn)link分別提供了流處理和批處理API,而這兩種API也是實(shí)現(xiàn)上層面向流處理、批處理類型應(yīng)用框架的基礎(chǔ)。
Beam:Google開源的Beam在Flink基礎(chǔ)上更進(jìn)了一步,不但希望統(tǒng)一批處理和流處理,而且希望統(tǒng)一大數(shù)據(jù)處理范式和標(biāo)準(zhǔn)。Apache Beam項(xiàng)目重點(diǎn)在于數(shù)據(jù)處理的的編程范式和接口定義,并不涉及具體執(zhí)行引擎的實(shí)現(xiàn)。Apache Beam希望基于Beam開發(fā)的數(shù)據(jù)處理程序可以執(zhí)行在任意的分布式計(jì)算引擎上。
Apache Beam主要由Beam SDK和Beam Runner組成,Beam SDK定義了開發(fā)分布式數(shù)據(jù)處理任務(wù)業(yè)務(wù)邏輯的API接口,生成的分布式數(shù)據(jù)處理任務(wù)Pipeline交給具體的Beam Runner執(zhí)行引擎。Apache Flink目前支持的API是由Java語言實(shí)現(xiàn)的,它支持的底層執(zhí)行引擎包括Apache Flink、Apache Spark和Google Cloud Flatform。
2.2、數(shù)據(jù)存儲(chǔ)主要技術(shù)
HDFS:Hadoop Distributed File System,簡(jiǎn)稱FDFS,是一個(gè)分布式文件系統(tǒng)。它有一定高度的容錯(cuò)性和高吞吐量的數(shù)據(jù)訪問,非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用。HDFS提供了一個(gè)高容錯(cuò)性和高吞吐量的海量數(shù)據(jù)存儲(chǔ)解決方案。
在Hadoop的整個(gè)架構(gòu)中,HDFS在MapReduce任務(wù)處理過程在中提供了對(duì)文件操作的和存儲(chǔ)的的支持,MapReduce在HDFS基礎(chǔ)上實(shí)現(xiàn)了任務(wù)的分發(fā)、跟蹤和執(zhí)行等工作,并收集結(jié)果,兩者相互作用,共同完成了Hadoop分布式集群的主要任務(wù)。
HBase:HBase是一種構(gòu)建在HDFS之上的分布式、面向列族的存儲(chǔ)系統(tǒng)。在需要實(shí)時(shí)讀寫并隨機(jī)訪問超大規(guī)模數(shù)據(jù)集等場(chǎng)景下,HBase目前是市場(chǎng)上主流的技術(shù)選擇。
HBase技術(shù)來源于Google論文《Bigtable :一個(gè)結(jié)構(gòu)化數(shù)據(jù)的分布式存儲(chǔ)系統(tǒng)》。如同Bigtable利用了Google File System提供的分布式數(shù)據(jù)存儲(chǔ)方式一樣,HBase在HDFS之上提供了類似于Bigtable的能力。
HBase解決了傳遞數(shù)據(jù)庫(kù)的單點(diǎn)性能極限。實(shí)際上,傳統(tǒng)的數(shù)據(jù)庫(kù)解決方案,尤其是關(guān)系型數(shù)據(jù)庫(kù)也可以通過復(fù)制和分區(qū)的方法來提高單點(diǎn)性能極限,但這些都是后知后覺的,安裝和維護(hù)都非常復(fù)雜。而HBase從另一個(gè)角度處理伸縮性的問題,即通過線性方式從下到上增加節(jié)點(diǎn)來進(jìn)行擴(kuò)展。HBase 不是關(guān)系型數(shù)據(jù)庫(kù),也不支持SQL,它的特性如下:
1、大:一個(gè)表可以有上億上,上百萬列。
2、面向列:面向列表(簇)的存儲(chǔ)和權(quán)限控制,列(簇)獨(dú)立檢索。
3、稀疏:為空(null)的列不占用存儲(chǔ)空間,因此表可以設(shè)計(jì)的非常稀疏。
4、無模式::每一行都有一個(gè)可以排序的主鍵和任意多的列。列可以根據(jù)需求動(dòng)態(tài)增加,同一張表中不同的行可以有截然不同的列。
5、數(shù)據(jù)多版本:每個(gè)單元的數(shù)據(jù)可以有多個(gè)版本,默認(rèn)情況下,版本號(hào)字段分開,它是單元格插入時(shí)的時(shí)間戳。
6、數(shù)據(jù)類型單一:HBase中數(shù)據(jù)都是字符串,沒有類型。
2.3、數(shù)據(jù)應(yīng)用主要技術(shù)
數(shù)據(jù)有很多應(yīng)用方式,如固定報(bào)表、即時(shí)分析、數(shù)據(jù)服務(wù)、數(shù)據(jù)分析、數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)等。下面說下即時(shí)分析Drill框架、數(shù)據(jù)分析R語言、機(jī)器學(xué)習(xí)TensorFlow框架。
Drill:Apache Drill是一個(gè)開源實(shí)時(shí)大數(shù)據(jù)分布式查詢引擎,目前已成為Apache的頂級(jí)項(xiàng)目。Drill開源版本的Google Dremel。Dremel是Google的“交互式”數(shù)據(jù)分析系統(tǒng),可以組建成規(guī)模上千的集群,處理PB級(jí)別的數(shù)據(jù)。
MapReduce處理數(shù)據(jù)一般在分鐘甚至小時(shí)級(jí)別,而Dremel將處理時(shí)間縮短至秒級(jí),即Drill是對(duì)MapReduce的有力補(bǔ)充。Drill兼容ANSI SQL語法作為接口,支持本地文件、HDFS、Hive、HBase、MongoDb作為存儲(chǔ)的數(shù)據(jù)查詢。文件格式支持Parquet、CSV、TSV以及Json這種無模式(schema-free)數(shù)據(jù)。所有這些數(shù)據(jù)都像傳統(tǒng)數(shù)據(jù)庫(kù)的表查詢一樣進(jìn)行快速實(shí)時(shí)查詢。
R語言:R是一種開源的數(shù)據(jù)分析解決方案。R流行原因如下:
1、R是自由軟件:完全免費(fèi)、開源??稍诠俜骄W(wǎng)站及其鏡像中下載任何有關(guān)的安裝程序、源代碼、程序包及其源代碼、文檔資料,標(biāo)準(zhǔn)的安裝文件自身就帶有許多模塊和內(nèi)嵌統(tǒng)計(jì)函數(shù),安裝好后可以直接實(shí)現(xiàn)許多常用的統(tǒng)計(jì)功能。
2、R是一種可編程的語言:作為一個(gè)開放的統(tǒng)計(jì)編程環(huán)境,R語言的語法通俗易懂,而且目前大多數(shù)新的統(tǒng)計(jì)方法和技術(shù)都可以在R中找到。
3、R具有很強(qiáng)的互動(dòng)性:除了圖形輸出在另外的窗口,它的熟入輸出都是在一個(gè)窗口進(jìn)行的,輸入語法中如果有錯(cuò)馬上會(huì)在窗口中給出提示,對(duì)以前輸入過的命令有記憶功能,可以隨時(shí)再現(xiàn)、編輯、修改以滿足用戶的需要,輸出的圖形可以直接保存為JPG、BMP、PNG等圖片格式,還可以直接保存為PDF文件。此外,R語言和其它編程語言和數(shù)據(jù)庫(kù)直接有很好的接口。
TensorFlow:TensorFlow是一個(gè)非常靈活的框架,它能夠運(yùn)行在個(gè)人電腦或服務(wù)器的單個(gè)/多個(gè)cpu和GPU上,甚至是移動(dòng)設(shè)備上,它最早是為了研究機(jī)器學(xué)習(xí)和深度神經(jīng)網(wǎng)絡(luò)而開發(fā)的,后來因?yàn)橥ㄓ枚_源。
TensorFlow是基于數(shù)據(jù)流圖的處理框架,TensorFlow節(jié)點(diǎn)表示數(shù)學(xué)運(yùn)算,邊表示運(yùn)算節(jié)點(diǎn)之間的數(shù)據(jù)交互。TensorFlow從字母意義上來講有兩層含義:一是Tensor代表的是節(jié)點(diǎn)之間傳遞的數(shù)據(jù),通常這個(gè)數(shù)據(jù)是一個(gè)多維度矩陣(multidimensional data arrays)或一維向量;二是Flow指的數(shù)據(jù)流,形象理解就是數(shù)據(jù)按照流的形式進(jìn)入數(shù)據(jù)運(yùn)算圖的各個(gè)節(jié)點(diǎn)。
3、數(shù)據(jù)相關(guān)從業(yè)者和角色
4、數(shù)據(jù)埋點(diǎn)
后臺(tái)數(shù)據(jù)庫(kù)和日志文件一般只能滿足常規(guī)的統(tǒng)計(jì)分析,對(duì)于具體的產(chǎn)品和項(xiàng)目來說,一般還要根據(jù)項(xiàng)目的目標(biāo)和分析需求進(jìn)行針對(duì)性的“數(shù)據(jù)埋點(diǎn)”工作,所謂埋點(diǎn):就是在額外的正常功能邏輯上添加針對(duì)性的邏輯統(tǒng)計(jì),即期望的事件是否發(fā)生,發(fā)生后應(yīng)該記錄那些信息,比如用戶在當(dāng)前頁面是否用鼠標(biāo)滾動(dòng)頁面、有關(guān)的頁面區(qū)域是否曝光了、當(dāng)前的用戶操作的的時(shí)間是多少、停留時(shí)長(zhǎng)多少、這些都需要前端工程師進(jìn)行針對(duì)性的埋點(diǎn)才能滿足有關(guān)的分析需求。
數(shù)據(jù)埋點(diǎn)工作一般由產(chǎn)品經(jīng)理和分析師預(yù)先確定分析需求,然后由數(shù)據(jù)開發(fā)團(tuán)隊(duì)對(duì)接前端和后端開發(fā)完成具體的埋點(diǎn)工作。
通過以上的學(xué)習(xí),對(duì)大數(shù)據(jù)分析技術(shù)有初步的認(rèn)識(shí),這些技術(shù)涉及到的工具《大數(shù)據(jù)分析十八般工具》,大家可以參考。
填寫下面表單即可預(yù)約申請(qǐng)免費(fèi)試聽!怕錢不夠?可先就業(yè)掙錢后再付學(xué)費(fèi)! 怕學(xué)不會(huì)?助教全程陪讀,隨時(shí)解惑!擔(dān)心就業(yè)?一地學(xué)習(xí),可推薦就業(yè)!
?2007-2022/ 5wd995.cn 北京漫動(dòng)者數(shù)字科技有限公司 備案號(hào): 京ICP備12034770號(hào) 監(jiān)督電話:010-53672995 郵箱:bjaaa@aaaedu.cc