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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

性能保障

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

性能保障

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

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

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

性能保障(4)垃圾回收

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

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

(5)訪問接口

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論