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