日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hbase 的shell操作中相关属性说明

發布時間:2023/12/15 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hbase 的shell操作中相关属性说明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Hbase 是一個分布式的、面向列的開源數據庫,其實現是建立在google 的bigTable 理論之上,并基于hadoop HDFS文件系統。? ? ?Hbase不同于一般的關系型數據庫(RDBMS)。是一種適用于非結構化數據存儲的數據庫,且Hbase是基于列的數據庫。 ? ? ?下面的內容基于我們已經安裝好hadoop、hbase。 ? ? 一、hbase shell 介紹 ? ? ?hbase shell是用戶和hbase 交互的接口之一,當然還可以通過其它方式比如java api等 ? ? ?下表列出了 hbase 基本命令操作: ? ? ??
操作 命令表達式 注意
創建表 create?'table_name,?'family1','family2','familyN'
添加記錄?????? put?'table_name',?'rowkey',?'family:column',?'value'
查看記錄 get?'table_name',?'rowkey'??? 查詢單條記錄,也是hbase?最常用的命令
查看表中的記錄總數 count??'table_name' 這個命令并不快,且目前沒有找到更快的方式統計行數
刪除記錄 delete?'table_name'?,'rowkey','family_name:column'
deleteall?'table_name','rowkey'
第一種方式刪除一條記錄單列的數據
第二種方式刪除整條記錄

刪除一張表 1、disable?'table_name'?
2、drop?'table_name'
查看所有記錄 scan?"table_name"?,{LIMIT=>10} LIMIT=>10?只返回10條記錄,否則將全部展示
? 利用上面基礎命令可以完成基本的hbase 操作,下面幾個shell 命令在后續的hbase 操作中可以起到很到的作用,且主要體現在建表的過程中,看下面幾個create 屬性 1、BLOOMFILTER ?默認是NONE 是否使用布隆過慮 使用何種方式 ? ? ?布隆過濾可以每列族單獨啟用。使用?HColumnDescriptor.setBloomFilterType(NONE | ROW | ROWCOL)?對列族單獨啟用布隆。 Default =?NONE?沒有布隆過濾。對?ROW,行鍵的哈希在每次插入行時將被添加到布隆。對?ROWCOL,行鍵 + 列族 + 列族修飾的哈希將在每次插入行時添加到布隆 ? ?使用方法: create 'table',{BLOOMFILTER =>'ROW'}? ? ?啟用布隆過濾可以節省必須讀磁盤過程,可以有助于改進讀取延遲? 2、VERSIONS 默認是3 這個參數的意思是數據保留三個 版本,如果我們認為我們的數據沒有這么大的必要保留這么多,隨時都在更新,而老版本的數據對我們毫無價值,那將此參數設為1 能節約2/3的空間 ? ? ?使用方法: create 'table',{VERSIONS=>'2'} 3、COMPRESSION 默認值是NONE 即不使用壓縮 ? ? ?這個參數意思是該列族是否采用壓縮,采用什么壓縮算法 ? ? ?使用方法: create 'table',{NAME=>'info',COMPRESSION=>'SNAPPY'}? ? ? ?我建議采用SNAPPY壓縮算法,個壓縮算法的比較網上比較多,我從網上摘抄一個表格作為參考,具體的snappy 的安裝后續會以單獨章節進行描述。 ? ? ?這個表是Google幾年前發布的一組測試數據,實際測試Snappy 和下表所列相差無幾。 ? ??HBase中,在Snappy發布之前(Google 2011年對外發布Snappy),采用的LZO算法,目標是達到盡可能快的壓縮和解壓速度,同時減少對CPU的消耗 ? ??在Snappy發布之后,建議采用Snappy算法(參考《HBase: The Definitive Guide》),具體可以根據實際情況對LZO和Snappy做過更詳細的對比測試后再做選擇。 ? ? ?? ? ?
Algorithm % remaining Encoding Decoding
GZIP 13.4% 21 MB/s 118 MB/s
LZO 20.5% 135 MB/s 410 MB/s
Zippy/Snappy 22.2% 172 MB/s 409 MB/s

??






? ? ?如果建表之初沒有 壓縮,后來想要加入壓縮算法,怎么辦 hbase 有另外的一個命令alter 4、alter? ? ? ?使用方法: ? ? ?如 修改壓縮算法? ? ?? ? ? ??disable 'table' ? ? ??alter 'table',{NAME=>'info',COMPRESSION=>'snappy'}? ? ? ? enable 'table' ? ? ?刪除列族 ? ? ?disable 'table' ? ? ?alter 'table',{NAME=>'info',METHOD=>'delete'} ? ? ?enable 'table' ? ? ?但是這樣修改之后發現表數據還是那么大,并沒有發生多大變化。怎么辦 ? ? ?major_compact 'table' 命令之后 才會做實際的操作。
5、TTL 默認是 2147483647 即:Integer.MAX_VALUE 值 大概是68年吧 ? ? ?這個參數是說明該列族數據的 存活時間 也就是數據的生命周期 單位是s 默寫文章寫的單位是ms 是錯誤的。 ? ? ?這個參數可以根據 具體的需求 對數據設定 存活時間,超過存過時間的數據將在表中不在顯示,待下次major compact的時候再徹底刪除數據 ? ? ?為什么在下次major compact的時候刪除數據,后面會具體介紹到。 ? ? ?注意的是TTL設定之后?MIN_VERSIONS=>'0' 這樣設置之后,TTL時間戳過期后,將全部徹底刪除該family 下所有的數據,如果MIN_VERSIONS 不等于0 那將保留最新 ? ? ?的MIN_VERSIONS個版本的數據,其它的全部刪除,比如MIN_VERSIONS=>'1' 屆時將保留一個最新版本的數據,其它版本的數據將不再保存。 6、describe 'table' 這個命令查看了create table 的各項參數 或者是默認值。 7、disable_all 'toplist.*' disable_all 支持正則表達式,并列出當前匹配的表的如下: ? ? ??toplist_a_total_1001 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ??toplist_a_total_1002????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
? ? ??toplist_a_total_1008????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
? ? ??toplist_a_total_1009????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
? ? ??toplist_a_total_1019????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
? ? ??toplist_a_total_1035
? ? ?... ? ? ?Disable the above 25 tables (y/n)? 并給出確認提示 8、drop_all 這個命令和disable_all的使用方式是一樣的 9、hbase 表預分區 也就是手動分區
? ? ?默認情況下,在創建HBase表的時候會自動創建一個region分區,當導入數據的時候,所有的HBase客戶端都向這一個region寫數據,直到這個region足夠大了才進行切分。一種可以加快批量寫入速度的方法是通過預先創建一些空的regions,這樣當數據寫入HBase時,會按照region分區情況,在集群內做數據的負載均衡。 ? ? ?使用方法:create 't1', 'f1', {NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'} ? ? ?也可以使用 api的方式? ? ? ?hbase org.apache.hadoop.hbase.util.RegionSplitter test_table HexStringSplit -c 10 -f info ? ? ? ?參數很容易看懂?test_table? 是表名?HexStringSplit?是split 方式 -c 是分10個region -f 是family ? ? ?這樣就可以將表預先分為10個區,減少數據達到storefile 大小的時候自動分區的時間消耗,并且還有以一個優勢,就是合理設計rowkey 能讓各個region 的并發請求 平均分配(趨于均勻) 使IO 效率達到最高,但是預分區需要將filesize 設置一個較大的值,設置哪個參數呢?hbase.hregion.max.filesize 這個值默認是10G 也就是說單個region 默認大小是10G ? ? ?這個值發生從0.90 到0.92到0.94.3 從 256M--1G--10G 這個根據自己的需求將這個值修改。 ? ? ?但是如果MapReduce Input類型為TableInputFormat 使用hbase作為輸入的時候,就要注意了,每個region一個map,如果數據小于10G 那只會啟用一個map 造成很大的資源浪費,這時候可以考慮適當調小 該參數的值,或者采用預分配region 的方式,并將hbase.hregion.max.filesize 設為一個相對比較大的值,不容易達到的值比如1000G,檢測如果達到這個值,再手動分配region。
?前面說到了 compact 為什么設置了TTL 超過存活時間的數據 就消失了,是如何消失的呢?是刪除了嗎?通過哪些參數刪除的。 后面將要說到 hbase compact? ? 原文出自:http://blog.csdn.net/zhouleilei/article/details/12654329 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的hbase 的shell操作中相关属性说明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。