主頁 > 資料庫 > Hbase安裝和shell客戶端操作

Hbase安裝和shell客戶端操作

2023-06-12 08:23:50 資料庫

簡介

HBase 是一個面向列式存盤的分布式資料庫,其設計思想來源于 Google 的 BigTable 論文,
HBase 底層存盤基于 HDFS 實作,集群的管理基于 ZooKeeper 實作,
HBase 良好的分布式架構設計為海量資料的快速存盤、隨機訪問提供了可能,基于資料副本機制和磁區機制可以輕松實作在線擴容、縮容和資料容災,是大資料領域中 Key-Value 資料結構存盤最常用的資料庫方案

特點

  1. 易擴展

Hbase 的擴展性主要體現在兩個方面,一個是基于運算能力(RegionServer) 的擴展,通過增加 RegionSever 節點的數量,提升 Hbase 上層的處理能力;另一個是基于存盤能力的擴展(HDFS),通過增加 DataNode 節點數量對存盤層的進行擴容,提升 HBase 的資料存盤能力,

  1. 海量存盤

HBase 作為一個開源的分布式 Key-Value 資料庫,其主要作用是面向 PB 級別資料的實時入庫和快速隨機訪問,這主要源于上述易擴展的特點,使得 HBase 通過擴展來存盤海量的資料,

  1. 列式存盤

Hbase 是根據列族來存盤資料的,列族下面可以有非常多的列,列式存盤的最大好處就是,其資料在表中是按照某列存盤的,這樣在查詢只需要少數幾個欄位時,能大大減少讀取的資料量,

  1. 高可靠性

WAL 機制保證了資料寫入時不會因集群例外而導致寫入資料丟失,Replication 機制保證了在集群出現嚴重的問題時,資料不會發生丟失或損壞,而且 Hbase 底層使用 HDFS,HDFS 本身也有備份,

  1. 稀疏性

在 HBase 的列族中,可以指定任意多的列,為空的列不占用存盤空間,表可以設計得非常稀疏,

  1. 模塊組成

HBase 可以將資料存盤在本地檔案系統,也可以存盤在 HDFS 檔案系統,在生產環境中,HBase 一般運行在HDFS 上,以 HDFS 作為基礎的存盤設施,HBase 通過 HBase Client 提供的 Java API 來訪問 HBase 資料庫,以完成資料的寫入和讀取,HBase 集群主由HMaster、Region Server 和 ZooKeeper 組成,

架構

HBase 系統遵循 Master/Salve 架構,由三種不同型別的組件組成:
client

  1. 提供了訪問hbase的介面
  2. 提供cache快取提高訪問hbase的效率 , 比如region的資訊

Zookeeper

  1. 保證任何時候,集群中只有一個 Master;
  2. 存盤所有 Region 的尋址入口;
  3. 實時監控 Region Server 的狀態,將 Region Server 的上線和下線資訊實時通知給 Master;
  4. 存盤 HBase 的 Schema,包括有哪些 Table,每個 Table 有哪些 Column Family 等資訊,

Master

  1. 為 Region Server 分配 Region;
  2. 負責 Region Server 的負載均衡 ;
  3. 發現失效的 Region Server 并重新分配其上的 Region;
  4. GFS 上的垃圾檔案回收;
  5. 處理 Schema 的更新請求

Region Server

  1. Region Server 負責維護 Master 分配給它的 Region ,并處理發送到 Region 上的 IO 請求;
  2. Region Server 負責切分在運行程序中變得過大的 Region

image

安裝

因為hbase需要依賴zookeeper和hdfs,所以在安裝hbase集群之前需要確保zookeeper和hdfs的環境正常

  1. 上傳壓縮包并解壓
  2. hbase配置
# 1.在conf目錄下找到hbase-env.sh
cd /opt/apps/hbase-2.2.5/conf
vi hbase-env.sh
# 修改的地方:
# 1.1 配置java的環境變數,注意需要將前面的注釋打開
export JAVA_HOME=/opt/apps/jdk1.8
#1.2 hbase中內嵌了一個zookeeper,默認使用的是內置的zoopkeeper,將等號后面的true改成false
export HBASE_MANAGES_ZK=false

# 2.在 conf目錄下找到hbase-site.xml
vi hbase-site.xml
# 在最下面輸入下面的組態檔
<configuration>
<!-- 指定hbase在HDFS上存盤的路徑 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://linux01:8020/hbase</value>
</property>
<!-- 指定hbase是分布式的 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 分布式中一定要配置該引數,否則可能會出現無法啟動HMaster的情況 -->
<property>
  <name>hbase.unsafe.stream.capability.enforce</name>
  <value>false</value>
</property>
<!-- 指定zk的地址,多個用“,”分割 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>linux01:2181,linux02:2181,linux03:2181</value>
</property>
</configuration>

# 3.regionservers 配置  啟動集群中的Regionserver機器
vi regionservers
# 輸入自己的三臺機器域名
linux01
linux02
linux03
  1. 集群分發
for i in 2 3
do
scp -r hbase-2.2.5/ linux0$i:$PWD
done
  1. 啟動

單節點啟動:

bin/hbase-daemon.sh start master
bin/hbase-daemon.sh start regionserver
# 提示:如果regionserver無法啟動,請先檢查下集群之間的節點時間是否同步

一鍵啟動:

bin/start-hbase.sh
  1. 驗證啟動是否成功
# 1.jps查看
[root@linux01 conf]# jps
4305 Jps
2386 QuorumPeerMain
2051 DataNode
3747 HMaster  # 查看HMaster有無行程
1898 NameNode
3934 HRegionServer  # 查看HRegionServer有無行程

# 2.通過"linux01:16010"的方式來訪問HBase管理頁面,進得去代表啟動成功

資料模型

namespace:hbase中沒有資料庫的概念 , 是使用namespace來達到資料庫分類別管理表的作用

table:表,一個表包含多行資料

Row Key (行鍵):一行資料包含一個唯一標識rowkey、多個column以及對應的值,在HBase中,一張表中所有row都按照rowkey的字典序由小到大排序,

Column Family(列族):在建表的時候指定,不能夠隨意的刪減,一個列族下面可以有多個列(類似于給列進行分組,相同屬性的列是一個組,給這個組取個名字叫列族)

Column Qualifier (列):列族下面的列,一個列必然是屬于某一個列族的行

Cell:單元格,由(rowkey、column family、qualifier、type、timestamp,value)組成的結構,其中type表示Put/Delete操作型別,timestamp代表這個cell的版本,KV結構存盤,其中rowkey、column family、qualifier、type以及timestamp是K,value欄位對應KV結構的V,

Timestamp(時間戳):時間戳,每個cell在寫入HBase的時候都會默認分配一個時間戳作為該cell的版本,用戶也可以在寫入的時候自帶時間戳,HBase支持多版本特性,即同一rowkey、column下可以有多個value存在,這些value使用timestamp作為版本號,版本越大,表示資料越新,

shell客戶端

# 如果配置了環境變數:在任意地方敲 hbase shell
# 如果沒有配置環境變數,需要在bin目錄下./hbase shell
hbase shell

# 出現如下 代表成功進入了hbase的shell客戶端
hbase(main):001:0>

通用命令

status: 查看HBase的狀態,例如,服務器的數量,

hbase(main):001:0> status
1 active master, 0 backup masters, 3 servers, 0 dead, 0.6667 average load
Took 0.3609 seconds

version: 提供正在使用HBase版本,

hbase(main):002:0> version
2.2.5, rf76a601273e834267b55c0cda12474590283fd4c, 2020年 05月 21日 星期四 18:34:40 CST
Took 0.0004 seconds

table_help: 表參考命令提供幫助,

關于表的一些命令參考
如:
To read the data out, you can scan the table:
  hbase> t.scan
which will read all the rows in table 't'.

whoami: 提供有關用戶的資訊,

hbase(main):004:0> whoami
root (auth:SIMPLE)
    groups: root
Took 0.0098 seconds

命名空間相關命令

list_namespace:列出所有的命名空間

hbase(main):005:0> list_namespace
NAMESPACE
default
hbase
2 row(s)
Took 0.0403 seconds

create_namespace:創建一個命名空間

hbase(main):002:0> create_namespace doit
NameError: undefined local variable or method 'doit' for main:Object

# 名稱需要加上引號
hbase(main):003:0> create_namespace 'doit'
Took 0.2648 seconds

describe_namespace:描述一個命名空間

hbase(main):004:0> describe_namespace 'doit'
DESCRIPTION
{NAME => 'doit'}
Quota is disabled
Took 0.0710 seconds

drop_namespace:洗掉一個命名空間

# 注意 :只能洗掉空的命名空間,如果里面有表是洗掉不了的
hbase(main):005:0> drop_namespace 'doit'
Took 0.2461 seconds

# 命名空間不為空的話
hbase(main):035:0> drop_namespace 'doit'

ERROR: org.apache.hadoop.hbase.constraint.ConstraintException: Only empty namespaces can be removed. Namespace doit has 1 tables
        at org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure.prepareDelete(DeleteNamespaceProcedure.java:217)
        at org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure.executeFromState(DeleteNamespaceProcedure.java:78)
        at org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure.executeFromState(DeleteNamespaceProcedure.java:45)
        at org.apache.hadoop.hbase.procedure2.StateMachineProcedure.execute(StateMachineProcedure.java:194)
        at org.apache.hadoop.hbase.procedure2.Procedure.doExecute(Procedure.java:962)
        at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execProcedure(ProcedureExecutor.java:1662)
        at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.executeProcedure(ProcedureExecutor.java:1409)
        at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.access$1100(ProcedureExecutor.java:78)
        at org.apache.hadoop.hbase.procedure2.ProcedureExecutor$WorkerThread.run(ProcedureExecutor.java:1979)

For usage try 'help "drop_namespace"'

Took 0.1448 seconds     

alter_namespace:修改namespace其中屬性

hbase(main):038:0> alter_namespace 'doit',{METHOD => 'set', 'PROPERTY_NAME' => 'PROPERTY_VALUE'}
Took 0.2491 seconds

list_namespace_tables:列出一個命名空間下所有的表

hbase(main):037:0> list_namespace_tables 'doit'
TABLE
user
1 row(s)
Took 0.0372 seconds
=> ["user"]

DDL相關命令

list:列舉出默認名稱空間下所有的表

hbase(main):001:0> list
TABLE
doit:user
1 row(s)
Took 0.3187 seconds
=> ["doit:user"]

create:建表

create ‘xx:t1’,{NAME=>‘f1’,VERSION=>5}
# 創建表t1并指明命名空間xx
# {NAME} f1指的是列族
# VERSION 表示版本數
# 多個列族f1、f2、f3
create ‘t2’,{NAME=>‘f1’},{NAME=>‘f2’},{NAME=>‘f3’}

hbase(main):003:0> create 'doit:student' 'f1','f2','f3'
Created table doit:studentf1
Took 1.2999 seconds
=> Hbase::Table - doit:studentf1


# 創建表得時候預分region
hbase(main):106:0> create 'doit:test','f1', SPLITS => ['rowkey_010','rowkey_020','rowkey_030','rowkey_040']
Created table doit:test
Took 1.3133 seconds
=> Hbase::Table - doit:test

drop:洗掉表

hbase(main):006:0> drop 'doit:studentf1'

ERROR: Table doit:studentf1 is enabled. Disable it first.

For usage try 'help "drop"'

Took 0.0242 seconds

# 注意:洗掉表之前需要禁用表
hbase(main):007:0> disable 'doit:studentf1'
Took 0.7809 seconds
hbase(main):008:0> drop 'doit:studentf1'
Took 0.2365 seconds

drop_all:丟棄在命令中給出匹配“regex”的表

hbase(main):023:0> disable_all 'doit:student.*'
doit:student1
doit:student2
doit:student3
doit:studentf1

Disable the above 4 tables (y/n)?
y
4 tables successfully disabled
Took 4.3497 seconds
hbase(main):024:0> drop_all 'doit:student.*'
doit:student1
doit:student2
doit:student3
doit:studentf1

Drop the above 4 tables (y/n)?
y
4 tables successfully dropped
Took 2.4258 seconds

disable:禁用表

# 洗掉表之前必須先禁用表
hbase(main):007:0> disable 'doit:studentf1'
Took 0.7809 seconds

disable_all:禁用在命令中給出匹配“regex”的表

hbase(main):023:0> disable_all 'doit:student.*'
doit:student1
doit:student2
doit:student3
doit:studentf1

Disable the above 4 tables (y/n)?
y
4 tables successfully disabled
Took 4.3497 seconds

enable:啟用表

hbase(main):007:0> enable 'doit:student'
Took 0.7809 seconds

enable_all:啟用在命令中給出匹配“regex”的表

hbase(main):032:0> enable_all 'doit:student.*'
doit:student
doit:student1
doit:student2
doit:student3
doit:student4

Enable the above 5 tables (y/n)?
y
5 tables successfully enabled
Took 5.0114 seconds

is_enabled:判斷該表是否是啟用的表

hbase(main):034:0> is_enabled 'doit:student'
true
Took 0.0065 seconds
=> true

is_disabled:判斷該表是否是禁用的表

hbase(main):035:0> is_disabled 'doit:student'
false
Took 0.0046 seconds
=> 1

describe:描述這張表

hbase(main):038:0> describe 'doit:student'
Table doit:student is ENABLED
doit:student
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_BLO
CK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', REPLICATION_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 => '65536'}

{NAME => 'f2', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_BEHAVIOR => 'false', KEEP_DELETED_CELLS => 'FALSE', CACHE_DATA_ON_WRITE => 'false', DATA_BLO
CK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', REPLICATION_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 => '65536'}

{NAME => 'f3', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_BEHAVIOR => 'false', KEEP_DELETED_CELLS => 'FALSE', CACHE_DATA_ON_WRITE => 'false', DATA_BLO
CK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', REPLICATION_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 => '65536'}

3 row(s)

QUOTAS
0 row(s)
Took 0.0349 seconds

# 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', -- 最小版本數
# REPLICATION_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 => '65536'  -- 塊大小

alter:修改表里面的屬性

hbase(main):040:0> alter 'doit:student', NAME => 'cf1', VERSIONS => 5, TTL => 10
Updating all regions with the new schema...
1/1 regions updated.
Done.
Took 2.1406 seconds

alter_async:直接操作不等待,和上面的alter功能一樣

hbase(main):059:0> alter_async 'doit:student', NAME => 'cf1', VERSIONS => 5, TTL => 10
Took 1.0268 seconds

alter_status:獲取alter命令的執行狀態

hbase(main):060:0> alter_status 'doit:student'
1/1 regions updated.
Done.
Took 1.0078 seconds

list_regions:列出一個表中所有的region

Examples:
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']
hbase> list_regions 'table_name', {}, ['SERVER_NAME', 'start_key']
hbase> list_regions 'table_name', '', ['SERVER_NAME', 'start_key']

hbase(main):045:0> list_regions 'doit:student'
                 SERVER_NAME |                                                   REGION_NAME |  START_KEY |    END_KEY |  SIZE |   REQ |   LOCALITY |
 --------------------------- | ------------------------------------------------------------- | ---------- | ---------- | ----- | ----- | ---------- |
 linux02,16020,1683636566738 | doit:student,,1683642944714.39f7c8772bc476c4d38c663e879d50da. |            |            |     0 |     0 |        0.0 |
 1 rows
Took 0.0145 seconds

locate_region:通過表名和row名方式獲取region

hbase(main):062:0> locate_region 'doit:student', 'key0'
HOST                                            REGION
 linux02:16020                                  {ENCODED => 39f7c8772bc476c4d38c663e879d50da, NAME => 'doit:student,,1683642944714.39f7c8772bc476c4d38c663e879d50da.', STARTKEY => '', ENDK
                                                EY => ''}
1 row(s)
Took 0.0027 seconds

show_filters:顯示hbase的所有的過濾器

hbase(main):058:0> show_filters
DependentColumnFilter
KeyOnlyFilter
ColumnCountGetFilter
SingleColumnValueFilter
PrefixFilter
SingleColumnValueExcludeFilter
FirstKeyOnlyFilter
ColumnRangeFilter
ColumnValueFilter
TimestampsFilter
FamilyFilter
QualifierFilter
ColumnPrefixFilter
RowFilter
MultipleColumnPrefixFilter
InclusiveStopFilter
PageFilter
ValueFilter
ColumnPaginationFilter
Took 0.0035 seconds

DML相關命令

put插入/更新資料【某一行的某一列】(如果不存在,就插入,如果存在就更新)

hbase(main):007:0> put 'doit:user_info' ,'rowkey_001','f1:name','zss'
Took 0.0096 seconds
hbase(main):008:0> put 'doit:user_info' ,'rowkey_001','f1:age','1'
Took 0.0039 seconds
hbase(main):009:0> put 'doit:user_info' ,'rowkey_001','f1:gender','male'
Took 0.0039 seconds
hbase(main):010:0> put 'doit:user_info' ,'rowkey_001','f2:phone_num','98889'
Took 0.0040 seconds
hbase(main):011:0> put 'doit:user_info' ,'rowkey_001','f2:gender','98889'

# 注意:put中需要指定哪個命名空間的那個表,然后rowkey是什么,哪個列族下面的哪個列名,然后值是什么
# 一個個的插入,不能一下子插入多個列名的值

get:獲取一個列族中列這個cell

hbase(main):015:0> get 'doit:user_info' ,'rowkey_001','f2:gender'
COLUMN                         CELL
 f2:gender                     timestamp=1683646645379, value=https://www.cnblogs.com/paopaoT/archive/2023/06/11/123
1 row(s)
Took 0.0242 seconds

hbase(main):016:0> get'doit:user_info' ,'rowkey_001'
COLUMN                         CELL
 f1:age                        timestamp=1683646450598, value=https://www.cnblogs.com/paopaoT/archive/2023/06/11/1
 f1:gender                     timestamp=1683646458847, value=male
 f1:name                       timestamp=1683646443469, value=zss
 f2:gender                     timestamp=1683646645379, value=123
 f2:phone_num                  timestamp=1683646472508, value=98889
1 row(s)
Took 0.0129 seconds

# 如果遇到中文亂碼的問題怎么辦呢?在最后加上{'FORMATTER'=>'toString'}引數即可
hbase(main):137:0> get 'doit:student','rowkey_001',{'FORMATTER'=>'toString'}
COLUMN                            CELL
 f1:name                          timestamp=1683864047691, value=https://www.cnblogs.com/paopaoT/archive/2023/06/11/張三
1 row(s)
Took 0.0057 seconds
# 注意:get是hbase中查詢資料最快的方式,但是只能每次回傳一個rowkey的資料

scan:掃描表中的所有資料

hbase(main):012:0> scan 'doit:user_info'
ROW                            COLUMN+CELL
 rowkey_001                    column=f1:age, timestamp=1683646450598, value=https://www.cnblogs.com/paopaoT/archive/2023/06/11/1
 rowkey_001                    column=f1:gender, timestamp=1683646458847, value=male
 rowkey_001                    column=f1:name, timestamp=1683646443469, value=zss
 rowkey_001                    column=f2:gender, timestamp=1683646483495, value=98889
 rowkey_001                    column=f2:phone_num, timestamp=1683646472508, value=98889
1 row(s)
Took 0.1944 seconds

scan'tbname',{Filter(過濾器)}
scan 'itcast:t2'
#rowkey前綴過濾器
scan 'itcast:t2', {ROWPREFIXFILTER => '2021'}
scan 'itcast:t2', {ROWPREFIXFILTER => '202101'}
#rowkey范圍過濾器
#STARTROW:從某個rowkey開始,包含,閉區間
#STOPROW:到某個rowkey結束,不包含,開區間
scan 'itcast:t2',{STARTROW=>'20210101_000'}
scan 'itcast:t2',{STARTROW=>'20210201_001'}
scan 'itcast:t2',{STARTROW=>'20210101_000',STOPROW=>'20210201_001'}
scan 'itcast:t2',{STARTROW=>'20210201_001',STOPROW=>'20210301_007'}

#  在Hbase資料檢索,==盡量走索引查詢:按照Rowkey條件查詢==

#  盡量避免走全表掃描

# 索引查詢:有一本新華字典,這本字典可以根據拼音檢索,找一個字,先找目錄,找字
# 全表掃描:有一本新華字典,這本字典沒有檢索目錄,找一個字,一頁一頁找

# ==Hbase所有Rowkey的查詢都是前綴匹配==

# 如果遇到中文亂碼的問題在最后加上{'FORMATTER'=>'toString'}引數即可
hbase(main):130:0> scan 'doit:student',{'FORMATTER'=>'toString'}
ROW                               COLUMN+CELL
 rowkey_001                       column=f1:name, timestamp=1683863389259, value=https://www.cnblogs.com/paopaoT/archive/2023/06/11/張三
1 row(s)
Took 0.0063 seconds

incr:一般用于自動計數的,不用記住上一次的值,直接做自增

# 注意:因為shell往米面設定的value的值是String型別的
hbase(main):005:0> incr 'doit:student','rowkey002', 'f1:age'
COUNTER VALUE = https://www.cnblogs.com/paopaoT/archive/2023/06/11/1
Took 0.1877 seconds
hbase(main):006:0> incr'doit:student','rowkey002', 'f1:age'
COUNTER VALUE = https://www.cnblogs.com/paopaoT/archive/2023/06/11/2
Took 0.0127 seconds
hbase(main):007:0> incr'doit:student','rowkey002', 'f1:age'
COUNTER VALUE = https://www.cnblogs.com/paopaoT/archive/2023/06/11/3
Took 0.0079 seconds
hbase(main):011:0> incr'doit:student','rowkey002', 'f1:age'
COUNTER VALUE = https://www.cnblogs.com/paopaoT/archive/2023/06/11/4
Took 0.0087 seconds

count:統計一個表里面有多少行資料

hbase(main):031:0> count 'doit:user_info'
1 row(s)
Took 0.0514 seconds
=> 1

delete洗掉某一行中列對應的值

# 洗掉某一行中列對應的值
hbase(main):041:0> delete 'doit:student' ,'rowkey_001','f1:id'
Took 0.0152 seconds

deleteall:洗掉一行資料

# 根據rowkey洗掉一行資料
hbase(main):042:0> deleteall 'doit:student','rowkey_001'
Took 0.0065 seconds

append:追加,假如該列不存在添加新列,存在將值追加到最后

# 再原有值得基礎上追加值
hbase(main):098:0> append 'doit:student','rowkey_001','f1:name','hheda'
CURRENT VALUE = https://www.cnblogs.com/paopaoT/archive/2023/06/11/zsshheda
Took 0.0070 seconds

hbase(main):100:0> get'doit:student','rowkey_001','f1:name'
COLUMN                       CELL
 f1:name                     timestamp=1683861530789, value=https://www.cnblogs.com/paopaoT/archive/2023/06/11/zsshheda
1 row(s)
Took 0.0057 seconds

#注意:如果原來沒有這個列,會自動添加一個列,然后將值set進去
hbase(main):101:0> append'doit:student','rowkey_001','f1:name1','hheda'
CURRENT VALUE = https://www.cnblogs.com/paopaoT/archive/2023/06/11/hheda
Took 0.0063 seconds
hbase(main):102:0> get'doit:student','rowkey_001','f1:name1'
COLUMN                       CELL
 f1:name1                    timestamp=1683861631392, value=https://www.cnblogs.com/paopaoT/archive/2023/06/11/hheda
1 row(s)
Took 0.0063 seconds

truncate:清空表里面所有的資料

# 執行流程
# 先disable表
# 然后再drop表
# 最后重新create表

hbase(main):044:0> truncate 'doit:student'
Truncating 'doit:student' table (it may take a while):
Disabling table...
Truncating table...
Took 2.5457 seconds

truncate_preserve:清空表但保留磁區

hbase(main):008:0> truncate_preserve 'doit:test'
Truncating 'doit:test' table (it may take a while):
Disabling table...
Truncating table...
Took 4.1352 seconds
hbase(main):009:0> list_regions 'doit:test'
                 SERVER_NAME |                                                          REGION_NAME |  START_KEY |    END_KEY |  SIZE |   REQ |   LOCALITY |
 --------------------------- | -------------------------------------------------------------------- | ---------- | ---------- | ----- | ----- | ---------- |
 linux03,16020,1684200651855 |           doit:test,,1684205468848.920ae3e043ad95890c4f5693cb663bc5. |            | rowkey_010 |     0 |     0 |        0.0 |
 linux01,16020,1684205091382 | doit:test,rowkey_010,1684205468848.f8a21615be51f42c562a2338b1efa409. | rowkey_010 | rowkey_020 |     0 |     0 |        0.0 |
 linux02,16020,1684200651886 | doit:test,rowkey_020,1684205468848.25d62e8cc2fdaecec87234b8d28f0827. | rowkey_020 | rowkey_030 |     0 |     0 |        0.0 |
 linux03,16020,1684200651855 | doit:test,rowkey_030,1684205468848.2b0468e6643b95159fa6e210fa093e66. | rowkey_030 | rowkey_040 |     0 |     0 |        0.0 |
 linux01,16020,1684205091382 | doit:test,rowkey_040,1684205468848.fb12c09c7c73cfeff0bf79b5dda076cb. | rowkey_040 |            |     0 |     0 |        0.0 |
 5 rows
Took 0.1019 seconds

get_counter:獲取計數器

hbase(main):017:0> incr 'doit:student','rowkey_001','f1:name2'
COUNTER VALUE = https://www.cnblogs.com/paopaoT/archive/2023/06/11/1
Took 0.0345 seconds
hbase(main):018:0> incr'doit:student','rowkey_001','f1:name2'
COUNTER VALUE = https://www.cnblogs.com/paopaoT/archive/2023/06/11/2
Took 0.0066 seconds
hbase(main):019:0> incr'doit:student','rowkey_001','f1:name2'
COUNTER VALUE = https://www.cnblogs.com/paopaoT/archive/2023/06/11/3
Took 0.0059 seconds
hbase(main):020:0> incr'doit:student','rowkey_001','f1:name2'
COUNTER VALUE = https://www.cnblogs.com/paopaoT/archive/2023/06/11/4
Took 0.0061 seconds
hbase(main):021:0> incr'doit:student','rowkey_001','f1:name2'
COUNTER VALUE = https://www.cnblogs.com/paopaoT/archive/2023/06/11/5
Took 0.0064 seconds
hbase(main):022:0> incr'doit:student','rowkey_001','f1:name2'
COUNTER VALUE = https://www.cnblogs.com/paopaoT/archive/2023/06/11/6
Took 0.0062 seconds
hbase(main):023:0> incr'doit:student','rowkey_001','f1:name2'
COUNTER VALUE = https://www.cnblogs.com/paopaoT/archive/2023/06/11/7
Took 0.0066 seconds
hbase(main):024:0> incr'doit:student','rowkey_001','f1:name2'
COUNTER VALUE = https://www.cnblogs.com/paopaoT/archive/2023/06/11/8
Took 0.0059 seconds
hbase(main):025:0> incr'doit:student','rowkey_001','f1:name2'
COUNTER VALUE = https://www.cnblogs.com/paopaoT/archive/2023/06/11/9
Took 0.0063 seconds
hbase(main):026:0> incr'doit:student','rowkey_001','f1:name2'
COUNTER VALUE = https://www.cnblogs.com/paopaoT/archive/2023/06/11/10
Took 0.0061 seconds
hbase(main):027:0> get_counter'doit:student','rowkey_001','f1:name2'
COUNTER VALUE = https://www.cnblogs.com/paopaoT/archive/2023/06/11/10
Took 0.0040 seconds

get_splits:用于獲取表所對應的region數個數

hbase(main):148:0> get_splits 'doit:test'
Total number of splits = 5
rowkey_010
rowkey_020
rowkey_030
rowkey_040
Took 0.0120 seconds
=> ["rowkey_010", "rowkey_020", "rowkey_030", "rowkey_040"]

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

標籤:其他

上一篇:Navicat Premium將關系和物體添加到概念模型的方法

下一篇:返回列表

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

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • Hbase安裝和shell客戶端操作

    # 簡介 HBase 是一個**面向列式存盤的分布式資料庫**,其設計思想來源于 Google 的 BigTable 論文。 HBase 底層存盤基于 HDFS 實作,集群的管理基于 ZooKeeper 實作。 HBase 良好的分布式架構設計為海量資料的快速存盤、隨機訪問提供了可能,基于資料副本機 ......

    uj5u.com 2023-06-12 08:23:50 more
  • Navicat Premium將關系和物體添加到概念模型的方法

    Navicat Premium是一款強大的跨平臺資料庫管理工具,支持多種主流的關系型資料庫系統,包括 MySQL、MariaDB、SQLite、Oracle、PostgreSQL 和 Microsoft SQL Server 等。它提供了直觀易用的用戶界面和豐富的功能,使得資料庫管理變得更加簡單和高 ......

    uj5u.com 2023-06-12 08:18:37 more
  • Navicat Premium將關系和物體添加到概念模型的方法

    Navicat Premium是一款強大的跨平臺資料庫管理工具,支持多種主流的關系型資料庫系統,包括 MySQL、MariaDB、SQLite、Oracle、PostgreSQL 和 Microsoft SQL Server 等。它提供了直觀易用的用戶界面和豐富的功能,使得資料庫管理變得更加簡單和高 ......

    uj5u.com 2023-06-12 08:12:26 more
  • HBase的資料結構原理與使用

    一、HBase簡介 HBase是一個開源的、分布式的、版本化的NoSQL資料庫(即非關系型資料庫),依托Hadoop分布式檔案系統HDFS提供分布式資料存盤,利用MapReduce來處理海量資料,用Zookeeper作為其分布式協同服務,一般用于存盤海量資料。HDFS和HBase的區別在于,HDFS ......

    uj5u.com 2023-06-12 08:06:41 more
  • Hbase安裝和shell客戶端操作

    # 簡介 HBase 是一個**面向列式存盤的分布式資料庫**,其設計思想來源于 Google 的 BigTable 論文。 HBase 底層存盤基于 HDFS 實作,集群的管理基于 ZooKeeper 實作。 HBase 良好的分布式架構設計為海量資料的快速存盤、隨機訪問提供了可能,基于資料副本機 ......

    uj5u.com 2023-06-12 08:06:28 more
  • 【技識訓累】Mysql中的SQL高級技巧【一】

    博客推行版本更新,成果積累制度,已經寫過的博客還會再次更新,不斷地琢磨,高質量高數量都是要追求的,工匠精神是學習必不可少的精神。因此,大家有何建議歡迎在評論區踴躍發言,你們的支持是我最大的動力,你們敢投,我就敢肝 ......

    uj5u.com 2023-06-11 08:08:01 more
  • INFINI Labs 產品更新 | Easysearch 新增跨集群復制 (CCR)、支持

    ![](https://img2023.cnblogs.com/other/3200758/202306/3200758-20230610163529557-866000334.png) INFINI Labs 產品重量級更新!!!本次更新了很多亮點功能,如 Easysearch 新增跨集群復制 ( ......

    uj5u.com 2023-06-11 08:07:45 more
  • Kafka面試題

    # kafka 都有哪些特點? 高吞吐量,低延遲 可以熱擴展 并發度高 具有容錯性(掛的只剩1臺也能正常跑) 可靠性高 # 在哪些場景下會選擇 kafka? kafka的一些應用 - 日志收集:一個公司可以用kafka可以收集各種服務的log,通過kafka以統一介面服務的方式開放給各種consum ......

    uj5u.com 2023-06-11 08:07:34 more
  • PostgreSQL常用運維SQL

    一、資料庫連接 1、獲取資料庫實體連接數 select count(*) from pg_stat_activity; 2、獲取資料庫最大連接數 show max_connections 3、查詢當前連接數詳細資訊 select * from pg_stat_activity; 4、查詢資料庫中各個 ......

    uj5u.com 2023-06-11 08:07:30 more
  • 干貨|開源OLAP引擎(ClickHouse、Doris、Presto、ByConity)性能對比

    隨著資料量和資料復雜性的不斷增加,越來越多的企業開始使用OLAP(聯機分析處理)引擎來處理大規模資料并提供即時分析結果。在選擇OLAP引擎時,性能是一個非常重要的因素。



    因此,本文將使用TPC-DS基準測驗的99個查詢陳述句來對比開源的ClickHouse、Doris、Presto以及ByCon... ......

    uj5u.com 2023-06-11 08:06:29 more