張 亮 北京電信規(guī)劃設(shè)計(jì)院有限公司工程師楊春麗 北京電信規(guī)劃設(shè)計(jì)院有限公司工程師馬媛媛 北京電信規(guī)劃設(shè)計(jì)院有限公司工程師
?
大數(shù)據(jù)應(yīng)用部署研究
張亮北京電信規(guī)劃設(shè)計(jì)院有限公司工程師
楊春麗北京電信規(guī)劃設(shè)計(jì)院有限公司工程師
馬媛媛北京電信規(guī)劃設(shè)計(jì)院有限公司工程師
摘要:分析在海量數(shù)據(jù)情況下,Hadoop各組件及其生態(tài)圈(如Impala、Spark)技術(shù)特點(diǎn)及應(yīng)用場(chǎng)景;結(jié)合大數(shù)據(jù)平臺(tái)通用架構(gòu),提出在數(shù)據(jù)采集、儲(chǔ)算、應(yīng)用等方面的功能架構(gòu)及技術(shù)架構(gòu)。
關(guān)鍵詞:大數(shù)據(jù);Spark;Impala;Hadoop
本文主要研究以Hadoop2.0為基礎(chǔ)大數(shù)據(jù)平臺(tái)應(yīng)用體系架構(gòu),根據(jù)數(shù)據(jù)特性,從功能架構(gòu)、技術(shù)架構(gòu)不同緯度來(lái)探討如何搭建大數(shù)據(jù)平臺(tái),實(shí)現(xiàn)對(duì)海量數(shù)據(jù)的挖掘、分析及處理。
面對(duì)海量數(shù)據(jù)的增加,傳統(tǒng)數(shù)據(jù)倉(cāng)庫(kù)無(wú)法有效存儲(chǔ)日益增長(zhǎng)的業(yè)務(wù)數(shù)據(jù),海量的數(shù)據(jù)導(dǎo)致了業(yè)務(wù)系統(tǒng)數(shù)據(jù)存儲(chǔ)和處理的壓力,而數(shù)據(jù)倉(cāng)庫(kù)無(wú)法線性擴(kuò)容,將導(dǎo)致信息系統(tǒng)出現(xiàn)管理難度加大、成本高、擴(kuò)容壓力大、效率下降等問(wèn)題。
(1)行業(yè)的發(fā)展趨勢(shì)
微信、微博等OTT應(yīng)用的廣泛使用,互聯(lián)網(wǎng)+的廣泛應(yīng)用,傳統(tǒng)產(chǎn)業(yè)日益管道化,導(dǎo)致逐漸失去對(duì)用戶和生態(tài)鏈的控制能力。
(2)技術(shù)發(fā)展趨勢(shì)
現(xiàn)有技術(shù)瓶頸:現(xiàn)有數(shù)據(jù)庫(kù)技術(shù)處理大數(shù)據(jù)存在瓶頸,無(wú)法對(duì)非結(jié)構(gòu)化的數(shù)據(jù)進(jìn)行處理,數(shù)據(jù)庫(kù)無(wú)法進(jìn)行橫向擴(kuò)展。
海量數(shù)據(jù)的分布式處理技術(shù)日趨成熟:隨著海量數(shù)據(jù)的分布式處理技術(shù)的不斷應(yīng)用,使其穩(wěn)定性、易用性不斷提高,具備了大規(guī)模商用的條件。
(3)業(yè)務(wù)發(fā)展的需要
●市場(chǎng)發(fā)展:一方面滿足精準(zhǔn)營(yíng)銷(xiāo)的需要,一方面滿足企業(yè)對(duì)數(shù)據(jù)分析的需要。
●管理分析:用戶流失分析等。
●內(nèi)部管理:投訴數(shù)據(jù)分析及其他相關(guān)數(shù)據(jù)分析。
大數(shù)據(jù)平臺(tái)主要實(shí)現(xiàn)大數(shù)據(jù)平臺(tái)數(shù)據(jù)的采集處理、存儲(chǔ)及計(jì)算、數(shù)據(jù)分析挖掘模型的建立、大數(shù)據(jù)平臺(tái)數(shù)據(jù)的對(duì)外服務(wù)的功能。以下分別從功能、技術(shù)架構(gòu)等方面具體闡述。
3.1功能架構(gòu)
大數(shù)據(jù)平臺(tái)可以分為數(shù)據(jù)接口層、數(shù)據(jù)核心處理層、數(shù)據(jù)服務(wù)層及運(yùn)營(yíng)、運(yùn)維管理,具體功能架構(gòu)如圖1所示。
3.1.1數(shù)據(jù)接口層
數(shù)據(jù)接口層用于提供平臺(tái)的數(shù)據(jù)采集和處理能力。數(shù)據(jù)采集范圍包括但不僅限于用戶資料采集、網(wǎng)頁(yè)內(nèi)容采集、合作伙伴數(shù)據(jù)等。
(1)用戶資料采集:用戶基礎(chǔ)信息、終端信息、投訴信息等采集。
(2)網(wǎng)頁(yè)內(nèi)容采集:互聯(lián)網(wǎng)網(wǎng)站信息采集。
(3)合作伙伴數(shù)據(jù):第三方合作伙伴信息采集。
數(shù)據(jù)處理包括ETL處理、預(yù)處理和數(shù)據(jù)加密及脫敏。
(1)ETL處理:實(shí)現(xiàn)數(shù)據(jù)抽取、數(shù)據(jù)校驗(yàn)、數(shù)據(jù)處理、數(shù)據(jù)裝載等功能。
(2)預(yù)處理:提供數(shù)據(jù)排重、分揀、格式轉(zhuǎn)換等功能。
(3)數(shù)據(jù)加密及脫敏:去除數(shù)據(jù)中的敏感信息,數(shù)據(jù)脫敏可以是數(shù)據(jù)加密、關(guān)鍵信息抹除等方式。
3.1.2數(shù)據(jù)核心處理層
數(shù)據(jù)核心處理層:用于提供海量數(shù)據(jù)的存儲(chǔ)和計(jì)算能力。
(1)即時(shí)處理:提供本地SQL查詢引擎,提供原始HDFS數(shù)據(jù)和HBase數(shù)據(jù)庫(kù)的簡(jiǎn)單查詢?cè)L問(wèn)搜索引擎,實(shí)現(xiàn)全文索引和搜尋。
(2)批量數(shù)據(jù)處理:基于不同的業(yè)務(wù)場(chǎng)景提供數(shù)據(jù)的定時(shí)批量處理能力和實(shí)時(shí)批量處理能力。
(3)數(shù)據(jù)核查:自動(dòng)實(shí)現(xiàn)數(shù)據(jù)清洗、數(shù)據(jù)稽核、生成數(shù)據(jù)質(zhì)量報(bào)告;實(shí)現(xiàn)數(shù)據(jù)全生命周期的數(shù)據(jù)監(jiān)控與數(shù)據(jù)稽核;配合完成各數(shù)據(jù)處理環(huán)節(jié)數(shù)據(jù)質(zhì)量信息的采集并提供結(jié)果,實(shí)現(xiàn)端到端的透明化管理等。主要提供核查規(guī)則配置管理、核查規(guī)則調(diào)度、核查規(guī)則執(zhí)行、數(shù)據(jù)質(zhì)量問(wèn)題處理、數(shù)據(jù)質(zhì)量評(píng)估分析等功能。
圖1 總體功能架構(gòu)圖
(4)統(tǒng)計(jì)報(bào)表:根據(jù)報(bào)表目錄和報(bào)表的配置要素,在統(tǒng)一的配置調(diào)度管理下,根據(jù)報(bào)表作業(yè)的相互關(guān)系,按時(shí)生成各類(lèi)報(bào)表。主要提供報(bào)表生成配置、報(bào)表生成執(zhí)行、報(bào)表生成監(jiān)控等功能。
(5)并行算法分析
●數(shù)據(jù)挖掘:數(shù)據(jù)挖掘的能力主要包含了數(shù)據(jù)訪問(wèn)與準(zhǔn)備、數(shù)據(jù)探索、建模分析算法、圖形展現(xiàn)以及模型評(píng)估、模型發(fā)布等多項(xiàng)功能。
●機(jī)器學(xué)習(xí):實(shí)現(xiàn)數(shù)據(jù)模型挖掘建立,數(shù)據(jù)分析算法探索,最終用于支撐上層應(yīng)用。主要算法有貝葉斯、決策樹(shù)、聚類(lèi)等。
(6)實(shí)時(shí)流處理
●實(shí)時(shí)行為感知:基于客戶偏好及行為習(xí)慣形成客戶標(biāo)簽,同時(shí)通過(guò)收集捕獲各種實(shí)時(shí)交互信息分析客戶行為的價(jià)值所在,以客戶的這些行為作為觸點(diǎn)進(jìn)行營(yíng)銷(xiāo)規(guī)則的制定和營(yíng)銷(xiāo)活動(dòng)的策劃。
●實(shí)時(shí)推薦引擎:主動(dòng)發(fā)現(xiàn)用戶當(dāng)前或潛在的需求,為用戶推薦其喜歡的商品或內(nèi)容并主動(dòng)推送信息給用戶。
●實(shí)時(shí)營(yíng)銷(xiāo)引擎:主要負(fù)責(zé)包含數(shù)據(jù)的采集、營(yíng)銷(xiāo)矩陣數(shù)據(jù)生成、觸發(fā)規(guī)則管理以及結(jié)合規(guī)則引擎對(duì)數(shù)據(jù)的處理。
3.1.3數(shù)據(jù)服務(wù)層
(1)公共數(shù)據(jù)匯總服務(wù)
負(fù)責(zé)對(duì)數(shù)據(jù)進(jìn)行統(tǒng)一加工,生成匯聚層數(shù)據(jù);對(duì)互聯(lián)網(wǎng)數(shù)據(jù)進(jìn)行處理,獲取特定專題信息數(shù)據(jù)等。
(2)實(shí)時(shí)交互
提供實(shí)時(shí)單筆訪問(wèn)大數(shù)據(jù)中心的數(shù)據(jù)功能,主要包括查詢、寫(xiě)入、更新、搜索等功能。
(3)即時(shí)查詢
提供將數(shù)據(jù)以消息的方式實(shí)時(shí)推送的服務(wù)方式,主要包括單信息推送和信息流推送等。
(4)批量共享
提供實(shí)時(shí)/準(zhǔn)實(shí)時(shí)/定時(shí)批量傳輸數(shù)據(jù),主要包括批量數(shù)據(jù)抽取和批量數(shù)據(jù)導(dǎo)出功能。
3.1.4運(yùn)營(yíng)管理
運(yùn)營(yíng)管理是面向應(yīng)用對(duì)數(shù)據(jù)、任務(wù)、資源、安全等進(jìn)行全面管理,主要實(shí)現(xiàn):
(1)大數(shù)據(jù)平臺(tái)的集中管理
統(tǒng)一管理大數(shù)據(jù)平臺(tái)的各種軟硬件資源,確保安全、可靠、高效的運(yùn)行。
(2)與應(yīng)用的隔離
應(yīng)用無(wú)需直接訪問(wèn)大數(shù)據(jù)平臺(tái)底層的各項(xiàng)服務(wù),即可實(shí)現(xiàn)應(yīng)用的開(kāi)發(fā)、測(cè)試、運(yùn)行和維護(hù)
(3)多租戶部署
實(shí)現(xiàn)應(yīng)用的資源共享和邏輯隔離。
3.1.5數(shù)據(jù)管理
(1)數(shù)據(jù)生命周期管理:主要包括數(shù)據(jù)存儲(chǔ)管理、數(shù)據(jù)處理流程管理、數(shù)據(jù)發(fā)布管理、數(shù)據(jù)歸檔管理等。
(2)數(shù)據(jù)質(zhì)量管理:主要包括校驗(yàn)規(guī)則定義、數(shù)據(jù)質(zhì)量驗(yàn)證及驗(yàn)證調(diào)度、數(shù)據(jù)質(zhì)量問(wèn)題處理等。
(3)元數(shù)據(jù)管理:通過(guò)獲取大數(shù)據(jù)平臺(tái)各環(huán)節(jié)的元數(shù)據(jù)信息,并進(jìn)行集中的存儲(chǔ)管理,為數(shù)據(jù)運(yùn)維管理及使用人員提供統(tǒng)一的數(shù)據(jù)定義和標(biāo)準(zhǔn),便于對(duì)數(shù)據(jù)的理解以及輔助數(shù)據(jù)管控和運(yùn)維等。
3.1.6運(yùn)維管理
(1)多租戶管理:實(shí)現(xiàn)應(yīng)用的資源共享和邏輯隔離。
(2)調(diào)度管理:調(diào)度管理提供定時(shí)、實(shí)時(shí)的作業(yè)觸發(fā)功能,提供作業(yè)觸發(fā)、服務(wù)觸發(fā)功能,提供作業(yè)依賴檢查機(jī)制,提供作業(yè)流程化調(diào)度能力;通過(guò)交互頁(yè)面的方式提供人工觸發(fā)的方式進(jìn)行作業(yè)的調(diào)度。
(3)資源管理:提供相關(guān)資源配置信息管理、資源配置信息的展現(xiàn)、資源配置信息錄入、資源配置信息變更、資源配置信息查詢統(tǒng)計(jì)功能。對(duì)資源進(jìn)行統(tǒng)一管理功能,通過(guò)數(shù)據(jù)配置的方式,對(duì)資源進(jìn)行統(tǒng)一維護(hù)和管理。同時(shí),在資源分配和使用上,能夠通過(guò)多種方式對(duì)資源池中的資源進(jìn)行靈活分配。
(4)平臺(tái)監(jiān)控管理:對(duì)各類(lèi)資源系統(tǒng)、資源實(shí)例進(jìn)行監(jiān)控,記錄監(jiān)控信息供用戶和管理員查看。
(5)服務(wù)管理:指服務(wù)管理員通過(guò)統(tǒng)一的、可視化的工具,將服務(wù)訪問(wèn)發(fā)布到大數(shù)據(jù)平臺(tái)中,發(fā)布前需要提供指定平臺(tái)的發(fā)布業(yè)務(wù)執(zhí)行測(cè)試功能,測(cè)試通過(guò)后由服務(wù)管理員正式發(fā)布到運(yùn)行平臺(tái)。
(6)安全管理:通過(guò)IP控制、認(rèn)證鑒權(quán)、服務(wù)安全處理等方式對(duì)服務(wù)訪問(wèn)過(guò)程中的安全進(jìn)行統(tǒng)一管控。訪問(wèn)審計(jì)提供接入、訪問(wèn)、流程控制、優(yōu)先級(jí)日志的記錄及審計(jì)功能。
3.2技術(shù)架構(gòu)
現(xiàn)有關(guān)系型數(shù)據(jù)庫(kù)技術(shù)(如Oracle、Sybase等)無(wú)法對(duì)非結(jié)構(gòu)化的數(shù)據(jù)進(jìn)行處理,數(shù)據(jù)庫(kù)無(wú)法進(jìn)行橫向擴(kuò)展,只能依賴服務(wù)器性能增長(zhǎng)進(jìn)行縱向擴(kuò)展,處理海量數(shù)據(jù)存在瓶頸。建議采用Hadoop2.0為核心及其生態(tài)圈技術(shù)來(lái)搭建處理海量數(shù)據(jù)的公共平臺(tái)。
本文將根據(jù)Hadoop及其生態(tài)圈技術(shù)特性,分析其適用場(chǎng)景來(lái)搭建大數(shù)據(jù)公共平臺(tái)。以下將從數(shù)據(jù)接口、數(shù)據(jù)核心處理、數(shù)據(jù)服務(wù)層來(lái)說(shuō)明大數(shù)據(jù)公共平臺(tái)的技術(shù)架構(gòu)。
3.2.1數(shù)據(jù)接口層
數(shù)據(jù)接口層提供將數(shù)據(jù)采集到系統(tǒng)中和將數(shù)據(jù)提供給外部的能力,即首先數(shù)據(jù)能夠進(jìn)入系統(tǒng),然后提供處理后數(shù)據(jù)??梢灾С衷搭^為關(guān)系數(shù)據(jù)庫(kù)的全量、增量數(shù)據(jù)導(dǎo)入,支持源頭為文件的數(shù)據(jù)導(dǎo)入,支持源頭流數(shù)據(jù)的導(dǎo)入??梢詫?shù)據(jù)輸出到關(guān)系數(shù)據(jù)庫(kù)、文件或者流管道。
(1)結(jié)構(gòu)化數(shù)據(jù)
針對(duì)源數(shù)據(jù)進(jìn)行采集,可以選擇使用Sqoop1或者DataX。Sqoop支持所有支持JDBC的數(shù)據(jù)庫(kù)。DataX支持MySQL和Oracle的采集。
Sqoop是一個(gè)用來(lái)在關(guān)系型數(shù)據(jù)庫(kù)和Hive、Hbase之間進(jìn)行數(shù)據(jù)相互轉(zhuǎn)移的工具,可以將一個(gè)關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù)導(dǎo)入到Hive、Hbase中,也可以將Hive、Hbase的數(shù)據(jù)導(dǎo)出到關(guān)系型數(shù)據(jù)庫(kù)中。Sqoop、Datax也支持增量數(shù)據(jù)采集。
(2)非結(jié)構(gòu)化數(shù)據(jù)
建議使用Flume來(lái)對(duì)文件數(shù)據(jù)進(jìn)行采集。Flume是一個(gè)分布式、可靠和高可用的海量日志采集、聚合和傳輸?shù)南到y(tǒng)。它可以定制各類(lèi)數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù)。Flume可以將文件、流式數(shù)據(jù)復(fù)制到本系統(tǒng)的HDFS中進(jìn)行保存。
3.2.2數(shù)據(jù)核心處理層
(1)HDFS
Hadoop實(shí)現(xiàn)了一個(gè)分布式文件系統(tǒng)(Hadoop DistributedFileSystem,HDFS)。HDFS是基于X86服務(wù)器和本地磁盤(pán)的分布式文件系統(tǒng),它將大文件分割成大小為64MB的數(shù)據(jù)塊在本地文件系統(tǒng)中進(jìn)行存儲(chǔ)。HDFS節(jié)點(diǎn)主要包括NameNode及DataNode。NameNode是整個(gè)文件系統(tǒng)的管理節(jié)點(diǎn),維護(hù)文件系統(tǒng)的文件目錄樹(shù)、文件的元數(shù)據(jù)及數(shù)據(jù)塊列表。DataNode提供文件數(shù)據(jù)的存儲(chǔ)服務(wù),對(duì)文件數(shù)據(jù)提供多副本服務(wù),以保證系統(tǒng)的高容錯(cuò)性。
Hadoop具有高容錯(cuò)性、高吞吐量、大文件存儲(chǔ)等特點(diǎn),適用于非結(jié)構(gòu)化數(shù)據(jù)大文件存儲(chǔ)及流式數(shù)據(jù)訪問(wèn),不適合大量小文件隨機(jī)低延時(shí)讀取。
(2)分布式計(jì)算MapReduce(M/R)
MapReduce用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行運(yùn)算,是典型的非實(shí)時(shí)并行計(jì)算模型。
MapReduce中作業(yè)(Job)是客戶端執(zhí)行的基本單位。MapReduce通過(guò)把作業(yè)分成若干個(gè)小任務(wù)(Task)來(lái)工作,主要包括兩種類(lèi)型的任務(wù):Map和Reduce任務(wù)。
有兩種類(lèi)型的節(jié)點(diǎn)控制著作業(yè)執(zhí)行的過(guò)程:Jobtracker和多個(gè)Tasktracker。Jobtracker通過(guò)調(diào)度任務(wù)在Tasktracker上運(yùn)行來(lái)協(xié)調(diào)所有在系統(tǒng)上的作業(yè)。Tasktracker運(yùn)行任務(wù)的同時(shí),監(jiān)視所在設(shè)備的資源情況及當(dāng)前Task的運(yùn)行狀況,把進(jìn)度報(bào)告?zhèn)魉偷絁obtracker。Jobtracker記錄著任務(wù)的整體進(jìn)展情況,管理所有Job失敗、重啟等操作。如果其中一個(gè)任務(wù)失敗,Jobtracker可以重新調(diào)度任務(wù)到另外一個(gè)Tasktracker。
M/R比較適合大規(guī)模數(shù)據(jù)集的并行計(jì)算,適用于海量非結(jié)構(gòu)化數(shù)據(jù)的定時(shí)批量處理。但M/R的編程模型過(guò)于單一,導(dǎo)致開(kāi)發(fā)效率低,限制了更多應(yīng)用的產(chǎn)生。由于其數(shù)據(jù)處理流程是一系列M/R任務(wù)的串行執(zhí)行,導(dǎo)致頻繁的磁盤(pán)I/O操作,執(zhí)行效率比較低。
(3)Yarn
Yarn是Hadoop0.23之后的新MapReduce框架,可為上層應(yīng)用提供統(tǒng)一的資源管理和調(diào)度。Yarn包括ResourceManager、ApplicationMaster和 NodeManager三部分。ResourceManager控制整個(gè)集群并管理應(yīng)用程序向基礎(chǔ)計(jì)算資源的分配。ResourceManager將各個(gè)資源部分(計(jì)算、內(nèi)存、帶寬等)安排給基礎(chǔ)Node Manager(Yarn的節(jié)點(diǎn)代理)。每一個(gè)應(yīng)用的ApplicationMaster負(fù)責(zé)相應(yīng)的調(diào)度和協(xié)調(diào)。
(4)HBase
HBase是一個(gè)分布式的、面向列的開(kāi)源數(shù)據(jù)庫(kù)。HBase不同于一般的關(guān)系數(shù)據(jù)庫(kù),它利用了Hadoop所提供的分布式數(shù)據(jù)存儲(chǔ)功能,適合于非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫(kù)。
(5)Hive
Hive是基于Hadoop的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫(kù)表,并提供簡(jiǎn)單的SQL查詢功能,可以將SQL語(yǔ)句轉(zhuǎn)換為MapReduce任務(wù)進(jìn)行運(yùn)行。
Hive適用于大規(guī)模數(shù)據(jù)集的批處理作業(yè),但在大規(guī)模數(shù)據(jù)集上的執(zhí)行查詢一般有分鐘級(jí)的時(shí)間延遲。Hive本身也不支持聯(lián)機(jī)事務(wù)處理(OLTP)操作。
(6)Impala
Impala是一個(gè)在Hadoop集群上運(yùn)行的本地SQL查詢引擎,提供原始HDFS數(shù)據(jù)和HBase數(shù)據(jù)庫(kù)的簡(jiǎn)單查詢?cè)L問(wèn)。它移植了MPP引擎直接操作HDFS文件和Hbase表,采用Parquet列式存儲(chǔ)格式,適合海量結(jié)構(gòu)化數(shù)據(jù)的即時(shí)分析及查詢,支持從s級(jí)到h級(jí)的各種查詢。目前,Impala已經(jīng)達(dá)到商用MPP數(shù)據(jù)庫(kù)的性能。
(7)Spark
Spark是開(kāi)源的類(lèi)HadoopMapReduce的通用的并行計(jì)算框架。Spark基于M/R算法實(shí)現(xiàn)的分布式計(jì)算,中間輸出和結(jié)果可以保存在內(nèi)存中。Spark能更好地適用于數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)等需要迭代的MapReduce的算法。
Spark是基于內(nèi)存的迭代計(jì)算框架,適用于需要多次操作特定數(shù)據(jù)集的應(yīng)用場(chǎng)合。Spark適用場(chǎng)景有:迭代式算法、交互式數(shù)據(jù)分析、實(shí)時(shí)流處理。
由于RDD(彈性分布數(shù)據(jù)集)的特性,Spark不適用那種異步細(xì)粒度更新?tīng)顟B(tài)的應(yīng)用,例如Web服務(wù)的存儲(chǔ)或者是增量的Web爬蟲(chóng)和索引。
Spark由4部分組成:SparkSQL、MLlib、GraphX、SparkStreaming(見(jiàn)圖2)。
圖2 Spark架構(gòu)圖
●Spark SQL:Spark處理SQL和結(jié)構(gòu)化數(shù)據(jù)工具,Spark引入了Schema RDD的數(shù)據(jù)抽象,使其能統(tǒng)一、高效地訪問(wèn)和查詢各種不同的數(shù)據(jù)源。Spark SQLAPI能像查詢RDD一樣查詢結(jié)構(gòu)化的數(shù)據(jù),并且Spark SQL還提供了JDBC/ODBC的服務(wù)端模式,以便建立JDBC/ODBC數(shù)據(jù)連接。
●MLlib(MachineLearning):Spark提供的機(jī)器學(xué)習(xí)庫(kù),包含了常見(jiàn)的機(jī)器學(xué)習(xí)算法。
●GraphX(Graph Processing):是Spark處理圖(Graph)的框架,利用PregelAPI可以用RDD有效地轉(zhuǎn)換(Transform)和連接(Join)圖,實(shí)現(xiàn)圖算法。
●Spark Streaming:Spark處理流應(yīng)用的庫(kù),結(jié)合了批處理查詢與交互式查詢,方便重用批處理的代碼和歷史數(shù)據(jù)。
Spark可以利用已有的Hadoop組件在Hadoop集群中運(yùn)行,可以訪問(wèn)HDFS文件系統(tǒng),也可以通過(guò)Spark on Yarn配置參數(shù)使用Yarn來(lái)實(shí)現(xiàn)資源調(diào)度。
(8)Storm
Storm是個(gè)實(shí)時(shí)的、分布式以及具備高容錯(cuò)的計(jì)算系統(tǒng)。Storm作為實(shí)時(shí)流數(shù)據(jù)處理事實(shí)上的標(biāo)準(zhǔn),已經(jīng)集成到Hadoop的Yarn上。它主要有以下特性:
●編程模型簡(jiǎn)單化
繼承了Pout和Bolt類(lèi)編寫(xiě)事件處理邏輯,降低了編程的復(fù)雜性。
●服務(wù)化
提供服務(wù)框架,支持熱部署,即時(shí)上線或下線應(yīng)用。
●高容錯(cuò)性和可擴(kuò)展性
管理工作進(jìn)程和節(jié)點(diǎn)的故障,計(jì)算是在多個(gè)線程、進(jìn)程和服務(wù)器之間并行進(jìn)行的。
●可靠性Storm
保證每個(gè)消息至少能得到一次完整處理;任務(wù)失敗時(shí)從消息源重試消息。
●快速
使用ZeroMQ作為其底層消息隊(duì)列,保證消息能得到快速的處理。
(9)數(shù)據(jù)挖掘計(jì)算引擎
●Mahout
Mahout是基于Hadoop之上的機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘的一個(gè)分布式框架。Mahout用Map-reduce實(shí)現(xiàn)了部分?jǐn)?shù)據(jù)挖掘算法,解決了并行挖掘的問(wèn)題。
Mahout包括分類(lèi)、聚類(lèi)、關(guān)聯(lián)規(guī)則挖掘、回歸、降維/維約簡(jiǎn)、進(jìn)化算法、推薦/協(xié)同過(guò)濾、向量相似度計(jì)算、非Map-Reduce算法等類(lèi)型的算法,并具有很好的擴(kuò)展性。
●Pagerank
PageRank是一種數(shù)據(jù)挖掘算法,用于衡量特定網(wǎng)頁(yè)相對(duì)于搜索引擎索引中的其他網(wǎng)頁(yè)而言的重要程度。
●Pregel
Pregel是Google提出的一個(gè)面向大規(guī)模圖計(jì)算的通用編程模型,是一個(gè)用于分布式圖計(jì)算的計(jì)算框架。許多實(shí)際應(yīng)用中都涉及到大型的圖算法,典型的如網(wǎng)頁(yè)鏈接關(guān)系、社交關(guān)系、地理位置圖、科研論文中的引用關(guān)系等,有的圖規(guī)模可達(dá)數(shù)十億的頂點(diǎn)和上萬(wàn)億的邊。Pregel主要用于圖遍歷(BFS)、最短路徑(SSSP)、PageRank計(jì)算等。
(10)根據(jù)以上技術(shù)分析,Hadoop及其生態(tài)圈技術(shù)定位及應(yīng)用場(chǎng)景如表1所示。
3.2.3數(shù)據(jù)服務(wù)層
數(shù)據(jù)服務(wù)層主要技術(shù)及應(yīng)用場(chǎng)景說(shuō)明如表2所示。
3.2.4總體架構(gòu)
根據(jù)以上各層的技術(shù)分析,對(duì)大數(shù)據(jù)公共平臺(tái)架構(gòu)建議如下:
(1)數(shù)據(jù)接口層
建議采用Flume作為非結(jié)構(gòu)化數(shù)據(jù)收集手段,結(jié)構(gòu)化數(shù)據(jù)可以使用DataX/Sqoop等方式進(jìn)行數(shù)據(jù)轉(zhuǎn)出及導(dǎo)入。
(2)數(shù)據(jù)核心處理層
建議采用HDFS集群作為非結(jié)構(gòu)化、半結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ),MPP關(guān)系型數(shù)據(jù)庫(kù)集群作為結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ),Yarn作為實(shí)現(xiàn)統(tǒng)一資源管理調(diào)度。考慮到實(shí)時(shí)交互處理與批量處理同時(shí)并存的需要,采用Impala和Hbase數(shù)據(jù)實(shí)時(shí)查詢及分析,M/R實(shí)現(xiàn)定期批量處理,Spark作為實(shí)時(shí)批量處理,Storm流數(shù)據(jù)計(jì)算引擎作為流數(shù)據(jù)處理引擎。
(3)數(shù)據(jù)服務(wù)層
采用SOA實(shí)現(xiàn)服務(wù)能力管理及調(diào)用,通過(guò)消息中間件完成應(yīng)用之間的數(shù)據(jù)交換,數(shù)據(jù)集成平臺(tái)提供批量數(shù)據(jù)服務(wù)。大數(shù)據(jù)總體技術(shù)架構(gòu)如圖3所示。
表1 Hadoop及其生態(tài)圈技術(shù)定位及應(yīng)用場(chǎng)景
表2 數(shù)據(jù)服務(wù)層主要技術(shù)及應(yīng)用場(chǎng)景
核心業(yè)務(wù)和數(shù)據(jù)是各電信運(yùn)營(yíng)商的生命之源、發(fā)展之本,數(shù)據(jù)步入海量級(jí)別,大數(shù)據(jù)平臺(tái)將在數(shù)據(jù)統(tǒng)計(jì)分析、精準(zhǔn)營(yíng)銷(xiāo)中發(fā)揮關(guān)鍵作用,具有廣泛的應(yīng)用前景。
參考文獻(xiàn)
[1]陳虹君.基于Hadoop平臺(tái)的Spark框架研究[J].電腦知識(shí)與技術(shù),2014(35:8407-8408).
[2]黎文陽(yáng).大數(shù)據(jù)處理模型Apache Spark研究[J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2015(8):55-60.
圖3 總體技術(shù)架構(gòu)圖
收稿日期:(2016-04-26)
Research on big data applications deployment technology
ZHANGLiang,YANGChunli,MAYuanyuan
Abstract:In the case of massive data analysis,Hadoop ecosystem and its various components(such as Impala,Spark)technical features and application scenarios proposed functional architecture and technical architecture in terms of data collection,data processing,data applications and the like.
Key words:big data;spark;impala;hadoop