一條數(shù)據(jù)的HBase之旅,簡明HBase入門教程5:創(chuàng)建數(shù)據(jù)表

      網(wǎng)友投稿 831 2025-04-01

      示例數(shù)據(jù)

      給出一份我們?nèi)粘6伎梢越佑|到的數(shù)據(jù)樣例,先簡單給出示例數(shù)據(jù)的字段定義:

      本文力求簡潔,僅給出了最簡單的示例。如下是”虛構(gòu)”的樣例數(shù)據(jù):

      寫數(shù)據(jù)之前:建立連接

      Login

      在啟用了安全特性的前提下,Login階段是為了完成用戶認證(確定用戶的合法身份),這是后續(xù)一切安全訪問控制的基礎(chǔ)。

      當前Hadoop/HBase僅支持基于Kerberos的用戶認證,ZooKeeper除了Kerberos認證,還能支持簡單的用戶名/密碼認證,但都基于靜態(tài)的配置,無法動態(tài)新增用戶。如果要支持其它第三方認證,需要對現(xiàn)有的安全框架做出比較大的改動。

      創(chuàng)建Connection

      Connection可以理解為一個HBase集群連接的抽象,建議使用ConnectionFactory提供的工具方法來創(chuàng)建。因為HBase當前提供了兩種連接模式:同步連接,異步連接,這兩種連接模式下所創(chuàng)建的Connection也是不同的。我們給出ConnectionFactory中關(guān)于獲取這兩種連接的典型方法定義:

      CompletableFuture?createAsyncConnection(Configuration?conf, ?????????????????User?user); Connection?createConnection(Configuration?conf,?ExecutorService?pool,?User?user) ??????throws?IOException;

      Connection中主要維護著兩類共享的資源:

      線程池

      Socket連接

      這些資源都是在真正使用的時候才會被創(chuàng)建,因此,此時的連接還只是一個”虛擬連接”。

      寫數(shù)據(jù)之前:創(chuàng)建數(shù)據(jù)表

      DDL操作的抽象接口 – Admin

      Admin定義了常規(guī)的DDL接口,列舉幾個典型的接口:

      void?createNamespace(final?NamespaceDescriptor?descriptor)?throws?IOException; void?createTable(final?HTableDescriptor?desc,?byte[][]?splitKeys)?throws?IOException; TableName[]?listTableNames()?throws?IOException;

      預(yù)設(shè)合理的數(shù)據(jù)分片 – Region

      分片數(shù)量會給讀寫吞吐量帶來直接的影響,因此,建表時通常建議由用戶主動指定劃分Region分割點,來設(shè)定Region的數(shù)量。

      HBase中數(shù)據(jù)是按照RowKey的字典順序排列的,為了能夠劃分出合理的Region分割點,需要依據(jù)如下幾點信息:

      Key的組成結(jié)構(gòu)

      Key的數(shù)據(jù)分布預(yù)估

      如果不能基于Key的組成結(jié)構(gòu)來預(yù)估數(shù)據(jù)分布的話,可能會導(dǎo)致數(shù)據(jù)在Region間的分布不均勻

      讀寫并發(fā)度需求

      依據(jù)讀寫并發(fā)度需求,設(shè)置合理的Region數(shù)量

      為表定義合理的Schema

      既然HBase號稱”schema-less”的數(shù)據(jù)存儲系統(tǒng),那何來的是schema? 的確,在數(shù)據(jù)庫范式的支持上,HBase非常弱,這里的Schema,主要指如下一些信息的設(shè)置:

      NameSpace設(shè)置

      Column Family的數(shù)量

      每一個Column Family中所關(guān)聯(lián)的一些關(guān)鍵配置:

      Compression

      HBase當前可以支持Snappy,GZ,LZO,LZ4,Bzip2以及ZSTD壓縮算法

      DataBlock Encoding

      HBase針對自身的特殊數(shù)據(jù)模型所做的一種壓縮編碼

      BloomFilter

      可用來協(xié)助快速判斷一條記錄是否存在

      TTL

      指定數(shù)據(jù)的過期時間

      StoragePolicy

      指定Column Family的存儲策略,可選配置有:

      “ALL_SSD”,”O(jiān)NE_SSD”,”HOT”,”WARM”,”COLD”,”LAZY_PERSIST”

      HBase中并不需要預(yù)先設(shè)置Column定義信息,這就是HBase schema-less設(shè)計的核心。

      Client發(fā)送建表請求到Master

      建表的請求是通過RPC的方式由Client發(fā)送到Master:

      RPC接口基于Protocol Buffer定義

      建表相關(guān)的描述參數(shù),也由Protocol Buffer進行定義及序列化

      Client端側(cè)調(diào)用了Master服務(wù)的什么接口,參數(shù)是什么,這些信息都被通過RPC通信傳輸?shù)組aster側(cè),Master再依據(jù)這些接口\參數(shù)描述信息決定要執(zhí)行的操作。2.0版本中,HBase目前已經(jīng)支持基于Netty的異步RPC框架。

      關(guān)于HBase RPC框架

      早期的HBase RPC框架,完全借鑒了Hadoop中的實現(xiàn),那時,Netty項目尚不盛行。

      Master側(cè)接收到Client側(cè)的建表請求以后,一些主要操作包括:

      生成每一個Region的描述信息對象HRegionInfo,這些描述信息包括:Region ID, Region名稱,Key范圍,表名稱等信息

      生成每一個Region在HDFS中的文件目錄

      將HRegionInfo信息寫入到記錄元數(shù)據(jù)的hbase:meta表中。

      說明

      meta表位于名為"hbase"的namespace中,因此,它的全稱為"hbase:meta"。

      但在本系列文章范疇內(nèi),常將其縮寫為"meta"。

      整個過程中,新表的狀態(tài)也是記錄在hbase:meta表中的,而不用再存儲在ZooKeeper中。

      如果建表執(zhí)行了一半,Master進程掛掉了,如何處理?這里是由HBase自身提供的一個名為Procedure(V2)的框架來保障操作的事務(wù)性的,備Master接管服務(wù)以后,將會繼續(xù)完成整個建表操作。

      一個被創(chuàng)建成功的表,還可以被執(zhí)行如下操作:

      Disable?將所有的Region下線,該表暫停讀寫服務(wù)

      Enable?將一個Disable過的表重新Enable,也就是上線所有的Region來正常提供讀寫服務(wù)

      Alter?更改表或列族的描述信息

      Master分配Regions到各個RegionServers

      新創(chuàng)建的所有的Regions,通過AssignmentManager將這些Region按照輪詢(Round-Robin)的方式分配到每一個RegionServer中,具體的分配計劃是由LoadBalancer來提供的。

      AssignmentManager負責所有Regions的分配/遷移操作,Master中有一個定時運行的線程,來檢查集群中的Regions在各個RegionServer之間的負載是否是均衡的,如果不均衡,則通過LoadBalancer生成相應(yīng)的Region遷移計劃,HBase中支持多種負載均衡算法,有最簡單的僅考慮各RegionServer上的Regions數(shù)目的負載均衡算法,有基于遷移代價的負載均衡算法,也有數(shù)據(jù)本地化率優(yōu)先的負載均衡算法,因為這一部分已經(jīng)提供了插件化機制,用戶也可以自定義負載均衡算法。

      一條數(shù)據(jù)的HBase之旅,簡明HBase入門教程5:創(chuàng)建數(shù)據(jù)表

      hbase

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:關(guān)于apaas ipaas的信息
      下一篇:excel打不開怎么辦?修復(fù)excel表格的兩種方法(表格打不開怎么修復(fù)其它可以打開)
      相關(guān)文章
      亚洲综合校园春色| 亚洲日本在线观看| 亚洲成aⅴ人片在线观| 久久久久亚洲av无码专区蜜芽 | 亚洲精品国产成人99久久| 亚洲国产精品无码久久久不卡| 久久亚洲色一区二区三区| 亚洲真人日本在线| 国产AⅤ无码专区亚洲AV| 精品亚洲一区二区三区在线播放| 亚洲精品无码永久在线观看| 亚洲精品无码成人片在线观看| 亚洲日韩精品无码专区网站| AV在线亚洲男人的天堂| 一本色道久久综合亚洲精品高清 | 亚洲色欲www综合网| 亚洲精品中文字幕无码AV| 亚洲欧洲日本国产| 亚洲av乱码一区二区三区| 中文有码亚洲制服av片| 亚洲中文无码mv| 亚洲Av无码国产一区二区 | 亚洲av无码专区在线观看下载| 亚洲国产精品无码观看久久| 亚洲狠狠色丁香婷婷综合| 色欲aⅴ亚洲情无码AV蜜桃| 国产午夜亚洲精品不卡免下载| 亚洲成a人无码av波多野按摩| 亚洲日韩国产一区二区三区| 亚洲午夜福利在线观看| 亚洲精品人成在线观看| 亚洲激情校园春色| 亚洲一卡2卡3卡4卡5卡6卡| 国产亚洲精品第一综合| 一本久久a久久精品亚洲| 久久精品国产亚洲av麻豆| 亚洲精品国产手机| 亚洲色精品三区二区一区| 国产产在线精品亚洲AAVV| 中文字幕人成人乱码亚洲电影| 国产亚洲精久久久久久无码|