如何做好大數(shù)據(jù)關(guān)聯(lián)分析?
大數(shù)據(jù)的技術(shù)
大數(shù)據(jù)技術(shù)包括:
1)數(shù)據(jù)采集: ETL工具負(fù)責(zé)將分布的、異構(gòu)數(shù)據(jù)源中的數(shù)據(jù)如關(guān)系數(shù)據(jù)、平面數(shù)據(jù)文件等抽取到臨時(shí)中間層后進(jìn)行清洗、轉(zhuǎn)換、集成,最后加載到數(shù)據(jù)倉(cāng)庫(kù)或數(shù)據(jù)集市中,成為聯(lián)機(jī)分析處理、數(shù)據(jù)挖掘的基礎(chǔ)。
2)數(shù)據(jù)存取: 關(guān)系數(shù)據(jù)庫(kù)、NOSQL、SQL等。
3)基礎(chǔ)架構(gòu): 云存儲(chǔ)、分布式文件存儲(chǔ)等。
4)數(shù)據(jù)處理: 自然語(yǔ)言處理(NLP,Natural Language Processing)是研究人與計(jì)算機(jī)交互的語(yǔ)言問(wèn)題的一門學(xué)科。處理自然語(yǔ)言的關(guān)鍵是要讓計(jì)算機(jī)”理解”自然語(yǔ)言,所以自然語(yǔ)言處理又叫做自然語(yǔ)言理解也稱為計(jì)算語(yǔ)言學(xué)。一方面它是語(yǔ)言信息處理的一個(gè)分支,另一方面它是人工智能的核心課題之一。
5)統(tǒng)計(jì)分析: 假設(shè)檢驗(yàn)、顯著性檢驗(yàn)、差異分析、相關(guān)分析、T檢驗(yàn)、 方差分析 、 卡方分析、偏相關(guān)分析、距離分析、回歸分析、簡(jiǎn)單回歸分析、多元回歸分析、逐步回歸、回歸預(yù)測(cè)與殘差分析、嶺回歸、logistic回歸分析、曲線估計(jì)、 因子分析、聚類分析、主成分分析、因子分析、快速聚類法與聚類法、判別分析、對(duì)應(yīng)分析、多元對(duì)應(yīng)分析(最優(yōu)尺度分析)、bootstrap技術(shù)等等。
6)數(shù)據(jù)挖掘: 分類 (Classification)、估計(jì)(Estimation)、預(yù)測(cè)(Prediction)、相關(guān)性分組或關(guān)聯(lián)規(guī)則(Affinity grouping or association rules)、聚類(Clustering)、描述和可視化、Description and Visualization)、復(fù)雜數(shù)據(jù)類型挖掘(Text, Web ,圖形圖像,視頻,音頻等)模型預(yù)測(cè) :預(yù)測(cè)模型、機(jī)器學(xué)習(xí)、建模仿真。7)結(jié)果呈現(xiàn): 云計(jì)算、標(biāo)簽云、關(guān)系圖等。
一、搭建大數(shù)據(jù)分析平臺(tái)面對(duì)海量的各種來(lái)源的數(shù)據(jù),如何對(duì)這些零散的數(shù)據(jù)進(jìn)行有效的分析,得到有價(jià)值的信息一直是大數(shù)據(jù)領(lǐng)域研究的熱點(diǎn)問(wèn)題。、、
在搭建大數(shù)據(jù)分析平臺(tái)之前,要先明確業(yè)務(wù)需求場(chǎng)景以及用戶的需求,通過(guò)大數(shù)據(jù)分析平臺(tái),想要得到哪些有價(jià)值的信息,需要接入的數(shù)據(jù)有哪些,明確基于場(chǎng)景業(yè)務(wù)需求的大數(shù)據(jù)平臺(tái)要具備的基本的功能,來(lái)決定平臺(tái)搭建過(guò)程中使用的大數(shù)據(jù)處理工具和框架。(1)操作系統(tǒng)的選擇
操作系統(tǒng)一般使用開源版的RedHat、Centos或者Debian作為底層的構(gòu)建平臺(tái),要根據(jù)大數(shù)據(jù)平臺(tái)所要搭建的數(shù)據(jù)分析工具可以支持的系統(tǒng),正確的選擇操作系統(tǒng)的版本。
(2)搭建Hadoop集群
Hadoop作為一個(gè)開發(fā)和運(yùn)行處理大規(guī)模數(shù)據(jù)的軟件平臺(tái),實(shí)現(xiàn)了在大量的廉價(jià)計(jì)算機(jī)組成的集群中對(duì)海量數(shù)據(jù)進(jìn)行分布式計(jì)算。Hadoop框架中最核心的設(shè)計(jì)是HDFS和MapReduce,HDFS是一個(gè)高度容錯(cuò)性的系統(tǒng),適合部署在廉價(jià)的機(jī)器上,能夠提供高吞吐量的數(shù)據(jù)訪問(wèn),適用于那些有著超大數(shù)據(jù)集的應(yīng)用程序;MapReduce是一套可以從海量的數(shù)據(jù)中提取數(shù)據(jù)最后返回結(jié)果集的編程模型。在生產(chǎn)實(shí)踐應(yīng)用中,Hadoop非常適合應(yīng)用于大數(shù)據(jù)存儲(chǔ)和大數(shù)據(jù)的分析應(yīng)用,適合服務(wù)于幾千臺(tái)到幾萬(wàn)臺(tái)大的服務(wù)器的集群運(yùn)行,支持PB級(jí)別的存儲(chǔ)容量。
(3)選擇數(shù)據(jù)接入和預(yù)處理工具
面對(duì)各種來(lái)源的數(shù)據(jù),數(shù)據(jù)接入就是將這些零散的數(shù)據(jù)整合在一起,綜合起來(lái)進(jìn)行分析。數(shù)據(jù)接入主要包括文件日志的接入、數(shù)據(jù)庫(kù)日志的接入、關(guān)系型數(shù)據(jù)庫(kù)的接入和應(yīng)用程序等的接入,數(shù)據(jù)接入常用的工具有Flume,Logstash,NDC(網(wǎng)易數(shù)據(jù)運(yùn)河系統(tǒng)),sqoop等。對(duì)于實(shí)時(shí)性要求比較高的業(yè)務(wù)場(chǎng)景,比如對(duì)存在于社交網(wǎng)站、新聞等的數(shù)據(jù)信息流需要進(jìn)行快速的處理反饋,那么數(shù)據(jù)的接入可以使用開源的Strom,Spark streaming等。
數(shù)據(jù)預(yù)處理是在海量的數(shù)據(jù)中提取出可用特征,建立寬表,創(chuàng)建數(shù)據(jù)倉(cāng)庫(kù),會(huì)使用到HiveSQL,SparkSQL和Impala等工具。隨著業(yè)務(wù)量的增多,需要進(jìn)行訓(xùn)練和清洗的數(shù)據(jù)也會(huì)變得越來(lái)越復(fù)雜,可以使用azkaban或者oozie作為工作流調(diào)度引擎,用來(lái)解決有多個(gè)hadoop或者spark等計(jì)算任務(wù)之間的依賴關(guān)系問(wèn)題。
(4)數(shù)據(jù)存儲(chǔ)
除了Hadoop中已廣泛應(yīng)用于數(shù)據(jù)存儲(chǔ)的HDFS,常用的還有分布式、面向列的開源數(shù)據(jù)庫(kù)Hbase,HBase是一種key/value系統(tǒng),部署在HDFS上,與Hadoop一樣,HBase的目標(biāo)主要是依賴橫向擴(kuò)展,通過(guò)不斷的增加廉價(jià)的商用服務(wù)器,增加計(jì)算和存儲(chǔ)能力。同時(shí)hadoop的資源管理器Yarn,可以為上層應(yīng)用提供統(tǒng)一的資源管理和調(diào)度,為集群在利用率、資源統(tǒng)一等方面帶來(lái)巨大的好處。
(5)選擇數(shù)據(jù)挖掘工具
Hive可以將結(jié)構(gòu)化的數(shù)據(jù)映射為一張數(shù)據(jù)庫(kù)表,并提供HQL的查詢功能,它是建立在Hadoop之上的數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)架構(gòu),是為了減少M(fèi)apReduce編寫工作的批處理系統(tǒng),它的出現(xiàn)可以讓那些精通SQL技能、但是不熟悉MapReduce、編程能力較弱和不擅長(zhǎng)Java的用戶能夠在HDFS大規(guī)模數(shù)據(jù)集上很好的利用SQL語(yǔ)言查詢、匯總、分析數(shù)據(jù)。Impala是對(duì)Hive的一個(gè)補(bǔ)充,可以實(shí)現(xiàn)高效的SQL查詢,但是Impala將整個(gè)查詢過(guò)程分成了一個(gè)執(zhí)行計(jì)劃樹,而不是一連串的MapReduce任務(wù),相比Hive有更好的并發(fā)性和避免了不必要的中間sort和shuffle。
可以對(duì)數(shù)據(jù)進(jìn)行建模分析,會(huì)用到機(jī)器學(xué)習(xí)相關(guān)的知識(shí),常用的機(jī)器學(xué)習(xí)算法,比如貝葉斯、邏輯回歸、決策樹、神經(jīng)網(wǎng)絡(luò)、協(xié)同過(guò)濾等。
(6)數(shù)據(jù)的可視化以及輸出API
對(duì)于處理得到的數(shù)據(jù)可以對(duì)接主流的BI系統(tǒng),比如國(guó)外的Tableau、Qlikview、PowrerBI等,國(guó)內(nèi)的SmallBI和新興的網(wǎng)易有數(shù)(可免費(fèi)試用)等,將結(jié)果進(jìn)行可視化,用于決策分析;或者回流到線上,支持線上業(yè)務(wù)的發(fā)展。
二、大數(shù)據(jù)分析1.可視化分析
大數(shù)據(jù)分析的使用者有大數(shù)據(jù)分析專家,同時(shí)還有普通用戶,但是他們二者對(duì)于大數(shù)據(jù)分析最基本的要求就是可視化分析,因?yàn)榭梢暬治瞿軌蛑庇^的呈現(xiàn)大數(shù)據(jù)特點(diǎn),同時(shí)能夠非常容易被讀者所接受,就如同看圖說(shuō)話一樣簡(jiǎn)單明了。
2. 數(shù)據(jù)挖掘算法
大數(shù)據(jù)分析的理論核心就是數(shù)據(jù)挖掘算法,各種數(shù)據(jù)挖掘的算法基于不同的數(shù)據(jù)類型和格式才能更加科學(xué)的呈現(xiàn)出數(shù)據(jù)本身具備的特點(diǎn),也正是因?yàn)檫@些被全世界統(tǒng)計(jì) 學(xué)家所公認(rèn)的各種統(tǒng)計(jì)方法(可以稱之為真理)才能深入數(shù)據(jù)內(nèi)部,挖掘出公認(rèn)的價(jià)值。另外一個(gè)方面也是因?yàn)橛羞@些數(shù)據(jù)挖掘的算法才能更快速的處理大數(shù)據(jù),如 果一個(gè)算法得花上好幾年才能得出結(jié)論,那大數(shù)據(jù)的價(jià)值也就無(wú)從說(shuō)起了。
3. 預(yù)測(cè)性分析
大數(shù)據(jù)分析最終要的應(yīng)用領(lǐng)域之一就是預(yù)測(cè)性分析,從大數(shù)據(jù)中挖掘出特點(diǎn),通過(guò)科學(xué)的建立模型,之后便可以通過(guò)模型帶入新的數(shù)據(jù),從而預(yù)測(cè)未來(lái)的數(shù)據(jù)。
4. 語(yǔ)義引擎
非結(jié)構(gòu)化數(shù)據(jù)的多元化給數(shù)據(jù)分析帶來(lái)新的挑戰(zhàn),我們需要一套工具系統(tǒng)的去分析,提煉數(shù)據(jù)。語(yǔ)義引擎需要設(shè)計(jì)到有足夠的人工智能以足以從數(shù)據(jù)中主動(dòng)地提取信息。
5.數(shù)據(jù)質(zhì)量和數(shù)據(jù)管理
大數(shù)據(jù)分析離不開數(shù)據(jù)質(zhì)量和數(shù)據(jù)管理,高質(zhì)量的數(shù)據(jù)和有效的數(shù)據(jù)管理,無(wú)論是在學(xué)術(shù)研究還是在商業(yè)應(yīng)用領(lǐng)域,都能夠保證分析結(jié)果的真實(shí)和有價(jià)值。大數(shù)據(jù)分析的基礎(chǔ)就是以上五個(gè)方面,當(dāng)然更加深入大數(shù)據(jù)分析的話,還有很多很多更加有特點(diǎn)的、更加深入的、更加專業(yè)的大數(shù)據(jù)分析方法。
三、數(shù)據(jù)處理1. 大數(shù)據(jù)處理之一
采集大數(shù)據(jù)的采集是指利用多個(gè)數(shù)據(jù)庫(kù)來(lái)接收發(fā)自客戶端(Web、App或者傳感器形式等)的 數(shù)據(jù),并且用戶可以通過(guò)這些數(shù)據(jù)庫(kù)來(lái)進(jìn)行簡(jiǎn)單的查詢和處理工作。比如,電商會(huì)使用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)MySQL和Oracle等來(lái)存儲(chǔ)每一筆事務(wù)數(shù)據(jù),除 此之外,Redis和MongoDB這樣的NoSQL數(shù)據(jù)庫(kù)也常用于數(shù)據(jù)的采集。在大數(shù)據(jù)的采集過(guò)程中,其主要特點(diǎn)和挑戰(zhàn)是并發(fā)數(shù)高,因?yàn)橥瑫r(shí)有可能會(huì)有成千上萬(wàn)的用戶 來(lái)進(jìn)行訪問(wèn)和操作,比如火車票售票網(wǎng)站和淘寶,它們并發(fā)的訪問(wèn)量在峰值時(shí)達(dá)到上百萬(wàn),所以需要在采集端部署大量數(shù)據(jù)庫(kù)才能支撐。并且如何在這些數(shù)據(jù)庫(kù)之間 進(jìn)行負(fù)載均衡和分片的確是需要深入的思考和設(shè)計(jì)。
2. 大數(shù)據(jù)處理之二
導(dǎo)入/預(yù)處理雖然采集端本身會(huì)有很多數(shù)據(jù)庫(kù),但是如果要對(duì)這些海量數(shù)據(jù)進(jìn)行有效的分析,還是應(yīng)該將這 些來(lái)自前端的數(shù)據(jù)導(dǎo)入到一個(gè)集中的大型分布式數(shù)據(jù)庫(kù),或者分布式存儲(chǔ)集群,并且可以在導(dǎo)入基礎(chǔ)上做一些簡(jiǎn)單的清洗和預(yù)處理工作。也有一些用戶會(huì)在導(dǎo)入時(shí)使 用來(lái)自Twitter的Storm來(lái)對(duì)數(shù)據(jù)進(jìn)行流式計(jì)算,來(lái)滿足部分業(yè)務(wù)的實(shí)時(shí)計(jì)算需求。導(dǎo)入與預(yù)處理過(guò)程的特點(diǎn)和挑戰(zhàn)主要是導(dǎo)入的數(shù)據(jù)量大,每秒鐘的導(dǎo)入量經(jīng)常會(huì)達(dá)到百兆,甚至千兆級(jí)別。
3. 大數(shù)據(jù)處理之三
統(tǒng)計(jì)/分析統(tǒng)計(jì)與分析主要利用分布式數(shù)據(jù)庫(kù),或者分布式計(jì)算集群來(lái)對(duì)存儲(chǔ)于其內(nèi)的海量數(shù)據(jù)進(jìn)行普通 的分析和分類匯總等,以滿足大多數(shù)常見的分析需求,在這方面,一些實(shí)時(shí)性需求會(huì)用到EMC的GreenPlum、Oracle的Exadata,以及基于 MySQL的列式存儲(chǔ)Infobright等,而一些批處理,或者基于半結(jié)構(gòu)化數(shù)據(jù)的需求可以使用Hadoop。統(tǒng)計(jì)與分析這部分的主要特點(diǎn)和挑戰(zhàn)是分析涉及的數(shù)據(jù)量大,其對(duì)系統(tǒng)資源,特別是I/O會(huì)有極大的占用。
4. 大數(shù)據(jù)處理之四
挖掘與前面統(tǒng)計(jì)和分析過(guò)程不同的是,數(shù)據(jù)挖掘一般沒(méi)有什么預(yù)先設(shè)定好的主題,主要是在現(xiàn)有數(shù) 據(jù)上面進(jìn)行基于各種算法的計(jì)算,從而起到預(yù)測(cè)(Predict)的效果,從而實(shí)現(xiàn)一些高級(jí)別數(shù)據(jù)分析的需求。比較典型算法有用于聚類的Kmeans、用于 統(tǒng)計(jì)學(xué)習(xí)的SVM和用于分類的NaiveBayes,主要使用的工具有Hadoop的Mahout等。該過(guò)程的特點(diǎn)和挑戰(zhàn)主要是用于挖掘的算法很復(fù)雜,并 且計(jì)算涉及的數(shù)據(jù)量和計(jì)算量都很大,常用數(shù)據(jù)挖掘算法都以單線程為主。