大數據技術原理與應用第四章分布式數據庫課件_第1頁
大數據技術原理與應用第四章分布式數據庫課件_第2頁
大數據技術原理與應用第四章分布式數據庫課件_第3頁
大數據技術原理與應用第四章分布式數據庫課件_第4頁
大數據技術原理與應用第四章分布式數據庫課件_第5頁
已閱讀5頁,還剩77頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

廈門大學計算機科學系2015年版

第四章分布式數據庫HBase

(PPT版本號:2015年6月第1.0版)

《大數據技術原理與應用》/post/bigdata溫馨提示:編輯幻燈片母版,可以修改每頁PPT的廈大?;蘸偷撞课淖謴B門大學計算機科學系提綱4.1 概述4.2 HBase訪問接口4.3 HBase數據模型4.4 HBase的實現原理4.5 HBase運行機制4.6 HBase編程實踐歡迎訪問《大數據技術原理與應用》教材官方網站:/post/bigdata本PPT是如下教材的配套講義:21世紀高等教育計算機規劃教材《大數據技術原理與應用——概念、存儲、處理、分析與應用》(2015年6月第1版)廈門大學林子雨編著,人民郵電出版社ISBN:978-7-115-39287-9提綱4.1 概述歡迎訪問《大數據技術原理與應用》教材官方網站4.1 概述4.1.1 從BigTable說起4.1.2 HBase簡介4.1.3 HBase與傳統關系數據庫的對比分析4.1 概述4.1.1 從BigTable說起4.1.1 從BigTable說起BigTable是一個分布式存儲系統利用谷歌提出的MapReduce分布式并行計算模型來處理海量數據使用谷歌分布式文件系統GFS作為底層數據存儲采用Chubby提供協同服務管理可以擴展到PB級別的數據和上千臺機器,具備廣泛應用性、可擴展性、高性能和高可用性等特點谷歌的許多項目都存儲在BigTable中,包括搜索、地圖、財經、打印、社交網站Orkut、視頻共享網站YouTube和博客網站Blogger等4.1.1 從BigTable說起BigTable是一個分布4.1.2 HBase簡介HBase是一個高可靠、高性能、面向列、可伸縮的分布式數據庫,是谷歌BigTable的開源實現,主要用來存儲非結構化和半結構化的松散數據。HBase的目標是處理非常龐大的表,可以通過水平擴展的方式,利用廉價計算機集群處理由超過10億行數據和數百萬列元素組成的數據表圖4-1Hadoop生態系統中HBase與其他部分的關系4.1.2 HBase簡介HBase是一個高可靠、高性能、面4.1.2 HBase簡介表4-1HBase和BigTable的底層技術對應關系BigTableHBase文件存儲系統GFSHDFS海量數據處理MapReduceHadoopMapReduce協同服務管理ChubbyZookeeper4.1.2 HBase簡介表4-1HBase和BigTab4.1.3 HBase與傳統關系數據庫的對比分析HBase與傳統的關系數據庫的區別主要體現在以下幾個方面:(1)數據類型:關系數據庫采用關系模型,具有豐富的數據類型和存儲方式,HBase則采用了更加簡單的數據模型,它把數據存儲為未經解釋的字符串(2)數據操作:關系數據庫中包含了豐富的操作,其中會涉及復雜的多表連接。HBase操作則不存在復雜的表與表之間的關系,只有簡單的插入、查詢、刪除、清空等,因為HBase在設計上就避免了復雜的表和表之間的關系(3)存儲模式:關系數據庫是基于行模式存儲的。HBase是基于列存儲的,每個列族都由幾個文件保存,不同列族的文件是分離的4.1.3 HBase與傳統關系數據庫的對比分析HBase與4.1.3 HBase與傳統關系數據庫的對比分析HBase與傳統的關系數據庫的區別主要體現在以下幾個方面:(4)數據索引:關系數據庫通??梢葬槍Σ煌袠嫿◤碗s的多個索引,以提高數據訪問性能。HBase只有一個索引——行鍵,通過巧妙的設計,HBase中的所有訪問方法,或者通過行鍵訪問,或者通過行鍵掃描,從而使得整個系統不會慢下來(5)數據維護:在關系數據庫中,更新操作會用最新的當前值去替換記錄中原來的舊值,舊值被覆蓋后就不會存在。而在HBase中執行更新操作時,并不會刪除數據舊的版本,而是生成一個新的版本,舊有的版本仍然保留(6)可伸縮性:關系數據庫很難實現橫向擴展,縱向擴展的空間也比較有限。相反,HBase和BigTable這些分布式數據庫就是為了實現靈活的水平擴展而開發的,能夠輕易地通過在集群中增加或者減少硬件數量來實現性能的伸縮4.1.3 HBase與傳統關系數據庫的對比分析HBase與4.2 HBase訪問接口表4-2HBase訪問接口類型特點場合NativeJavaAPI最常規和高效的訪問方式適合HadoopMapReduce作業并行批處理HBase表數據HBaseShellHBase的命令行工具,最簡單的接口適合HBase管理使用ThriftGateway利用Thrift序列化技術,支持C++、PHP、Python等多種語言適合其他異構系統在線訪問HBase表數據RESTGateway解除了語言限制支持REST風格的HttpAPI訪問HBasePig使用PigLatin流式編程語言來處理HBase中的數據適合做數據統計Hive簡單當需要以類似SQL語言方式來訪問HBase的時候4.2 HBase訪問接口表4-2HBase訪問接口類型特4.3 HBase數據模型4.3.1 數據模型概述4.3.2 數據模型相關概念4.3.3 數據坐標4.3.4 概念視圖4.3.5 物理視圖4.3.6 面向列的存儲4.3 HBase數據模型4.3.1 數據模型概述4.3.1 數據模型概述HBase是一個稀疏、多維度、排序的映射表,這張表的索引是行鍵、列族、列限定符和時間戳每個值是一個未經解釋的字符串,沒有數據類型用戶在表中存儲數據,每一行都有一個可排序的行鍵和任意多的列表在水平方向由一個或者多個列族組成,一個列族中可以包含任意多個列,同一個列族里面的數據存儲在一起列族支持動態擴展,可以很輕松地添加一個列族或列,無需預先定義列的數量以及類型,所有列均以字符串形式存儲,用戶需要自行進行數據類型轉換HBase中執行更新操作時,并不會刪除數據舊的版本,而是生成一個新的版本,舊有的版本仍然保留4.3.1 數據模型概述HBase是一個稀疏、多維度、排序的4.3.2 數據模型相關概念表:HBase采用表來組織數據,表由行和列組成,列劃分為若干個列族行:每個HBase表都由若干行組成,每個行由行鍵(rowkey)來標識。訪問表中的行只有三種方式:(1)通過單個行鍵訪問;(2)通過一個行鍵的區間來訪問;(3)全表掃描列族:一個HBase表被分組成許多“列族”的集合,它是基本的訪問控制單元列限定符:列族里的數據通過列限定符(或列)來定位單元格:在HBase表中,通過行、列族和列限定符確定一個“單元格”(cell),單元格中存儲的數據沒有數據類型,總被視為字節數組byte[]時間戳:每個單元格都保存著同一份數據的多個版本,這些版本采用時間戳進行索引4.3.2 數據模型相關概念表:HBase采用表來組織數據,4.3.2 數據模型相關概念圖4-2HBase數據模型的一個實例4.3.2 數據模型相關概念圖4-2HBase數據模型的一4.3.3 數據坐標HBase中需要根據行鍵、列族、列限定符和時間戳來確定一個單元格,因此,可以視為一個“四維坐標”,即[行鍵,列族,列限定符,時間戳]鍵值[“201505003”,“Info”,“email”,1174184619081]“xie@”[“201505003”,“Info”,“email”,1174184620720]“you@163.com”4.3.3 數據坐標HBase中需要根據行鍵、列族、列限定符4.3.4 概念視圖表4-4HBase數據的概念視圖4.3.4 概念視圖表4-4HBase數據的概念視圖4.3.5 物理視圖表4-5HBase數據的物理視圖列族contents列族anchor4.3.5 物理視圖表4-5HBase數據的物理視圖列族a4.3.6 面向列的存儲圖4-3行式數據庫和列式數據庫示意圖4.3.6 面向列的存儲圖4-3行式數據庫和列式數據庫示意4.3.6 面向列的存儲圖4-4行式存儲結構和列式存儲結構4.3.6 面向列的存儲圖4-4行式存儲結構和列式存儲結構4.4 HBase的實現原理4.4.1 HBase功能組件4.4.2 表和Region4.4.3 Region的定位4.4 HBase的實現原理4.4.1 HBase功能組件4.4.1 HBase功能組件HBase的實現包括三個主要的功能組件:(1)庫函數:鏈接到每個客戶端(2)一個Master主服務器(3)許多個Region服務器Region服務器負責存儲和維護分配給自己的Region,處理來自客戶端的讀寫請求主服務器Master負責管理和維護HBase表的分區信息客戶端并不是直接從Master主服務器上讀取數據,而是在獲得Region的存儲位置信息后,直接從Region服務器上讀取數據

4.4.1 HBase功能組件HBase的實現包括三個主要的4.4.2 表和Region圖4-5一個HBase表被劃分成多個Region圖4-6一個Region會分裂成多個新的Region4.4.2 表和Region圖4-5一個HBase表被劃分成4.4.2 表和Region圖4-7不同的Region可以分布在不同的Region服務器上4.4.2 表和Region圖4-7不同的Region可以4.4.3 Region的定位圖4-8HBase的三層結構4.4.3 Region的定位圖4-8HBase的三層結構4.4.3 Region的定位表4-6HBase的三層結構中各層次的名稱和作用層次名稱作用第一層Zookeeper文件記錄了-ROOT-表的位置信息第二層-ROOT-表記錄了.META.表的Region位置信息-ROOT-表只能有一個Region。通過-ROOT-表,就可以訪問.META.表中的數據第三層.META.表記錄了用戶數據表的Region位置信息,.META.表可以有多個Region,保存了HBase中所有用戶數據表的Region位置信息4.4.3 Region的定位表4-6HBase的三層結構4.5 HBase運行機制4.5.1 HBase系統架構4.5.2 Region服務器工作原理4.5.3 Store工作原理4.5.4 HLog工作原理4.5 HBase運行機制4.5.1 HBase系統架構4.5.1 HBase系統架構圖4-9HBase的系統架構4.5.1 HBase系統架構圖4-9HBase的系統架構4.5.1 HBase系統架構1.客戶端客戶端包含訪問HBase的接口,同時在緩存中維護著已經訪問過的Region位置信息,用來加快后續數據訪問過程2.Zookeeper服務器Zookeeper可以幫助選舉出一個Master作為集群的總管,并保證在任何時刻總有唯一一個Master在運行,這就避免了Master的“單點失效”問題3.Master主服務器Master主要負責表和Region的管理工作:管理用戶對表的增加、刪除、修改、查詢等操作實現不同Region服務器之間的負載均衡在Region分裂或合并后,負責重新調整Region的分布對發生故障失效的Region服務器上的Region進行遷移4.Region服務器Region服務器是HBase中最核心的模塊,負責維護分配給自己的Region,并響應用戶的讀寫請求4.5.1 HBase系統架構1.客戶端3.Master4.5.2 Region服務器工作原理圖4-10Region服務器向HDFS文件系統中讀寫數據1.用戶讀寫數據過程

2.緩存的刷新3.StoreFile的合并4.5.2 Region服務器工作原理圖4-10Regio4.5.3 Store工作原理圖4-11StoreFile的合并和分裂過程4.5.3 Store工作原理圖4-11StoreFile4.5.4 HLog工作原理HBase系統為每個Region服務器配置了一個HLog文件,它是一種預寫式日志(WriteAheadLog)Zookeeper會實時監測每個Region服務器的狀態,當某個Region服務器發生故障時,Zookeeper會通知MasterMaster首先會處理該故障Region服務器上面遺留的HLog文件,這個遺留的HLog文件中包含了來自多個Region對象的日志記錄系統會根據每條日志記錄所屬的Region對象對HLog數據進行拆分,分別放到相應Region對象的目錄下,然后,再將失效的Region重新分配到可用的Region服務器中,并把與該Region對象相關的HLog日志記錄也發送給相應的Region服務器Region服務器領取到分配給自己的Region對象以及與之相關的HLog日志記錄以后,會重新做一遍日志記錄中的各種操作,把日志記錄中的數據寫入到MemStore緩存中,然后,刷新到磁盤的StoreFile文件中,完成數據恢復共用日志優點:提高對表的寫操作性能;缺點:恢復時需要分拆日志4.5.4 HLog工作原理HBase系統為每個Region4.6HBase編程實踐

本節主要介紹Linux中關于HBase數據庫的常用Shell命令,以及數據處理常用的JavaAPI4.6.1 HBase常用Shell命令4.6.2 HBase常用JavaAPI及應用實例4.6HBase編程實踐本節主要介紹Lin4.6.1 HBase常用Shell命令create:創建表list:列出HBase中所有的表信息4.6.1 HBase常用Shell命令create:創建表4.6.1 HBase常用Shell命令put:向表、行、列指定的單元格添加數據scan:瀏覽表的相關信息4.6.1 HBase常用Shell命令put:向表、行、4.6.1 HBase常用Shell命令get:通過表名、行、列、時間戳、時間范圍和版本號來獲得相應單元格的值4.6.1 HBase常用Shell命令get:通過表名、4.6.1 HBase常用Shell命令enable/disable:使表有效或無效drop:刪除表4.6.1 HBase常用Shell命令enable/dis4.6.2 HBase常用JavaAPI及應用實例Hbase常用JavaAPI(1)org.apache.hadoop.hbase.client.HBaseAdmin該類用于管理HBase數據庫的表信息,包括創建或刪除表、列出表項、使表有效或無效、添加或刪除表的列族成員、檢查HBase的運行狀態等

(2)org.apache.hadoop.hbase.HBaseConfiguration該類用于管理HBase的配置信息

(3)org.apache.hadoop.hbase.client.HTable用于與HBase進行通信。如果多個線程對一個HTable對象進行put或者delete操作的話,則寫緩沖器可能會崩潰4.6.2 HBase常用JavaAPI及應用實例Hbas4.6.2 HBase常用JavaAPI及應用實例(4)org.apache.hadoop.hbase.HTableDescriptorHTableDescriptor包含了HBase中表格的詳細信息,例如表中的列族、該表的類型(-ROOT-,.META.)、該表是否只讀、MemStore的最大空間、Region什么時候應該分裂等等(5)org.apache.hadoop.hbase.HColumnDescriptorHColumnDescriptor包含了列族的詳細信息,例如列族的版本號、壓縮設置等。HColumnDescriptor通常在添加列族或者創建表的時候使用。列族一旦建立就不能被修改,只能通過刪除列族,然后再創建新的列族來間接的修改列族。一旦列族被刪除了,該列族包含的數據也隨之被刪除4.6.2 HBase常用JavaAPI及應用實例(4)o4.6.2 HBase常用JavaAPI及應用實例(6)org.apache.hadoop.hbase.client.Put用來對單元格執行添加數據操作(7)org.apache.hadoop.hbase.client.Get用來獲取單行的信息(8)org.apache.hadoop.hbase.client.Result用于存放Get或Scan操作后的查詢結果,并以<key,value>的格式存儲在map結構中。該類不是線程安全的(9)Org.apache.hadoop.hbase.client.ResultScanner客戶端獲取值的接口

4.6.2 HBase常用JavaAPI及應用實例(6)o本章小結本章詳細介紹了HBase數據庫的知識。HBase數據庫是BigTable的開源實現,和BigTable一樣,支持大規模海量數據,分布式并發數據處理效率極高,易于擴展且支持動態伸縮,適用于廉價設備HBase可以支持NativeJavaAPI、HBaseShell、ThriftGateway、RESTGateway、Pig、Hive等多種訪問接口,可以根據具體應用場合選擇相應訪問方式HBase實際上就是一個稀疏、多維、持久化存儲的映射表,它采用行鍵、列鍵和時間戳進行索引,每個值都是未經解釋的字符串。本章介紹了HBase數據在概念視圖和物理視圖中的差別HBase采用分區存儲,一個大的表會被分拆許多個Region,這些Region會被分發到不同的服務器上實現分布式存儲HBase的系統架構包括客戶端、Zookeeper服務器、Master主服務器、Region服務器??蛻舳税L問HBase的接口;Zookeeper服務器負責提供穩定可靠的協同服務;Master主服務器主要負責表和Region的管理工作;Region服務器負責維護分配給自己的Region,并響應用戶的讀寫請求本章最后詳細介紹了HBase運行機制和編程實踐的知識本章小結本章詳細介紹了HBase數據庫的知識。HBase數據主講教師和助教主講教師:林子雨單位:廈門大學計算機科學系數據庫實驗室2013級碩士研究生(導師:林子雨)E-mail:caiminxing@126.com助教:蔡珉星歡迎訪問《大數據技術原理與應用——概念、存儲、處理、分析與應用》教材官方網站:/post/bigdata主講教師和助教主講教師:林子雨單位:廈門大學計算機科學系數據DepartmentofComputerScience,XiamenUniversity,June,2015DepartmentofComputerScience廈門大學計算機科學系2015年版

第四章分布式數據庫HBase

(PPT版本號:2015年6月第1.0版)

《大數據技術原理與應用》/post/bigdata溫馨提示:編輯幻燈片母版,可以修改每頁PPT的廈大?;蘸偷撞课淖謴B門大學計算機科學系提綱4.1 概述4.2 HBase訪問接口4.3 HBase數據模型4.4 HBase的實現原理4.5 HBase運行機制4.6 HBase編程實踐歡迎訪問《大數據技術原理與應用》教材官方網站:/post/bigdata本PPT是如下教材的配套講義:21世紀高等教育計算機規劃教材《大數據技術原理與應用——概念、存儲、處理、分析與應用》(2015年6月第1版)廈門大學林子雨編著,人民郵電出版社ISBN:978-7-115-39287-9提綱4.1 概述歡迎訪問《大數據技術原理與應用》教材官方網站4.1 概述4.1.1 從BigTable說起4.1.2 HBase簡介4.1.3 HBase與傳統關系數據庫的對比分析4.1 概述4.1.1 從BigTable說起4.1.1 從BigTable說起BigTable是一個分布式存儲系統利用谷歌提出的MapReduce分布式并行計算模型來處理海量數據使用谷歌分布式文件系統GFS作為底層數據存儲采用Chubby提供協同服務管理可以擴展到PB級別的數據和上千臺機器,具備廣泛應用性、可擴展性、高性能和高可用性等特點谷歌的許多項目都存儲在BigTable中,包括搜索、地圖、財經、打印、社交網站Orkut、視頻共享網站YouTube和博客網站Blogger等4.1.1 從BigTable說起BigTable是一個分布4.1.2 HBase簡介HBase是一個高可靠、高性能、面向列、可伸縮的分布式數據庫,是谷歌BigTable的開源實現,主要用來存儲非結構化和半結構化的松散數據。HBase的目標是處理非常龐大的表,可以通過水平擴展的方式,利用廉價計算機集群處理由超過10億行數據和數百萬列元素組成的數據表圖4-1Hadoop生態系統中HBase與其他部分的關系4.1.2 HBase簡介HBase是一個高可靠、高性能、面4.1.2 HBase簡介表4-1HBase和BigTable的底層技術對應關系BigTableHBase文件存儲系統GFSHDFS海量數據處理MapReduceHadoopMapReduce協同服務管理ChubbyZookeeper4.1.2 HBase簡介表4-1HBase和BigTab4.1.3 HBase與傳統關系數據庫的對比分析HBase與傳統的關系數據庫的區別主要體現在以下幾個方面:(1)數據類型:關系數據庫采用關系模型,具有豐富的數據類型和存儲方式,HBase則采用了更加簡單的數據模型,它把數據存儲為未經解釋的字符串(2)數據操作:關系數據庫中包含了豐富的操作,其中會涉及復雜的多表連接。HBase操作則不存在復雜的表與表之間的關系,只有簡單的插入、查詢、刪除、清空等,因為HBase在設計上就避免了復雜的表和表之間的關系(3)存儲模式:關系數據庫是基于行模式存儲的。HBase是基于列存儲的,每個列族都由幾個文件保存,不同列族的文件是分離的4.1.3 HBase與傳統關系數據庫的對比分析HBase與4.1.3 HBase與傳統關系數據庫的對比分析HBase與傳統的關系數據庫的區別主要體現在以下幾個方面:(4)數據索引:關系數據庫通??梢葬槍Σ煌袠嫿◤碗s的多個索引,以提高數據訪問性能。HBase只有一個索引——行鍵,通過巧妙的設計,HBase中的所有訪問方法,或者通過行鍵訪問,或者通過行鍵掃描,從而使得整個系統不會慢下來(5)數據維護:在關系數據庫中,更新操作會用最新的當前值去替換記錄中原來的舊值,舊值被覆蓋后就不會存在。而在HBase中執行更新操作時,并不會刪除數據舊的版本,而是生成一個新的版本,舊有的版本仍然保留(6)可伸縮性:關系數據庫很難實現橫向擴展,縱向擴展的空間也比較有限。相反,HBase和BigTable這些分布式數據庫就是為了實現靈活的水平擴展而開發的,能夠輕易地通過在集群中增加或者減少硬件數量來實現性能的伸縮4.1.3 HBase與傳統關系數據庫的對比分析HBase與4.2 HBase訪問接口表4-2HBase訪問接口類型特點場合NativeJavaAPI最常規和高效的訪問方式適合HadoopMapReduce作業并行批處理HBase表數據HBaseShellHBase的命令行工具,最簡單的接口適合HBase管理使用ThriftGateway利用Thrift序列化技術,支持C++、PHP、Python等多種語言適合其他異構系統在線訪問HBase表數據RESTGateway解除了語言限制支持REST風格的HttpAPI訪問HBasePig使用PigLatin流式編程語言來處理HBase中的數據適合做數據統計Hive簡單當需要以類似SQL語言方式來訪問HBase的時候4.2 HBase訪問接口表4-2HBase訪問接口類型特4.3 HBase數據模型4.3.1 數據模型概述4.3.2 數據模型相關概念4.3.3 數據坐標4.3.4 概念視圖4.3.5 物理視圖4.3.6 面向列的存儲4.3 HBase數據模型4.3.1 數據模型概述4.3.1 數據模型概述HBase是一個稀疏、多維度、排序的映射表,這張表的索引是行鍵、列族、列限定符和時間戳每個值是一個未經解釋的字符串,沒有數據類型用戶在表中存儲數據,每一行都有一個可排序的行鍵和任意多的列表在水平方向由一個或者多個列族組成,一個列族中可以包含任意多個列,同一個列族里面的數據存儲在一起列族支持動態擴展,可以很輕松地添加一個列族或列,無需預先定義列的數量以及類型,所有列均以字符串形式存儲,用戶需要自行進行數據類型轉換HBase中執行更新操作時,并不會刪除數據舊的版本,而是生成一個新的版本,舊有的版本仍然保留4.3.1 數據模型概述HBase是一個稀疏、多維度、排序的4.3.2 數據模型相關概念表:HBase采用表來組織數據,表由行和列組成,列劃分為若干個列族行:每個HBase表都由若干行組成,每個行由行鍵(rowkey)來標識。訪問表中的行只有三種方式:(1)通過單個行鍵訪問;(2)通過一個行鍵的區間來訪問;(3)全表掃描列族:一個HBase表被分組成許多“列族”的集合,它是基本的訪問控制單元列限定符:列族里的數據通過列限定符(或列)來定位單元格:在HBase表中,通過行、列族和列限定符確定一個“單元格”(cell),單元格中存儲的數據沒有數據類型,總被視為字節數組byte[]時間戳:每個單元格都保存著同一份數據的多個版本,這些版本采用時間戳進行索引4.3.2 數據模型相關概念表:HBase采用表來組織數據,4.3.2 數據模型相關概念圖4-2HBase數據模型的一個實例4.3.2 數據模型相關概念圖4-2HBase數據模型的一4.3.3 數據坐標HBase中需要根據行鍵、列族、列限定符和時間戳來確定一個單元格,因此,可以視為一個“四維坐標”,即[行鍵,列族,列限定符,時間戳]鍵值[“201505003”,“Info”,“email”,1174184619081]“xie@”[“201505003”,“Info”,“email”,1174184620720]“you@163.com”4.3.3 數據坐標HBase中需要根據行鍵、列族、列限定符4.3.4 概念視圖表4-4HBase數據的概念視圖4.3.4 概念視圖表4-4HBase數據的概念視圖4.3.5 物理視圖表4-5HBase數據的物理視圖列族contents列族anchor4.3.5 物理視圖表4-5HBase數據的物理視圖列族a4.3.6 面向列的存儲圖4-3行式數據庫和列式數據庫示意圖4.3.6 面向列的存儲圖4-3行式數據庫和列式數據庫示意4.3.6 面向列的存儲圖4-4行式存儲結構和列式存儲結構4.3.6 面向列的存儲圖4-4行式存儲結構和列式存儲結構4.4 HBase的實現原理4.4.1 HBase功能組件4.4.2 表和Region4.4.3 Region的定位4.4 HBase的實現原理4.4.1 HBase功能組件4.4.1 HBase功能組件HBase的實現包括三個主要的功能組件:(1)庫函數:鏈接到每個客戶端(2)一個Master主服務器(3)許多個Region服務器Region服務器負責存儲和維護分配給自己的Region,處理來自客戶端的讀寫請求主服務器Master負責管理和維護HBase表的分區信息客戶端并不是直接從Master主服務器上讀取數據,而是在獲得Region的存儲位置信息后,直接從Region服務器上讀取數據

4.4.1 HBase功能組件HBase的實現包括三個主要的4.4.2 表和Region圖4-5一個HBase表被劃分成多個Region圖4-6一個Region會分裂成多個新的Region4.4.2 表和Region圖4-5一個HBase表被劃分成4.4.2 表和Region圖4-7不同的Region可以分布在不同的Region服務器上4.4.2 表和Region圖4-7不同的Region可以4.4.3 Region的定位圖4-8HBase的三層結構4.4.3 Region的定位圖4-8HBase的三層結構4.4.3 Region的定位表4-6HBase的三層結構中各層次的名稱和作用層次名稱作用第一層Zookeeper文件記錄了-ROOT-表的位置信息第二層-ROOT-表記錄了.META.表的Region位置信息-ROOT-表只能有一個Region。通過-ROOT-表,就可以訪問.META.表中的數據第三層.META.表記錄了用戶數據表的Region位置信息,.META.表可以有多個Region,保存了HBase中所有用戶數據表的Region位置信息4.4.3 Region的定位表4-6HBase的三層結構4.5 HBase運行機制4.5.1 HBase系統架構4.5.2 Region服務器工作原理4.5.3 Store工作原理4.5.4 HLog工作原理4.5 HBase運行機制4.5.1 HBase系統架構4.5.1 HBase系統架構圖4-9HBase的系統架構4.5.1 HBase系統架構圖4-9HBase的系統架構4.5.1 HBase系統架構1.客戶端客戶端包含訪問HBase的接口,同時在緩存中維護著已經訪問過的Region位置信息,用來加快后續數據訪問過程2.Zookeeper服務器Zookeeper可以幫助選舉出一個Master作為集群的總管,并保證在任何時刻總有唯一一個Master在運行,這就避免了Master的“單點失效”問題3.Master主服務器Master主要負責表和Region的管理工作:管理用戶對表的增加、刪除、修改、查詢等操作實現不同Region服務器之間的負載均衡在Region分裂或合并后,負責重新調整Region的分布對發生故障失效的Region服務器上的Region進行遷移4.Region服務器Region服務器是HBase中最核心的模塊,負責維護分配給自己的Region,并響應用戶的讀寫請求4.5.1 HBase系統架構1.客戶端3.Master4.5.2 Region服務器工作原理圖4-10Region服務器向HDFS文件系統中讀寫數據1.用戶讀寫數據過程

2.緩存的刷新3.StoreFile的合并4.5.2 Region服務器工作原理圖4-10Regio4.5.3 Store工作原理圖4-11StoreFile的合并和分裂過程4.5.3 Store工作原理圖4-11StoreFile4.5.4 HLog工作原理HBase系統為每個Region服務器配置了一個HLog文件,它是一種預寫式日志(WriteAheadLog)Zookeeper會實時監測每個Region服務器的狀態,當某個Region服務器發生故障時,Zookeeper會通知MasterMaster首先會處理該故障Region服務器上面遺留的HLog文件,這個遺留的HLog文件中包含了來自多個Region對象的日志記錄系統會根據每條日志記錄所屬的Region對象對HLog數據進行拆分,分別放到相應Region對象的目錄下,然后,再將失效的Region重新分配到可用的Region服務器中,并把與該Region對象相關的HLog日志記錄也發送給相應的Region服務器Region服務器領取到分配給自己的Region對象以及與之相關的HLog日志記錄以后,會重新做一遍日志記錄中的各種操作,把日志記錄中的數據寫入到MemStore緩存中,然后,刷新到磁盤的StoreFile文件中,完成數據恢復共用日志優點:提高對表的寫操作性能;缺點:恢復時需要分拆日志4.5.4 HLog工作原理HBase系統為每個Region4.6HBase編程實踐

本節主要介紹Linux中關于HBase數據庫的常用Shell命令,以及數據處理常用的JavaAPI4.6.1 HBase常用Shell命令4.6.2 HBase常用JavaAPI及應用實例4.6HBase編程實踐本節主要介紹Lin4.6.1 HBase常用Shell命令create:創建表list:列出HBase中所有的表信息4.6.1 HBase常用Shell命令create:創建表4.6.1 HBase常用Shell命令put:向表、行、列指定的單元格添加數據scan:瀏覽表的相關信息4.6.1 HBase常用Shell命令put:向表、行、4.6.1 HBase常用Shell命令get:通過表名、行、列、時間戳、時間范圍和版本號來獲得相應單元格的值4.6.1 HBase常用Shell命令get:通過表名、4.6.1 HBase常用Shell命令enable/disable:使表有效或無效drop:刪除表4.6.1 HBase常用Shell命令enable/dis4.6.2 HBase常用JavaAPI及應用實例Hbase常用JavaAPI(1)org.apache.hadoop.hbase.client.HBaseAdmin該類用于管理HBase數據庫的表信息,包括創建或刪除表、列出表項、使表有效或無效、添加或刪除表的列族成員、檢查HBase的運行狀態等

(2)org.apache.hadoop.hbase.HBaseConfiguration該類用于管理HBase的配置信息

(3)org.apache.hadoop.hbase.client.HTable用于與H

溫馨提示

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

評論

0/150

提交評論