主頁 >  其他 > Hbase shell命令大全與表結構詳解案例展示

Hbase shell命令大全與表結構詳解案例展示

2021-09-19 09:32:23 其他

1.hbase Shell概述

Apache HBase Shell 是(J)Ruby的 IRB,其中添加了一些 HBase 特定命令,您可以在 IRB 中執行的任何操作,您都應該可以在 HBase Shell 中執行,

0. 首先創建hbase集群的操作用戶 hbase_test

1.首先root用戶在本地客戶端添加hbase_test用戶
[root@10-90-50-77-jhdxyjd ~]# useradd hbase_test

2.切換hbase集群的超級用戶,創建/user/hbase_test目錄,修改授權
[hdfs@10-90-50-77-jhdxyjd ~]# hdfs dfs -mkdir /user/hbase_test
[hdfs@10-90-50-77-jhdxyjd ~]# hdfs dfs -chown hbase_test:hbase_test /user/hbase_test

3.注意這里hbase沒有開啟授權管理,后面詳細講解,

1.開啟hbase shell很簡單,在裝了Hbase的節點直接執行./hbase shell即可進入

Hbase官網Shell命令查看:Apache HBase ? Reference Guide

2.Hbase shell中所有命令分類匯總

如上,hbase shell中help可以查看所有hbase命令,分類匯總展示,標紅的要重點關注,如果不會用help 一下命令,

類別命令名介紹描述語法

1.通用型別命令

(主要用來查看基本的hbase操作和集群基本資訊)

status回傳hbase集群的狀態資訊hbase(main):053:0> status
1 active master, 1 backup masters, 7 servers, 0 dead, 2.1429 average load
Took 0.0082 seconds
processlist查看regionser上的task串列,可以查看多種明細

hbase(main):054:0> processlist
0 tasks as of: 2021-09-17 17:33:33
No general tasks currently running.
Took 0.5326 seconds

hbase> processlist
hbase> processlist 'all'
hbase> processlist 'general'
hbase> processlist 'handler'
hbase> processlist 'rpc'
hbase> processlist 'operation'
hbase> processlist 'all','host187.example.com'
hbase> processlist 'all','host187.example.com,16020'
hbase> processlist 'all','host187.example.com,16020,1289493121758'

table_help查看如何操作表table_help 會告訴你操作表的crud命令語法和演示

比如:
hbase> t = create 't', 'cf'

Or, if you have already created the table, you can get a reference to it:

hbase> t = get_table 't'

You can do things like call 'put' on the table:

version回傳hbase版本資訊hbase(main):068:0> version
2.1.0-cdh6.1.0, rUnknown, Thu Dec 6 16:59:59 PST 2018
Took 0.0003 seconds
whoami查看當前hbase操作用戶hbase(main):069:0> whoami
hbase_test (auth:SIMPLE)
groups: hbase_test
Took 0.0137 seconds
2.namespace的所有操作命令

create_namespace

創建namespace,類似資料庫create_namespace 'myns_test'

describe_namespace

查看namespace的資訊hbase(main):070:0> describe_namespace 'myns_test'
DESCRIPTION
{NAME => 'myns_test', PROPERTY_NAME => 'PROPERTY_VALUE'}
=> 1

drop_namespace

洗掉namespace,前提必須先洗掉其中的表,否則例外drop_namespace 'myns_test'

alter_namespace

修改namespace其中屬性 alter_namespace 'myns_test',{METHOD => 'set', 'PROPERTY_NAME' => 'PROPERTY_VALUE'}
list_namespace查看hbase中有個多少個namespacehbase(main):071:0> list_namespace
NAMESPACE
default
hbase
myns_test

list_namespace

_tables

查看某個namespace中的所有表hbase(main):073:0> list_namespace_tables 'myns_test'
TABLE
t1
tb2
2 row(s)
Took 0.0043 seconds
=> ["t1", "tb2"]

3.表的ddl陳述句

重點掌握表的操作

alter,

alter修改表模式,表列族和表所有的屬性,類似alter tablealter 't1', METHOD => 'table_conf_unset', NAME => 'hbase.hregion.majorcompaction'

create

drop

drop_all,

創建表

洗掉表

洗掉所有符合規則的表,正則匹配

具體參考下面詳細介紹

create 't1', 'f1', 'f2', 'f3'

drop 't1'

hbase> drop_all 't.*'
hbase> drop_all 'ns:t.*'
hbase> drop_all 'ns:.*

list

list列舉出hbase中所有的表;也支持模糊匹配檢索列舉 hbase> list
hbase> list 'abc.*'
hbase> list 'ns:abc.*'
hbase> list 'ns:.*'
exists查看表是否存在,回傳布林值hbase(main):076:0> exists 't1'
Table t1 does exist
Took 0.0279 seconds
=> true
hbase(main):077:0> exists 'ns1:t3'
Table ns1:t3 does not exist
=> false
describe/desc都是查看表結構詳細資訊desc 'myns:t1'

disable,

disable_all,

enable,

enable_all,

設定表可用和不可用狀態,同樣disable_all是按正則匹配批量設定表的disable狀態

hbase> disable 't1'
hbase> disable 'ns1:t1'

hbase> disable_all 't.*'
hbase> disable_all 'ns:t.*'
hbase> disable_all 'ns:.*'

is_disabled,

is_enabled,

查看表是否可用,或者不可用,回傳布林值 hbase> is_disabled 't1'
hbase> is_disabled 'ns1:t1'
get_table,獲取表,將其作為object物件回傳,然后基于物件操作


hbase> t1 = get_table 't1'
hbase> t1 = get_table 'ns1:t1'

hbase>t1.help

list_regions

一般查一個表的所有region,可以通過web

界面查看

以陣列的形式列出特定表的所有region,

該命令顯示服務器名稱、rs名稱、起始鍵、結束鍵、區域大小(以MB為單位)、請求數

和位置,

hbase> list_regions 'table_name'
hbase> list_regions 'table_name', 'server_name'
hbase> list_regions 'table_name', {SERVER_NAME => 'server_name', LOCALITY_THRESHOLD => 0.8}
hbase> list_regions 'table_name', {SERVER_NAME => 'server_name', LOCALITY_THRESHOLD => 0.8}, ['SERVER_NAME']

locate_region,

定位一個表的key所在regionhbase> locate_region 'tableName', 'key0'
show_filters查看hbase集群中所有的過濾器,過濾器用于get和scan命令中作為篩選資料的條件,型別關系型資料庫中的where的作用,后面詳解

hbase(main):096:0> show_filtersDependentColumnFilter
KeyOnlyFilte

............

alter_status獲取alter命令的狀態hbase> alter_status 't1'
hbase> alter_status 'ns1:t1'
hbase(main):098:0> alter_status 't1'
1/1 regions updated.
Done.
Took 1.0209 seconds

alter_async,

clone_table_schema

克隆表模式類似likehbase> clone_table_schema 'table_name', 'new_table_name'
hbase> clone_table_schema 'table_name', 'new_table_name', false 注意,帶false引數表示不保存表的拆分split模式,
4.表的dml陳述句count,統計表中行數,類似hive、資料庫里count語法,支持各種復雜聚合統計 hbase> count 'ns1:t1'
hbase> count 't1'
hbase> count 't1', INTERVAL => 100000
hbase> count 't1', CACHE => 1000
hbase> count 't1', INTERVAL => 10, CACHE => 1000
hbase> count 't1', FILTER => "
(QualifierFilter (>=, 'binary:xyz')) AND (TimestampsFilter ( 123, 456))"
hbase> count 't1', COLUMNS => ['c1', 'c2'], STARTROW => 'abc', STOPROW => 'xyz'

put,

get,

append,

put往指定的表,行,列族插入一個cells值,

get是獲取指定指定行的值

append是給指定表,行,列族上cells的value追加值.

hbase(main):119:0> put 'tt1', 'rowkey1','f1:name','tom'
hbase(main):120:0> get 'tt1','rowkey1'
COLUMN CELL
f1:name timestamp=1631876854951, value=tom
1 row(s)
hbase(main):121:0> append 'tt1', 'rowkey1','f1:name','tom2'
CURRENT VALUE = tomtom2
hbase(main):122:0> get 'tt1','rowkey1'
COLUMN CELL
f1:name timestamp=1631876898153, value=tomtom2

delete,

deleteall,

delete洗掉一個指定表,指定列族,指定列的一個cell值,

而deleteall指定洗掉表,列族或者時間戳的所有celles值,


hbase> delete 'ns1:t1', 'r1', 'c1', ts1
hbase> delete 't1', 'r1', 'c1', ts1
hbase> delete 't1', 'r1', 'c1', ts1, {VISIBILITY=>'PRIVATE|SECRET'}


hbase> deleteall 'ns1:t1', 'r1'
hbase> deleteall 't1', 'r1'
hbase> deleteall 't1', 'r1', 'c1'
hbase> deleteall 't1', 'r1', 'c1', ts1
hbase> deleteall 't1', 'r1', 'c1', ts1, {VISIBILITY=>'PRIVATE|SECRET'}


scan,重點,后詳

掃描一張表,通過各種屬性方式設定掃描規則,后面詳解 hbase> scan 'hbase:meta'
hbase> scan 'hbase:meta', {COLUMNS => 'info:regioninfo'}
hbase> scan 'ns1:t1', {COLUMNS => ['c1', 'c2'], LIMIT => 10, STARTROW => 'xyz'}
hbase> scan 't1', {COLUMNS => ['c1', 'c2'], LIMIT => 10, STARTROW => 'xyz'}
hbase> scan 't1', {COLUMNS => 'c1', TIMERANGE => [1303668804000, 1303668904000]}
hbase> scan 't1', {REVERSED => true}
hbase> scan 't1', {ALL_METRICS => true}

truncate,

truncate_preserve

清空表,保留表結構,實際本質是先disabled表,洗掉表,再重建表,

get_counter,

get_counter獲取計數器# 點擊量:日、周、月
create 'counters', 'daily', 'weekly', 'monthly'
incr 'counters', '20110101', 'daily:hits', 1
incr 'counters', '20110101', 'daily:hits', 1
get_counter 'counters', '20110101', 'daily:hits'
incr,注意:incr 可以對不存的行鍵操作,如果行鍵已經存在會報錯,如果使用put修改了incr的值再使用incr也會報錯

incr# 語法 incr '表名', '行鍵', '列族:列名', 步長值

hbase(main):171:0> incr 'ns1:t1','r3','cf1:name2',10
COUNTER VALUE = 20


hbase(main):172:0> incr 'ns1:t1','r3','cf1:name2',10
COUNTER VALUE = 30


hbase(main):173:0> get 'ns1:t1','r3'
COLUMN CELL
cf1:name2 timestamp=1631878212258, value=\x00\x00\x00\x00\x00\x00\x00\x1E

get_splits,獲取表的分隔符hbase(main):176:0> create 'ns1:t3', 'f1', SPLITS => ['10', '20', '30', '40']
Created table ns1:t3
=> Hbase::Table - ns1:t3
hbase(main):177:0> get_splits 'ns1:t3'
Total number of splits = 5
10
20
30
40

Hbase shell其他的命令,后續講解,多是運維命令,一般開發使用的少,

hbase集群工具類命令tools重要,運維常用,后面詳細展開講述

assign,balance_switch,balancer, balancer_enabled, catalogjanitor_enabled, catalogjanitor_run, catalogjanitor_switch, cleaner_chore_enabled, cleaner_chore_run, cleaner_chore_switch, clear_block_cache, clear_compaction_queues, clear_deadservers,

close_region, compact,compact_rs,compaction_state, flush, is_in_maintenance_mode, list_deadservers,major_compact,merge_region,

move, normalize, normalizer_enabled, normalizer_switch, split, splitormerge_enabled, splitormerge_switch,stop_master,stop_regionserver,trace, unassign,wal_roll, zk_dump

安全權限管理類命令

grant,list_security_capabilities,revoke,user_permission

security權限管理,運維會用,

程式類procedures

list_locks,

list_procedures

visibility labels

add_labels,clear_auths,get_auths,list_labels, set_auths,set_visibility

rsgroup相關操作命令

add_rsgroup,balance_rsgroup,get_rsgroup,get_server_rsgroup, get_table_rsgroup,

list_rsgroups, move_namespaces_rsgroup, move_servers_namespaces_rsgroup, move_servers_rsgroup, move_servers_tables_rsgroup, move_tables_rsgroup, remove_rsgroup, remove_servers_rsgroup

空間配額類命令quotas

一般生產對租戶對做配額管理,防止單個用戶占用大量的資源,運維命令list_quota_snapshots, list_quota_table_sizes,

list_quotas, list_snapshot_sizes, set_quota

組態檔更新命令

update_all_config,update_config

運維命令
snapshots

clone_snapshot, delete_all_snapshot, delete_snapshot, delete_table_snapshots, list_snapshots,

list_table_snapshots, restore_snapshot, snapshot

replication

add_peer, append_peer_namespaces, append_peer_tableCFs, disable_peer, disable_table_replication, enable_peer, enable_table_replication, get_peer_config,

list_peer_configs, list_peers, list_replicated_tables,

remove_peer, remove_peer_namespaces, remove_peer_tableCFs, set_peer_bandwidth, set_peer_exclude_namespaces, set_peer_exclude_tableCFs, set_peer_namespaces, set_peer_replicate_all, set_peer_serial, set_peer_tableCFs, show_peer_tableCFs,update_peer_config

3.Hbase Shell命令操作與實體演示

3.0 hbase 神器 help

3.01.直接列舉出出所有hbase shell的命令,分類歸總

hbase(main):019:0> help
HBase Shell, version 2.1.0-cdh6.1.0, rUnknown, Thu Dec  6 16:59:59 PST 2018
Type 'help "COMMAND"', (e.g. 'help "get"' -- the quotes are necessary) for help on a specific command.
Commands are grouped. Type 'help "COMMAND_GROUP"', (e.g. 'help "general"') for help on a command group.
這里是hbase所有命令,并且按類分組了,
COMMAND GROUPS:  
  Group name: general  //通用命令
  Commands: processlist, status, table_help, version, whoami

  .............................

3.0.2查看某個命令的詳細使用

hbase(main):020:0> help 'create'
Creates a table. Pass a table name, and a set of column family
specifications (at least one), and, optionally, table configuration.
Column specification can be a simple string (name), or a dictionary
(dictionaries are described below in main help output), necessarily
including NAME attribute.
Examples:

Create a table with namespace=ns1 and table qualifier=t1
  hbase> create 'ns1:t1', {NAME => 'f1', VERSIONS => 5}

Create a table with namespace=default and table qualifier=t1
  hbase> create 't1', {NAME => 'f1'}, {NAME => 'f2'}, {NAME => 'f3'}
  hbase> # The above in shorthand would be the following:
  hbase> create 't1', 'f1', 'f2', 'f3'
  hbase> create 't1', {NAME => 'f1', VERSIONS => 1, TTL => 2592000, BLOCKCACHE => true}
  hbase> create 't1', {NAME => 'f1', CONFIGURATION => {'hbase.hstore.blockingStoreFiles' => '10'}}
  hbase> create 't1', {NAME => 'f1', IS_MOB => true, MOB_THRESHOLD => 1000000, MOB_COMPACT_PARTITION_POLICY => 'weekly'}

Table configuration options can be put at the end.
Examples:

  hbase> create 'ns1:t1', 'f1', SPLITS => ['10', '20', '30', '40']
  hbase> create 't1', 'f1', SPLITS => ['10', '20', '30', '40']
  hbase> create 't1', 'f1', SPLITS_FILE => 'splits.txt', OWNER => 'johndoe'
  hbase> create 't1', {NAME => 'f1', VERSIONS => 5}, METADATA => { 'mykey' => 'myvalue' }
  hbase> # Optionally pre-split the table into NUMREGIONS, using
  hbase> # SPLITALGO ("HexStringSplit", "UniformSplit" or classname)
  hbase> create 't1', 'f1', {NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'}
  hbase> create 't1', 'f1', {NUMREGIONS => 15, SPLITALGO => 'HexStringSplit', REGION_REPLICATION => 2, CONFIGURATION => {'hbase.hregion.scan.loadColumnFamiliesOnDemand' => 'true'}}
  hbase> create 't1', {NAME => 'f1', DFS_REPLICATION => 1}

You can also keep around a reference to the created table:

  hbase> t1 = create 't1', 'f1'

Which gives you a reference to the table named 't1', on which you can then
call methods.

3.1 namespace概述與創建更新洗掉

namespace命名空間是表的邏輯分組,類似于關系資料庫系統中的資料庫,這種抽象為即將到來的多租戶相關功能奠定了基礎,簡單理解就是hbase中的資料庫,隔離用戶,做如下配額,安全管理等,

  • 配額管理 ( HBASE-8410 ) - 限制命名空間可以消耗的資源量(即區域、表),

  • 命名空間安全管理 ( HBASE-9206 ) - 為租戶提供另一個級別的安全管理,

  • 區域服務器組 ( HBASE-6721 ) - 命名空間/表可以固定到 RegionServers 的子集上,從而保證粗略的隔離級別,

注意:hbase集群在創建時,默認預定義了兩個特殊的命名空間

  • hbase - 系統命名空間,用于包含 HBase 內部表

  • default - 沒有明確指定命名空間的表將自動落入這個命名空間

尖叫總結:實際生產中很少通過hbase shell去操作hbase,更多的是學習測驗,問題排查等等才會使用到hbase shell ,hbase總的來說就是寫資料,然后查詢, 前者是通過API bulkload等形式寫資料,后者通過api呼叫查詢,

3.1.1 namespace的操作

1.創建namespace
hbase(main):008:0> create_namespace 'myns_test'    
2.在指定的namespace中創建一個表                                                                                               
hbase(main):009:0> create 'myns_test:t1','cl1'
Created table myns_test:t1                                                                                               
=> Hbase::Table - myns_test:t1
3.洗掉一個namespace,前提必須要先把其中的表刪完,不然報錯,跟資料庫一樣
hbase(main):010:0> drop_namespace 'myns_test'

ERROR: org.apache.hadoop.hbase.constraint.ConstraintException: Only empty namespaces can be removed. Namespace myns_test has 1 tables
        at org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure.prepareDelete(DeleteNamespaceProcedure.java:217)
        ...............
        at org.apache.hadoop.hbase.procedure2.ProcedureExecutor$WorkerThread.run(ProcedureExecutor.java:2140)

For usage try 'help "drop_namespace"'

Took 0.7591 seconds   
5.修改namespace的屬性                                                                                               
hbase(main):011:0> alter_namespace 'myns_test',{METHOD => 'set', 'PROPERTY_NAME' => 'PROPERTY_VALUE'}
Took 0.5489 seconds                                                                                                  

7.查看所有的namespace,看系統預定義與默認的defalut/hbase namespace,如果創建表不指定namespace,則在默認default里,
hbase(main):014:0> create_namespace 'myns_test1'
Took 0.2504 seconds                                                                                                  
hbase(main):015:0> list_namespace
NAMESPACE                                                                                                            
default                                                                                                              
hbase                                                                                                                
myns_test                                                                                                            
myns_test1                                                                                                           
4 row(s)
hbase(main):016:0> drop_namespace 'myns_test1'  #洗掉一個空的namespace
Took 0.2248 seconds                                                                                                  
hbase(main):017:0> list_namespace
NAMESPACE                                                                                                            
default                                                                                                              
hbase                                                                                                                
myns_test                                                                                                            
3 row(s)
Took 0.0113 seconds 

8.查看namespace的詳細資訊
hbase(main):018:0> describe_namespace 'myns_test'
DESCRIPTION                                                                                                          
{NAME => 'myns_test', PROPERTY_NAME => 'PROPERTY_VALUE'}                                                             
Took 0.0058 seconds                                                                                                  
=> 1

9.列出某個namespace下所有的表
hbase(main):023:0> list_namespace_tables 'myns_test'
TABLE                                                                                                                
t1                                                                                                                   
1 row(s)
Took 0.0237 seconds                                                                                                  
=> ["t1"]

尖叫總結:namespace了解即可,實際生產中用的很少,一般也都是運維同學給創建好,開發更多的是表級別的操作,

3.2hbase 表的CRUD

創建表,必須傳遞兩個值,一個是表名,一個是列族名,其他可選的表的配置可加可不加,其他都是對表(實際列族)的約束,根據實際生產要求添加,比如壓縮,時間戳,版本等等,且屬性可以單獨指定,不指定的屬性就是默認值,

3.2.1列舉表,查看表結構等

1.列出某個namespace下所有的表                                                                                                 
hbase(main):023:0> list_namespace_tables 'myns_test'
TABLE                                                                                                                
t1                                                                                                                   
1 row(s)
Took 0.0237 seconds                                                                                                  
=> ["t1"]
2.列出所有表,所有namespace下所有表,
hbase(main):024:0> list
TABLE                                                                                                                
myns_test:t1                                                                                                         
test                                                                                                                 
2 row(s)
Took 0.0041 seconds                                                                                                  
=> ["myns_test:t1", "test"]

3.查看表結構,describe會顯示表的結構,默認值,引數等,類似show create table 
hbase(main):027:0> describe 't1'
Table t1 is ENABLED                                                                                                  
t1                                                                                                                   
COLUMN FAMILIES DESCRIPTION                                                                                          
{NAME => 'f1', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_BEHAVIOR => 'false', KEEP_DELETED_CELLS
 => 'FALSE', CACHE_DATA_ON_WRITE => 'false', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', RE
PLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', CACHE_INDEX_ON_WRITE => 'false', IN_MEMORY => 'false', CACHE_BLOOMS_ON_
WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLOCKSIZE => '6553
6'}                                                                                                                  
{NAME => 'f2', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_BEHAVIOR => 'false', KEEP_DELETED_CELLS
 => 'FALSE', CACHE_DATA_ON_WRITE => 'false', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', RE
PLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', CACHE_INDEX_ON_WRITE => 'false', IN_MEMORY => 'false', CACHE_BLOOMS_ON_
WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLOCKSIZE => '6553
6'}                                                                                                                  
{NAME => 'f3', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_BEHAVIOR => 'false', KEEP_DELETED_CELLS
 => 'FALSE', CACHE_DATA_ON_WRITE => 'false', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', RE
PLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', CACHE_INDEX_ON_WRITE => 'false', IN_MEMORY => 'false', CACHE_BLOOMS_ON_
WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLOCKSIZE => '6553
6'}                                                                                                                  
3 row(s)
Took 0.1012 seconds                

3.2.2各種形式的創建表,常用

1.基礎建表陳述句,要有表名+列族名,如下在默認namespace中創建表tb1,列族名cf,同時創建一個表tb2,3個列族,注意觀察兩個表的表結構有啥不一樣,

1.創建一個列族的表tb1
hbase(main):028:0>  create 'tb1','cf'
Created table tb1
Took 0.7221 seconds                                                                                                  
=> Hbase::Table - tb1
hbase(main):029:0> describe 'tb1'
Table tb1 is ENABLED                                                                                                 
tb1                                                                                                                  
COLUMN FAMILIES DESCRIPTION                                                                                          
{NAME => 'cf', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_BEHAVIOR => 'false', KEEP_DELETED_CELLS
 => 'FALSE', CACHE_DATA_ON_WRITE => 'false', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', RE
PLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', CACHE_INDEX_ON_WRITE => 'false', IN_MEMORY => 'false', CACHE_BLOOMS_ON_
WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLOCKSIZE => '6553
6'}                                                                                                                  

2.創建3個列族的表,tb2
hbase(main):036:0> create 'tb2','cf1','cf2','cf3'
Created table tb2
hbase(main):038:0> describe 'tb2'
Table tb2 is ENABLED                                                                                                 
tb2                                                                                                                  
COLUMN FAMILIES DESCRIPTION                                                                                          
{NAME => 'cf1', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_BEHAVIOR => 'false', KEEP_DELETED_CELL
S => 'FALSE', CACHE_DATA_ON_WRITE => 'false', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', R
EPLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', CACHE_INDEX_ON_WRITE => 'false', IN_MEMORY => 'false', CACHE_BLOOMS_ON
_WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLOCKSIZE => '655
36'}                                                                                                                 
{NAME => 'cf2', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_BEHAVIOR => 'false', KEEP_DELETED_CELL
S => 'FALSE', CACHE_DATA_ON_WRITE => 'false', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', R
EPLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', CACHE_INDEX_ON_WRITE => 'false', IN_MEMORY => 'false', CACHE_BLOOMS_ON
_WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLOCKSIZE => '655
36'}                                                                                                                 
{NAME => 'cf3', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_BEHAVIOR => 'false', KEEP_DELETED_CELL
S => 'FALSE', CACHE_DATA_ON_WRITE => 'false', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', R
EPLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', CACHE_INDEX_ON_WRITE => 'false', IN_MEMORY => 'false', CACHE_BLOOMS_ON
_WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLOCKSIZE => '655
36'}                                                                                                                 

如上,我們簡單建表后,describe以后我們發現,表tb1有如下默認配置屬性,

注意,Hbase表/列族屬性介紹:

  1. NAME => 'cf', 列族名
  2. VERSIONS => '1', 版本數,默認資料存放一個版本,多余洗掉,實際生產常用引數,可以設定更多,
  3. EVICT_BLOCKS_ON_CLOSE => 'false',是否在關閉時從blockcache中取出快取塊,
  4. NEW_VERSION_BEHAVIOR => 'false',可選新版本行為,hbase2特性,與洗掉有關,后續講解
  5. KEEP_DELETED_CELLS => 'FALSE',列族是否可以選擇保留已洗掉的單元格,如果true情況下,仍然可以檢索已洗掉的單元格,默認一般洗掉了就不保留了,false,具體可以參考:Apache HBase ? Reference Guide
  6. CACHE_DATA_ON_WRITE => 'false',寫入快取資料
  7. DATA_BLOCK_ENCODING => 'NONE', 資料塊block的編碼方式設定,HBase目前提供了四種常用的編碼方式: Prefix_Tree、 Diff 、 Fast_Diff 、Prefix,
  8. TTL => 'FOREVER', 全稱time to live,列族可以以設定一個以秒為單位的 TTL 長度,一旦到了過期時間,HBase 會自動洗掉行,這適用于一行的所有版本——甚至是當前版本,在 HBase 中為行編碼的 TTL 時間以 UTC 指定,非常常用,生產一般設定TTL,相當于數倉里的生命周期,比如一個月等,不然資料一直膨脹,具體可以參考:Apache HBase ? Reference Guide
  9. MIN_VERSIONS => '0',如果 HBase 中的表設定了 TTL 的時候,MIN_VERSIONS 才會起作用,
  10. REPLICATION_SCOPE => '0',REPLICATION_SCOPE 是列族級別屬性,其值可以是 0 或 1,值 0 表示禁用復制,而 1 表示啟用復制,這個一般默認值0,關于hbase的復制可以參考這兩篇文章后續詳細介紹:https://clouderatemp.wpengine.com/blog/2012/07/hbase-replication-overview-2/ Apache HBase Replication: Operational Overview - Cloudera Blog
  11. BLOOMFILTER => 'ROW',布隆過濾器級別,默認行級別
  12. CACHE_INDEX_ON_WRITE => 'false',寫入快取索引
  13. IN_MEMORY => 'false',是否將列族存盤在記憶體中,HBase 可以選擇一個列族賦予更高的優先級快取,激進快取(表示優先級更高),IN_MEMORY 默認是false,如果設定為true,HBase 會嘗試將整個列族保存在記憶體中,只有在需要保存是才會持久化寫入磁盤,但是在運行時 HBase 會嘗試將整張表加載到記憶體里,
  14. CACHE_BLOOMS_ON_WRITE => 'false',寫入時快取爆發
  15. PREFETCH_BLOCKS_ON_OPEN => 'false',在打開狀態下預取塊,默認false
  16. COMPRESSION => 'NONE', 配置資料是否壓縮,以及壓縮演算法,如snappy等,針對列族進行配置,一張表多個列族可以不同列族不同壓縮演算法,
  17. BLOCKCACHE => 'true', 塊快取是否開啟,默認開啟,后續介紹
  18. BLOCKSIZE => '65536'} 設定HFile資料塊大小(默認64kb)一般不改,即使修改也是集群層面的統一設定,很少設定單個表,單個列族的屬性,

尖叫總結:注意通過上面我們創建的3個列族的tb2表我們可以看出,如上表的屬性都是針對列族的,所有的操作屬性都是列族級別的,我們可以針對列族設定,也可以使用默認值,

2.指定列族屬性創建表,

1.創建表使用NAME屬性值指定列族名
hbase(main):040:0>  create 't4', {NAME => 'f1'}, {NAME => 'f2'}, {NAME => 'f3'}
hbase(main):040:0>  create 't4', 'f1','f2','f3'
注意這兩種創建的表結構都是一樣的

2.其他指定列族屬性創建表
hbase> create 't1', 'f1', 'f2', 'f3'
hbase> create 't1', {NAME => 'f1', VERSIONS => 1, TTL => 2592000, BLOCKCACHE => true}
hbase> create 't1', {NAME => 'f1', CONFIGURATION => {'hbase.hstore.blockingStoreFiles' => '10'}}
hbase> create 't1', {NAME => 'f1', IS_MOB => true, MOB_THRESHOLD => 1000000, MOB_COMPACT_PARTITION_POLICY => 'weekly'}

其實列族的屬性有很多,上面是默認的,可以通過創建表時指定很多屬性,比如預磁區,具體參考hbase官網Apache HBase ? Reference Guide

hbase> create 'ns1:t1', 'f1', SPLITS => ['10', '20', '30', '40']
hbase(main):047:0> describe  'tb12'
Table tb12 is ENABLED                                                                                                
tb12                                                                                                                 
COLUMN FAMILIES DESCRIPTION                                                                                          
{NAME => 'f1', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_BEHAVIOR => 'false', KEEP_DELETED_CELLS
 => 'FALSE', CACHE_DATA_ON_WRITE => 'false', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', RE
PLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', CACHE_INDEX_ON_WRITE => 'false', IN_MEMORY => 'false', CACHE_BLOOMS_ON_
WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLOCKSIZE => '6553
6'}                                                                                                                  
1 row(s)
Took 0.0152 seconds           
hbase> create 't1', 'f1', SPLITS_FILE => 'splits.txt', OWNER => 'johndoe'
hbase> create 't1', {NAME => 'f1', VERSIONS => 5}, METADATA => { 'mykey' => 'myvalue' }
hbase> # Optionally pre-split the table into NUMREGIONS, using
hbase> # SPLITALGO ("HexStringSplit", "UniformSplit" or classname)
hbase> create 't1', 'f1', {NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'}
hbase> create 't1', 'f1', {NUMREGIONS => 15, SPLITALGO => 'HexStringSplit', REGION_REPLICATION => 2, CONFIGURATION => {'hbase.hregion.scan.loadColumnFamiliesOnDemand' => 'true'}}
hbase> create 't1', {NAME => 'f1', DFS_REPLICATION => 1}

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/301242.html

標籤:其他

上一篇:??“大資料”??:第一課:JDK&Maven的安裝??

下一篇:拿到這份Java面試檔案“狂刷”2周,成功拿到阿里P6+的offer!

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more