21 大数据--Hbase命令

本文介绍了HBase的常用命令,包括如何创建表、查看表、删除表、添加记录、扫描表、查询记录数以及删除记录。在使用HBase时,需要注意在删除表前先禁用它,且HBase没有直接的修改操作,而是通过覆盖实现。

hbase提供了一个shell的终端给用户交互(使用hbase)

[root@mini1 bin]# ./hbase shell

退出使用quit和Ctril+C即可;

注:需要关闭hadoop的安全模式不然进行一些操作,比如scan会卡住
进入到hadoop的bin目录下

[root@mini1 bin]# hadoop dfsadmin -safemode leave

1、创建表
create ‘表名’,’列族1’,’列族2’,…’列族n’

create 'user1','info1','info2'

2、查看所有表(list)

hbase(main):002:0> list                                                                                                                                                                         
1 row(s) in 1.4540 seconds
=> ["user1"]

3、描述表
describe ‘表名’

hbase(main):014:0> describe 'user1'
Table user1 is ENABLED                                                                                                                                                            
COLUMN FAMILIES DESCRIPTION                                                                                                                                                       
{NAME => 'info1', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL => 'FOREVER', KE
EP_DELETED_CELLS => 'FALSE', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}                                                                                    
{NAME => 'info2', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL => 'FOREVER', KE
EP_DELETED_CELLS => 'FALSE', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}                                                                                    
2 row(s) in 0.0790 seconds

4、删除表
注:删除表之前需要先使表disable不然直接删除会报错,会提示先disable 表

disable ‘表名’
drop ‘表名’

hbase(main):004:0> disable 'user1'
0 row(s) in 1.4110 seconds

hbase(main):005:0> drop 'user1'
0 row(s) in 0.2330 seconds
hbase(main):006:0> list
TABLE                                                                                                                                                                             
0 row(s) in 0.0450 seconds

=> []

5、判断表是否存在

hbase(main):013:0> exists 'user1'
Table user1 does exist                                                                                                                                                             
0 row(s) in 0.0980 seconds

6、向表中添加记录
create ‘表名’,’rowkey’(键),’列族:列名’,’值’

hbase(main):011:0> put 'user1','1234','info1:name','zhangsan'
0 row(s) in 0.1310 seconds

7、扫描表
扫描整张表

hbase(main):015:0> scan 'user1'
ROW                                           COLUMN+CELL                                                                                                                         
 1234                                         column=info1:name, timestamp=1509303796190, value=zhangsan                                                                          
1 row(s) in 0.0630 seconds

注:hbase没有直接修改操作,但是可以覆盖,只要rowkey跟列族列名一致就会覆盖
比如这里要修改上面插入数据的info:name为’lisi’

hbase(main):002:0> put 'user1','1234','info1:name','list'
0 row(s) in 0.1470 seconds

hbase(main):003:0> scan 'user1'
ROW                                           COLUMN+CELL                                                                                                                         
 1234                                         column=info1:name, timestamp=1509304915052, value=list  

但是如果rowkey相同,列族相同只要列名不同就只会添加而不会覆盖
比如插入年龄为18岁

hbase(main):004:0> put 'user1','1234','info1:age','18'
0 row(s) in 0.0500 seconds

hbase(main):005:0> scan 'user1'
ROW                                           COLUMN+CELL                                                                                                                         
 1234                                         column=info1:age, timestamp=1509305017108, value=18                                                                                 
 1234                                         column=info1:name, timestamp=1509304915052, value=list   

8、查询记录数
注:rowkey相同的话只算一条
count ‘表名’

hbase(main):008:0> scan 'user1'
ROW                                           COLUMN+CELL                                                                                                                         
 1234                                         column=info1:age, timestamp=1509305121972, value=18                                                                                 
 1234                                         column=info1:name, timestamp=1509304915052, value=list                                                                              
 12345                                        column=info1:age, timestamp=1509305156151, value=24                                                                                 
 12345                                        column=info2:name, timestamp=1509305221477, value=lucy                                                                              
2 row(s) in 0.0460 seconds

hbase(main):009:0> count 'user1'
2 row(s) in 0.0540 seconds

=> 2

9、查询
获取某个列族
获取某个列族的列

hbase(main):010:0> get 'user1','1234','info1'
COLUMN                                        CELL                                                                                                                                
 info1:age                                    timestamp=1509305121972, value=18                                                                                                   
 info1:name                                   timestamp=1509304915052, value=list                                                                                                 
2 row(s) in 0.0970 seconds

hbase(main):011:0> get 'user1','1234','info1:name'
COLUMN                                        CELL                                                                                                                                
 info1:name                                   timestamp=1509304915052, value=list                                                                                                 
1 row(s) in 0.0700 seconds

查询某个列,某个时间戳版本的值

get 'user1', '1234bbb', {COLUMN => 'info1:username',TIMESTAMP => 1538014481194}

9、删除记录
可以删除一个列族的一个列记录
delete ‘表名’ ,‘rowkey’ , ‘列族:列’
也可以删除一整行
deleteall ‘表名’,’rowkey;

hbase(main):012:0> scan 'user1'
ROW                                           COLUMN+CELL                                                                                                                         
 1234                                         column=info1:age, timestamp=1509305121972, value=18                                                                                 
 1234                                         column=info1:name, timestamp=1509304915052, value=list                                                                              
 12345                                        column=info1:age, timestamp=1509305156151, value=24                                                                                 
 12345                                        column=info2:name, timestamp=1509305221477, value=lucy                                                                              
2 row(s) in 0.0930 seconds

hbase(main):013:0> delete 'user1','1234','info1:name'
0 row(s) in 0.1160 seconds

hbase(main):014:0> scan 'user1'
ROW                                           COLUMN+CELL                                                                                                                         
 1234                                         column=info1:age, timestamp=1509305121972, value=18                                                                                 
 12345                                        column=info1:age, timestamp=1509305156151, value=24                                                                                 
 12345                                        column=info2:name, timestamp=1509305221477, value=lucy                                                                              
2 row(s) in 0.0430 seconds
hbase(main):018:0> deleteall 'user1','1234'
0 row(s) in 0.0130 seconds

hbase(main):019:0> scan 'user1'
ROW                                           COLUMN+CELL                                                                                                                         
 12345                                        column=info1:age, timestamp=1509305156151, value=24                                                                                 
 12345                                        column=info2:name, timestamp=1509305221477, value=lucy                                                                              
1 row(s) in 0.0570 seconds

10、清空表
truncate ‘表名’

hbase(main):025:0> truncate 'user1'
Truncating 'user1' table (it may take a while):
 - Disabling table...
 - Truncating table...
0 row(s) in 1.5680 seconds

hbase(main):026:0> list
TABLE                                                                                                                                                                             
user1                                                                                                                                                                             
1 row(s) in 0.1010 seconds

=> ["user1"]
hbase(main):027:0> scan 'user1'
ROW                                           COLUMN+CELL                                                                                                                         
0 row(s) in 0.0400 seconds

 

 

 

 

### 头歌大数据平台 HBase 部署与运维指南 #### 1. HBase 的基本配置 在头歌大数据平台上部署 HBase 时,`hbase.rootdir` 是一个非常重要的属性。它指定了 HBase 数据存储的位置,默认情况下通常设置为 HDFS 上的一个路径。例如,在引用中提到的 `hbase.rootdir="hdfs://<name-service-id>:8020/apps/hbase/data"` 表明数据将被存储在一个名为 `<name-service-id>` 的 NameNode 下[^1]。 为了确保高可用性和稳定性,建议使用分布式文件系统(如 HDFS),而不是本地文件系统来保存 HBase 数据。这可以通过编辑 HBase 的配置文件 `hbase-site.xml` 来实现: ```xml <configuration> <property> <name>hbase.rootdir</name> <value>hdfs://namenode-host:8020/user/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> </configuration> ``` #### 2. Hive 和 HBase 的集成 当需要在 HBase 和 Hive 之间建立连接时,可能还需要调整 Hive 的临时目录配置。根据引用描述的内容,可以将 `{system:java.io.tmpdir}` 替换为自定义的 Hive 临时目录位置,比如 `$HIVE_HOME/tmp`。如果该目录不存在,则需手动创建并赋予适当的权限[^2]。 以下是具体操作命令: ```bash mkdir -p $HIVE_HOME/tmp chmod 755 $HIVE_HOME/tmp ``` 接着更新 `hive-site.xml` 文件中的相关内容: ```xml <property> <name>hive.exec.scratchdir</name> <value>/path/to/custom/temp/dir</value> </property> ``` #### 3. 日常运维注意事项 对于已经成功部署好的 HBase 系统来说,日常维护工作主要包括以下几个方面: - **监控性能指标**:通过 JMX 或其他工具定期查看 RegionServer 和 Master 节点的状态以及延迟情况。 - **清理过期数据**:合理设定 TTL 参数以自动删除不再使用的记录;同时也可以利用 Compaction 功能减少磁盘占用率。 - **备份策略制定**:实施周期性的全量/增量备份计划以防止单点故障造成的数据丢失风险。 #### 4. 故障排查技巧 遇到问题时可以从日志入手分析原因。常见的错误类型有网络通信异常、内存溢出等。针对不同类型的报错信息采取相应的解决办法,必要时候重启服务或者重新分配资源配额。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值