物聯網大數據處理技術與實踐(第2版)課件 第7、8章-物聯網大數據存儲與管理、物聯網大數據計算與分析_第1頁
物聯網大數據處理技術與實踐(第2版)課件 第7、8章-物聯網大數據存儲與管理、物聯網大數據計算與分析_第2頁
物聯網大數據處理技術與實踐(第2版)課件 第7、8章-物聯網大數據存儲與管理、物聯網大數據計算與分析_第3頁
物聯網大數據處理技術與實踐(第2版)課件 第7、8章-物聯網大數據存儲與管理、物聯網大數據計算與分析_第4頁
物聯網大數據處理技術與實踐(第2版)課件 第7、8章-物聯網大數據存儲與管理、物聯網大數據計算與分析_第5頁
已閱讀5頁,還剩77頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

物聯網大數據處理技術與實踐InternetofThings

BigDataprocessingTechnologyandPractice物聯網大數據存儲與管理云文件系統(tǒng)的關鍵技術1NoSQL數據庫關鍵技術2PARTONE1云文件系統(tǒng)的關鍵技術師傅領進門,學藝在自身。------中國諺語物聯網大數據存儲與管理本書前面已經分析了這些數據的特點,針對其存儲與管理,以下幾個特點對物聯網大數據的存儲與管理帶來如下挑戰(zhàn):物聯網大數據的海量性物聯網大數據的高維度和部分稀疏特性物聯網數據的時空相關性物聯網數據的序列性與動態(tài)流式特性HDFS的目標和基本假設條件由于系統(tǒng)是由大量廉價商用設備連接而成的,即使每一部分的故障概率都很低,連接在一起使用總的故障概率也將大幅提高。因此在系統(tǒng)中硬件故障成為大概率事件,這就意味著硬件故障成為常態(tài),快速地檢測故障并從故障中恢復成為系統(tǒng)設計的核心目標之一。(2)流式數據存取

HDFS設計注重數據存取的高吞吐量而不是數據訪問的低延時,系統(tǒng)以流式數據存取為主,批處理為主要使用方式,而不是一般文件系統(tǒng)中常用的交互使用方式。因此系統(tǒng)面向的應用是以大規(guī)模流量數據訪問為主的應用,對于需要大量低延時隨機數據訪問的應用來說并不合適。(1)

硬件失敗HDFS的目標和基本假設條件(4)簡單的一致性模型

HDFS被設計用來存取規(guī)模巨大的文件,文件大小以GB甚至TB為單位,而不是KB或MB級的小型文件。單個集群能夠支撐上千萬的這種大規(guī)模數據文件,因此文件系統(tǒng)必須能夠管理成千上萬的可擴展數據節(jié)點,并且具有高數據傳輸帶寬。

系統(tǒng)面向的多數應用具有一次寫、多次讀的特點,文件一經創(chuàng)建,在寫入數據并且關閉之后就不再需要改變,而且數據通常只有一個寫入主體,這個特點簡化了數據一致性問題,使數據讀取的高吞吐量成為可能。(3)大數據集

HDFS的目標和基本假設條件HDFS使用Java語言開發(fā)而成,具有先天的可移植性,同時在設計上也注重了系統(tǒng)的可移植性,因此很容易從一個平臺移植到另一個平臺,這個特點有利于它的廣泛使用。(5)異構軟硬件平臺的可移植性HDFS體系架構HDFS系統(tǒng)最底層是由商用PC或商用服務器構成的廉價集群,這些PC的操作系統(tǒng)可以是Linux或Windows,但在實際部署中使用Linux的居多,因為Linux是開源的,使用費用低,而且在必要的時候可以修改。HDFS運行在操作系統(tǒng)之上,以TCP/IP作為通信協議對集群進行統(tǒng)一管理。

HDFS邏輯分層結構HDFS體系架構HDFS物理部署實例如右圖所示,是一個HDFS物理部署實例,在這個實例中集群由兩個機架組成,每個機架都有一個交換機和16臺商用計算機,兩個機架由一個交換機連接,整個集群共有32臺計算機,其中一臺作為主節(jié)點(稱為NameNode),一臺作為備用主節(jié)點(稱為SecondaryNameNode),其他作為數據節(jié)點(稱為DataNode)。HDFS體系架構HDFS系統(tǒng)管理示意圖文件數據以塊(Block)為單位存儲在DataNode中,文件元數據管理Block的標識BlockID和對應的存儲位置。當NameNode出現故障時,SecondaryNameNode提供備用的管理能力NameNode管理整個集群的文件元數據,執(zhí)行文件系統(tǒng)命名空間的所有操作,包括打開、關閉、重命名、創(chuàng)建文件和目錄,為文件分配數據塊并指定文件到數據塊的映射客戶端對文件系統(tǒng)的訪問首先從NameNode獲得元數據,但是客戶端不會從NameNode中直接得到文件數據,客戶端需要從文件元數據中解析得到文件數據塊的位置,然后直接從DataNode中讀取,HDFS對用戶訪問不設限制SecondaryNameNode是為了增強系統(tǒng)的可靠性而配置的,為NameNode提供備用的管理能力。DataNode負責響應客戶端對文件數據的讀寫請求。性能保障

為了提高NameNode的處理速度,HDFS的元數據都存放在內存中,所有對元數據的操作都是對內存進行讀寫,相對于存放在磁盤上其處理速度大幅提高。這樣做的前提是元數據的數據量相對較小,內存能夠放得下通過以下兩個方法可以增加內存中元數據的存儲量:第一當然是增加內存,但是內存不能無限擴展;第二是采用一些壓縮算法,壓縮元數據的體積,比如對文件名采用前綴壓縮算法可以減少文件名所占用的空間

元數據全部存放于NameNode的內存中有一個明顯的缺點就是,當NameNode發(fā)生故障時元數據將全部丟失,必須對元數據進行持久化處理,也就是保存在磁盤上,以便于故障后的恢復。(1)元數據操作

性能保障

HDFS采用機架感知的技術合理安排數據塊的位置,使數據存取效率更高。機架感知技術的原理是,相比于不同機架上的計算機,同一個機架上的計算機網絡距離更短,傳輸速度更快通基于機架感知原理,HDFS的數據塊復制策略是,數據塊的第一個副本寫在與客戶端同一個機架的DataNode上,如果客戶端不在集群范圍內則寫在與客戶端網絡距離最近、網絡傳輸速度最高的節(jié)點上,數據塊的第二個副本由第一個副本傳輸到同一機架的不同DataNode上,第三個副本由第二個副本傳輸到不同機架的DataNode上。這樣做使第一個和第二個副本可以很快地復制完成,但是為了防止由于機架的故障使數據不可用,所以第三個副本需要放在不同的機架上。對于數據塊的讀取基于機架感知技術同樣首先計算客戶端與不同數據塊的網絡距離,選擇從距離最近的DataNode上讀取數據。(2)數據塊的讀寫

性能保障

機架感知技術的核心是網絡距離的計算,不同DataNode的網絡距離可以根據統(tǒng)一編址的IP地址計算,也可以根據統(tǒng)一命名的網絡名稱來計算。HDFS對整個集群的數據塊分布還會采用再平衡的策略進行管理,當集群中某些DataNode的存儲空間剩余很多而有些存儲空間剩余很少時,系統(tǒng)會自動調整數據塊的分配,通過數據塊的遷移使整個集群的數據塊分布趨向均勻。(2)數據塊的讀寫

機架感知節(jié)點組織圖性能保障(3)智能信息檢索

DataNode會周期性地向NameNode發(fā)送心跳信號,NameNode處理這些信息,將近期沒有發(fā)送心跳信號的DataNode標記出來,并且不再將數據塊的讀寫請求分配給這些節(jié)點,同時這些節(jié)點上的數據塊也不再可用,相應文件元數據中的數據塊副本數減少,NameNode會定期檢查數據塊的副本數量,當小于配置的數量時會啟動復制功能,使數據塊的副本數量達到配置的要求。數據塊在讀取、寫入或傳輸過程中可能由于各種原因造成數據損壞,客戶端在寫數據塊的時候會同時生成數據塊的校驗和,校驗和會寫進一個單獨的隱藏文件,當客戶端從DataNode中讀取數據時會同時讀取數據塊的校驗和進行檢驗,如果不匹配,客戶端會選擇數據塊其他的副本,從而保證了數據的正確性。

性能保障(4)垃圾回收

當文件被刪除或數據塊副本配置數減小時會產生一些廢棄的數據塊,對于這兩種情況系統(tǒng)有不同的回收方式。當一個文件被用戶刪除以后,HDFS不會立刻將它安全刪除,而是將它移動到/trash目錄下,在文件從/trash刪除之前用戶還可以恢復它,被刪除的文件存放在/trash中的時間是可配置的,默認是6個小時。系統(tǒng)會自動掃描/trash目錄,將其中超過配置時間的文件刪除,刪除相應的元數據,釋放相應的數據塊,這意味著文件被真正刪除,用戶將無法再恢復它。當一個文件所配置的副本數減小時,NameNode會挑選出可以刪除的數據塊,數據塊的刪除操作通過心跳信號傳遞給它所在的DataNode,相應的DataNode收到信號后執(zhí)行刪除操作,釋放指定的數據塊空間。

為了方便HDFS的使用,系統(tǒng)提供了多種應用接口,常用的有命令行接口、JavaAPI、Web接口等。

(5)訪問接口

PARTTWO2NoSQL數據庫關鍵技術NoSQL數據庫的優(yōu)勢靈活的數據模型NoSQL數據庫中數據可以按照它實際應用中建模的形態(tài)進行保存NoSQL數據庫可以在運行時任意增加或減少字段改變數據模型NoSQL數據庫的優(yōu)勢靈活的查詢分析NoSQL數據庫提供更靈活的查詢方式和更強大的查詢語言,人們可以使用NoSQL數據庫提供的查詢接口和查詢語言構建任意復雜的查詢結果NoSQL數據庫還為特定查詢提供了方便,比如在面向圖的數據庫中,為人們提供了方便圖分析的各種查詢,如圖的遍歷、圖的最短路徑、圖的連通性分析等NoSQL數據庫的優(yōu)勢數據的版本管理NoSQL數據庫都提供數據版本管理的功能(不是全部),版本管理最常見的是軟件和文檔的版本管理NoSQL數據庫本身就支持對數據項的版本管理,不需要額外設計,一個數據項可以根據配置保留多個歷史數據值,當然也可以配置成像關系數據庫那樣只保存一個數據值NoSQL數據庫的優(yōu)勢良好的可擴展性NoSQL數據庫通過放松對一致性的要求來實現分區(qū)容忍性的目標,很容易地將記錄分散存儲在多個服務器上,而且通過構造適當的算法可以實現將記錄均勻地分布存儲在服務器NoSQL數據庫一般采用MapReduce計算模型(下一章將涉及),這種計算模型可以充分利用分布式計算的優(yōu)點,將運算部署在靠近數據的服務器上進行,一般情況下是將查詢計算分布部署在擁有數據的服務器上,可以很容易地實現數據的大規(guī)模并行搜索NoSQL數據庫的優(yōu)勢大數據量和高性能NoSQL數據庫良好的擴展性帶來了可以線性增加的存儲容量和計算能力,因此能夠處理大規(guī)模的數據存儲并提供高性能的數據吞吐能力NoSQL數據庫支持并行計算的特點使得它可以很容易地利用增加的服務器的計算能力,這已經在前面進行了分析NoSQL數據庫的劣勢NoSQL數據庫的劣勢一共有如下的五方面:1)查詢的復雜性2)事務性和一致性3)關系完整性4)訪問控制5)標準化NoSQL數據庫的劣勢查詢的復雜性NoSQL數據庫的靈活性帶來學習難度:不同NoSQL數據庫有獨特的查詢語言和接口,增加了學習和應用的難度。SQL標準化強調關系數據庫優(yōu)勢:關系數據庫通過多年發(fā)展在SQL支持和查詢優(yōu)化方面表現卓越,提供了穩(wěn)定可靠的操作功能。NoSQL數據庫操作相對簡陋:NoSQL系統(tǒng)在數據庫操作的封裝上較為簡陋,用戶需在應用層面完成連接、過濾、映射等任務,與關系數據庫相比存在差距。NoSQL數據庫的劣勢事務性和一致性

對于對數據一致性和事務性要求較高的金融機構,傳統(tǒng)的關系數據庫仍然是首選。相較之下,大多數NoSQL數據庫為了追求可用性和分區(qū)容忍性,通常會放寬對數據一致性的要求,可能導致短期內數據不一致的情況。此外,為了提高系統(tǒng)可擴展性和并行計算能力,許多NoSQL數據庫不支持事務,使得數據庫操作無狀態(tài),即無法在連續(xù)操作中提供回滾能力。NoSQL數據庫的劣勢關系完整性

關系數據庫通過外鍵約束自動保持數據關系的完整性,如在刪除關聯數據時會阻止破壞關系的操作。這得益于關系數據庫的設計。相反,NoSQL數據庫由于簡單的數據模型和分布式環(huán)境的限制,難以實現對關系完整性的強制檢查。在多副本和分布式存儲策略下,大多數NoSQL數據庫通常不會阻止刪除某個數據對象,即使其他對象仍在使用該數據。這凸顯了兩者在數據管理方面的不同。NoSQL數據庫的劣勢訪問控制

關系數據庫系統(tǒng)具備完善的用戶權限管理和內建安全模型。與之不同,NoSQL數據庫在這方面存在不足,安全模型和策略因產品而異,用戶通常需要額外構建安全措施,缺乏統(tǒng)一標準和系統(tǒng)內集成。這突顯了兩者在訪問權限管理和安全性方面的差異,以及NoSQL數據庫的分散性和多樣性。NoSQL數據庫的劣勢標準化

SQL作為關系數據庫標準的典型代表,通過標準化工作可以減少學習重復,促進系統(tǒng)協調和合作。標準化還延長了代碼使用壽命和提高了可重復使用性。相比之下,NoSQL數據庫目前在標準化方面仍處于起步階段,由于產品多樣性和面向復雜領域,缺乏統(tǒng)一標準,導致使用不同產品需要重新學習相關知識。這突顯了兩者在標準化方面的差異和NoSQL數據庫面臨的挑戰(zhàn)。HBase數據庫系統(tǒng)HBase數據庫系統(tǒng)是應用廣泛的NoSQL數據庫系統(tǒng)之一,是GoogleBigtable的開源版本,建立在HDFS之上,具有高可靠性、高性能、列存儲、可伸縮、實時讀寫的特點。它通過行鍵(RowKey)和行鍵范圍(Range)來檢索數據,主要用來存儲半結構化的松散數據。HBase的主要目標是高效地管理半結構化數據,依靠橫向擴展,通過不斷增加廉價的商用服務器來提高計算和存儲能力。HBaseHBase數據模型HBase以表的形式存儲數據,表由行和列組成。列劃分為若干個列族(ColumnFamily),一行由行鍵(RowKey)、版本號和若干個列組成。HBase中的表一般具有以下特點。大:一個表有上億行和上百萬列面向列:面向列(列族)的存儲,列(列族)獨立檢索稀疏:為空(Null)的列并不占用存儲空間,因此,表可以存儲稀疏的數據HBase數據模型行(Row)在表中以行為單位管理和存儲數據,行由行鍵(RowKey)進行標識,HBase以字節(jié)數組來處理和存儲行鍵,行鍵可以以符串的形式表現。行是按照行鍵以詞典順序排序的,行鍵值最小的行在表的最上面。例如,從1到100的數字,就是按照1,10,100,11,12,…,9,91,92,93,94,95,96,97,98,99這樣的方式來排序保存的。要想以自然順序來保存整型數,行鍵須在左邊以0填充。列族(ColumnFamily)和限定符(Qualifier)用戶根據這些列的性質或結構進行分組,將相同性質、長度或結構的列組成一個列族,列族需要在進行表結構設計時就設計好,要像關系數據庫那樣在操作表之前將表結構設計好在HBase中列的完整標識是“列族:限定符”。列族必須是可打印字符,也就是可見字符,但是限定符可以是任意字節(jié)數組。HBase數據模型版本號(Version)根據用戶的配置情況,HBase的數據可以以多版本的方式保存版本號有時候以時間戳來表示,以長整型數據保存,如一個時間戳可以設置為用java.util.Date.getTime()或System.currentTimeMillis()函數獲取的當前時間,并且當一個數據項被請求時,返回最新的版本開發(fā)者可以在插入數據時自定義版本號,然后通過指定這個版本號來重新獲取該值。數據項(Cell)數據項(Cell)是NoSQL數據庫中最小的數據單元,一個數據項由[行,列,版本號]這三個坐標唯一確定。數據項的內容是用戶自定義的,以字節(jié)數組的形式保存,沒有格式、類型等限制。HBase系統(tǒng)架構:表和分區(qū)表中的所有行都按照行鍵的詞典順序排列,當達到一定規(guī)模后表會在行的方向上分割為多個分區(qū)。HBase系統(tǒng)架構:表和分區(qū)分區(qū)按大小分割,每個表一開始只有一個分區(qū),隨著數據不斷插入表中,分區(qū)不斷增大。當增大到一個閾值時,分區(qū)就會等分為兩個新的分區(qū),如下圖所示。表中的行不斷增多,就會有越來越多的分區(qū)。HBase系統(tǒng)架構:分區(qū)服務器分區(qū)存儲在分區(qū)服務器上。不同的分區(qū)可以分布在不同的分區(qū)服務器上,但一個分區(qū)是不會拆分存儲到多個分區(qū)服務器上的。一個分區(qū)服務器可以存儲多個分區(qū)。HBase系統(tǒng)架構:分區(qū)和存儲塊分區(qū)由一個或者多個塊組成,每個塊保存一個列族。每個塊又由一個內存塊和0至多個塊文件組成HBase系統(tǒng)架構:分區(qū)和存儲塊內存塊是放在內存里的塊,用來保存修改的數據。當內存塊的大小達到一個閾值時,內存塊會被寫進文件,生成一個塊文件。塊文件以HFile格式保存在HDFS上。塊文件的HFile格式分為6個部分:DataBlock:以Key-Value方式保存表中的數據,可以被壓縮。MetaBlock:保存用戶自定義的Key/Value對,可以被壓縮。FileInfo:HFile的元信息,不可以被壓縮。DataBlockIndex:DataBlock的索引。每條索引的Key是被索引的Block的第一條記錄的Key。MetaBlockIndex:MetaBlock的索引。Trailer:這一段是定長的,保存了這6個部分每一段的偏移量。HBase集群組織架構一個完整的HBase集群由客戶端(Client)、Master、Zookeeper集群和分區(qū)服務器集群組成。HBase集群組織架構Client負責與分區(qū)服務器進行交互。HBase也采用主從結構的管理方式。Master負責監(jiān)控集群中所有分區(qū)服務器的實例。其作用如下:存儲和管理分區(qū)服務器的元數據為分區(qū)服務器分配分區(qū);負責分區(qū)服務器的負載均衡;發(fā)現失效的分區(qū)服務器并重新分配其上的分區(qū)。Zookeeper是一個提供分布式鎖服務的輕量級文件系統(tǒng),同時也可以作為集群管理系統(tǒng)。HBase訪問接口HBase提供了多種形式的訪問接口,包括以下6種:NativeJavaAPI:最常規(guī)和高效的訪問方式,適合HadoopMapReduceJob并行批處理HBase表數據。HBaseShell:HBase的命令行工具,最簡單的接口,適合HBase管理使用。ThriftGateway:利用Thrift序列化技術,支持C++、PHP、Python等多種語言,適合其他異構系統(tǒng)在線訪問HBase表數據。RESTGateway:支持REST風格的HTTPAPI訪問HBase。Pig:可以使用PigLatin流式編程語言來操作HBase中的數據,和Hive類似,本質也是編譯成MapReduceJob來處理HBase表數據,適合做數據統(tǒng)計。Hive:通過Hive可以使用類似SQL的語言來訪問HBase?;贜oSQL數據庫的物聯網大數據存儲與管理NoSQL數據庫本身是一個稀疏的、分布式的、持久化存儲的多維度排序Map,適合存儲高維度、稀疏的海量數據。NoSQL數據庫的特點(以HBase數據庫為例):其底層持久化是以列族為存儲單位分塊存儲,字段個數對底層結構沒有影響,而MySQL、Oracle等關系數據庫以行(一條數據)為單位存儲,當表中字段個數達到一定程度時,數據將被分片存儲,這樣會嚴重影響到插入、查詢的效率。HBase以HDFS為底層文件系統(tǒng),其分布式特性可以有效解決海量數據存儲的可擴展性問題。HBase的數據以分區(qū)為單位在集群中進行負載均衡,可以根據RowKey來確定數據發(fā)向集群中的哪個存儲節(jié)點。HBase可以使用多并發(fā)線程或修改自動緩存大小等方法提高寫入效率。基于HBase的物聯網數據庫設計技術RowKey的設計原則:HBase中不允許使用聯合主鍵來標識數據,一條數據只能由一個RowKey項唯一標識。HBase索引建立在行鍵RowKey的基礎上,需要將查詢的維度或信息放在行鍵中。在右圖RowKey的設計下,HBase的客戶端數據寫入的步驟如下:當在初始階段或者Region發(fā)生了拆分時,首先客戶端Client向HMaster發(fā)送請求,獲取RootRegtion的地址??蛻舳烁鶕呙鑂ootRegion的地址找到UserRegion的.METATable地址??蛻舳烁鶕?METATable中的Region信息獲取UserRegion的地址,并將數據寫入到對應的Region中?;贖Base的物聯網數據庫設計技術上述原理設計的RowKey具有明顯的優(yōu)點:由于行鍵排序的特點,在物理上同一個傳感器的數據存儲位置會相對集中。將查詢常用的時間維度和ID加入RowKey,提高了查詢的效率??蛻舳薈lient會根據這些傳感器數據的SensrorID前綴,將數據分流到不同的RegionServer上,不會出現寫入熱點,從而使得集群負載較為均衡。列族和列的設計原則:列族在使用之前必須先創(chuàng)建,列族中的任何一個列關鍵字下都可以存放數據。列族中的列不需要提前設計,可以在操作時任意添加,一個列族中列的數量不受限制。一張表中的列族個數不能太多,因為操作將跨越多個數據塊從而影響數據庫的讀寫性能?;贖Base的物聯網數據庫寫入技術傳感器類別的差異使得數據結構呈現多元化,在寫入數據庫之前需要對傳感器數據流的規(guī)范化、整合操作,保證寫入數據的有效性和完整性。例如,根據傳感器類別標識對數據進行分類,然后將分類后的數據存入緩沖區(qū)中。多源數據緩沖區(qū)主要有兩個作用:(1)緩存批量寫入的數據。HBase寫入的最大瓶頸在于網絡IO,將數據批量寫入將顯著地提高寫入性能。因此,系統(tǒng)首先將分類后的傳感器數據存放在緩沖區(qū)中,當緩沖區(qū)的數據量達到一定閥值時,便觸發(fā)一個線程,將數據寫入HBase。(2)保存寫入失敗的數據。觸發(fā)線程進行寫入并不意味著寫入數據成功,為保證數據完整性,系統(tǒng)將寫入時拋出異常、沒有寫入成功的數據重新放回緩沖區(qū)隊列中,等待系統(tǒng)調度,再次進行寫入,直至寫入成功。THANKS

FOR

YOUR

WATCHINGLoremIpsumDolorSitErElitLamet,ConsectetaurCilliumAdipisicingPecu,SedDoEiusmodTemporIncididuntUtLaboreEtDoloreMagnaAliqua.Thankyou物聯網大數據處理技術與實踐InternetofThings

BigDataprocessingTechnologyandPractice物聯網大數據計算與分析物聯網大數據批處理計算1物聯網大數據交互式查詢2物聯網大數據流式計算3物聯網大數據分析4PARTONE1物聯網大數據批處理計算師傅領進門,學藝在自身。------中國諺語物聯網大數據批處理計算物聯網大數據批處理計算中存在的問題:物聯網大數據的一個顯著特性是數據規(guī)模巨大,以至于無法利用普通的單個服務器在短時間內完成計算任務,必須要借助海量計算能力來幫助開發(fā)人員完成。解決方法:基于集群的分布式并行編程能夠讓軟件與數據同時運行在連成網絡的許多臺計算機上,并且可以通過增加計算機來擴充新的計算節(jié)點,從而在短時間內完成大規(guī)模數據的處理任務。存在問題:基于集群的分布式并行編程需要將大規(guī)模的數據進行切分并分發(fā)數據到不同計算機上,并將不同計算機上的計算結果傳輸到一個計算機上進行合并,還需要處理異常等一系列問題,需要大量的復雜代碼來處理上述問題,使得原本很簡單的計算變得讓程序員難以處理。并行編程模型:為了解決這個問題,Google使用了名為MapReduce的并行編程模型進行分布式并行編程。其主要優(yōu)點是通過簡單的接口來實現自動的并行化和大規(guī)模分布式計算,讓程序員專注于數據的處理部分而不用關心分布式并行計算所涉及到的技術細節(jié)。MapReduce的設計思想一個編程模型被廣泛使用的關鍵是其設計思想。設計思想決定了編程模型是否好用、是否能有效地解決實際問題、是否能保障性能。MapReduce基于以下思想進行設計:(1)向“外”橫向擴展,而非向“上”縱向擴展(Scale“out",not“up”)(2)失效被認為是常態(tài)(Assumefailuresarecommon)(3)把處理向數據遷移(Movingprocessingtothedata)(4)為應用開發(fā)者隱藏系統(tǒng)層細節(jié)(Hidesystem-leveldetailsfromtheapplicationdeveloper)(5)平滑無縫的可擴展性(Seamlessscalability)MapReduce的工作機制MapReduce集群中的服務器節(jié)點由一個主節(jié)點(Master)和多個從節(jié)點(Slave)構成。集群采用HDFS作為其分布式文件系統(tǒng)。

MapReduce總體工作流程:輸入的原始大數據集首先被切割成小數據集,通常讓小數據集小于或等于HDFS中一個塊的大小。如圖中步驟(1)所示輸入數據切割完畢后,啟動程序的多個副本。其中有一個特殊的副本運行在主節(jié)點上,它將任務(job)分配給M個map工作站和R個reduce工作站,如步驟(2)所示。在步驟(3)(4)中,Map工作站讀輸入生成key/value對緩存在內存,周期性地寫入本地硬盤,用劃分功能劃分為R個桶。在步驟(5)中,Reduce工作站接到工作數據位置后用遠程調用從Map工作站的硬盤讀數據。在步驟(6),Reduce工作站將key/value對送給用戶Reduce函數,把生成的key/value對加入輸出文件。MapReduce在物聯網大數據中的應用物聯網大數據分析的過程不是單獨基于一類數據進行采集、存儲、管理和分析的過程,而是針對物聯網設備的全生命周期的各類要素信息進行的。物聯網大數據分析需要基于過去很長歷史時期、不同工作和環(huán)境狀態(tài)下的所有數據,才能相對準確的分析出有價值的信息。物聯網中可以進行采集、存儲并加以分析利用的數據不止感知數據,還包括設備全生命周期的各類要素信息。物聯網大數據的數據規(guī)模是巨大的,例如在某些項目中每天需要保存數十GB甚至數百GB的數據。MapReduce以及NoSQL技術使得存儲、管理和分析大規(guī)模的數據成為可能,過去無法存儲的長期歷史數據,如今可以被無限制的存儲起來。物聯網大數據分析的發(fā)展使得過去被丟棄的傳感器數據得到充分利用,為企業(yè)提供了更多的支撐和決策依據。物聯網技術的興起使得廠家可以在售出的產品上預先安裝各種聯網的傳感器,采用Hadoop、NoSQL等技術進行數據采集、存儲、分析,從中獲取產品使用情況和用戶習慣等信息,幫助廠家預測產品銷售趨勢。PARTTWO2物聯網大數據交互式查詢HBase上的原生SQL傳感器的數值信息是存儲在HBase中的,對于HBase來說,SQL查詢從宏觀上可以分為統(tǒng)計查詢和非統(tǒng)計查詢。充分利用HBase的新特性,把對數據的操作從HBase客戶端移動到RegionServer端,降低網絡的I/O負載,提高HBase的性能。對于非統(tǒng)計查詢來說,我們可以使用過濾器獲取目標字段。對于統(tǒng)計查詢來說,我們可以采用協處理器方式獲取數據。HBase上的原生SQL以下面的SQL查詢?yōu)槔阂陨喜樵冋Z句的主要作用是從溫度傳感器表中,查詢出SensorID在0001和1001之間,兩個時間段內溫度小于25度傳感器的數據信息。該例中目標字段為SensorID、value、Time;篩選條件為Time、value、SensorID。底層數據庫調度過程:(1)判斷查詢是否為統(tǒng)計查詢;(2)調用過濾器或協處理器對HBase進行調度。selectSensorID,value,TimefromtempSensorTablewhereTime>=to_date(‘2016-2-2400:00:03,’yyyy-mm-ddhh24:mi:ss’)andTime<=to_date(‘2016-2-2400:00:04’,’yyyy-mm-ddhh24:mi:ss’)andvalue<=25andSensorID>=’0001’andSensorID<’1001’SQLonHBase的開源項目:PhoenixPhoenix可以將SQL查詢編譯為HBase上的一系列掃描操作。Phoenix使用協處理器、自定義過濾器等進行優(yōu)化,可以實現少量數據上的微秒級響應,以及百萬級別行數據的秒級響應。Phoenix支持多列的二級索引,列數不限。Phoenix的SQL語句更接近標準SQL規(guī)范。但它也有一些限制,例如Phoenix不能識別HBase創(chuàng)建的表。Phoenix官網地址:

Hadoop上的SQL:HiveHive是對HDFS進行修改擴展生成的一個數據倉庫框架。它實現了類SQL語句的編程接口,提供了一種類似SQL的語言HQL。Hive核心是將HQL轉換為MapReduce程序,然后將程序提交到Hadoop集群執(zhí)行。省去了編寫MapReduce程序的復雜過程。在HBase上使用Hive卻得不到很好的性能。Hive訪問HBase中表數據,實質上是通過Hadoop讀取HBase表數據,對HBase表進行切分,獲取RecordReader對象來讀取數據?;贖Base的交互式查詢交互式查詢分析的響應延遲常常需要控制在秒級范圍內,但目前的HBase、Hive在某些查詢場景下還達不到這樣的實時性要求。按行鍵從HBase中查詢數據效率是比較高的,但是若根據定義在列的屬性上的約束條件進行查詢的效率較低,無法滿足交互式查詢的秒級響應要求。針對多個屬性的約束條件進行交互式查詢,可以考慮使用倒排索引技術來提高查詢效率,或者采用ElasticSearch等內建高效倒排索引的存儲方案。華為的HBase二級索引項目以及Phoenix中都實現了二級索引。PARTTHREE3物聯網大數據流失計算流式計算的需求特點面向物聯網應用的感知數據流計算的需求一般有如下特點:高吞吐低延遲數據的處理能力。將流式數據和歷史數據進行“無縫”關聯。流數據處理需具有動態(tài)可伸縮的架構,能夠適應流數據規(guī)模和速度的動態(tài)變化性,適應不同的負載。能夠處理有缺陷的數據。容錯性,同時其保障容錯的開銷較小。支持高級流數據處理原語或語言。支持多租戶共享流數據處理基礎設施,支持pay-as-you-go的流數據處理服務使用模式。流數據基本概念起源于Unix的數據管道(pipeline)模型是流式數據處理系統(tǒng)通用的組件抽象模型。輸入數據通常通過緩沖區(qū)從數據源流入流式數據管道,管道中所有操作形成鏈路,數據流平滑通過整個管道,任何操作都不能阻塞處理過程。因此,流數據處理管道可以看作是由執(zhí)行數據操作的“算子(operator)”集合互相之間通過數據“流(stream)”連接而成的圖形成。算子具有輸入和輸出端口,輸入數據項的到達將觸發(fā)算子的執(zhí)行,算子所執(zhí)行的數據操作包括數據轉換、處理及產生輸出數據。流數據功能模型流數據基本概念在流式數據管道模型中的算子包括三種:數據源接收算子(sourceoperator)

數據源接收算子負責管理多個數據源通道,實現數據源到系統(tǒng)的傳輸和通信協議,接收來自多個數據源的數據,并將它們一個接一個地發(fā)送給下一個數據處理算子。管道模型中的數據源接收算子不具有輸入端口。與數據接收器相連的“時鐘(clock)”組件可選,它用來周期性地創(chuàng)建一條特殊的帶有時間戳的數據項,以方便周期性地對數據進行處理。目的接收算子(sinkoperator)

目的接收算子(sinkoperator)負責將管道中的數據遞送到外部的應用或用戶,它在管道模型中沒有輸出端口。在每一個數據處理算子中執(zhí)行一些數據操作,包括數據轉換、處理及產生輸出數據等,可用流數據的處理規(guī)則來表達,這些規(guī)則一般包括對數據的過濾、連接和聚集等,互相連接的基本算子運算符構成執(zhí)行計劃。數據處理算子流數據基本概念流數據處理的算子還可分為:阻塞算子:在產生執(zhí)行結果時需要預先讀取整個流數據非阻塞算子:在數據項到達的時候即可產生結果在部署模型上,流數據處理系統(tǒng)主要分為集中式和分布式兩類。流式數據的處理模型分為完全模型和滑動窗口模型兩類完全模型在整個流數據范圍內進行處理,例如阻塞式算子的執(zhí)行。但由于流數據是無邊界的連續(xù)數據項,讀取整個流數據在理論上是不可能的,因此,“窗口”被用來對運算符執(zhí)行時考慮的流數據進行限制,從而使得阻塞式算子也可以執(zhí)行,同時,也使得非阻塞式算子的執(zhí)行更有效。流數據基本概念窗口可分為如下幾類:

固定窗口:窗口邊界不移動,例如只處理某固定時間段內的數據項界標窗口:窗口邊界從某個已知時間點到當前時間點為止滑動窗口:窗口邊界是按照固定大小向前滑動的,即當新的數據項到達時,窗口的上界和下界都相應移動?;瑒哟翱诘慕K點永遠為當前時刻。其中,滑動窗口的大小可以由一個時間區(qū)間定義,也可以由窗口所包含的數據項數目定義。滑動窗口有兩個基本概念:窗口范圍(range),指滑動窗口的大小;更新間隔(slide),指窗口一次滑動的時間區(qū)間或數據項數目。流數據基本概念流數據處理的規(guī)則有兩類,一類是轉換規(guī)則(transformationrules),一類是檢測規(guī)則(detectionrules)轉換規(guī)則(transformationrules)轉換規(guī)則定義了一個由基本的算子運算符構成的執(zhí)行計劃。這些運算符描述了算子所執(zhí)行的包括過濾、連接、聚集等在內的數據操作。執(zhí)行計劃可由用戶自定義或由系統(tǒng)預定義。系統(tǒng)預定義轉換規(guī)則一般使用類似于SQL的語句來表達。其規(guī)則表達語言可分為聲明式語言和命令式語言兩類。檢測規(guī)則(detectionrules)檢測規(guī)則由條件和活動兩部分構成。條件部分通常用邏輯謂詞表達,后者通常使用特定的結構來表達。檢測規(guī)則通常用基于模式(pattern-based)的語言進行描述。條件通常表達為模式的形式,使用邏輯操作符、數據內容和時間約束等選擇輸入流數據中的匹配部分,活動則定義了所選數據項如何關聯來產生新的數據。這在復合事件處理系統(tǒng)中尤為常見。流數據基本概念流數據處理系統(tǒng)的規(guī)則語言中經常使用的算子運算符如下:單數據項(single-item)運算符。單數據項運算符分為兩類,一類為選擇運算符,對輸入流數據中的數據項按照某種條件進行過濾操作。數據加工運算符,包括投影運算符以及重命名運算符邏輯(logic)運算符。邏輯運算符是對多個數據項的操作,但與數據項的順序無關。包括:聯合運算符、析取運算符、數據項重復運算符(數據項a的重復度為<m,n>當且僅當a被檢測到出現了不少于m次,但不多于n次)以及否定運算符(作用在某數據項上的否定運算符當且僅當流數據中沒有出現該數據項時為真)。序列(sequences)運算符。序列運算符當且僅當數據項序列a1,a2,…,an以某個具體的順序出現時為真。序列運算符在基于模式的語言中經常使用,而轉換規(guī)則語言通常不提供該運算符。迭代(iteration)運算符。迭代運算符用來表達滿足給定迭代條件的無邊界數據項序列。與序列運算符類似,迭代運算符以數據項的排序為前提。流管理(flowmanagement)運算符。聲明式和命令式的流數據處理轉換規(guī)則描述語言都需要對多個來源的流數據進行合并、分割、組織和處理等。它包括:連接運算符、Bag集合運算符、數據流重復運算符、分組運算符以及排序運算符。聚集(aggregation)操作運算符。類似于關系代數中的聚集操作,很多流數據處理的應用場景也需要聚集多個流數據的數據,并生成新的數據。早期流數據處理系統(tǒng)提供一些預定義的聚集運算符,例如求最小值、最大值和平均值的運算符。聚集運算符往往需要和窗口結構聯合使用,以對操作的范圍進行約束,稱為窗口聚集操作或窗口聚集查詢(windowedaggregationquery)。流數據查詢操作流數據查詢相關工作可以分為兩個方面:

一方面是單個查詢操作的實現及優(yōu)化,例如連接查詢、聚集查詢等操作的實現及優(yōu)化;另一方面是互相連接的多個流數據操作算子的執(zhí)行及優(yōu)化。流數據連接查詢操作:

流數據的連接查詢算法可以分為兩個或多個流數據之間的連接查詢

以及流數據和靜態(tài)數據之間的連接查詢兩類,在分布式和云計算環(huán)境中,連接查詢主要通過數據分區(qū)技術實現?;谠朴嬎愕牧鲾祿奂樵儾僮鳎?/p>

基于云計算分布并行的計算模式,流數據上的滑動窗口聚集操作有并行劃分、增量式處理、層次性處理三種優(yōu)化方式。流數據定制化服務目標:面向不同類型應用的需求,以服務方式提供對流數據連續(xù)查詢、事件檢測、實時分析等的能力,支持用戶對大規(guī)模流數據的共享定制。為了解決處理實時、持續(xù)不間斷的流數據時的局限性,進行了數據服務模型的研究工作,包括“數據服務”和“以數據為中心的Web服務”。流數據定制化服務大規(guī)模流數據服務模型與傳統(tǒng)數據服務模型的比較流數據定制化服務

流數據服務的模型需要對服務的數據模型、操作、服務處理方法以及性質等進行刻畫。針對這些問題,研究工作提出了StreamFeeds模型。

StreamFeed:一種流數據服務抽象模型流數據定制化服務為了利用流數據構造具體的應用,研究者們提出了不同的編程模型與方法,如IBMSPL、SparkStreaming、CQL等傳感器流數據抽象為服務,實現智能響應,延續(xù)服務計算核心思想,加強與周圍情景信息關聯。亞馬遜Kinesis、GoogleBigQuery、PredictiveAPI提供流數據托管服務,簡化數據流收集與分析,無需自行搭建基礎設施。流數據服務面臨動態(tài)負載挑戰(zhàn),關鍵在于保障可伸縮性,以適應不可預測且動態(tài)變化的流數據規(guī)模與速度。評測基準評測基準:用于評測、比較不同系統(tǒng)性能的規(guī)范。評測基準用于客觀、全面反映具有類似功能的系統(tǒng)之間的差異。傳統(tǒng)的數據管理技術發(fā)展已相對成熟和穩(wěn)定,而流數據處理由于各個要素普遍缺乏標準,流數據處理的基準測試需求要包含多個方面。廣泛的評估和比較流計算系統(tǒng)評估不同數據或計算特征下的能力產生不同的有代表性的負載評測基準如LinearRoadBenchmark是廣泛應用的流數據處理測試基準,可以進行計費通知、事故通知、旅行時間估計等查詢、測試不同系統(tǒng)執(zhí)行這些查詢時的性能。Hibench、BigBench、BigDataBench等針對Hadoop和大數據處理提供豐富的測試場景;流處理系統(tǒng)如S4、SparkStreaming、TimeStream進行了自身適用場景下的專用評測。SparkStreaming及其在物聯網大數據中的應用SparkStreaming:構建在Spark上處理流數據的框架,它將Stream數據分成小的時間片斷實現處理小部分數據SparkStreaming優(yōu)點:能運行在100+的結點上,并達到秒級延遲使用基于內存的Spark作為執(zhí)行引擎,具有高效和容錯的特性能集成Spark的批處理和交互查詢?yōu)閷崿F復雜的算法提供和批處理類似的簡單接口應用:使用SparkStreaming流數據處理系統(tǒng),利用交通檢測攝像頭不斷產生的車牌信息,來幫助交管部門預防交通擁堵、事故等問題的發(fā)生PARTFOUR4物聯網大數據分析物聯網大數據OLAP多維分析OLAP是使用多維分析對數據快速訪問的一種技術。分析多維數據采用的常用方法包括:上卷(drillup)、下鉆(drilldown)、切片(slicing)和切塊(dicing)等方法。以北京市各監(jiān)測點的車流量數據集為例,我們可以將其看作一個多維數組。三個維分別對應監(jiān)測點所屬區(qū)域、月份和日期。下鉆(drilldown)指在維的不同層次間從上層降到下一層,或者說是將匯總數據拆分到更細節(jié)的數據,例如,從北京市這個區(qū)域鉆取數據,來查看海淀區(qū)、朝陽區(qū)、石景山區(qū)等各城區(qū)的車流量能集成Spark的批處理和交互查詢上卷(drillup)是下鉆的逆操作,即從細粒度數據向高層的聚合,如將海淀區(qū)、朝陽區(qū)、石景山區(qū)的那個各區(qū)車流量匯總來查看北京城區(qū)的車流量切片(Slice)指選擇維中特定的值進行分析,比如只選擇海淀區(qū)的數據切塊(Dice)指選擇維中特定區(qū)間的數據或者某批特定值進行分析,比如選擇2012年10月到2012年12月的車流量數據物聯網大數據OLAP多維分析OLAP有多種實現方法,根據存儲數據的方式不同可以分為ROLAP、MOLAP、HOLAPROLAP表示基于關系數據庫的OLAP實現(RelationalOLAP),以關系數據庫為核心,以關系型結構進行多維數據的表示和存儲。ROLAP將多維數據庫的多維結構劃分為兩類表:一類是事實表,用來存儲數據和維關鍵字;另一類是維表,即對每個維至少使用一個表來存放維的層次、成員類別等維的描述信息。MOLAP表示基于多維數據組織的OLAP實現(MultidimensionalOLAP),以多維數據組織方式為核心,也就是說,MOLAP使用多維數組存儲數據。多維數據在存儲中將形成“數據立方體(Cube)”的結構,此結構在得到高度優(yōu)化后,可以很大程度地提高查詢性能。HOLAP表示基于混合數據組織的OLAP實現(HybridOLAP),用戶可以根據自己的業(yè)務需求,選擇哪些模型采用ROLAP,哪些采用MOLAP。一般來說,會將非常用或需要靈活定義的分析使用ROLAP方式,而常用、常規(guī)模型采用MOLAP實現。城市交通物聯網大數據分析流程

在問題建模階段收集問題的相關資料,理解問題,在此基礎上,拆解問題、簡化問題,將其轉化機器可預估的問題。首先理解數據源的物理意義

溫馨提示

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

評論

0/150

提交評論