HBase-簡介-(來自京東很不錯)_第1頁
HBase-簡介-(來自京東很不錯)_第2頁
HBase-簡介-(來自京東很不錯)_第3頁
HBase-簡介-(來自京東很不錯)_第4頁
HBase-簡介-(來自京東很不錯)_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

HBase簡介數(shù)據(jù)部:桂宇目錄HBase簡介HBase體系結(jié)構(gòu)HBase數(shù)據(jù)模型HBase提供的接口HBase優(yōu)化HBase用途HBase簡介Hadoop生態(tài)系統(tǒng)成員名用途HadoopCommonHadoop體系最底層的一個模塊,為Hadoop各子項目提供各種工具,如:配置文件和日志操作等。AvroAvro是dougcutting主持的RPC項目,有點類似Google的protobuf和Facebook的thrift。avro用來做以后hadoop的RPC,使hadoop的RPC模塊通信速度更快、數(shù)據(jù)結(jié)構(gòu)更緊湊。ChukwaChukwa是基于Hadoop的大集群監(jiān)控系統(tǒng),由yahoo貢獻(xiàn)。HBase基于HadoopDistributedFileSystem,是一個開源的,基于列存儲模型的分布式數(shù)據(jù)庫。HDFS分布式文件系統(tǒng)Hivehive是基于hadoop分布式計算平臺上的提供datawarehouse的sql功能的一套軟件。使得存儲在hadoop里面的海量數(shù)據(jù)的匯總,即席查詢簡單化。hive提供了一套QL的查詢語言,以sql為基礎(chǔ),使用起來很方便。MapReduce實現(xiàn)了MapReduce編程框架PigPig是SQL-like語言,是在MapReduce上構(gòu)建的一種高級查詢語言,把一些運算編譯進(jìn)MapReduce模型的Map和Reduce中,并且用戶可以定義自己的功能。ZooKeeperZookeeper是Google的Chubby一個開源的實現(xiàn)。它是一個針對大型分布式系統(tǒng)的可靠協(xié)調(diào)系統(tǒng),提供的功能包括:配置維護(hù)、名字服務(wù)、分布式同步、組服務(wù)等。ZooKeeper的目標(biāo)就是封裝好復(fù)雜易出錯的關(guān)鍵服務(wù),將簡單易用的接口和性能高效、功能穩(wěn)定的系統(tǒng)提供給用戶。HBase簡介HBase是一個分布式的、多版本的、面向列的開源數(shù)據(jù)庫利用HadoopHDFS作為其文件存儲系統(tǒng),提供高可靠性、高性能、列存儲、可伸縮、實時讀寫的數(shù)據(jù)庫系統(tǒng)。利用HadoopMapReduce來處理HBase中的海量數(shù)據(jù)利用Zookeeper作為協(xié)同服務(wù)。HBase簡介

HBase中表的特點大:一個表可以有上億行,上百萬列(列多時,插入變慢)面向列:面向列(族)的存儲和權(quán)限控制,列(族)獨立檢索。稀疏:對于為空(null)的列,并不占用存儲空間,因此,表可以設(shè)計的非常稀疏。每個cell中的數(shù)據(jù)可以有多個版本,默認(rèn)情況下版本號自動分配,是單元格插入時的時間戳;HBase中的數(shù)據(jù)都是字符串,沒有類型;HBase特點強一致性同一行數(shù)據(jù)的讀寫只在同一臺RegionServer上進(jìn)行水平伸縮Region的自動分裂以及Master的balance;只用增加Datanode機(jī)器即可增加容量;只用增加RegionServer機(jī)器即可增加讀寫吞吐量HBase特點行事務(wù)同一行的列的寫入是原子的;ColumnOriented+三維有序SortedMap(RowKey, List(SortedMap(Column, List(Value,Timestamp)) ))rowKey(ASC)+columnLabel(ASC)+Version(DESC)-->valueHBase特點支持有限查詢方式和一級索引僅支持單行事務(wù)僅支持三種查詢方式(singlerowkey、rangerowkey、scanallrowsoftable)【可通過hive等實現(xiàn)多表關(guān)聯(lián)查詢】僅基于rowkey的索引高性能隨機(jī)寫WAL(WriteAheadLog)HBase特點和Hadoop無縫集成Hadoop分析后的結(jié)果可直接寫入HBase;存放在HBase的數(shù)據(jù)可直接通過Hadoop來進(jìn)行分析。HBase與RDBMS對比HBaseRDBMS數(shù)據(jù)類型只有字符串豐富的數(shù)據(jù)類型數(shù)據(jù)操作簡單的增刪改查各種各樣的函數(shù),表連接存儲模式基于列存儲基于表格結(jié)構(gòu)和行存儲數(shù)據(jù)保護(hù)更新后舊版本仍然會保留替換可伸縮性輕易的進(jìn)行增加節(jié)點,兼容性高需要中間層,犧牲功能目錄HBase簡介HBase體系結(jié)構(gòu)HBase數(shù)據(jù)模型HBase提供的接口HBase優(yōu)化HBase用途HBase體系結(jié)構(gòu)HBase體系結(jié)構(gòu)Client

包含訪問HBase的接口并維護(hù)cache來加快對HBase的訪問Zookeeper

保證任何時候,集群中只有一個master存貯所有Region的尋址入口。實時監(jiān)控Regionserver的上線和下線信息。并實時通知給Master存儲HBase的schema和table元數(shù)據(jù)Master

為Regionserver分配region負(fù)責(zé)Regionserver的負(fù)載均衡發(fā)現(xiàn)失效的Regionserver并重新分配其上的region管理用戶對table的增刪改查操作RegionServerRegionserver維護(hù)region,處理對這些region的IO請求Regionserver負(fù)責(zé)切分在運行過程中變得過大的region-ROOT-與.META.表-ROOT-表包含.META.表所在的區(qū)域列表,該表只會有一個HRegion;Zookeeper中記錄了-ROOT-表的location.META.表包含所有的用戶空間區(qū)域列表,以及RegionServer的服務(wù)器地址;Region定位16.META.表的一行在內(nèi)存中大約占用1KB。并且每個region限制為128MB。那么此三層結(jié)構(gòu)可以保存的region數(shù)目為:(128MB/1KB)*(128MB/1KB)==2(34)個region目錄HBase簡介HBase體系結(jié)構(gòu)HBase數(shù)據(jù)模型HBase提供的接口HBase優(yōu)化HBase用途邏輯視圖、物理視圖18HBase以表的形式存儲數(shù)據(jù)。表由行和列組成。列劃分為若干個列族(rowfamily)RowKeyTimeStampCF"contents:"CF"anchor:"CF"mime:"""“"“"""t9“fashion.360buy"t8“tuan.360buy"t6"<html>...""text/html"t5"<html>..."t3"<html>..."RowKeyTimeStampColumn“contents:"t6"<html>..."t5"<html>..."t3"<html>..."邏輯視圖物理視圖RowKeyTimeStampColumn"anchor:"t9"anchor:"“fashion.360buy"t8"anchor:"“tuan.360buy"RowKeyTimeStampColumn"mime:"t6"text/html"HBase每個列族存儲為一個StoreHBase數(shù)據(jù)表中一些關(guān)鍵概念Rowkey鍵ColumnFamily列族Cellqualifier列族修飾符(列)Timestamp時間戳Region區(qū)域

鍵Rowkey表中行的鍵是字節(jié)數(shù)組(最大長度是64KB)任何字符串都可以作為鍵;表中的行根據(jù)行的鍵值進(jìn)行排序,數(shù)據(jù)按照Rowkey的字節(jié)序(byteorder)排序存儲;字典序?qū)nt排序的結(jié)果是1,10,100,11,12,13,14,15,16,17,18,19,2,20,21,…,9,91,92,93,94,95,96,97,98,99。要保持整形的自然序,行鍵必須用0作左填充所有對表的訪問都要通過鍵通過單個rowkey訪問通過rowkey的range全表掃描列族ColumnFamilyHBase表中的每個列都?xì)w屬于某個列族,列族必須作為表模式(schema)定義的一部分預(yù)先給出。如create‘test’,‘course’;列名以列族作為前綴,每個“列族”都可以有多個列成員(column);如course:math,course:english,新的列族成員可以隨后按需、動態(tài)加入;權(quán)限控制、存儲以及調(diào)優(yōu)都是在列族層面進(jìn)行的;同一列族成員最好有相同的訪問模式和大小特征;HBase把同一列族里面的數(shù)據(jù)存儲在同一目錄下,由幾個文件保存。單元格修飾符Cellqualifier通過列族:單元格修飾符,可以具體到某個列;可以把單元格修飾符認(rèn)為是實際的列名;在列族存在,客戶端隨時可以把列添加到列族;HTabletable=newHTable(conf,tableName);Getget=newGet(rowKey.getBytes());Resultrs=table.get(get);for(KeyValuekv:rs.raw()){System.out.print(newString(kv.getRow())+"");System.out.print(newString(kv.getFamily())+":");System.out.print(newString(kv.getQualifier())+"");System.out.print(kv.getTimestamp()+"");System.out.println(newString(kv.getValue()));}時間戳Timestamp在HBase每個cell存儲單元對同一份數(shù)據(jù)有多個版本,根據(jù)唯一的時間戳來區(qū)分每個版本之間的差異,不同版本的數(shù)據(jù)按照時間倒序排序,最新的數(shù)據(jù)版本排在最前面。時間戳的類型是

64位整型。時間戳可以由HBase(在數(shù)據(jù)寫入時自動)賦值,此時時間戳是精確到毫秒的當(dāng)前系統(tǒng)時間。時間戳也可以由客戶顯式賦值,如果應(yīng)用程序要避免數(shù)據(jù)版本沖突,就必須自己生成具有唯一性的時間戳。區(qū)域RegionHBase自動把表水平劃分成多個區(qū)域(region),每個region會保存一個表里面某段連續(xù)的數(shù)據(jù);每個表一開始只有一個region,隨著數(shù)據(jù)不斷插入表,region不斷增大,當(dāng)增大到一個閥值的時候,region就會等分會兩個新的region;當(dāng)table中的行不斷增多,就會有越來越多的region。這樣一張完整的表被保存在多個Region上。Cell單元格由行和列的坐標(biāo)交叉決定;單元格是有版本的;單元格的內(nèi)容是未解析的字節(jié)數(shù)組;由{rowkey,column(=<family>+<label>),version}

唯一確定的單元。cell中的數(shù)據(jù)是沒有類型的,全部是字節(jié)碼形式存貯。鎖HBase的寫操作是鎖行的,每一行都是一個原子元素,無論對行進(jìn)行訪問的事務(wù)設(shè)計多少列,對行的更新都是原子的。都可以加鎖。這使得加鎖模型簡單化。HBase中數(shù)據(jù)表的物理存儲方式物理存儲281、Table中的所有行都按照rowkey的字典序排列。2、Table在行的方向上分割為多個HRegion。物理存儲293、Region按大小分割的,每個表一開始只有一個region,隨著數(shù)據(jù)不斷插入表,region不斷增大,當(dāng)增大到一個閥值的時候,HRegion就會等分會兩個新的HRegion。當(dāng)able中的行不斷增多,就會有越來越多的HRegion。物理存儲304、HRegion是HBase中分布式存儲和負(fù)載均衡的最小單元。最小單元就表示不同的HRegion可以分布在不同的HRegionserver上。但一個HRegion是不會拆分到多個server上的。物理存儲315、HRegion雖然是分布式存儲的最小單元,但并不是存儲的最小單元。事實上,HRegion由一個或者多個Store組成,每個store保存一個columnsfamily。每個Strore又由一個memStore和0至多個StoreFile組成。如圖:StoreFile以HFile格式保存在HDFS上。物理存儲32HFile的格式為:物理存儲HFile分為六個部分:DataBlock段:保存表中的數(shù)據(jù),這部分可以被壓縮

MetaBlock段(可選的):保存用戶自定義的kv對,可以被壓縮。

FileInfo段:HFile的元信息,不被壓縮,用戶也可以在這一部分添加自己的元信息。

DataBlockIndex段:DataBlock的索引。每條索引的key是被索引的 block的第一條記錄的key。

MetaBlockIndex段(可選的):MetaBlock的索引。Trailer段:這一段是定長的。保存了每一段的偏移量,讀取一個HFile時,會首先讀取Trailer,Trailer保存了每個段的起始位置(段的MagicNumber用來做安全check),然后,DataBlockIndex會被讀取到內(nèi)存中,這樣,當(dāng)檢索某個key時,不需要掃描整個HFile,而只需從內(nèi)存中找到key所在的block,通過一次磁盤io將整個block讀取到內(nèi)存中,再找到需要的keyDataBlockIndex采用LRU機(jī)制淘汰。HFile的DataBlock,MetaBlock通常采用壓縮方式存儲,壓縮之后可以大大減少網(wǎng)絡(luò)IO和磁盤IO,隨之而來的開銷當(dāng)然是需要花費cpu進(jìn)行壓縮和解壓縮。目標(biāo)Hfile的壓縮支持兩種方式:Gzip,Lzo。物理存儲34HLog(WALlog) HLog文件就是一個普通的HadoopSequenceFile,SequenceFile的Key是HLogKey對象,HLogKey中記錄了寫入數(shù)據(jù)的歸屬信息,除了table和region名字外,同時還包括sequencenumber和timestamp,timestamp是”寫入時間”,sequencenumber的起始值為0,或者是最近一次存入文件系統(tǒng)中sequencenumber。HLogSequeceFile的Value是HBase的KeyValue對象,即對應(yīng)HFile中的KeyValue,可參見上文描述。目錄HBase簡介HBase體系結(jié)構(gòu)HBase數(shù)據(jù)模型HBase提供的接口HBase優(yōu)化HBase用途HBase交互接口NativeJavaAPI,最常規(guī)和高效的訪問方式,適合HadoopMapReduceJob并行批處理HBase表數(shù)據(jù)HBaseShell,HBase的命令行工具,最簡單的接口,適合HBase管理使用ThriftGateway,利用Thrift序列化技術(shù),支持C++,PHP,Python等多種語言,適合其他異構(gòu)系統(tǒng)在線訪問HBase表數(shù)據(jù)RESTGateway,支持REST風(fēng)格的HttpAPI訪問HBase,解除了語言限制Hive,使用類似SQL語言來訪問HBasePig,可以使用PigLatin流式編程語言來操作HBase中的數(shù)據(jù),和Hive類似,本質(zhì)最終也是編譯成MapReduceJob來處理HBase表數(shù)據(jù),適合做數(shù)據(jù)統(tǒng)計目錄HBase簡介HBase體系結(jié)構(gòu)HBase數(shù)據(jù)模型HBase提供的接口HBase優(yōu)化HBase用途HBase優(yōu)化——配置優(yōu)化1zookeeper.session.timeout(df:180000ms)hbase.regionserver.handler.count(df:10)hbase.hregion.max.filesize(df:256M)hbase.regionserver.global.memstore.upperLimit/lowerLimit(0.4/0.35)hfile.block.cache.size(df:0.2)hbase.hstore.blockingStoreFiles(df:7)hbase.hregion.memstore.block.multiplier(df:2)。。。HBase優(yōu)化——配置優(yōu)化2寫速度關(guān)鍵因素Tableregion分布均衡;單臺regionserver的region數(shù);hbase.regionserver.handler.counthbase.regionserver.global.memstore.upperLimithbase.hregion.memstore.block.multiplierhbase.hstore.blockingStoreFileshbase.hregion.max.filesizeHBase優(yōu)化——配置優(yōu)化3讀速度關(guān)鍵因素單臺RegionServer上的Region數(shù);StoreFile數(shù);bloomfilter;in-memoryflag;blockcache設(shè)置;hfile.block.cache.size;HBase優(yōu)化——客戶端優(yōu)化(nativejava)客戶端寫多HTable并發(fā)寫設(shè)置Htable的AutoFlush(fal

溫馨提示

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

評論

0/150

提交評論