- 圖解物聯(lián)網(wǎng)
- NTT DATA集團(tuán) (日)河村雅人等
- 2099字
- 2019-01-05 10:13:14
2.4 處理數(shù)據(jù)
2.4.1 處理服務(wù)器的作用
很顯然,處理服務(wù)器就是處理接收到的數(shù)據(jù)的地方。“處理”是一個抽象的詞語,例如保存數(shù)據(jù),以及轉(zhuǎn)換數(shù)據(jù)以使其看上去更易懂,還有從多臺傳感器的數(shù)據(jù)中發(fā)現(xiàn)新的數(shù)據(jù),這些都是處理。使用者的目的不同,處理服務(wù)器的內(nèi)容也各異。不過說到數(shù)據(jù)的處理方法,它可以歸納成以下4種:數(shù)據(jù)分析、數(shù)據(jù)加工、數(shù)據(jù)保存以及向設(shè)備發(fā)出指令(圖2.20)。

圖2.20 數(shù)據(jù)的處理
關(guān)于數(shù)據(jù)的分析和加工,有兩種典型的處理方式,分別叫作“批處理”和“流處理”。首先就來說說這個“批處理”和“流處理”。
2.4.2 批處理
批處理的方法是隔一段時間就分批處理一次積攢的數(shù)據(jù)。一般情況下是先把數(shù)據(jù)存入數(shù)據(jù)庫里,隔一段時間就從數(shù)據(jù)庫獲取數(shù)據(jù),執(zhí)行處理。批處理的重點在于要在規(guī)定時間內(nèi)處理所有數(shù)據(jù)。因此,數(shù)據(jù)的數(shù)量越多,執(zhí)行處理的機(jī)器性能就得越好。
今后設(shè)備的數(shù)量將會增加,這一點在第一章已經(jīng)解釋過了。人們需要處理從數(shù)量龐大的設(shè)備發(fā)來的傳感器數(shù)據(jù)和圖像等大型數(shù)據(jù),這被稱為“大數(shù)據(jù)”。不過,通過使用一種叫作分布式處理平臺的平臺軟件,就能高效地處理數(shù)兆、數(shù)千兆這種大型數(shù)據(jù)了。具有代表性的分布式處理平臺包括Hadoop和Spark。
Apache Hadoop
Apache Hadoop是一個對大規(guī)模數(shù)據(jù)進(jìn)行分布式處理的開源框架。Hadoop有一種叫作MapReduce的機(jī)制,用來高效處理數(shù)據(jù)。MapReduce是一種專門用于在分布式環(huán)境下高效處理數(shù)據(jù)的機(jī)制,它基本由Map、Shuffle、Reduce這3種處理構(gòu)成(圖2.21)。

圖2.21 通過Hadoop MapReduce執(zhí)行批處理
Hadoop對于每個被稱為節(jié)點的服務(wù)器執(zhí)行MapReduce,并統(tǒng)計結(jié)果。首先是分割數(shù)據(jù),這里的數(shù)據(jù)指的是各個服務(wù)器的處理對象。最初負(fù)責(zé)分割數(shù)據(jù)的是Map。Map對于每條數(shù)據(jù)反復(fù)執(zhí)行同一項處理,通過Map而發(fā)生變更的數(shù)據(jù)會被移送到下一項處理,即Shuffle。Shuffle會跨Hadoop的節(jié)點來把同種類的數(shù)據(jù)進(jìn)行分類。最后,Reduce把分類好的數(shù)據(jù)匯總。
也就是說,MapReduce是一種類似于收集硬幣,按種類給硬幣分類后再點數(shù)的方法。用Hadoop執(zhí)行處理的時候,為了能用MapReduce實現(xiàn)處理內(nèi)容,使用者需要下一番工夫。
另外,Hadoop還有一種叫分布式文件系統(tǒng)(HDFS)的機(jī)制,用于在分布式環(huán)境下運行Hadoop。HDFS把數(shù)據(jù)分割并存入多個磁盤里,讀取數(shù)據(jù)時,就從多個磁盤里同時讀取分割好的數(shù)據(jù)。這樣一來,跟從一臺磁盤里讀出巨大的文件相比,這種方法更能高速地進(jìn)行讀取。如上所述,如果使用MapReduce和HDFS這兩種機(jī)制,Hadoop就能高速處理巨型數(shù)據(jù)。
Apache Spark
Apache Spark也和Hadoop一樣,是一個分布式處理大規(guī)模數(shù)據(jù)的開源框架。Spark用一種叫作RDD(Resilient Distributed Dataset,彈性分布數(shù)據(jù)集)的數(shù)據(jù)結(jié)構(gòu)來處理數(shù)據(jù)(圖2.22)。

圖2.22 通過Spark執(zhí)行批處理
RDD能夠把數(shù)據(jù)放在內(nèi)存上,不經(jīng)過磁盤訪問也能處理數(shù)據(jù)。而且RDD使用的內(nèi)存不能被寫入,所以要在新的內(nèi)存上展開處理結(jié)果。通過保持內(nèi)存之間的關(guān)系,就能從必要的時間點開始計算,即使再次計算也不用從頭算起。根據(jù)這些條件,Spark在反復(fù)處理同一數(shù)據(jù)時(如機(jī)器學(xué)習(xí)等),就能非常高速地運行了。
對物聯(lián)網(wǎng)而言,傳輸?shù)臄?shù)據(jù)都是一些像傳感器數(shù)據(jù)、語音、圖像這種比較大的數(shù)據(jù)。批處理能夠存儲這些數(shù)據(jù),然后導(dǎo)出當(dāng)天的設(shè)備使用情況,以及通過圖像處理從拍攝的圖像來調(diào)查環(huán)境的變化。隨著設(shè)備的增加,想必今后這樣的大型數(shù)據(jù)會越來越多。因此,重要的是學(xué)會在批處理中使用我們介紹的分布式處理平臺。
2.4.3 流處理
批處理是把數(shù)據(jù)攢起來,一次性進(jìn)行處理的方法。相對而言,流處理是不保存數(shù)據(jù),按照到達(dá)處理服務(wù)器的順序?qū)?shù)據(jù)依次進(jìn)行處理。
想實時對數(shù)據(jù)做出反應(yīng)時,流處理是一個很有效的處理方法。因為批處理是把數(shù)據(jù)積攢之后隔一段時間進(jìn)行處理,所以從數(shù)據(jù)到達(dá)之后到處理完畢為止,會出現(xiàn)時間延遲。因此,流處理這種把到達(dá)的數(shù)據(jù)逐次進(jìn)行處理的思路就變得很重要了。此外,流處理基本上是不會保存數(shù)據(jù)的。只要是被使用過的數(shù)據(jù),如果沒必要保存,就會直接丟棄。
舉個例子,假設(shè)有個系統(tǒng),這個系統(tǒng)會對道路上行駛的車輛的當(dāng)前位置和車輛雨刷的運轉(zhuǎn)情況進(jìn)行搜集。
僅憑搜集那些雨刷正在運轉(zhuǎn)的車輛的當(dāng)前位置,就能夠?qū)崟r確定哪片地區(qū)正在下雨。此時,使用者可能想保存下過雨的地區(qū)的數(shù)據(jù),這時候只要保存處理結(jié)果就好,所以原來的傳感器數(shù)據(jù)可以丟掉不要,流處理正適用于這種情況。用流處理平臺就能實現(xiàn)流處理。
流處理和批處理一樣,也準(zhǔn)備了框架。在這里就給大家介紹一下Apache Spark和Apache Storm這兩個框架。
Spark Streaming
Spark Streaming是作為Apache Spark(在“批處理”部分介紹過)的庫被公開的。通過Spark Streaming,就能夠把Apache Spark拿到流處理中來使用(圖2.23)。

圖2.23 通過Spark Streaming執(zhí)行流處理
Spark Streaming是用RDD分割數(shù)據(jù)行的,它通過對分割的數(shù)據(jù)執(zhí)行小批量的批處理來實現(xiàn)流處理。輸入的數(shù)據(jù)會被轉(zhuǎn)換成一種叫作DStream的細(xì)且連續(xù)的RDD。先對一個RDD執(zhí)行Spark的批處理,將其轉(zhuǎn)換成別的RDD,然后按順序?qū)λ蠷DD反復(fù)執(zhí)行上述處理來實現(xiàn)流處理。
Apache Storm
Apache Storm是用于實現(xiàn)流處理的框架,結(jié)構(gòu)如圖2.24所示。

圖2.24 Apache Storm的結(jié)構(gòu)
用Storm處理的數(shù)據(jù)叫作Tuple,這個Tuple的流程叫作Streams。
Storm的處理過程由Spout和Bolts兩項處理構(gòu)成,這種結(jié)構(gòu)叫作Topology。Spout從其他處理接收到數(shù)據(jù)的時候,Storm處理就開始了。Spout把接收到的數(shù)據(jù)分割成Tuple,然后將其流入Topology來生成Streams,這就形成了流處理的入口。接下來,Bolts接收Spout以及從其他Bolts輸出的Streams,并以Tuple為單位處理收到的Streams,然后將其作為新的Streams輸出。可以自由組合Bolts之間的連接,也可以根據(jù)想執(zhí)行的處理自由組合Topology,還可以隨意決定Tuple使用的數(shù)據(jù)類型,以及使用JSON等數(shù)據(jù)格式。
- 物聯(lián)網(wǎng)智慧安監(jiān)技術(shù)
- 異構(gòu)基因共表達(dá)網(wǎng)絡(luò)的分析方法
- 面向物聯(lián)網(wǎng)的嵌入式系統(tǒng)開發(fā):基于CC2530和STM32微處理器
- 新手易學(xué):新手學(xué)淘寶開店
- Building Web Applications with ArcGIS
- 語音信號處理及Blackfin DSP實現(xiàn)
- 網(wǎng)絡(luò)利他行為研究:積極心理學(xué)的視角
- 網(wǎng)絡(luò)工程實施技術(shù)與方案大全
- Getting Started with nopCommerce
- 數(shù)據(jù)血緣分析原理與實踐
- Building RESTful Web Services with .NET Core
- 計算機(jī)通信網(wǎng)絡(luò)安全
- 小型局域網(wǎng)組建
- SD-WAN 架構(gòu)與技術(shù)
- 網(wǎng)絡(luò)分析技術(shù)揭秘:原理、實踐與WinPcap深入解析