版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
物聯(lián)網(wǎng)大數(shù)據(jù)處理技術與實踐InternetofThings
BigDataprocessingTechnologyandPractice物聯(lián)網(wǎng)大數(shù)據(jù)存儲與管理云文件系統(tǒng)的關鍵技術1NoSQL數(shù)據(jù)庫關鍵技術2PARTONE1云文件系統(tǒng)的關鍵技術師傅領進門,學藝在自身。------中國諺語物聯(lián)網(wǎng)大數(shù)據(jù)存儲與管理本書前面已經(jīng)分析了這些數(shù)據(jù)的特點,針對其存儲與管理,以下幾個特點對物聯(lián)網(wǎng)大數(shù)據(jù)的存儲與管理帶來如下挑戰(zhàn):物聯(lián)網(wǎng)大數(shù)據(jù)的海量性物聯(lián)網(wǎng)大數(shù)據(jù)的高維度和部分稀疏特性物聯(lián)網(wǎng)數(shù)據(jù)的時空相關性物聯(lián)網(wǎng)數(shù)據(jù)的序列性與動態(tài)流式特性HDFS的目標和基本假設條件由于系統(tǒng)是由大量廉價商用設備連接而成的,即使每一部分的故障概率都很低,連接在一起使用總的故障概率也將大幅提高。因此在系統(tǒng)中硬件故障成為大概率事件,這就意味著硬件故障成為常態(tài),快速地檢測故障并從故障中恢復成為系統(tǒng)設計的核心目標之一。(2)流式數(shù)據(jù)存取
HDFS設計注重數(shù)據(jù)存取的高吞吐量而不是數(shù)據(jù)訪問的低延時,系統(tǒng)以流式數(shù)據(jù)存取為主,批處理為主要使用方式,而不是一般文件系統(tǒng)中常用的交互使用方式。因此系統(tǒng)面向的應用是以大規(guī)模流量數(shù)據(jù)訪問為主的應用,對于需要大量低延時隨機數(shù)據(jù)訪問的應用來說并不合適。(1)
硬件失敗HDFS的目標和基本假設條件(4)簡單的一致性模型
HDFS被設計用來存取規(guī)模巨大的文件,文件大小以GB甚至TB為單位,而不是KB或MB級的小型文件。單個集群能夠支撐上千萬的這種大規(guī)模數(shù)據(jù)文件,因此文件系統(tǒng)必須能夠管理成千上萬的可擴展數(shù)據(jù)節(jié)點,并且具有高數(shù)據(jù)傳輸帶寬。
系統(tǒng)面向的多數(shù)應用具有一次寫、多次讀的特點,文件一經(jīng)創(chuàng)建,在寫入數(shù)據(jù)并且關閉之后就不再需要改變,而且數(shù)據(jù)通常只有一個寫入主體,這個特點簡化了數(shù)據(jù)一致性問題,使數(shù)據(jù)讀取的高吞吐量成為可能。(3)大數(shù)據(jù)集
HDFS的目標和基本假設條件HDFS使用Java語言開發(fā)而成,具有先天的可移植性,同時在設計上也注重了系統(tǒng)的可移植性,因此很容易從一個平臺移植到另一個平臺,這個特點有利于它的廣泛使用。(5)異構軟硬件平臺的可移植性HDFS體系架構HDFS系統(tǒng)最底層是由商用PC或商用服務器構成的廉價集群,這些PC的操作系統(tǒng)可以是Linux或Windows,但在實際部署中使用Linux的居多,因為Linux是開源的,使用費用低,而且在必要的時候可以修改。HDFS運行在操作系統(tǒng)之上,以TCP/IP作為通信協(xié)議對集群進行統(tǒng)一管理。
HDFS邏輯分層結構HDFS體系架構HDFS物理部署實例如右圖所示,是一個HDFS物理部署實例,在這個實例中集群由兩個機架組成,每個機架都有一個交換機和16臺商用計算機,兩個機架由一個交換機連接,整個集群共有32臺計算機,其中一臺作為主節(jié)點(稱為NameNode),一臺作為備用主節(jié)點(稱為SecondaryNameNode),其他作為數(shù)據(jù)節(jié)點(稱為DataNode)。HDFS體系架構HDFS系統(tǒng)管理示意圖文件數(shù)據(jù)以塊(Block)為單位存儲在DataNode中,文件元數(shù)據(jù)管理Block的標識BlockID和對應的存儲位置。當NameNode出現(xiàn)故障時,SecondaryNameNode提供備用的管理能力NameNode管理整個集群的文件元數(shù)據(jù),執(zhí)行文件系統(tǒng)命名空間的所有操作,包括打開、關閉、重命名、創(chuàng)建文件和目錄,為文件分配數(shù)據(jù)塊并指定文件到數(shù)據(jù)塊的映射客戶端對文件系統(tǒng)的訪問首先從NameNode獲得元數(shù)據(jù),但是客戶端不會從NameNode中直接得到文件數(shù)據(jù),客戶端需要從文件元數(shù)據(jù)中解析得到文件數(shù)據(jù)塊的位置,然后直接從DataNode中讀取,HDFS對用戶訪問不設限制SecondaryNameNode是為了增強系統(tǒng)的可靠性而配置的,為NameNode提供備用的管理能力。DataNode負責響應客戶端對文件數(shù)據(jù)的讀寫請求。性能保障
為了提高NameNode的處理速度,HDFS的元數(shù)據(jù)都存放在內(nèi)存中,所有對元數(shù)據(jù)的操作都是對內(nèi)存進行讀寫,相對于存放在磁盤上其處理速度大幅提高。這樣做的前提是元數(shù)據(jù)的數(shù)據(jù)量相對較小,內(nèi)存能夠放得下通過以下兩個方法可以增加內(nèi)存中元數(shù)據(jù)的存儲量:第一當然是增加內(nèi)存,但是內(nèi)存不能無限擴展;第二是采用一些壓縮算法,壓縮元數(shù)據(jù)的體積,比如對文件名采用前綴壓縮算法可以減少文件名所占用的空間
元數(shù)據(jù)全部存放于NameNode的內(nèi)存中有一個明顯的缺點就是,當NameNode發(fā)生故障時元數(shù)據(jù)將全部丟失,必須對元數(shù)據(jù)進行持久化處理,也就是保存在磁盤上,以便于故障后的恢復。(1)元數(shù)據(jù)操作
性能保障
HDFS采用機架感知的技術合理安排數(shù)據(jù)塊的位置,使數(shù)據(jù)存取效率更高。機架感知技術的原理是,相比于不同機架上的計算機,同一個機架上的計算機網(wǎng)絡距離更短,傳輸速度更快通基于機架感知原理,HDFS的數(shù)據(jù)塊復制策略是,數(shù)據(jù)塊的第一個副本寫在與客戶端同一個機架的DataNode上,如果客戶端不在集群范圍內(nèi)則寫在與客戶端網(wǎng)絡距離最近、網(wǎng)絡傳輸速度最高的節(jié)點上,數(shù)據(jù)塊的第二個副本由第一個副本傳輸?shù)酵粰C架的不同DataNode上,第三個副本由第二個副本傳輸?shù)讲煌瑱C架的DataNode上。這樣做使第一個和第二個副本可以很快地復制完成,但是為了防止由于機架的故障使數(shù)據(jù)不可用,所以第三個副本需要放在不同的機架上。對于數(shù)據(jù)塊的讀取基于機架感知技術同樣首先計算客戶端與不同數(shù)據(jù)塊的網(wǎng)絡距離,選擇從距離最近的DataNode上讀取數(shù)據(jù)。(2)數(shù)據(jù)塊的讀寫
性能保障
機架感知技術的核心是網(wǎng)絡距離的計算,不同DataNode的網(wǎng)絡距離可以根據(jù)統(tǒng)一編址的IP地址計算,也可以根據(jù)統(tǒng)一命名的網(wǎng)絡名稱來計算。HDFS對整個集群的數(shù)據(jù)塊分布還會采用再平衡的策略進行管理,當集群中某些DataNode的存儲空間剩余很多而有些存儲空間剩余很少時,系統(tǒng)會自動調(diào)整數(shù)據(jù)塊的分配,通過數(shù)據(jù)塊的遷移使整個集群的數(shù)據(jù)塊分布趨向均勻。(2)數(shù)據(jù)塊的讀寫
機架感知節(jié)點組織圖性能保障(3)智能信息檢索
DataNode會周期性地向NameNode發(fā)送心跳信號,NameNode處理這些信息,將近期沒有發(fā)送心跳信號的DataNode標記出來,并且不再將數(shù)據(jù)塊的讀寫請求分配給這些節(jié)點,同時這些節(jié)點上的數(shù)據(jù)塊也不再可用,相應文件元數(shù)據(jù)中的數(shù)據(jù)塊副本數(shù)減少,NameNode會定期檢查數(shù)據(jù)塊的副本數(shù)量,當小于配置的數(shù)量時會啟動復制功能,使數(shù)據(jù)塊的副本數(shù)量達到配置的要求。數(shù)據(jù)塊在讀取、寫入或傳輸過程中可能由于各種原因造成數(shù)據(jù)損壞,客戶端在寫數(shù)據(jù)塊的時候會同時生成數(shù)據(jù)塊的校驗和,校驗和會寫進一個單獨的隱藏文件,當客戶端從DataNode中讀取數(shù)據(jù)時會同時讀取數(shù)據(jù)塊的校驗和進行檢驗,如果不匹配,客戶端會選擇數(shù)據(jù)塊其他的副本,從而保證了數(shù)據(jù)的正確性。
性能保障(4)垃圾回收
當文件被刪除或數(shù)據(jù)塊副本配置數(shù)減小時會產(chǎn)生一些廢棄的數(shù)據(jù)塊,對于這兩種情況系統(tǒng)有不同的回收方式。當一個文件被用戶刪除以后,HDFS不會立刻將它安全刪除,而是將它移動到/trash目錄下,在文件從/trash刪除之前用戶還可以恢復它,被刪除的文件存放在/trash中的時間是可配置的,默認是6個小時。系統(tǒng)會自動掃描/trash目錄,將其中超過配置時間的文件刪除,刪除相應的元數(shù)據(jù),釋放相應的數(shù)據(jù)塊,這意味著文件被真正刪除,用戶將無法再恢復它。當一個文件所配置的副本數(shù)減小時,NameNode會挑選出可以刪除的數(shù)據(jù)塊,數(shù)據(jù)塊的刪除操作通過心跳信號傳遞給它所在的DataNode,相應的DataNode收到信號后執(zhí)行刪除操作,釋放指定的數(shù)據(jù)塊空間。
為了方便HDFS的使用,系統(tǒng)提供了多種應用接口,常用的有命令行接口、JavaAPI、Web接口等。
(5)訪問接口
PARTTWO2NoSQL數(shù)據(jù)庫關鍵技術NoSQL數(shù)據(jù)庫的優(yōu)勢靈活的數(shù)據(jù)模型NoSQL數(shù)據(jù)庫中數(shù)據(jù)可以按照它實際應用中建模的形態(tài)進行保存NoSQL數(shù)據(jù)庫可以在運行時任意增加或減少字段改變數(shù)據(jù)模型NoSQL數(shù)據(jù)庫的優(yōu)勢靈活的查詢分析NoSQL數(shù)據(jù)庫提供更靈活的查詢方式和更強大的查詢語言,人們可以使用NoSQL數(shù)據(jù)庫提供的查詢接口和查詢語言構建任意復雜的查詢結果NoSQL數(shù)據(jù)庫還為特定查詢提供了方便,比如在面向圖的數(shù)據(jù)庫中,為人們提供了方便圖分析的各種查詢,如圖的遍歷、圖的最短路徑、圖的連通性分析等NoSQL數(shù)據(jù)庫的優(yōu)勢數(shù)據(jù)的版本管理NoSQL數(shù)據(jù)庫都提供數(shù)據(jù)版本管理的功能(不是全部),版本管理最常見的是軟件和文檔的版本管理NoSQL數(shù)據(jù)庫本身就支持對數(shù)據(jù)項的版本管理,不需要額外設計,一個數(shù)據(jù)項可以根據(jù)配置保留多個歷史數(shù)據(jù)值,當然也可以配置成像關系數(shù)據(jù)庫那樣只保存一個數(shù)據(jù)值NoSQL數(shù)據(jù)庫的優(yōu)勢良好的可擴展性NoSQL數(shù)據(jù)庫通過放松對一致性的要求來實現(xiàn)分區(qū)容忍性的目標,很容易地將記錄分散存儲在多個服務器上,而且通過構造適當?shù)乃惴梢詫崿F(xiàn)將記錄均勻地分布存儲在服務器NoSQL數(shù)據(jù)庫一般采用MapReduce計算模型(下一章將涉及),這種計算模型可以充分利用分布式計算的優(yōu)點,將運算部署在靠近數(shù)據(jù)的服務器上進行,一般情況下是將查詢計算分布部署在擁有數(shù)據(jù)的服務器上,可以很容易地實現(xiàn)數(shù)據(jù)的大規(guī)模并行搜索NoSQL數(shù)據(jù)庫的優(yōu)勢大數(shù)據(jù)量和高性能NoSQL數(shù)據(jù)庫良好的擴展性帶來了可以線性增加的存儲容量和計算能力,因此能夠處理大規(guī)模的數(shù)據(jù)存儲并提供高性能的數(shù)據(jù)吞吐能力NoSQL數(shù)據(jù)庫支持并行計算的特點使得它可以很容易地利用增加的服務器的計算能力,這已經(jīng)在前面進行了分析NoSQL數(shù)據(jù)庫的劣勢NoSQL數(shù)據(jù)庫的劣勢一共有如下的五方面:1)查詢的復雜性2)事務性和一致性3)關系完整性4)訪問控制5)標準化NoSQL數(shù)據(jù)庫的劣勢查詢的復雜性NoSQL數(shù)據(jù)庫的靈活性帶來學習難度:不同NoSQL數(shù)據(jù)庫有獨特的查詢語言和接口,增加了學習和應用的難度。SQL標準化強調(diào)關系數(shù)據(jù)庫優(yōu)勢:關系數(shù)據(jù)庫通過多年發(fā)展在SQL支持和查詢優(yōu)化方面表現(xiàn)卓越,提供了穩(wěn)定可靠的操作功能。NoSQL數(shù)據(jù)庫操作相對簡陋:NoSQL系統(tǒng)在數(shù)據(jù)庫操作的封裝上較為簡陋,用戶需在應用層面完成連接、過濾、映射等任務,與關系數(shù)據(jù)庫相比存在差距。NoSQL數(shù)據(jù)庫的劣勢事務性和一致性
對于對數(shù)據(jù)一致性和事務性要求較高的金融機構,傳統(tǒng)的關系數(shù)據(jù)庫仍然是首選。相較之下,大多數(shù)NoSQL數(shù)據(jù)庫為了追求可用性和分區(qū)容忍性,通常會放寬對數(shù)據(jù)一致性的要求,可能導致短期內(nèi)數(shù)據(jù)不一致的情況。此外,為了提高系統(tǒng)可擴展性和并行計算能力,許多NoSQL數(shù)據(jù)庫不支持事務,使得數(shù)據(jù)庫操作無狀態(tài),即無法在連續(xù)操作中提供回滾能力。NoSQL數(shù)據(jù)庫的劣勢關系完整性
關系數(shù)據(jù)庫通過外鍵約束自動保持數(shù)據(jù)關系的完整性,如在刪除關聯(lián)數(shù)據(jù)時會阻止破壞關系的操作。這得益于關系數(shù)據(jù)庫的設計。相反,NoSQL數(shù)據(jù)庫由于簡單的數(shù)據(jù)模型和分布式環(huán)境的限制,難以實現(xiàn)對關系完整性的強制檢查。在多副本和分布式存儲策略下,大多數(shù)NoSQL數(shù)據(jù)庫通常不會阻止刪除某個數(shù)據(jù)對象,即使其他對象仍在使用該數(shù)據(jù)。這凸顯了兩者在數(shù)據(jù)管理方面的不同。NoSQL數(shù)據(jù)庫的劣勢訪問控制
關系數(shù)據(jù)庫系統(tǒng)具備完善的用戶權限管理和內(nèi)建安全模型。與之不同,NoSQL數(shù)據(jù)庫在這方面存在不足,安全模型和策略因產(chǎn)品而異,用戶通常需要額外構建安全措施,缺乏統(tǒng)一標準和系統(tǒng)內(nèi)集成。這突顯了兩者在訪問權限管理和安全性方面的差異,以及NoSQL數(shù)據(jù)庫的分散性和多樣性。NoSQL數(shù)據(jù)庫的劣勢標準化
SQL作為關系數(shù)據(jù)庫標準的典型代表,通過標準化工作可以減少學習重復,促進系統(tǒng)協(xié)調(diào)和合作。標準化還延長了代碼使用壽命和提高了可重復使用性。相比之下,NoSQL數(shù)據(jù)庫目前在標準化方面仍處于起步階段,由于產(chǎn)品多樣性和面向復雜領域,缺乏統(tǒng)一標準,導致使用不同產(chǎn)品需要重新學習相關知識。這突顯了兩者在標準化方面的差異和NoSQL數(shù)據(jù)庫面臨的挑戰(zhàn)。HBase數(shù)據(jù)庫系統(tǒng)HBase數(shù)據(jù)庫系統(tǒng)是應用廣泛的NoSQL數(shù)據(jù)庫系統(tǒng)之一,是GoogleBigtable的開源版本,建立在HDFS之上,具有高可靠性、高性能、列存儲、可伸縮、實時讀寫的特點。它通過行鍵(RowKey)和行鍵范圍(Range)來檢索數(shù)據(jù),主要用來存儲半結構化的松散數(shù)據(jù)。HBase的主要目標是高效地管理半結構化數(shù)據(jù),依靠橫向擴展,通過不斷增加廉價的商用服務器來提高計算和存儲能力。HBaseHBase數(shù)據(jù)模型HBase以表的形式存儲數(shù)據(jù),表由行和列組成。列劃分為若干個列族(ColumnFamily),一行由行鍵(RowKey)、版本號和若干個列組成。HBase中的表一般具有以下特點。大:一個表有上億行和上百萬列面向列:面向列(列族)的存儲,列(列族)獨立檢索稀疏:為空(Null)的列并不占用存儲空間,因此,表可以存儲稀疏的數(shù)據(jù)HBase數(shù)據(jù)模型行(Row)在表中以行為單位管理和存儲數(shù)據(jù),行由行鍵(RowKey)進行標識,HBase以字節(jié)數(shù)組來處理和存儲行鍵,行鍵可以以符串的形式表現(xiàn)。行是按照行鍵以詞典順序排序的,行鍵值最小的行在表的最上面。例如,從1到100的數(shù)字,就是按照1,10,100,11,12,…,9,91,92,93,94,95,96,97,98,99這樣的方式來排序保存的。要想以自然順序來保存整型數(shù),行鍵須在左邊以0填充。列族(ColumnFamily)和限定符(Qualifier)用戶根據(jù)這些列的性質(zhì)或結構進行分組,將相同性質(zhì)、長度或結構的列組成一個列族,列族需要在進行表結構設計時就設計好,要像關系數(shù)據(jù)庫那樣在操作表之前將表結構設計好在HBase中列的完整標識是“列族:限定符”。列族必須是可打印字符,也就是可見字符,但是限定符可以是任意字節(jié)數(shù)組。HBase數(shù)據(jù)模型版本號(Version)根據(jù)用戶的配置情況,HBase的數(shù)據(jù)可以以多版本的方式保存版本號有時候以時間戳來表示,以長整型數(shù)據(jù)保存,如一個時間戳可以設置為用java.util.Date.getTime()或System.currentTimeMillis()函數(shù)獲取的當前時間,并且當一個數(shù)據(jù)項被請求時,返回最新的版本開發(fā)者可以在插入數(shù)據(jù)時自定義版本號,然后通過指定這個版本號來重新獲取該值。數(shù)據(jù)項(Cell)數(shù)據(jù)項(Cell)是NoSQL數(shù)據(jù)庫中最小的數(shù)據(jù)單元,一個數(shù)據(jù)項由[行,列,版本號]這三個坐標唯一確定。數(shù)據(jù)項的內(nèi)容是用戶自定義的,以字節(jié)數(shù)組的形式保存,沒有格式、類型等限制。HBase系統(tǒng)架構:表和分區(qū)表中的所有行都按照行鍵的詞典順序排列,當達到一定規(guī)模后表會在行的方向上分割為多個分區(qū)。HBase系統(tǒng)架構:表和分區(qū)分區(qū)按大小分割,每個表一開始只有一個分區(qū),隨著數(shù)據(jù)不斷插入表中,分區(qū)不斷增大。當增大到一個閾值時,分區(qū)就會等分為兩個新的分區(qū),如下圖所示。表中的行不斷增多,就會有越來越多的分區(qū)。HBase系統(tǒng)架構:分區(qū)服務器分區(qū)存儲在分區(qū)服務器上。不同的分區(qū)可以分布在不同的分區(qū)服務器上,但一個分區(qū)是不會拆分存儲到多個分區(qū)服務器上的。一個分區(qū)服務器可以存儲多個分區(qū)。HBase系統(tǒng)架構:分區(qū)和存儲塊分區(qū)由一個或者多個塊組成,每個塊保存一個列族。每個塊又由一個內(nèi)存塊和0至多個塊文件組成HBase系統(tǒng)架構:分區(qū)和存儲塊內(nèi)存塊是放在內(nèi)存里的塊,用來保存修改的數(shù)據(jù)。當內(nèi)存塊的大小達到一個閾值時,內(nèi)存塊會被寫進文件,生成一個塊文件。塊文件以HFile格式保存在HDFS上。塊文件的HFile格式分為6個部分:DataBlock:以Key-Value方式保存表中的數(shù)據(jù),可以被壓縮。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ū)服務器的元數(shù)據(jù)為分區(qū)服務器分配分區(qū);負責分區(qū)服務器的負載均衡;發(fā)現(xiàn)失效的分區(qū)服務器并重新分配其上的分區(qū)。Zookeeper是一個提供分布式鎖服務的輕量級文件系統(tǒng),同時也可以作為集群管理系統(tǒng)。HBase訪問接口HBase提供了多種形式的訪問接口,包括以下6種:NativeJavaAPI:最常規(guī)和高效的訪問方式,適合HadoopMapReduceJob并行批處理HBase表數(shù)據(jù)。HBaseShell:HBase的命令行工具,最簡單的接口,適合HBase管理使用。ThriftGateway:利用Thrift序列化技術,支持C++、PHP、Python等多種語言,適合其他異構系統(tǒng)在線訪問HBase表數(shù)據(jù)。RESTGateway:支持REST風格的HTTPAPI訪問HBase。Pig:可以使用PigLatin流式編程語言來操作HBase中的數(shù)據(jù),和Hive類似,本質(zhì)也是編譯成MapReduceJob來處理HBase表數(shù)據(jù),適合做數(shù)據(jù)統(tǒng)計。Hive:通過Hive可以使用類似SQL的語言來訪問HBase?;贜oSQL數(shù)據(jù)庫的物聯(lián)網(wǎng)大數(shù)據(jù)存儲與管理NoSQL數(shù)據(jù)庫本身是一個稀疏的、分布式的、持久化存儲的多維度排序Map,適合存儲高維度、稀疏的海量數(shù)據(jù)。NoSQL數(shù)據(jù)庫的特點(以HBase數(shù)據(jù)庫為例):其底層持久化是以列族為存儲單位分塊存儲,字段個數(shù)對底層結構沒有影響,而MySQL、Oracle等關系數(shù)據(jù)庫以行(一條數(shù)據(jù))為單位存儲,當表中字段個數(shù)達到一定程度時,數(shù)據(jù)將被分片存儲,這樣會嚴重影響到插入、查詢的效率。HBase以HDFS為底層文件系統(tǒng),其分布式特性可以有效解決海量數(shù)據(jù)存儲的可擴展性問題。HBase的數(shù)據(jù)以分區(qū)為單位在集群中進行負載均衡,可以根據(jù)RowKey來確定數(shù)據(jù)發(fā)向集群中的哪個存儲節(jié)點。HBase可以使用多并發(fā)線程或修改自動緩存大小等方法提高寫入效率。基于HBase的物聯(lián)網(wǎng)數(shù)據(jù)庫設計技術RowKey的設計原則:HBase中不允許使用聯(lián)合主鍵來標識數(shù)據(jù),一條數(shù)據(jù)只能由一個RowKey項唯一標識。HBase索引建立在行鍵RowKey的基礎上,需要將查詢的維度或信息放在行鍵中。在右圖RowKey的設計下,HBase的客戶端數(shù)據(jù)寫入的步驟如下:當在初始階段或者Region發(fā)生了拆分時,首先客戶端Client向HMaster發(fā)送請求,獲取RootRegtion的地址??蛻舳烁鶕?jù)掃描RootRegion的地址找到UserRegion的.METATable地址??蛻舳烁鶕?jù).METATable中的Region信息獲取UserRegion的地址,并將數(shù)據(jù)寫入到對應的Region中?;贖Base的物聯(lián)網(wǎng)數(shù)據(jù)庫設計技術上述原理設計的RowKey具有明顯的優(yōu)點:由于行鍵排序的特點,在物理上同一個傳感器的數(shù)據(jù)存儲位置會相對集中。將查詢常用的時間維度和ID加入RowKey,提高了查詢的效率??蛻舳薈lient會根據(jù)這些傳感器數(shù)據(jù)的SensrorID前綴,將數(shù)據(jù)分流到不同的RegionServer上,不會出現(xiàn)寫入熱點,從而使得集群負載較為均衡。列族和列的設計原則:列族在使用之前必須先創(chuàng)建,列族中的任何一個列關鍵字下都可以存放數(shù)據(jù)。列族中的列不需要提前設計,可以在操作時任意添加,一個列族中列的數(shù)量不受限制。一張表中的列族個數(shù)不能太多,因為操作將跨越多個數(shù)據(jù)塊從而影響數(shù)據(jù)庫的讀寫性能。基于HBase的物聯(lián)網(wǎng)數(shù)據(jù)庫寫入技術傳感器類別的差異使得數(shù)據(jù)結構呈現(xiàn)多元化,在寫入數(shù)據(jù)庫之前需要對傳感器數(shù)據(jù)流的規(guī)范化、整合操作,保證寫入數(shù)據(jù)的有效性和完整性。例如,根據(jù)傳感器類別標識對數(shù)據(jù)進行分類,然后將分類后的數(shù)據(jù)存入緩沖區(qū)中。多源數(shù)據(jù)緩沖區(qū)主要有兩個作用:(1)緩存批量寫入的數(shù)據(jù)。HBase寫入的最大瓶頸在于網(wǎng)絡IO,將數(shù)據(jù)批量寫入將顯著地提高寫入性能。因此,系統(tǒng)首先將分類后的傳感器數(shù)據(jù)存放在緩沖區(qū)中,當緩沖區(qū)的數(shù)據(jù)量達到一定閥值時,便觸發(fā)一個線程,將數(shù)據(jù)寫入HBase。(2)保存寫入失敗的數(shù)據(jù)。觸發(fā)線程進行寫入并不意味著寫入數(shù)據(jù)成功,為保證數(shù)據(jù)完整性,系統(tǒng)將寫入時拋出異常、沒有寫入成功的數(shù)據(jù)重新放回緩沖區(qū)隊列中,等待系統(tǒng)調(diào)度,再次進行寫入,直至寫入成功。THANKS
FOR
YOUR
WATCHINGLoremIpsumDolorSitErElitLamet,ConsectetaurCilliumAdipisicingPecu,SedDoEiusmodTemporIncididuntUtLaboreEtDoloreMagnaAliqua.Thankyou物聯(lián)網(wǎng)大數(shù)據(jù)處理技術與實踐InternetofThings
BigDataprocessingTechnologyandPractice物聯(lián)網(wǎng)大數(shù)據(jù)計算與分析物聯(lián)網(wǎng)大數(shù)據(jù)批處理計算1物聯(lián)網(wǎng)大數(shù)據(jù)交互式查詢2物聯(lián)網(wǎng)大數(shù)據(jù)流式計算3物聯(lián)網(wǎng)大數(shù)據(jù)分析4PARTONE1物聯(lián)網(wǎng)大數(shù)據(jù)批處理計算師傅領進門,學藝在自身。------中國諺語物聯(lián)網(wǎng)大數(shù)據(jù)批處理計算物聯(lián)網(wǎng)大數(shù)據(jù)批處理計算中存在的問題:物聯(lián)網(wǎng)大數(shù)據(jù)的一個顯著特性是數(shù)據(jù)規(guī)模巨大,以至于無法利用普通的單個服務器在短時間內(nèi)完成計算任務,必須要借助海量計算能力來幫助開發(fā)人員完成。解決方法:基于集群的分布式并行編程能夠讓軟件與數(shù)據(jù)同時運行在連成網(wǎng)絡的許多臺計算機上,并且可以通過增加計算機來擴充新的計算節(jié)點,從而在短時間內(nèi)完成大規(guī)模數(shù)據(jù)的處理任務。存在問題:基于集群的分布式并行編程需要將大規(guī)模的數(shù)據(jù)進行切分并分發(fā)數(shù)據(jù)到不同計算機上,并將不同計算機上的計算結果傳輸?shù)揭粋€計算機上進行合并,還需要處理異常等一系列問題,需要大量的復雜代碼來處理上述問題,使得原本很簡單的計算變得讓程序員難以處理。并行編程模型:為了解決這個問題,Google使用了名為MapReduce的并行編程模型進行分布式并行編程。其主要優(yōu)點是通過簡單的接口來實現(xiàn)自動的并行化和大規(guī)模分布式計算,讓程序員專注于數(shù)據(jù)的處理部分而不用關心分布式并行計算所涉及到的技術細節(jié)。MapReduce的設計思想一個編程模型被廣泛使用的關鍵是其設計思想。設計思想決定了編程模型是否好用、是否能有效地解決實際問題、是否能保障性能。MapReduce基于以下思想進行設計:(1)向“外”橫向擴展,而非向“上”縱向擴展(Scale“out",not“up”)(2)失效被認為是常態(tài)(Assumefailuresarecommon)(3)把處理向數(shù)據(jù)遷移(Movingprocessingtothedata)(4)為應用開發(fā)者隱藏系統(tǒng)層細節(jié)(Hidesystem-leveldetailsfromtheapplicationdeveloper)(5)平滑無縫的可擴展性(Seamlessscalability)MapReduce的工作機制MapReduce集群中的服務器節(jié)點由一個主節(jié)點(Master)和多個從節(jié)點(Slave)構成。集群采用HDFS作為其分布式文件系統(tǒng)。
MapReduce總體工作流程:輸入的原始大數(shù)據(jù)集首先被切割成小數(shù)據(jù)集,通常讓小數(shù)據(jù)集小于或等于HDFS中一個塊的大小。如圖中步驟(1)所示輸入數(shù)據(jù)切割完畢后,啟動程序的多個副本。其中有一個特殊的副本運行在主節(jié)點上,它將任務(job)分配給M個map工作站和R個reduce工作站,如步驟(2)所示。在步驟(3)(4)中,Map工作站讀輸入生成key/value對緩存在內(nèi)存,周期性地寫入本地硬盤,用劃分功能劃分為R個桶。在步驟(5)中,Reduce工作站接到工作數(shù)據(jù)位置后用遠程調(diào)用從Map工作站的硬盤讀數(shù)據(jù)。在步驟(6),Reduce工作站將key/value對送給用戶Reduce函數(shù),把生成的key/value對加入輸出文件。MapReduce在物聯(lián)網(wǎng)大數(shù)據(jù)中的應用物聯(lián)網(wǎng)大數(shù)據(jù)分析的過程不是單獨基于一類數(shù)據(jù)進行采集、存儲、管理和分析的過程,而是針對物聯(lián)網(wǎng)設備的全生命周期的各類要素信息進行的。物聯(lián)網(wǎng)大數(shù)據(jù)分析需要基于過去很長歷史時期、不同工作和環(huán)境狀態(tài)下的所有數(shù)據(jù),才能相對準確的分析出有價值的信息。物聯(lián)網(wǎng)中可以進行采集、存儲并加以分析利用的數(shù)據(jù)不止感知數(shù)據(jù),還包括設備全生命周期的各類要素信息。物聯(lián)網(wǎng)大數(shù)據(jù)的數(shù)據(jù)規(guī)模是巨大的,例如在某些項目中每天需要保存數(shù)十GB甚至數(shù)百GB的數(shù)據(jù)。MapReduce以及NoSQL技術使得存儲、管理和分析大規(guī)模的數(shù)據(jù)成為可能,過去無法存儲的長期歷史數(shù)據(jù),如今可以被無限制的存儲起來。物聯(lián)網(wǎng)大數(shù)據(jù)分析的發(fā)展使得過去被丟棄的傳感器數(shù)據(jù)得到充分利用,為企業(yè)提供了更多的支撐和決策依據(jù)。物聯(lián)網(wǎng)技術的興起使得廠家可以在售出的產(chǎn)品上預先安裝各種聯(lián)網(wǎng)的傳感器,采用Hadoop、NoSQL等技術進行數(shù)據(jù)采集、存儲、分析,從中獲取產(chǎn)品使用情況和用戶習慣等信息,幫助廠家預測產(chǎn)品銷售趨勢。PARTTWO2物聯(lián)網(wǎng)大數(shù)據(jù)交互式查詢HBase上的原生SQL傳感器的數(shù)值信息是存儲在HBase中的,對于HBase來說,SQL查詢從宏觀上可以分為統(tǒng)計查詢和非統(tǒng)計查詢。充分利用HBase的新特性,把對數(shù)據(jù)的操作從HBase客戶端移動到RegionServer端,降低網(wǎng)絡的I/O負載,提高HBase的性能。對于非統(tǒng)計查詢來說,我們可以使用過濾器獲取目標字段。對于統(tǒng)計查詢來說,我們可以采用協(xié)處理器方式獲取數(shù)據(jù)。HBase上的原生SQL以下面的SQL查詢?yōu)槔阂陨喜樵冋Z句的主要作用是從溫度傳感器表中,查詢出SensorID在0001和1001之間,兩個時間段內(nèi)溫度小于25度傳感器的數(shù)據(jù)信息。該例中目標字段為SensorID、value、Time;篩選條件為Time、value、SensorID。底層數(shù)據(jù)庫調(diào)度過程:(1)判斷查詢是否為統(tǒng)計查詢;(2)調(diào)用過濾器或協(xié)處理器對HBase進行調(diào)度。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使用協(xié)處理器、自定義過濾器等進行優(yōu)化,可以實現(xiàn)少量數(shù)據(jù)上的微秒級響應,以及百萬級別行數(shù)據(jù)的秒級響應。Phoenix支持多列的二級索引,列數(shù)不限。Phoenix的SQL語句更接近標準SQL規(guī)范。但它也有一些限制,例如Phoenix不能識別HBase創(chuàng)建的表。Phoenix官網(wǎng)地址:
Hadoop上的SQL:HiveHive是對HDFS進行修改擴展生成的一個數(shù)據(jù)倉庫框架。它實現(xiàn)了類SQL語句的編程接口,提供了一種類似SQL的語言HQL。Hive核心是將HQL轉換為MapReduce程序,然后將程序提交到Hadoop集群執(zhí)行。省去了編寫MapReduce程序的復雜過程。在HBase上使用Hive卻得不到很好的性能。Hive訪問HBase中表數(shù)據(jù),實質(zhì)上是通過Hadoop讀取HBase表數(shù)據(jù),對HBase表進行切分,獲取RecordReader對象來讀取數(shù)據(jù)。基于HBase的交互式查詢交互式查詢分析的響應延遲常常需要控制在秒級范圍內(nèi),但目前的HBase、Hive在某些查詢場景下還達不到這樣的實時性要求。按行鍵從HBase中查詢數(shù)據(jù)效率是比較高的,但是若根據(jù)定義在列的屬性上的約束條件進行查詢的效率較低,無法滿足交互式查詢的秒級響應要求。針對多個屬性的約束條件進行交互式查詢,可以考慮使用倒排索引技術來提高查詢效率,或者采用ElasticSearch等內(nèi)建高效倒排索引的存儲方案。華為的HBase二級索引項目以及Phoenix中都實現(xiàn)了二級索引。PARTTHREE3物聯(lián)網(wǎng)大數(shù)據(jù)流失計算流式計算的需求特點面向物聯(lián)網(wǎng)應用的感知數(shù)據(jù)流計算的需求一般有如下特點:高吞吐低延遲數(shù)據(jù)的處理能力。將流式數(shù)據(jù)和歷史數(shù)據(jù)進行“無縫”關聯(lián)。流數(shù)據(jù)處理需具有動態(tài)可伸縮的架構,能夠適應流數(shù)據(jù)規(guī)模和速度的動態(tài)變化性,適應不同的負載。能夠處理有缺陷的數(shù)據(jù)。容錯性,同時其保障容錯的開銷較小。支持高級流數(shù)據(jù)處理原語或語言。支持多租戶共享流數(shù)據(jù)處理基礎設施,支持pay-as-you-go的流數(shù)據(jù)處理服務使用模式。流數(shù)據(jù)基本概念起源于Unix的數(shù)據(jù)管道(pipeline)模型是流式數(shù)據(jù)處理系統(tǒng)通用的組件抽象模型。輸入數(shù)據(jù)通常通過緩沖區(qū)從數(shù)據(jù)源流入流式數(shù)據(jù)管道,管道中所有操作形成鏈路,數(shù)據(jù)流平滑通過整個管道,任何操作都不能阻塞處理過程。因此,流數(shù)據(jù)處理管道可以看作是由執(zhí)行數(shù)據(jù)操作的“算子(operator)”集合互相之間通過數(shù)據(jù)“流(stream)”連接而成的圖形成。算子具有輸入和輸出端口,輸入數(shù)據(jù)項的到達將觸發(fā)算子的執(zhí)行,算子所執(zhí)行的數(shù)據(jù)操作包括數(shù)據(jù)轉換、處理及產(chǎn)生輸出數(shù)據(jù)。流數(shù)據(jù)功能模型流數(shù)據(jù)基本概念在流式數(shù)據(jù)管道模型中的算子包括三種:數(shù)據(jù)源接收算子(sourceoperator)
數(shù)據(jù)源接收算子負責管理多個數(shù)據(jù)源通道,實現(xiàn)數(shù)據(jù)源到系統(tǒng)的傳輸和通信協(xié)議,接收來自多個數(shù)據(jù)源的數(shù)據(jù),并將它們一個接一個地發(fā)送給下一個數(shù)據(jù)處理算子。管道模型中的數(shù)據(jù)源接收算子不具有輸入端口。與數(shù)據(jù)接收器相連的“時鐘(clock)”組件可選,它用來周期性地創(chuàng)建一條特殊的帶有時間戳的數(shù)據(jù)項,以方便周期性地對數(shù)據(jù)進行處理。目的接收算子(sinkoperator)
目的接收算子(sinkoperator)負責將管道中的數(shù)據(jù)遞送到外部的應用或用戶,它在管道模型中沒有輸出端口。在每一個數(shù)據(jù)處理算子中執(zhí)行一些數(shù)據(jù)操作,包括數(shù)據(jù)轉換、處理及產(chǎn)生輸出數(shù)據(jù)等,可用流數(shù)據(jù)的處理規(guī)則來表達,這些規(guī)則一般包括對數(shù)據(jù)的過濾、連接和聚集等,互相連接的基本算子運算符構成執(zhí)行計劃。數(shù)據(jù)處理算子流數(shù)據(jù)基本概念流數(shù)據(jù)處理的算子還可分為:阻塞算子:在產(chǎn)生執(zhí)行結果時需要預先讀取整個流數(shù)據(jù)非阻塞算子:在數(shù)據(jù)項到達的時候即可產(chǎn)生結果在部署模型上,流數(shù)據(jù)處理系統(tǒng)主要分為集中式和分布式兩類。流式數(shù)據(jù)的處理模型分為完全模型和滑動窗口模型兩類完全模型在整個流數(shù)據(jù)范圍內(nèi)進行處理,例如阻塞式算子的執(zhí)行。但由于流數(shù)據(jù)是無邊界的連續(xù)數(shù)據(jù)項,讀取整個流數(shù)據(jù)在理論上是不可能的,因此,“窗口”被用來對運算符執(zhí)行時考慮的流數(shù)據(jù)進行限制,從而使得阻塞式算子也可以執(zhí)行,同時,也使得非阻塞式算子的執(zhí)行更有效。流數(shù)據(jù)基本概念窗口可分為如下幾類:
固定窗口:窗口邊界不移動,例如只處理某固定時間段內(nèi)的數(shù)據(jù)項界標窗口:窗口邊界從某個已知時間點到當前時間點為止滑動窗口:窗口邊界是按照固定大小向前滑動的,即當新的數(shù)據(jù)項到達時,窗口的上界和下界都相應移動。滑動窗口的終點永遠為當前時刻。其中,滑動窗口的大小可以由一個時間區(qū)間定義,也可以由窗口所包含的數(shù)據(jù)項數(shù)目定義。滑動窗口有兩個基本概念:窗口范圍(range),指滑動窗口的大??;更新間隔(slide),指窗口一次滑動的時間區(qū)間或數(shù)據(jù)項數(shù)目。流數(shù)據(jù)基本概念流數(shù)據(jù)處理的規(guī)則有兩類,一類是轉換規(guī)則(transformationrules),一類是檢測規(guī)則(detectionrules)轉換規(guī)則(transformationrules)轉換規(guī)則定義了一個由基本的算子運算符構成的執(zhí)行計劃。這些運算符描述了算子所執(zhí)行的包括過濾、連接、聚集等在內(nèi)的數(shù)據(jù)操作。執(zhí)行計劃可由用戶自定義或由系統(tǒng)預定義。系統(tǒng)預定義轉換規(guī)則一般使用類似于SQL的語句來表達。其規(guī)則表達語言可分為聲明式語言和命令式語言兩類。檢測規(guī)則(detectionrules)檢測規(guī)則由條件和活動兩部分構成。條件部分通常用邏輯謂詞表達,后者通常使用特定的結構來表達。檢測規(guī)則通常用基于模式(pattern-based)的語言進行描述。條件通常表達為模式的形式,使用邏輯操作符、數(shù)據(jù)內(nèi)容和時間約束等選擇輸入流數(shù)據(jù)中的匹配部分,活動則定義了所選數(shù)據(jù)項如何關聯(lián)來產(chǎn)生新的數(shù)據(jù)。這在復合事件處理系統(tǒng)中尤為常見。流數(shù)據(jù)基本概念流數(shù)據(jù)處理系統(tǒng)的規(guī)則語言中經(jīng)常使用的算子運算符如下:單數(shù)據(jù)項(single-item)運算符。單數(shù)據(jù)項運算符分為兩類,一類為選擇運算符,對輸入流數(shù)據(jù)中的數(shù)據(jù)項按照某種條件進行過濾操作。數(shù)據(jù)加工運算符,包括投影運算符以及重命名運算符邏輯(logic)運算符。邏輯運算符是對多個數(shù)據(jù)項的操作,但與數(shù)據(jù)項的順序無關。包括:聯(lián)合運算符、析取運算符、數(shù)據(jù)項重復運算符(數(shù)據(jù)項a的重復度為<m,n>當且僅當a被檢測到出現(xiàn)了不少于m次,但不多于n次)以及否定運算符(作用在某數(shù)據(jù)項上的否定運算符當且僅當流數(shù)據(jù)中沒有出現(xiàn)該數(shù)據(jù)項時為真)。序列(sequences)運算符。序列運算符當且僅當數(shù)據(jù)項序列a1,a2,…,an以某個具體的順序出現(xiàn)時為真。序列運算符在基于模式的語言中經(jīng)常使用,而轉換規(guī)則語言通常不提供該運算符。迭代(iteration)運算符。迭代運算符用來表達滿足給定迭代條件的無邊界數(shù)據(jù)項序列。與序列運算符類似,迭代運算符以數(shù)據(jù)項的排序為前提。流管理(flowmanagement)運算符。聲明式和命令式的流數(shù)據(jù)處理轉換規(guī)則描述語言都需要對多個來源的流數(shù)據(jù)進行合并、分割、組織和處理等。它包括:連接運算符、Bag集合運算符、數(shù)據(jù)流重復運算符、分組運算符以及排序運算符。聚集(aggregation)操作運算符。類似于關系代數(shù)中的聚集操作,很多流數(shù)據(jù)處理的應用場景也需要聚集多個流數(shù)據(jù)的數(shù)據(jù),并生成新的數(shù)據(jù)。早期流數(shù)據(jù)處理系統(tǒng)提供一些預定義的聚集運算符,例如求最小值、最大值和平均值的運算符。聚集運算符往往需要和窗口結構聯(lián)合使用,以對操作的范圍進行約束,稱為窗口聚集操作或窗口聚集查詢(windowedaggregationquery)。流數(shù)據(jù)查詢操作流數(shù)據(jù)查詢相關工作可以分為兩個方面:
一方面是單個查詢操作的實現(xiàn)及優(yōu)化,例如連接查詢、聚集查詢等操作的實現(xiàn)及優(yōu)化;另一方面是互相連接的多個流數(shù)據(jù)操作算子的執(zhí)行及優(yōu)化。流數(shù)據(jù)連接查詢操作:
流數(shù)據(jù)的連接查詢算法可以分為兩個或多個流數(shù)據(jù)之間的連接查詢
以及流數(shù)據(jù)和靜態(tài)數(shù)據(jù)之間的連接查詢兩類,在分布式和云計算環(huán)境中,連接查詢主要通過數(shù)據(jù)分區(qū)技術實現(xiàn)?;谠朴嬎愕牧鲾?shù)據(jù)聚集查詢操作:
基于云計算分布并行的計算模式,流數(shù)據(jù)上的滑動窗口聚集操作有并行劃分、增量式處理、層次性處理三種優(yōu)化方式。流數(shù)據(jù)定制化服務目標:面向不同類型應用的需求,以服務方式提供對流數(shù)據(jù)連續(xù)查詢、事件檢測、實時分析等的能力,支持用戶對大規(guī)模流數(shù)據(jù)的共享定制。為了解決處理實時、持續(xù)不間斷的流數(shù)據(jù)時的局限性,進行了數(shù)據(jù)服務模型的研究工作,包括“數(shù)據(jù)服務”和“以數(shù)據(jù)為中心的Web服務”。流數(shù)據(jù)定制化服務大規(guī)模流數(shù)據(jù)服務模型與傳統(tǒng)數(shù)據(jù)服務模型的比較流數(shù)據(jù)定制化服務
流數(shù)據(jù)服務的模型需要對服務的數(shù)據(jù)模型、操作、服務處理方法以及性質(zhì)等進行刻畫。針對這些問題,研究工作提出了StreamFeeds模型。
StreamFeed:一種流數(shù)據(jù)服務抽象模型流數(shù)據(jù)定制化服務為了利用流數(shù)據(jù)構造具體的應用,研究者們提出了不同的編程模型與方法,如IBMSPL、SparkStreaming、CQL等傳感器流數(shù)據(jù)抽象為服務,實現(xiàn)智能響應,延續(xù)服務計算核心思想,加強與周圍情景信息關聯(lián)。亞馬遜Kinesis、GoogleBigQuery、PredictiveAPI提供流數(shù)據(jù)托管服務,簡化數(shù)據(jù)流收集與分析,無需自行搭建基礎設施。流數(shù)據(jù)服務面臨動態(tài)負載挑戰(zhàn),關鍵在于保障可伸縮性,以適應不可預測且動態(tài)變化的流數(shù)據(jù)規(guī)模與速度。評測基準評測基準:用于評測、比較不同系統(tǒng)性能的規(guī)范。評測基準用于客觀、全面反映具有類似功能的系統(tǒng)之間的差異。傳統(tǒng)的數(shù)據(jù)管理技術發(fā)展已相對成熟和穩(wěn)定,而流數(shù)據(jù)處理由于各個要素普遍缺乏標準,流數(shù)據(jù)處理的基準測試需求要包含多個方面。廣泛的評估和比較流計算系統(tǒng)評估不同數(shù)據(jù)或計算特征下的能力產(chǎn)生不同的有代表性的負載評測基準如LinearRoadBenchmark是廣泛應用的流數(shù)據(jù)處理測試基準,可以進行計費通知、事故通知、旅行時間估計等查詢、測試不同系統(tǒng)執(zhí)行這些查詢時的性能。Hibench、BigBench、BigDataBench等針對Hadoop和大數(shù)據(jù)處理提供豐富的測試場景;流處理系統(tǒng)如S4、SparkStreaming、TimeStream進行了自身適用場景下的專用評測。SparkStreaming及其在物聯(lián)網(wǎng)大數(shù)據(jù)中的應用SparkStreaming:構建在Spark上處理流數(shù)據(jù)的框架,它將Stream數(shù)據(jù)分成小的時間片斷實現(xiàn)處理小部分數(shù)據(jù)SparkStreaming優(yōu)點:能運行在100+的結點上,并達到秒級延遲使用基于內(nèi)存的Spark作為執(zhí)行引擎,具有高效和容錯的特性能集成Spark的批處理和交互查詢?yōu)閷崿F(xiàn)復雜的算法提供和批處理類似的簡單接口應用:使用SparkStreaming流數(shù)據(jù)處理系統(tǒng),利用交通檢測攝像頭不斷產(chǎn)生的車牌信息,來幫助交管部門預防交通擁堵、事故等問題的發(fā)生PARTFOUR4物聯(lián)網(wǎng)大數(shù)據(jù)分析物聯(lián)網(wǎng)大數(shù)據(jù)OLAP多維分析OLAP是使用多維分析對數(shù)據(jù)快速訪問的一種技術。分析多維數(shù)據(jù)采用的常用方法包括:上卷(drillup)、下鉆(drilldown)、切片(slicing)和切塊(dicing)等方法。以北京市各監(jiān)測點的車流量數(shù)據(jù)集為例,我們可以將其看作一個多維數(shù)組。三個維分別對應監(jiān)測點所屬區(qū)域、月份和日期。下鉆(drilldown)指在維的不同層次間從上層降到下一層,或者說是將匯總數(shù)據(jù)拆分到更細節(jié)的數(shù)據(jù),例如,從北京市這個區(qū)域鉆取數(shù)據(jù),來查看海淀區(qū)、朝陽區(qū)、石景山區(qū)等各城區(qū)的車流量能集成Spark的批處理和交互查詢上卷(drillup)是下鉆的逆操作,即從細粒度數(shù)據(jù)向高層的聚合,如將海淀區(qū)、朝陽區(qū)、石景山區(qū)的那個各區(qū)車流量匯總來查看北京城區(qū)的車流量切片(Slice)指選擇維中特定的值進行分析,比如只選擇海淀區(qū)的數(shù)據(jù)切塊(Dice)指選擇維中特定區(qū)間的數(shù)據(jù)或者某批特定值進行分析,比如選擇2012年10月到2012年12月的車流量數(shù)據(jù)物聯(lián)網(wǎng)大數(shù)據(jù)OLAP多維分析OLAP有多種實現(xiàn)方法,根據(jù)存儲數(shù)據(jù)的方式不同可以分為ROLAP、MOLAP、HOLAPROLAP表示基于關系數(shù)據(jù)庫的OLAP實現(xiàn)(RelationalOLAP),以關系數(shù)據(jù)庫為核心,以關系型結構進行多維數(shù)據(jù)的表示和存儲。ROLAP將多維數(shù)據(jù)庫的多維結構劃分為兩類表:一類是事實表,用來存儲數(shù)據(jù)和維關鍵字;另一類是維表,即對每個維至少使用一個表來存放維的層次、成員類別等維的描述信息。MOLAP表示基于多維數(shù)據(jù)組織的OLAP實現(xiàn)(MultidimensionalOLAP),以多維數(shù)據(jù)組織方式為核心,也就是說,MOLAP使用多維數(shù)組存儲數(shù)據(jù)。多維數(shù)據(jù)在存儲中將形成“數(shù)據(jù)立方體(Cube)”的結構,此結構在得到高度優(yōu)化后,可以很大程度地提高查詢性能。HOLAP表示基于混合數(shù)據(jù)組織的OLAP實現(xiàn)(HybridOLAP),用戶可以根據(jù)自己的業(yè)務需求,選擇哪些模型采用ROLAP,哪些采用MOLAP。一般來說,會將非常用或需要靈活定義的分析使用ROLAP方式,而常用、常規(guī)模型采用MOLAP實現(xiàn)。城市交通物聯(lián)網(wǎng)大數(shù)據(jù)分析流程
在問題建模階段收集問題的相關資料,理解問題,在此基礎上,拆解問題、簡化問題,將其轉化機器可預估的問題。首先理解數(shù)據(jù)源的物理意義
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中金大摩分手后2025年度業(yè)務協(xié)同協(xié)議2篇
- 工業(yè)園區(qū)硅PU施工合同
- 公司辭退合同范本(2篇)
- 影視制作大院租賃合同
- 專業(yè)足球教練聘用合同模板
- 超市清潔工聘用合同書
- 園林綠化樁基施工勞務分包合同
- 2024有關財務代理合同范文
- 2024年智能交通系統(tǒng)配電安裝與智能控制合同3篇
- 2024年版的化工廠設備租賃協(xié)議
- 2024-2030年中國硅肥行業(yè)規(guī)模分析及投資前景研究報告
- 電網(wǎng)行業(yè)工作匯報模板22
- 2024-2025學年一年級數(shù)學上冊期末樂考非紙筆測試題(二 )(蘇教版2024秋)
- 2024秋期國家開放大學專科《高等數(shù)學基礎》一平臺在線形考(形考任務一至四)試題及答案
- 2024-2024年江蘇省普通高中學業(yè)水平測試物理試卷(含答案)
- 有色金屬工業(yè)安裝工程質(zhì)量檢驗評定標準
- 物理學的起源和發(fā)展課件
- 南京大學《宏觀經(jīng)濟學》習題庫及答案
- (中職)《電子商務基礎》第1套試卷試題及答案
- 汽車三維建模虛擬仿真實驗
- 無人機智慧旅游解決方案
評論
0/150
提交評論