商業(yè)大數(shù)據(jù)分析-1_第1頁
商業(yè)大數(shù)據(jù)分析-1_第2頁
商業(yè)大數(shù)據(jù)分析-1_第3頁
商業(yè)大數(shù)據(jù)分析-1_第4頁
商業(yè)大數(shù)據(jù)分析-1_第5頁
已閱讀5頁,還剩68頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

《大數(shù)據(jù)》xxu@許鑫華東師范大學(xué)經(jīng)濟(jì)與管理學(xué)部E-mail:xxu@/xuxin流計(jì)算大數(shù)據(jù)Big

Data華東師范大學(xué)信第息一管頁理,共系七十三頁。

許鑫《大數(shù)據(jù)》xxu@提綱流計(jì)算概述流計(jì)算處理流程流計(jì)算應(yīng)用流計(jì)算開源框架–StormSpark

StreamingSamzaStorm、Spark

Streaming和Samza的應(yīng)用場景Storm編程實(shí)踐華東師范大學(xué)信第息二管頁理,共系七十三頁。

許鑫《大數(shù)據(jù)》xxu@華東師范大學(xué)信第息三管頁理,共系七十三頁。

許鑫8.1

流計(jì)算概述?8.1.1靜態(tài)數(shù)據(jù)和流數(shù)據(jù)?8.1.2批量計(jì)算和實(shí)時(shí)計(jì)算?8.1.3流計(jì)算概念?8.1.4流計(jì)算與Hadoop?8.1.5流計(jì)算框架《大數(shù)據(jù)》xxu@

很多企業(yè)為了支持決策分析而構(gòu)建的數(shù)據(jù)倉庫系統(tǒng),其中存放的大量歷史數(shù)據(jù)就是靜態(tài)數(shù)據(jù)。技術(shù)人員可以利用數(shù)據(jù)挖掘和OLAP(On-Line

AnalyticalProcessing)分析工具從靜態(tài)數(shù)據(jù)中找到對企業(yè)有價(jià)值的信息8.1.1靜態(tài)數(shù)據(jù)和流數(shù)據(jù)華東師范大學(xué)信第息四管頁理,共系七十三頁。

許鑫《大數(shù)據(jù)》xxu@華東師范大學(xué)信第息五管頁理,共系七十三頁。

許鑫

近年來,在Web應(yīng)用、網(wǎng)絡(luò)監(jiān)控、傳感監(jiān)測等領(lǐng)域,興起了一種新的數(shù)據(jù)密集型應(yīng)用——流數(shù)據(jù),即數(shù)據(jù)以大量、快速、時(shí)變的流形式持續(xù)到達(dá)實(shí)例:PM2.5檢測、電子商務(wù)網(wǎng)站用戶點(diǎn)擊流流數(shù)據(jù)具有如下特征:數(shù)據(jù)快速持續(xù)到達(dá),潛在大小也許是無窮無盡的數(shù)據(jù)來源眾多,格式復(fù)雜

數(shù)據(jù)量大,但是不十分關(guān)注存儲,一旦經(jīng)過處理,要么被丟棄,要么被歸檔存儲注重?cái)?shù)據(jù)的整體價(jià)值,不過分關(guān)注個(gè)別數(shù)據(jù)

數(shù)據(jù)順序顛倒,或者不完整,系統(tǒng)無法控制將要處理的新到達(dá)的數(shù)據(jù)元素的順序8.1.1靜態(tài)數(shù)據(jù)和流數(shù)據(jù)《大數(shù)據(jù)》xxu@華東師范大學(xué)信第息六管頁理,共系七十三頁。

許鑫

對靜態(tài)數(shù)據(jù)和流數(shù)據(jù)的處理,對應(yīng)著兩種截然不同的計(jì)算模式:批量計(jì)算和實(shí)時(shí)計(jì)算8.1.2批量計(jì)算和實(shí)時(shí)計(jì)算圖8-2

數(shù)據(jù)的兩種處理模型批量計(jì)算:充裕時(shí)間處理靜態(tài)數(shù)據(jù),如

Hadoop流數(shù)據(jù)不適合采用批量計(jì)算,因?yàn)榱鲾?shù)據(jù)不適合用傳統(tǒng)的關(guān)系模型建模流數(shù)據(jù)必須采用實(shí)時(shí)計(jì)算,響應(yīng)時(shí)間為秒級數(shù)據(jù)量少時(shí),不是問題,但是,在大數(shù)據(jù)時(shí)代,數(shù)據(jù)格式復(fù)雜、來源眾多、數(shù)據(jù)量巨大,對實(shí)時(shí)計(jì)算提出了很大的挑戰(zhàn)。因此,針對流數(shù)據(jù)的實(shí)時(shí)計(jì)算——流計(jì)算,應(yīng)運(yùn)而生《大數(shù)據(jù)》xxu@華東師范大學(xué)信第息七管頁理,共系七十三頁。

許鑫

流計(jì)算:實(shí)時(shí)獲取來自不同數(shù)據(jù)源的海量數(shù)據(jù),經(jīng)過實(shí)時(shí)分析處理,獲得有價(jià)值的信息8.1.3流計(jì)算概念圖8-3流計(jì)算示意圖《大數(shù)據(jù)》xxu@華東師范大學(xué)信第息八管頁理,共系七十三頁。

許鑫

流計(jì)算秉承一個(gè)基本理念,即數(shù)據(jù)的價(jià)值隨著時(shí)間的流逝而降低,如用戶點(diǎn)擊流。因此,當(dāng)事件出現(xiàn)時(shí)就應(yīng)該立即進(jìn)行處理,而不是緩存起來進(jìn)行批量處理。為了及時(shí)處理流數(shù)據(jù),就需要一個(gè)低延遲、可擴(kuò)展、高可靠的處理引擎對于一個(gè)流計(jì)算系統(tǒng)來說,它應(yīng)達(dá)到如下需求:高性能:處理大數(shù)據(jù)的基本要求,如每秒處理幾十萬條數(shù)據(jù)海量式:支持TB級甚至是PB級的數(shù)據(jù)規(guī)模實(shí)時(shí)性:保證較低的延遲時(shí)間,達(dá)到秒級別,甚至是毫秒級別分布式:支持大數(shù)據(jù)的基本架構(gòu),必須能夠平滑擴(kuò)展易用性:能夠快速進(jìn)行開發(fā)和部署可靠性:能可靠地處理流數(shù)據(jù)8.1.3流計(jì)算概念《大數(shù)據(jù)》xxu@華東師范大學(xué)信第息九管頁理,共系七十三頁。

許鑫

Hadoop設(shè)計(jì)的初衷是面向大規(guī)模數(shù)據(jù)的批量處理,每臺機(jī)器并行運(yùn)行MapReduce任務(wù),最后對結(jié)果進(jìn)行匯總輸出

MapReduce是專門面向靜態(tài)數(shù)據(jù)的批量處理的,內(nèi)部各種實(shí)現(xiàn)機(jī)制都為批處理做了高度優(yōu)化,不適合用于處理持續(xù)到達(dá)的動(dòng)態(tài)數(shù)據(jù)

可能會想到一種“變通”的方案來降低批處理的時(shí)間延遲——將基于

MapReduce的批量處理轉(zhuǎn)為小批量處理,將輸入數(shù)據(jù)切成小的片段,每隔一個(gè)周期就啟動(dòng)一次MapReduce作業(yè)。但這種方式也無法有效處理流數(shù)據(jù)

切分成小片段,可以降低延遲,但是也增加了附加開銷,還要處理片段之間依賴關(guān)系需要改造MapReduce以支持流式處理8.1.4流計(jì)算與Hadoop結(jié)論:魚和熊掌不可兼得,Hadoop擅長批處理,不適合流計(jì)算《大數(shù)據(jù)》xxu@華東師范大學(xué)信第息十管頁理,共系七十三頁。

許鑫當(dāng)前業(yè)界誕生了許多專門的流數(shù)據(jù)實(shí)時(shí)計(jì)算系統(tǒng)來滿足各自需求

目前有三類常見的流計(jì)算框架和平臺:商業(yè)級的流計(jì)算平臺、開源流計(jì)算框架、公司為支持自身業(yè)務(wù)開發(fā)的流計(jì)算框架商業(yè)級:IBM

InfoSphere

Streams和IBM

StreamBase較為常見的是開源流計(jì)算框架,代表如下:

TwitterStorm:免費(fèi)、開源的分布式實(shí)時(shí)計(jì)算系統(tǒng),可簡單、高效、可靠地處理大量的流數(shù)據(jù)

Yahoo!S4(Simple

Scalable

Streaming

System):開源流計(jì)算平臺,是通用的、分布式的、可擴(kuò)展的、分區(qū)容錯(cuò)的、可插拔的流式系統(tǒng)公司為支持自身業(yè)務(wù)開發(fā)的流計(jì)算框架:Facebook

PumaDstream(百度)銀河流數(shù)據(jù)處理平臺(淘寶)8.1.5流計(jì)算框架《大數(shù)據(jù)》許鑫xxu@華東師范大學(xué)信第息十管一頁理,系共七十三頁。8.2

流計(jì)算處理流程?8.2.1概述?8.2.2數(shù)據(jù)實(shí)時(shí)采集?8.2.3數(shù)據(jù)實(shí)時(shí)計(jì)算?8.2.4實(shí)時(shí)查詢服務(wù)《大數(shù)據(jù)》許鑫xxu@華東師范大學(xué)信第息十管二頁理,系共七十三頁。傳統(tǒng)的數(shù)據(jù)處理流程,需要先采集數(shù)據(jù)并存儲在關(guān)系數(shù)據(jù)庫等數(shù)據(jù)管理系統(tǒng)中,之后由用戶通過查詢操作和數(shù)據(jù)管理系統(tǒng)進(jìn)行交互傳統(tǒng)的數(shù)據(jù)處理流程示意圖傳統(tǒng)的數(shù)據(jù)處理流程隱含了兩個(gè)前提:

存儲的數(shù)據(jù)是舊的。存儲的靜態(tài)數(shù)據(jù)是過去某一時(shí)刻的快照,這些數(shù)據(jù)在查詢時(shí)可能已不具備時(shí)效性了需要用戶主動(dòng)發(fā)出查詢來獲取結(jié)果8.2.1數(shù)據(jù)處理流程《大數(shù)據(jù)》許鑫xxu@華東師范大學(xué)信第息十管三頁理,系共七十三頁。流計(jì)算的處理流程一般包含三個(gè)階段:數(shù)據(jù)實(shí)時(shí)采集、數(shù)據(jù)實(shí)時(shí)計(jì)算、實(shí)時(shí)查詢服務(wù)8.2.1數(shù)據(jù)處理流程流計(jì)算處理流程示意圖《大數(shù)據(jù)》許鑫xxu@華東師范大學(xué)信第息十管四頁理,系共七十三頁。

數(shù)據(jù)實(shí)時(shí)采集階段通常采集多個(gè)數(shù)據(jù)源的海量數(shù)據(jù),需要保證實(shí)時(shí)性、低延遲與穩(wěn)定可靠

以日志數(shù)據(jù)為例,由于分布式集群的廣泛應(yīng)用,數(shù)據(jù)分散存儲在不同的機(jī)器上,因此需要實(shí)時(shí)匯總來自不同機(jī)器上的日志數(shù)據(jù)

目前有許多互聯(lián)網(wǎng)公司發(fā)布的開源分布式日志采集系統(tǒng)均可滿足每秒數(shù)百

MB的數(shù)據(jù)采集和傳輸需求,如:Facebook的ScribeLinkedIn的Kafka淘寶的Time

Tunnel基于Hadoop的Chukwa和Flume8.2.2數(shù)據(jù)實(shí)時(shí)采集《大數(shù)據(jù)》許鑫xxu@華東師范大學(xué)信第息十管五頁理,系共七十三頁。數(shù)據(jù)采集系統(tǒng)的基本架構(gòu)一般有以下三個(gè)部分:Agent:主動(dòng)采集數(shù)據(jù),并把數(shù)據(jù)推送到Collector部分Collector:接收多個(gè)Agent的數(shù)據(jù),并實(shí)現(xiàn)有序、可靠、高性能的轉(zhuǎn)發(fā)Store:存儲Collector轉(zhuǎn)發(fā)過來的數(shù)據(jù)(對于流計(jì)算不存儲數(shù)據(jù))8.2.2數(shù)據(jù)實(shí)時(shí)采集數(shù)據(jù)采集系統(tǒng)基本架構(gòu)《大數(shù)據(jù)》許鑫xxu@華東師范大學(xué)信第息十管六頁理,系共七十三頁。數(shù)據(jù)實(shí)時(shí)計(jì)算階段對采集的數(shù)據(jù)進(jìn)行實(shí)時(shí)的分析和計(jì)算,并反饋實(shí)時(shí)結(jié)果

經(jīng)流處理系統(tǒng)處理后的數(shù)據(jù),可視情況進(jìn)行存儲,以便之后再進(jìn)行分析計(jì)算。在時(shí)效性要求較高的場景中,處理之后的數(shù)據(jù)也可以直接丟棄8.2.3數(shù)據(jù)實(shí)時(shí)計(jì)算數(shù)據(jù)實(shí)時(shí)計(jì)算流程《大數(shù)據(jù)》許鑫xxu@華東師范大學(xué)信第息十管七頁理,系共七十三頁。實(shí)時(shí)查詢服務(wù):經(jīng)由流計(jì)算框架得出的結(jié)果可供用戶進(jìn)行實(shí)時(shí)查詢、展示或儲存

傳統(tǒng)的數(shù)據(jù)處理流程,用戶需要主動(dòng)發(fā)出查詢才能獲得想要的結(jié)果。而在流處理流程中,實(shí)時(shí)查詢服務(wù)可以不斷更新結(jié)果,并將用戶所需的結(jié)果實(shí)時(shí)推送給用戶

雖然通過對傳統(tǒng)的數(shù)據(jù)處理系統(tǒng)進(jìn)行定時(shí)查詢,也可以實(shí)現(xiàn)不斷地更新結(jié)果和結(jié)果推送,但通過這樣的方式獲取的結(jié)果,仍然是根據(jù)過去某一時(shí)刻的數(shù)據(jù)得到的結(jié)果,與實(shí)時(shí)結(jié)果有著本質(zhì)的區(qū)別8.2.3實(shí)時(shí)查詢服務(wù)《大數(shù)據(jù)》許鑫xxu@華東師范大學(xué)信第息十管八頁理,系共七十三頁??梢姡魈幚硐到y(tǒng)與傳統(tǒng)的數(shù)據(jù)處理系統(tǒng)有如下不同:

流處理系統(tǒng)處理的是實(shí)時(shí)的數(shù)據(jù),而傳統(tǒng)的數(shù)據(jù)處理系統(tǒng)處理的是預(yù)先存儲好的靜態(tài)數(shù)據(jù)

用戶通過流處理系統(tǒng)獲取的是實(shí)時(shí)結(jié)果,而通過傳統(tǒng)的數(shù)據(jù)處理系統(tǒng),獲取的是過去某一時(shí)刻的結(jié)果

流處理系統(tǒng)無需用戶主動(dòng)發(fā)出查詢,實(shí)時(shí)查詢服務(wù)可以主動(dòng)將實(shí)時(shí)結(jié)果推送給用戶8.2.3實(shí)時(shí)查詢服務(wù)《大數(shù)據(jù)》許鑫xxu@華東師范大學(xué)信第息十管九頁理,系共七十三頁。

流計(jì)算是針對流數(shù)據(jù)的實(shí)時(shí)計(jì)算,可以應(yīng)用在多種場景中,如Web服務(wù)、機(jī)器翻譯、廣告投放、自然語言處理、氣候模擬預(yù)測等

如百度、淘寶等大型網(wǎng)站中,每天都會產(chǎn)生大量流數(shù)據(jù),包括用戶的搜索內(nèi)容、用戶的瀏覽記錄等數(shù)據(jù)。采用流計(jì)算進(jìn)行實(shí)時(shí)數(shù)據(jù)分析,可以了解每個(gè)時(shí)刻的流量變化情況,甚至可以分析用戶的實(shí)時(shí)瀏覽軌跡,從而進(jìn)行實(shí)時(shí)個(gè)性化內(nèi)容推薦

但是,并不是每個(gè)應(yīng)用場景都需要用到流計(jì)算的。流計(jì)算適合于需要處理持續(xù)到達(dá)的流數(shù)據(jù)、對數(shù)據(jù)處理有較高實(shí)時(shí)性要求的場景8.3流計(jì)算的應(yīng)用《大數(shù)據(jù)》許鑫xxu@華東師范大學(xué)信第息二管十頁理,系共七十三頁。

傳統(tǒng)的業(yè)務(wù)分析一般采用分布式離線計(jì)算的方式,即將數(shù)據(jù)全部保存起來,然后每隔一定的時(shí)間進(jìn)行離線分析來得到結(jié)果。但這樣會導(dǎo)致一定的延時(shí),難以保證結(jié)果的實(shí)時(shí)性

隨著分析業(yè)務(wù)對實(shí)時(shí)性要求的提升,離線分析模式已經(jīng)不適合用于流數(shù)據(jù)的分析,也不適用于要求實(shí)時(shí)響應(yīng)的互聯(lián)網(wǎng)應(yīng)用場景

如淘寶網(wǎng)“雙十一”、“雙十二”的促銷活動(dòng),商家需要根據(jù)廣告效果來即時(shí)調(diào)整廣告,這就需要對廣告的受訪情況進(jìn)行分析。但以往采用分布式離線分析,需要幾小時(shí)甚至一天的延時(shí)才能得到分析結(jié)果。而促銷活動(dòng)只持續(xù)一天,因此,隔天才能得到的分析結(jié)果便失去了價(jià)值

雖然分布式離線分析帶來的小時(shí)級的分析延時(shí)可以滿足大部分商家的需求,但隨著實(shí)時(shí)性要求越來越高,如何實(shí)現(xiàn)秒級別的實(shí)時(shí)分析響應(yīng)成為業(yè)務(wù)分析的一大挑戰(zhàn)8.3.1應(yīng)用場景1:實(shí)時(shí)分析《大數(shù)據(jù)》xxu@華東師范大學(xué)信第二息十管一理頁,系共七十三頁。許鑫

針對流數(shù)據(jù),“量子恒道”開發(fā)了海量數(shù)據(jù)實(shí)時(shí)流計(jì)算框架Super

Mario。通過該框架,量子恒道可處理每天TB級的實(shí)時(shí)流數(shù)據(jù),并且從用戶發(fā)出請求到數(shù)據(jù)展示,整個(gè)延時(shí)控制在2-3秒內(nèi),達(dá)到了實(shí)時(shí)性的要求8.3.1應(yīng)用場景1:實(shí)時(shí)分析Super

Mario處理流程《大數(shù)據(jù)》xxu@華東師范大學(xué)信第二息十管二理頁,系共七十三頁。許鑫流計(jì)算不僅為互聯(lián)網(wǎng)帶來改變,也能改變我們的生活

如提供導(dǎo)航路線,一般的導(dǎo)航路線并沒有考慮實(shí)時(shí)的交通狀況,即便在計(jì)算路線時(shí)有考慮交通狀況,往往也只是使用了以往的交通狀況數(shù)據(jù)。要達(dá)到根據(jù)實(shí)時(shí)交通狀態(tài)進(jìn)行導(dǎo)航的效果,就需要獲取海量的實(shí)時(shí)交通數(shù)據(jù)并進(jìn)行實(shí)時(shí)分析

借助于流計(jì)算的實(shí)時(shí)特性,不僅可以根據(jù)交通情況制定路線,而且在行駛過程中,也可以根據(jù)交通情況的變化實(shí)時(shí)更新路線,始終為用戶提供最佳的行駛路線8.3.1應(yīng)用場景2:實(shí)時(shí)交通《大數(shù)據(jù)》xxu@華東師范大學(xué)信第二息十管三理頁,系共七十三頁。許鑫?8.4.1Storm簡介?8.4.2Storm的特點(diǎn)?8.4.3Storm設(shè)計(jì)思想?8.4.4Storm框架設(shè)計(jì)8.4開源流計(jì)算框架Storm《大數(shù)據(jù)》xxu@華東師范大學(xué)信第二息十管四理頁,系共七十三頁。許鑫

以前只有政府機(jī)構(gòu)和金融機(jī)構(gòu)能夠通過昂貴的定制系統(tǒng)來滿足流數(shù)據(jù)實(shí)時(shí)分析計(jì)算需求

早期對于流計(jì)算的研究多數(shù)是基于對傳統(tǒng)數(shù)據(jù)庫處理的流式化,即實(shí)時(shí)數(shù)據(jù)庫,很少研究流計(jì)算框架Yahoo!

S4和Twitter

Storm的開源,改變了這個(gè)情況在流數(shù)據(jù)處理上比MapReduce更有優(yōu)勢批處理系統(tǒng)關(guān)注吞吐率,流處理系統(tǒng)關(guān)注延時(shí)Yahoo!S4和Twitter

Storm改變了開發(fā)實(shí)時(shí)應(yīng)用的方式以前既要關(guān)注處理邏輯,還要解決實(shí)時(shí)數(shù)據(jù)獲取、傳輸、存儲現(xiàn)在可以快速低成本搭建起實(shí)時(shí)流處理系統(tǒng)8.4開源流計(jì)算框架Storm《大數(shù)據(jù)》xxu@華東師范大學(xué)信第二息十管五理頁,系共七十三頁。許鑫

Twitter

Storm是一個(gè)免費(fèi)、開源的分布式實(shí)時(shí)計(jì)算系統(tǒng),Storm對于實(shí)時(shí)計(jì)算的意義類似于Hadoop對于批處理的意義,Storm可以簡單、高效、可靠地處理流

數(shù)據(jù),并支持多種編程語言

Storm框架可以方便地與數(shù)據(jù)庫系統(tǒng)進(jìn)行整合,從而開發(fā)出強(qiáng)大的實(shí)時(shí)計(jì)算系統(tǒng)8.4.1

Storm簡介《大數(shù)據(jù)》xxu@華東師范大學(xué)信第二息十管六理頁,系共七十三頁。許鑫

Twitter是全球訪問量最大的社交網(wǎng)站之一,Twitter開發(fā)Storm流處理框架也是為了應(yīng)對其不斷增長的流數(shù)據(jù)實(shí)時(shí)處理需求8.4.1

Storm簡介Twitter的分層數(shù)據(jù)處理架構(gòu)《大數(shù)據(jù)》xxu@華東師范大學(xué)信第二息十管七理頁,系共七十三頁。許鑫8.4.2

Storm的特點(diǎn)

Storm可用于許多領(lǐng)域中,如實(shí)時(shí)分析、在線機(jī)器學(xué)習(xí)、持續(xù)計(jì)算、遠(yuǎn)程RPC、數(shù)據(jù)提取加載轉(zhuǎn)換等Storm具有以下主要特點(diǎn):整合性:Storm可方便地與隊(duì)列系統(tǒng)和數(shù)據(jù)庫系統(tǒng)進(jìn)行整合簡易的API:Storm的API在使用上即簡單又方便可擴(kuò)展性:Storm的并行特性使其可以運(yùn)行在分布式集群中容錯(cuò)性:Storm可自動(dòng)進(jìn)行故障節(jié)點(diǎn)的重啟、任務(wù)的重新分配可靠的消息處理:Storm保證每個(gè)消息都能完整處理支持各種編程語言:Storm支持使用各種編程語言來定義任務(wù)快速部署:Storm可以快速進(jìn)行部署和使用免費(fèi)、開源:Storm是一款開源框架,可以免費(fèi)使用《大數(shù)據(jù)》xxu@華東師范大學(xué)信第二息十管八理頁,系共七十三頁。許鑫8.4.3

Storm設(shè)計(jì)思想Storm主要術(shù)語包括Streams、Spouts、Bolts、Topology和Stream

GroupingsStreams:Storm將流數(shù)據(jù)Stream描述成一個(gè)無限的Tuple序列,這些Tuple序列會以分布式的方式并行地創(chuàng)建和處理每個(gè)tuple是一堆值,每個(gè)值有一個(gè)名字,并且每個(gè)值可以是任何類型Tuple本來應(yīng)該是一個(gè)Key-Value的Map,由于各個(gè)組件間傳遞的tuple的字段名稱已經(jīng)事先定義好了,所以Tuple只需要按序填入各個(gè)Value,所以就是一個(gè)Value

List(值列表)Field1Field2Field3Field4《大數(shù)據(jù)》xxu@華東師范大學(xué)信第二息十管九理頁,系共七十三頁。許鑫8.4.3

Storm設(shè)計(jì)思想Spout:Storm認(rèn)為每個(gè)Stream都有一個(gè)源頭,并把這個(gè)源頭抽象為Spout

通常Spout會從外部數(shù)據(jù)源(隊(duì)列、數(shù)據(jù)庫等)讀取數(shù)據(jù),然后封裝成

Tuple形式,發(fā)送到Stream中。Spout是一個(gè)主動(dòng)的角色,在接口內(nèi)部有個(gè)nextTuple函數(shù),Storm框架會不停的調(diào)用該函數(shù)《大數(shù)據(jù)》許鑫xxu@華東師范大學(xué)信第息三管十頁理,系共七十三頁。8.4.3

Storm設(shè)計(jì)思想Bolt:Storm將Streams的狀態(tài)轉(zhuǎn)換過程抽象為Bolt。Bolt即可以處理Tuple,也可以將處理后的Tuple作為新的Streams發(fā)送給其他BoltBolt可以執(zhí)行過濾、函數(shù)操作、Join、操作數(shù)據(jù)庫等任何操作

Bolt是一個(gè)被動(dòng)的角色,其接口中有一個(gè)execute(Tuple

input)方法,在接收到消息之后會調(diào)用此函數(shù),用戶可以在此方法中執(zhí)行自己的處理邏輯《大數(shù)據(jù)》8.4.3

Storm設(shè)計(jì)思想Topology:Storm將Spouts和Bolts組成的網(wǎng)絡(luò)抽象成Topology,它可以被提交到Storm集群執(zhí)行。Topology可視為流轉(zhuǎn)換圖,圖中節(jié)點(diǎn)是一個(gè)Spout或Bolt,邊則表示Bolt訂閱了哪個(gè)Stream。當(dāng)Spout或者Bolt發(fā)送元組時(shí),它會把元組發(fā)送到每個(gè)訂閱了該Stream的Bolt上進(jìn)行處理

Topology里面的每個(gè)處理組件(Spout或Bolt)都包含處理邏輯,而組件之間的連接則表示數(shù)據(jù)流動(dòng)的方向Topology里面的每一個(gè)組件都是并行運(yùn)行的在Topology里面可以指定每個(gè)組件的并行度,Storm會在集群里面分配那么多的線程來同時(shí)計(jì)算在Topology的具體實(shí)現(xiàn)上,Storm中的

Topology定義僅僅是一些Thrift結(jié)構(gòu)體(二進(jìn)制高性能的通信中間件),支持各種編程語言進(jìn)行定義SpoutSpoutBoltBoltBoltxxu@BoltBolt華東師范大學(xué)信第三息十管一理頁,系共七十三頁。許鑫《大數(shù)據(jù)》xxu@華東師范大學(xué)信第三息十管二理頁,系共七十三頁。許鑫8.4.3

Storm設(shè)計(jì)思想Stream

Groupings:S

torm中的Stream

Groupings用于告知Topology如何在

兩個(gè)組件間(如Spout和Bolt之間,或者不同的Bolt之間)進(jìn)行Tuple的傳送。每一個(gè)Spout和Bolt都可以有多個(gè)分布式任務(wù),一個(gè)任務(wù)在什么時(shí)候、以什么方式發(fā)送Tuple就是由Stream

Groupings來決定的《大數(shù)據(jù)》xxu@華東師范大學(xué)信第三息十管三理頁,系共七十三頁。許鑫8.4.3

Storm設(shè)計(jì)思想目前,Storm中的Stream

Groupings有如下幾種方式:(1)ShuffleGrouping:隨機(jī)分組,隨機(jī)分發(fā)Stream中的Tuple,保證每個(gè)Bolt的Task接收Tuple數(shù)量大致一致(2)FieldsGrouping:按照字段分組,保證相同字段的Tuple分配到同一個(gè)Task中(3)AllGrouping:廣播發(fā)送,每一個(gè)Task都會收到所有的Tuple(4)GlobalGrouping:全局分組,所有的Tuple都發(fā)送到同一個(gè)Task中(5)NonGrouping:不分組,和ShuffleGrouping類似,當(dāng)前Task的執(zhí)行會和它的被訂閱者在同一個(gè)線程中執(zhí)行(6)DirectGrouping:直接分組,直接指定由某個(gè)Task來執(zhí)行Tuple的處理《大數(shù)據(jù)》xxu@華東師范大學(xué)信第三息十管四理頁,系共七十三頁。許鑫8.4.4

Storm框架設(shè)計(jì)HadoopStorm應(yīng)用名稱JobTopology系統(tǒng)角色JobTrackerNimbusTaskTrackerSupervisor組件接口Map/ReduceSpout/BoltStorm和Hadoop架構(gòu)組件功能對應(yīng)關(guān)系Storm運(yùn)行任務(wù)的方式與Hadoop類似:Hadoop運(yùn)行的是MapReduce作業(yè),而Storm運(yùn)行的是“Topology”但兩者的任務(wù)大不相同,主要的不同是:MapReduce作業(yè)最終會完成計(jì)算并結(jié)束運(yùn)行,而Topology將持續(xù)處理消息(直到人為終止)《大數(shù)據(jù)》xxu@華東師范大學(xué)信第三息十管五理頁,系共七十三頁。許鑫8.4.4

Storm框架設(shè)計(jì)Storm集群采用“Master—Worker”的節(jié)點(diǎn)方式:

Master節(jié)點(diǎn)運(yùn)行名為“Nimbus”的后臺程序(類似Hadoop中的

“JobTracker”),負(fù)責(zé)在集群范圍內(nèi)分發(fā)代碼、為Worker分配任務(wù)和監(jiān)測故障

Worker節(jié)點(diǎn)運(yùn)行名為“Supervisor”的后臺程序,負(fù)責(zé)監(jiān)聽分配給它所在機(jī)器的工作,即根據(jù)Nimbus分配的任務(wù)來決定啟動(dòng)或停止Worker進(jìn)程,一個(gè)

Worker節(jié)點(diǎn)上同時(shí)運(yùn)行若干個(gè)Worker進(jìn)程《大數(shù)據(jù)》xxu@華東師范大學(xué)信第三息十管六理頁,系共七十三頁。許鑫

Storm使用Zookeeper來作為分布式協(xié)調(diào)組件,負(fù)責(zé)Nimbus和多個(gè)Supervisor之間的所有協(xié)調(diào)工作。借助于Zookeeper,若Nimbus進(jìn)程或Supervisor進(jìn)程意外終止,重啟時(shí)也能讀取、恢復(fù)之前的狀態(tài)并繼續(xù)工作,使得Storm極其穩(wěn)定8.4.4

Storm框架設(shè)計(jì)Storm集群架構(gòu)示意圖Worker進(jìn)程Worker進(jìn)程……Worker進(jìn)程《大數(shù)據(jù)》xxu@華東師范大學(xué)信第三息十管七理頁,系共七十三頁。許鑫8.4.4

Storm框架設(shè)計(jì)worker:每個(gè)worker進(jìn)程都屬于一個(gè)特定的Topology,每個(gè)Supervisor節(jié)點(diǎn)的worker可以有多個(gè),每個(gè)worker對Topology中的每個(gè)組件(Spout或Bolt)運(yùn)行一個(gè)或者多個(gè)

executor線程來提供task的運(yùn)行服務(wù)executor:executor是產(chǎn)生于worker進(jìn)程內(nèi)部的線程,會執(zhí)行同一個(gè)組件的一個(gè)或者多個(gè)task。task:實(shí)際的數(shù)據(jù)處理由task完成,在Topology的生命周期中,每個(gè)組件的task數(shù)目是不會發(fā)生變化的,而executor的數(shù)目卻不一定。executor數(shù)目小于等于task的數(shù)目,默認(rèn)情況下,二者是相等的Worker、Executor和Task的關(guān)系《大數(shù)據(jù)》xxu@華東師范大學(xué)信第三息十管八理頁,系共七十三頁。許鑫8.4.4

Storm框架設(shè)計(jì)Storm工作流程示意圖基于這樣的架構(gòu)設(shè)計(jì),Storm的工作流程如下圖所示:所有Topology任務(wù)的提交必須在Storm客戶端節(jié)點(diǎn)上進(jìn)行,提交后,由Nimbus節(jié)點(diǎn)分配給其他Supervisor節(jié)點(diǎn)進(jìn)行處理Nimbus節(jié)點(diǎn)首先將提交的Topology進(jìn)行分片,分成一個(gè)個(gè)Task,分配給相應(yīng)的Supervisor,并將Task和Supervisor相關(guān)的信息提交到Zookeeper集群上Supervisor會去Zookeeper集群上認(rèn)領(lǐng)自己的Task,通知自己的Worker進(jìn)程進(jìn)行Task的處理說明:在提交了一個(gè)Topology之后,Storm就會創(chuàng)建Spout/Bolt實(shí)例并進(jìn)行序列化。之后,將序列化的組件發(fā)送給所有的任務(wù)所在的機(jī)器(即Supervisor節(jié)點(diǎn)),在每一個(gè)任務(wù)上反序列化組件《大數(shù)據(jù)》xxu@華東師范大學(xué)信第三息十管九理頁,系共七十三頁。許鑫8.5

Spark

StreamingSpark

Streaming設(shè)計(jì)Spark

Streaming與Storm的對比《大數(shù)據(jù)》許鑫xxu@華東師范大學(xué)信第息四管十頁理,系共七十三頁。8.5.1

Spark

Streaming設(shè)計(jì)SparkStreaming可整合多種輸入數(shù)據(jù)源,如Kafka、Flume、HDFS,甚至是普通的TCP套接字。經(jīng)處理后的數(shù)據(jù)可存儲至文件系統(tǒng)、數(shù)據(jù)庫,或顯示在儀表盤里圖13

Spark

Streaming支持的輸入、輸出數(shù)據(jù)源《大數(shù)據(jù)》xxu@華東師范大學(xué)信第四息十管一理頁,系共七十三頁。許鑫8.5.1

Spark

Streaming設(shè)計(jì)Spark

Streaming的基本原理是將實(shí)時(shí)輸入數(shù)據(jù)流以時(shí)間片(秒級)為單位進(jìn)行拆分,然后經(jīng)

Spark引擎以類似批處理的方式處理每個(gè)時(shí)間片數(shù)據(jù)圖14

Spark

Streaming執(zhí)行流程《大數(shù)據(jù)》xxu@華東師范大學(xué)信第四息十管二理頁,系共七十三頁。許鑫8.5.1

Spark

Streaming設(shè)計(jì)Spark

Streaming最主要的抽象是DStream(Discretized

Stream,離散化數(shù)據(jù)流),表示連續(xù)不斷的數(shù)據(jù)流。在內(nèi)部實(shí)現(xiàn)上,Spark

Streaming的輸入數(shù)據(jù)按照時(shí)間片(如1秒)分成一段一

段的DStream,每一段數(shù)據(jù)轉(zhuǎn)換為Spark中的RDD,并且對DStream的操作都最終轉(zhuǎn)變?yōu)閷ο鄳?yīng)的RDD的操作圖15

DStream操作示意圖《大數(shù)據(jù)》xxu@華東師范大學(xué)信第四息十管三理頁,系共七十三頁。許鑫8.5.2

Spark

Streaming與Storm的對比SparkStreaming和Storm最大的區(qū)別在于,SparkStreaming無法實(shí)現(xiàn)毫秒級的流計(jì)算,而Storm可以實(shí)現(xiàn)毫秒級響應(yīng)Spark

Streaming構(gòu)建在Spark上,一方面是因?yàn)镾park的低延遲執(zhí)行引擎(100ms+)可以用于實(shí)時(shí)計(jì)算,另一方面,相比于Storm,RDD數(shù)據(jù)集更容易做高效的容錯(cuò)處理Spark

Streaming采用的小批量處理的方式使得它可以同時(shí)兼容批量和實(shí)時(shí)數(shù)據(jù)處理的邏輯和算法,因此,方便了一些需要?dú)v史數(shù)據(jù)和實(shí)時(shí)數(shù)據(jù)聯(lián)合分析的特定應(yīng)用場合《大數(shù)據(jù)》xxu@華東師范大學(xué)信第四息十管四理頁,系共七十三頁。許鑫8.6

Samza基本概念系統(tǒng)架構(gòu)《大數(shù)據(jù)》xxu@華東師范大學(xué)信第四息十管五理頁,系共七十三頁。許鑫8.6.1基本概念1.作業(yè)一個(gè)作業(yè)(Job)是對一組輸入流進(jìn)行處理轉(zhuǎn)化成輸出流的程序?!洞髷?shù)據(jù)》xxu@華東師范大學(xué)信第四息十管六理頁,系共七十三頁。許鑫8.6.1基本概念分區(qū)Samza的流數(shù)據(jù)單位既不是Storm中的元組,也不是Spark

Streaming中的

DStream,而是一條條消息Samza中的每個(gè)流都被分割成一個(gè)或多個(gè)分區(qū),對于流里的每一個(gè)分區(qū)而言,都是一個(gè)有序的消息序列,后續(xù)到達(dá)的消息會根據(jù)一定規(guī)則被追加到其中一個(gè)分區(qū)里《大數(shù)據(jù)》xxu@華東師范大學(xué)信第四息十管七理頁,系共七十三頁。許鑫8.6.1基本概念任務(wù)一個(gè)作業(yè)會被進(jìn)一步分割成多個(gè)任務(wù)(Task)來執(zhí)行,其中,每個(gè)任務(wù)負(fù)責(zé)處理作業(yè)中的一個(gè)分區(qū)分區(qū)之間沒有定義順序,從而允許每一個(gè)任務(wù)獨(dú)立執(zhí)行YARN調(diào)度器負(fù)責(zé)把任務(wù)分發(fā)給各個(gè)機(jī)器,最終,一個(gè)工作中的多個(gè)任務(wù)會被分發(fā)到多個(gè)機(jī)器進(jìn)行分布式并行處理《大數(shù)據(jù)》xxu@華東師范大學(xué)信第四息十管八理頁,系共七十三頁。許鑫8.6.1基本概念數(shù)據(jù)流圖一個(gè)數(shù)據(jù)流圖是由多個(gè)作業(yè)構(gòu)成的,其中,圖中的每個(gè)節(jié)點(diǎn)表示包含數(shù)據(jù)的流,每條邊表示數(shù)據(jù)傳輸多個(gè)作業(yè)串聯(lián)起來就完成了流式的數(shù)據(jù)處理流程由于采用了異步的消息訂閱分發(fā)機(jī)制,不同任務(wù)之間可以獨(dú)立運(yùn)行《大數(shù)據(jù)》xxu@華東師范大學(xué)信第四息十管九理頁,系共七十三頁。許鑫8.6.2系統(tǒng)架構(gòu)MapReduce批處理架構(gòu)Samza流處理架構(gòu)數(shù)據(jù)層HDFSKafka執(zhí)行層YARNYARN處理層MapReduceSamza

API表MapReduce批處理架構(gòu)和Samza流處理架構(gòu)的類比Samza系統(tǒng)架構(gòu)主要包括–流數(shù)據(jù)層(Kafka)–執(zhí)行層(YARN)–處理層(Samza

API)流處理層和執(zhí)行層都被設(shè)計(jì)成可插拔的,開發(fā)人員可以使用其他框架來替代YARN和Kafka《大數(shù)據(jù)》許鑫xxu@華東師范大學(xué)信第息五管十頁理,系共七十三頁。8.6.2系統(tǒng)架構(gòu)處理分析過程如下:Samza客戶端需要執(zhí)行一個(gè)Samza作業(yè)時(shí),它會向YARN的ResouceManager提交作業(yè)請求ResouceManager通過與NodeManager溝通為該作業(yè)分配容器(包含了CPU、內(nèi)存等資源)來運(yùn)行SamzaApplicationMasterSamza

ApplicationMaster進(jìn)一步向ResourceManager申請運(yùn)行任務(wù)的容器獲得容器后,Samza

ApplicationMaster與容器所在的

NodeManager溝通,啟動(dòng)該容器,并在其中運(yùn)

行Samza

Task

RunnerSamza

Task

Runner負(fù)責(zé)執(zhí)行具體的Samza任務(wù),完成流數(shù)據(jù)處理分析《大數(shù)據(jù)》xxu@華東師范大學(xué)信第五息十管一理頁,系共七十三頁。許鑫8.7

Storm、Spark

Streaming和Samza的應(yīng)用場景從編程的靈活性來講,Storm是比較理想的選擇,它使用Apache

Thrift,可以用任何編程語言來編寫拓?fù)浣Y(jié)構(gòu)(Topology)當(dāng)需要在一個(gè)集群中把流計(jì)算和圖計(jì)算、機(jī)器學(xué)習(xí)、SQL查詢分析等進(jìn)行結(jié)合時(shí),可以選擇Spark

Streaming,因?yàn)?,在Spark上可以統(tǒng)一部署Spark

SQL,Spark

Streaming、MLlib,GraphX等組件,提供便捷的一體化編程模型當(dāng)有大量的狀態(tài)需要處理時(shí),比如每個(gè)分區(qū)都有數(shù)十億個(gè)元組,則可以選擇Samza。當(dāng)應(yīng)用場景需要毫秒級響應(yīng)時(shí),可以選擇Storm和Samza,因?yàn)镾park

Streaming無法實(shí)現(xiàn)毫秒級的流計(jì)算《大數(shù)據(jù)》xxu@華東師范大學(xué)信第五息十管二理頁,系共七十三頁。許鑫8.8

Storm編程實(shí)踐編寫Storm程序安裝Storm的基本過程運(yùn)行Storm程序Storm上機(jī)實(shí)踐詳細(xì)過程,請參考廈門大學(xué)數(shù)據(jù)庫實(shí)驗(yàn)室建設(shè)的

“中國高校大數(shù)據(jù)課程公共服務(wù)平臺”中的“大數(shù)據(jù)課程學(xué)生服務(wù)站”中的“學(xué)習(xí)指南”欄目:學(xué)生服務(wù)站地址:/post/4331/學(xué)習(xí)指南欄目中包含了《第八章流計(jì)算學(xué)習(xí)指南》/blog/767/掃一掃訪問學(xué)生服務(wù)站《大數(shù)據(jù)》xxu@華東師范大學(xué)信第五息十管三理頁,系共七十三頁。許鑫8.8.1編寫Storm程序程序任務(wù):單詞統(tǒng)計(jì)

基于Storm的單詞統(tǒng)計(jì)在形式上與基于MapReduce的單詞統(tǒng)計(jì)是類似的,

MapReduce使用的是Map和Reduce的抽象,而Storm使用的是Spout和Bolt的抽象Storm進(jìn)行單詞統(tǒng)計(jì)的整個(gè)流程:從Spout中發(fā)送Stream(每個(gè)英文句子為一個(gè)Tuple)用于分割單詞的Bolt將接收的句子分解為獨(dú)立的單詞,將單詞作為Tuple的字段名發(fā)送出去用于計(jì)數(shù)的Bolt接收表示單詞的Tuple,并對其進(jìn)行統(tǒng)計(jì)輸出每個(gè)單詞以及單詞出現(xiàn)過的次數(shù)《大數(shù)據(jù)》xxu@華東師范大學(xué)信第五息十管四理頁,系共七十三頁。許鑫8.8.1編寫Storm程序一個(gè)句子經(jīng)Storm的單詞統(tǒng)計(jì)得出的結(jié)果《大數(shù)據(jù)》xxu@華東師范大學(xué)信第五息十管五理頁,系共七十三頁。許鑫Storm的編程模型非常簡單,如下代碼即定義了整個(gè)單詞統(tǒng)計(jì)Topology的整體邏輯import

org.apache.storm.Config;Import

……public

class

WordCountTopology

{public

static

class

RandomSentenceSpout

extends

BaseRichSpout

{……}public

static

class

SplitSentence

extends

ShellBolt

implements

IRichBolt

{……}public

static

class

WordCount

extends

BaseBasicBolt

{……}public

static

void

main(String[]

args)

throws

Exception

{TopologyBuilder

builder

=

new

TopologyBuilder();builder.setSpout("sentences",

new

RandomSentenceSpout(),

5);builder.setBolt("split",

new

SplitSentence(),

8).shuffleGrouping("sentences");builder.setBolt("count",

new

WordCount(),

12).fieldsGrouping("split",

new

Fields("word"));……}}8.8.1編寫Storm程序《大數(shù)據(jù)》xxu@華東師范大學(xué)信第五息十管六理頁,系共七十三頁。許鑫8.8.1編寫Storm程序main()函數(shù)中的處理邏輯Topology中僅定義了整體的計(jì)算邏輯,還需要定義具體的處理函數(shù)。具體的處理函數(shù)可以使用任一編程語言來定義,甚至也可以結(jié)合多種編程語言來實(shí)現(xiàn)《大數(shù)據(jù)》xxu@華東師范大學(xué)信第五息十管七理頁,系共七十三頁。許鑫RandomSentenceSpout類備注:為簡單起見,RandomSentenceSpout省略了類中的一些方法public

class

RandomSentenceSpout

extends

BaseRichSpout

{SpoutOutputCollector_collector;Random

_rand;@Overridepublic

void

nextTuple()

{Utils.sleep(100);String[]

sentences

=

new

String[]{

"the

cow

jumped

over

the

moon",

"an

apple

a

day

keeps

the

doctor

away","four

score

and

seven

years

ago",

"snow

white

and

the

seven

dwarfs",

"i

am

at

two

with

nature"

};String

sentence

=

sentences[_rand.nextInt(sentences.length)];_collector.emit(new

Values(sentence));}@Overridepublic

void

declareOutputFields(OutputFieldsDeclarer

declarer)

{declarer.declare(new

Fields(“sentences"));}}8.8.1編寫Storm程序《大數(shù)據(jù)》xxu@華東師范大學(xué)信第五息十管八理頁,系共七十三頁。許鑫8.8.1編寫Storm程序SplitSentence類

如SplitSentence()方法雖然是通過Java語言定義的,但具體的操作可通過Python腳本來完成Topology里面的每個(gè)組件必須定義它要發(fā)射的Tuple的每個(gè)字段《大數(shù)據(jù)》xxu@華東師范大學(xué)信第五息十管九理頁,系共七十三頁。許鑫8.8.1編寫Storm程序splitsentence.py

Python腳本splitsentence.py定義了一個(gè)簡單的單詞分割方法,即通過空格來分割單詞。分割后的單詞通過emit()方法以Tuple的形式發(fā)送給訂閱了該Stream的Bolt進(jìn)行接收和處理《大數(shù)據(jù)》許鑫xxu@華東師范大學(xué)信第息六管十頁理,系共七十三頁。8.8.1編寫Storm程序WordCount類單詞統(tǒng)計(jì)的具體邏輯:首先判斷單詞是否統(tǒng)計(jì)過,若未統(tǒng)計(jì)過,需先將count值置為0。若單詞已統(tǒng)計(jì)過,則每出現(xiàn)一次該單詞,count值就加1《大數(shù)據(jù)》xxu@華東師范大學(xué)信第六息十管一理頁,系共七十三頁。許鑫8.8.1編寫Storm程序

上述雖然是一個(gè)簡單的單詞統(tǒng)計(jì),但對其進(jìn)行擴(kuò)展,便可應(yīng)用到許多場景中,如微博中的實(shí)時(shí)熱門話題。Twitter也正是使用了Storm框架實(shí)現(xiàn)了實(shí)時(shí)熱門話題Twitter實(shí)時(shí)熱門話題處理流程示意圖《大數(shù)據(jù)》xxu@華東師范大學(xué)信第六息十管二理頁,系共七十三頁。許鑫8.8.2安裝Storm的基本過程安裝Storm的基本過程如下:第一步:安裝Java環(huán)境第二步:安裝

Zookeeper第三步:安裝Storm(單機(jī))第四步:關(guān)閉Storm本實(shí)例中Storm具體運(yùn)行環(huán)境如下:CentOS

6.4Storm

0.9.6Java

JDK

1.7ZooKeeper

3.4.6Python

2.6備注:CentOS中已默認(rèn)安裝了Python

2.6,我們還需要安裝JDK

環(huán)境以及分布式應(yīng)用程序協(xié)調(diào)服務(wù)ZookeeperStorm上機(jī)實(shí)踐詳細(xì)過程,請參考廈門大學(xué)數(shù)據(jù)庫實(shí)驗(yàn)室建設(shè)的“中國高校大數(shù)據(jù)課程公共服務(wù)平臺”中的“大數(shù)據(jù)課程學(xué)生服務(wù)站”中的“學(xué)習(xí)指南”欄目:學(xué)生服務(wù)站地址:/post/4331/學(xué)習(xí)指南欄目中包含了《第八章流計(jì)算學(xué)習(xí)指南》/blog/767/《大數(shù)據(jù)》xxu@華東師范大學(xué)信第六息十管三理頁,系共七十三頁。許鑫8.8.2安裝Storm的基本過程第一步:安裝Java環(huán)境Storm

運(yùn)行需要Java環(huán)境,可選擇Oracle

的JDK,或是OpenJDK,現(xiàn)在一般

Linux

系統(tǒng)默認(rèn)安裝的基本是

OpenJDK,如CentOS

6.4

就默認(rèn)安裝了OpenJDK1.7。但需要注意的是,CentOS

6.4

中默認(rèn)安裝的只是Java

JRE,而不是

JDK,為了開發(fā)方便,我們還是需要通過yum

進(jìn)行安裝JDK接著需要配置一下JAVA_HOME

環(huán)境變量,為方便,可以在~/.bashrc

中進(jìn)行設(shè)置《大數(shù)據(jù)》xxu@華東師范大學(xué)信第六息十管四理頁,系共七十三頁。許鑫8.8.2安裝Storm的基本過程第二步:安裝Zookeeper到官網(wǎng)下載Zookeeper,比如下載“zookeeper-3.4.6.tar.gz”下載后執(zhí)行如下命令進(jìn)行安裝zookeeper(將命令中3.4.6改為你下載的版本):chown命令讓hadoop用戶擁有zookeeper目錄下的所有文件的權(quán)限《大數(shù)據(jù)》xxu@華東師范大學(xué)信第六息十管五理頁,系共七十三頁。許鑫8.8.2安裝Storm的基本過程第二步:安裝Zookeeper(續(xù))接著執(zhí)行如下命令進(jìn)行zookeeper配置:進(jìn)入zoo.cfg文件編輯狀態(tài)后,將當(dāng)中的dataDir=/tmp/zookeeper更改為dataDir=/usr/local/zookeeper/tmp

。接著執(zhí)行:《大數(shù)據(jù)》xxu@華東師范大學(xué)信第六息十管六理頁,系共七十三頁。許鑫8.8.2安裝Storm的基本過程第三步:安裝Storm(單機(jī))到官網(wǎng)下載Storm,比如Storm0.9.6下載后執(zhí)行如下命令進(jìn)行安裝Storm:接著執(zhí)行如下命令進(jìn)行Storm配置:備注:storm的運(yùn)行有兩種模式:本地模式和分布式模式.在本地模式中,storm用一個(gè)進(jìn)程里面的線程來模擬所有的spout和bolt.本地模式對開發(fā)和測試來說比較有用。在分布式模式下,storm由一堆機(jī)器組成。當(dāng)提交topology給master的時(shí)候,master負(fù)責(zé)分發(fā)代碼并且負(fù)責(zé)給topolgoy分配工作進(jìn)程。如果一個(gè)工作進(jìn)程掛掉了,master節(jié)點(diǎn)會把它重新分配到其它節(jié)點(diǎn)《大數(shù)據(jù)》xxu@華東師范大學(xué)信第六息十管七理頁,系共七十三頁。許鑫8.8.2安裝Storm的基本過程第三步:安裝Storm(單機(jī))

(續(xù))修改其中的storm.zookeeper.servers和nimbus.host

兩個(gè)配置項(xiàng),即取消掉注釋且都修改值為(我們只需要在單機(jī)上運(yùn)行),如下圖所示。然后就可以啟動(dòng)Storm

了。執(zhí)行如下命令啟動(dòng)nimbus

后臺進(jìn)程:《大數(shù)據(jù)》xxu@華東師范大學(xué)信第六息十管八理頁,系共七十三頁。許鑫8.8.2安裝Storm的基本過程第三步:安裝Storm(單機(jī))

(續(xù))啟動(dòng)nimbus

后,終端被該進(jìn)程占用了,不能再繼續(xù)執(zhí)行其他命令了。因此我們需要另外開啟一個(gè)終

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論