Hbase安装和入门

2019-12-17  本文已影响0人  如虎添

来源:千峰科技王从明老师

第一节:Zookeeper的概述

1.1 Zookeeper是什么

1. zookeeper是一个为分布式应用程序提供的一个分布式开源协调服务框架。是Google的Chubby的一个开源实现,是Hadoop和Hbase的重要组件。主要用于解决分布式集群中应用系统的一致性问题。
2. 提供了基于类似Unix系统的目录节点树方式的数据存储。
3. 可用于维护和监控存储的数据的状态的变化,通过监控这些数据状态的变化,从而达到基于数据的集群管理
4. 提供了一组原语(机器指令),提供了java和c语言的接口

1.2 Zookeeper的特点

1. 也是一个分布式集群,一个领导者(leader),多个跟随者(follower).
2. 集群中只要有半数以上的节点存活,Zookeeper集群就能正常服务。
3. 全局数据一致性:每个server保存一份相同的数据副本,client无论连接到哪个server,数据都是一致的。
4. 更新请求按顺序进行:来自同一个client的更新请求按其发送顺序依次执行
5. 数据更新的原子性:一次数据的更新要么成功,要么失败
6. 数据的实时性:在一定时间范围内,client能读到最新数据。
D03-2.1.png

1.3 Zookeeper的数据模型

Zookeeper的数据模型采用的与Unix文件系统类似的层次化的树形结构。我们可以将其理解为一个具有高可用特征的文件系统。这个文件系统中没有文件和目录,而是统一使用"节点"(node)的概念,称之为znode。znode既可以作为保存数据的容器(如同文件),也可以作为保存其他znode的容器(如同目录)。所有的znode构成了一个层次化的命名空间。

D03-2-3.1.png
- Zookeeper 被设计用来实现协调服务(这类服务通常使用小数据文件),而不是用于大容量数据存储,因此一个znode能存储的数据被限制在1MB以内,
- 每个znode都可以通过其路径唯一标识。

1.4 Zookeeper的应用场景

1. 统一配置管理
2. 统一集群管理
3. 服务器节点动态上下线感知
4. 软负载均衡等
5. 分布式锁
6. 分布式队列

第二节:Zookeeper的安装

2.1 环境变量的配置

1. 将zookeeper-3.4.6.tar.gz上传到/opt/software中
2. 解压
   [root@master04 software]$ tar -zxvf zookeeper-3.4.6.tar.gz -C /opt/apps/
3. 更名或者创建软连接
   [root@master04 apps]$ mv zookeeper-3.4.6 zookeeper
4. 配置环境变量
   [root@master04 apps]$ vi  ~/.bash_profile
   ZOOKEEPER_HOME=/opt/apps/zookeeper
   PATH=$ZOOKEEPER_HOME/bin:$PATH
   export  ZOOKEEPER_HOME PATH
5. 使当前会话生效
   [root@master04 apps]$ source ~/.bash_profile

2.2 集群模式的配置

2.2.1 Zookeeper的服务进程布局

master04    QuorumPeerMain
worker1     QuorumPeerMain
worker2     QuorumPeerMain

2.2.2 修改zoo.cfg文件

[root@master04 zookeeper]# mkdir zkData
[root@master04 conf]# cp zoo_samle.cfg zoo.cfg
[root@master04 conf]# vi zoo.cfg
tickTime=2000           #  定义的时间单元(单位毫秒),下面的两个值都是tickTime的倍数。
initLimit=10            #follower连接并同步leader的初始化连接时间。
syncLimit=5             #心跳机制的时间(正常情况下的请求和应答的时间)
dataDir=/opt/apps/zookeeper/zkData       #修改zookeeper的存储路径
clientPort=2181                          #客户端连接服务器的port
server.1=master04:2888:3888              # 添加三个服务器节点
server.2=worker1:2888:3888
server.3=worker2:2888:3888

格式:Server.id=ip:port1:port2
id:     服务器的id号,对应zkData/myid文件内的数字
ip:     服务器的ip地址
port1:  follower与leader交互的port, 数据保证一致性,进行同时时所使用的端口号
port2:  选举期间使用的port

2.2.3 在$ZK_HOME/zkData/目录下添加myid文件,内容为server的id号

[root@master04 conf]# cd ..zkData
[root@master04 conf]# echo "1" >> myid

2.2.4 搭建其他两个server节点的环境

2.2.4.1 使用scp命令将zookeeper环境 复制到worker1和worker2中

[root@master04 conf]$ scp /opt/apps/zookeeper worker1:/opt/apps/
[root@master04 conf]$ scp /opt/apps/zookeeper worker2:/opt/apps/

2.2.4.2 使用scp命令拷贝~/.bash_profile到两台机器上(别忘记source一下)

[root@master04 conf]$ scp ~/.bash_profile worker1:~/    
[root@master04 conf]$ scp ~/.bash_profile worker2:~/    

2.2.4.3 修改slave1的myid文件的内容为2

]$ ssh worker1
]$ echo "2" > /opt/apps/zookeeper/myid

2.2.4.4 修改slave2的myid文件的内容为3

]$ ssh worker2
]$ echo "3" > /opt/apps/zookeeper/myid

2.2.4.5 总结:搭建zookeeper集群模式错误有:

1. 检查所有作为服务器上的防火墙是否关闭  
2. 检查所有作为服务器的机器是否有myid文件    myid文件应该存储在dataDir属性对应的路径内
3. myid文件里的内容只能是数字,不能有空行,空格
4. 检查zoo.cfg文件内是否配置正确
5. 在哪个工作空间里使用zkServer.sh start  ,就会在此目录下生成zookeeper.out日志

2.3 命令的使用

2.3.1 启动客户端的操作:

zkCli.sh [-server] [ ip:port]
20190925110100.jpg

.jpg)

1. ls -- 查看某个目录包含的所有文件  

2. ls2 -- 查看某个目录包含的所有文件,与ls不同的是它查看到time、version等信息

3. create -- 创建znode,并设置初始内容,例如:

   [zk: 127.0.0.1:2181(CONNECTED) 1] create /test "test"   
    Created /test

4. get -- 获取znode的数据

5. set -- 修改znode内容

6. delete -- 删除znode

7. quit -- 退出客户端

8. help -- 帮助命令

2.4 节点类型

2.4.1 节点状态

1. ephemeral(短暂):客户端和服务器断开后,创建的节点自己删除。
2. persistent(持久):客户端和服务器断开后,创建的节点不删除(默认情况)

2.4.2 节点类型

1. persistent               :断开连接后,该节点依旧存在
2. persistent_sequential    :断开连接后,该节点依旧存在。节点名进行顺序编号
3. ephemeral                :断开连接后,该节点自动删除
4. ephemeral_sequential :断开连接后,该节点自动删除。节点名进行顺序编号
45EB0C9D8481D45C05701FF92ABD38EC.png

2.5 Zookeeper的监听原理

D03-4-4.1.png

.png)

2.5.1 图解:

1. 首先要有一个main()线程  
2. 在main线程中创建Zookeeper客户端, 这时就会创建两个线程, 一个负责网络连接通信(connet),一个负责监听(listener)。  
3. 通过connect线程将注册的监听事件发送给Zookeeper。  
4. 在Zookeeper的注册监听器列表中将注册的监听事件添加到列表中。  
5. Zookeeper监听到有数据或路径变化, 就会将这个消息发送给listener线程。  
6. listener线程内部调用了process() 方法。

2.5.2 用途:

1.  监听节点数据的变化:  get /path  watch
2.  监听子节点增减的变化 : ls /path  watch

第三节:Hbase的简介

3.1 Hbase的来源

1. 数据量越来越大,传统的关系型数据库不能满足存储和查询的需求。而hive虽然能够满足存储的要求,但是hive的本质也是利用底层的mr程序,所以读写速度不快。而且hive不能满足非结构化的、半结构化的存储,hive的主要作用是做分析和统计,hive用于存储是无意义的。
2. 起源于Google在2006发表的一篇论文《bigtable》,是对bigtable的开源实现的java版本

3.2 Hbase的定义

Hbase是一个在HDFS上运行的,面向列的,分布式的,hadoop数据库。它是一个NoSql(Not Only SQL,泛指非关系型数据库)数据库,不是传统的关系型数据库。对事物的支持很差。起源于《bigtable》

参考官网: http://hbase.apache.org/

002.png

3.3 Hbase的特征

1. 适合存储超大规模的数据集,可以提供数据的近似实时随机读写
2. 线性扩展性好,高可靠性
3. Hbase的表模型与关系型数据库的表模型不同:
    - Hbase的表没有固定的字段定义;
    - Hbase的表中每行存储的都是一些key-value对
    - Hbase的表中有列簇的划分,用户可以指定将哪些kv插入哪个列簇
    - Hbase的表在物理存储上,是按照列簇来分割的,不同列簇的数据一定存储在不同的文件中
    - Hbase的表中的每一行都固定有一个行键,而且每一行的行键在表中不能重复
4. Hbase中的数据,包含行键,包含key,包含value,都是byte[ ]类型,hbase不负责为用户维护数据类型
5. HBASE对事务的支持很差

参考官网: http://hbase.apache.org/

003.png

3.4 Hbase与Hadoop的关系

hbase的存储依赖于HDFS

3.5 关系型数据库的表模型

我们先来了解以下传统型数据库的存储结构,也就是表模型(参考下图):

- 关系型数据库采用表格的存储方式,数据按行和列进行存储,读取和查询十分方便。
- 关系型数据库存储结构化的数据,存储前必须先定义好表结构,即各个列(字段)。
20190915141355.jpg

关系型数据库的特点:

1. 存储结构:以表格的形式存储结构化的数据,需要事先定义好表的结构(字段名称,字段类型,字段个数),数据存储在行与列的交汇处(称之为Cell单元格)
2. 存储规范:为了充分利用存储空间,尽可能的避免重复(数据冗余),按照数据最小关系表的形式存储,数据清晰,一目了然
3. 查询方式:采用结构化查询语言(SQL)对数据进行管理。
4. 事务性:为了保证数据的商业业务逻辑以及数据安全性,支持ACID的事务特性
5. 读写性能:关系型数据库追求的是数据实时性和数据的一致性,

缺点总结:
1. 一旦数据表中存储数据后,修改表结构变得特别困难。
2. 如果我们想扩展字段时,会对表结构产生影响。
3. 即使某一行中的某个字段没有赋值,也要使用null填充
4. 一旦涉及到多张表,因为数据表存在着复杂的关系,管理非常不方便。  
5. 一旦面对海量数据的处理时,读写性能特别差,尤其在高并发这一块。

3.6 Hbase的表模型

HBase是一个面向列的非关系型数据库,区别于面向行存储的关系型数据库。

1. Hbase表的基本存储单位是一个单元格(Cell),也可以称之为列(Column)。
2. 单元格内存储的是一对key-value键值对。
3. 每一个key-value键值对都有N个时间戳作为版本号(版本数量可以配置)
4. 为了管理不同的key-value,hbase引入了列簇(列族)的概念,
    - 一个表可以有多个列簇(不同列簇的数据一定会存储在不同文件中,即一个列簇对应一个文件)
    - 一个列族下可以有成千上百万个不同的key-value,即列
5. 为了标识某些key-value键值对是某一个事物的,引入了rowkey的概念。rowkey作为唯一标识符,不能重复。
6. 一张表通常由于数据量过大,会被横向切分成若干个region(用rowkey范围标识)
    - 不同region的数据也存储在不同文件中
7. hbase会对插入的数据按顺序存储:(内存)
  - 要点一:首先会按行键排序
  - 要点二:同一行里面的kv会按列簇排序,再按k排序
20190915141505.jpg

3.7 存储结构中的概念

3.7.1 Cell(单元格)

- 关系型数据库中的表模型是由行和列构成,交叉点我们称之为Cell(单元格),用于存储字段(Column)的数据。
- Hbase的表模型与关系型数据库的表模型不同。在单元格上是以 key-value 形式来存储某一个字段(Column)数据的。
- 版本号(Timestamp)每一个单元格都有自己的版本号。
20190915132457.jpg

3.7.2 rowKey(行键)

- 对于每个单元格(列名与值)来说,他属于哪一行记录,尤为重要,因此引入rowkey这个概念,用于区分单元格属于那一行记录,
- 在Hbase中的表中的rowkey不能重复

3.7.3 列族(Column family):

思考一下,面向列的数据库,只需要有列就行了,为什么还要有列族呢?

1. 列族是是多个列的集合。用于统一管理相似的列数据。
2. Hbase会尽量把同一个列族的列放在同一个服务器上,这样可以提高存取效率,可以批量管理有关联的一堆列。
3. 一个列族对应一个目录。不同的列族一定存储在不同的文件中
    强调:业务需求一般也都是查询相关列信息,而非select *
4. hbase在建表时,指定的是列族,而非列,列族的个数有限制(默认是10个)
5. 列族是由多个列组成,列族的成员可以有上百万个。
6. 列族成员的表示方式:ColFamiName:colName

第四节:Hbase的架构

3.1 架构解析:

004.png
1. Client : hbase客户端,
   - 包含访问hbase的接口。比如,linux shell,java api。
   - 除此之外,它会维护缓存来加速访问hbase的速度。比如region的位置信息。
2. Zookeeper :
   - 监控Hmaster的状态,保证有且仅有一个活跃的Hmaster。达到高可用。
   - 它可以存储所有region的寻址入口。如:root表在哪一台服务器上。
   - 实时监控HregionServer的状态,感知HRegionServer的上下线信息,并实时通知给Hmaster。
   - 存储hbase的部分元数据。
3. HMaster :
   - 1. 为HRegionServer分配Region(新建表等)。
   - 2. 负责HRegionServer的负载均衡。
   - 3. 负责Region的重新分配
        - HRegionServer宕机之后的Region分配,
        - HRegion裂变:当Region过大之后的拆分)。
   - 4. Hdfs上的垃圾回收。
   - 5. 处理schema的更新请求
4. HRegionServer :
   - 1. 维护HMaster分配给的Region(管理本机的Region)。
   - 2. 处理client对这些region的读写请求,并和HDFS进行交互(Hlog的写入,HFile的读写)。
   - 3. 负责切分在运行过程中逐渐变大的Region。
5. HLog :
   - 1. 对HBase的操作进行记录,使用WAL写数据,优先写入Hlog.
        比如:put操作时,先写日志再写memstore,这样可以防止数据丢失,即使丢失也可以回滚。
6. HRegion :
   - 1. HBase中分布式存储和负载均衡的最小单元,它是表或者表的一部分。
7. Store :
   - 1. 相当于一个列簇
8. Memstore :
   - 1. 内存缓冲区,用于将数据批量刷新到hdfs中,默认大小为128M
9. HStoreFile :
   - 1. 和HFile概念一样,不过是一个逻辑概念。HBase中的数据是以HFile存储在Hdfs上。

3.2 组件关系:

[图片上传失败...(image-678e6d-1576580797398)][图片上传失败...(image-ed6d79-1576580805101)]

005.png
hmaster:hregionserver=1:*
hregionserver:hregion=1:*
hregionserver:hlog=1:1
hregion:hstore=1:*
store:memstore=1:1
store:storefile=1:*
storefile:hfile=1:1

3.3 总结

rowkey:行键,和mysql的主键同理,不允许重复。
columnfamily: 列簇,列的集合之意。
column:列
timestamp:时间戳,默认显示最新的时间戳,可用于控制k对应的多个版本值,默认查最新的数据
versions':版本号,表示记录数据的版本数量
cell:单元格,kv就是cell

模式:无
数据类型:只存储byte[]
多版本:每个key值都可以有多个版本
列式存储:一个列簇存储到一个目录
稀疏存储:如果一个kv为null,不占用存储空间

第五节:hbase的环境搭建

4.3 完全分布式

4.3.1 环境准备

- jdk 1.7+
- hadoop-2.7.6
- zookeeper-3.4.6
- hbase-1.2.1.bin.tar.gz
说明:
1. HDFS集群需要提前搭建成功,
2. Zookeeper集群需要提前搭建成功。

4.3.2 进程布局

- master04: hmaster         regionserver        zookeeper
- worker1:  backup hmaster  resionserver    zookeeper
- worker2:                  regionserver        zookeeper

4.3.3 安装步骤

1) 配置hbase的环境变量

[root@master04 software]$ tar -zxvf hbase-1.2.1-bin.tar.gz -C /opt/apps/
[root@master04 software]$ cd /opt/apps/
[root@master04 apps]$ mv hbase-1.2.1 hbase
[root@master04 apps]$ vi ~/.bash_profile
.......省略.......
#hbase environment
export HBASE_HOME=/opt/apps/hbase
export PATH=$HBASE_HOME/bin:$PATH

[root@master04 apps]$ source  ~/.bash_profile
[root@master04 apps]$ hbase version

2)配置ssh无密码登陆(一般情况下,都在搭建HDFS时,完成)

3)配置时间同步(<font color='red'>非常重要</font>,也应该在搭建HDFS时,完成,时间差不能超过30s)

4)确认hbase-env.sh禁用内置的zookeeper

[root@master04 apps]$ vi $HBASE_HOME/conf/hbase-env.sh

#找到下面内容,解开注释,添加具体路径

# The java implementation to use.  Java 1.7+ required.
export JAVA_HOME=/opt/apps/jdk

# Tell HBase whether it should manage it's own instance of Zookeeper or not.
export HBASE_MANAGES_ZK=false       #禁止内置zookeeper

5)修改hbase-site.xml

[root@master04 apps]$ vi $HBASE_HOME/conf/hbase-site.sh

<configuration>
    <!-- 修改hbase的存储路径为HDFS内-->
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://master04:8020/hbase</value>
    </property>

    <!-- 开启用hbase集群模式 -->
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>

    <!-- 指定hbase使用的zookeeper集群 -->
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>master04:2181,worker1:2181,worker2:2181</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/opt/apps/zookeeper/zkData</value>
    </property>
</configuration>

6)配置regionserver所在的节点信息

[root@master04 apps]$  vi $HBASE_HOME/conf/regionservers

删除localhost
添加:
    master04
    worker1
    worker2

7)配置备份hmaster: 创建backup-masters文件

[root@master04 apps]$  cd $HBASE_HOME/conf/
[root@master04 conf]$  echo "worker1">> backup-masters

8)将hadoop的core-site.xml和hdfs-site.xml放入conf目录内

[root@master04 apps]$  cd $HADOOP_HOME/etc/hadoop/
[root@master04 hadoop]$  cp core-site.xml hdfs-site.xml $HBASE_HOME/conf/

9)将hbase分发到集群其他相关节点上

[root@master04 apps]$ scp -r /opt/apps/hbase worker1:/opt/apps/
[root@master04 apps]$ scp -r /opt/apps/hbase worker2:/opt/apps/
[root@master04 apps]$ scp ~/.bash_profile worker1:~/
[root@master04 apps]$ scp ~/.bash_profile worker2:~/

说明:
     检查各个节点hbase的软链接情况
     检查各个节点的环境变量配置情况

10)启动集群

1. 启动zookeeper集群
2. 启动hdfs集群
3. 启动hbase服务
   
说明: start-hbase.sh脚本开启进程的顺序
    - 1. 主节点上的hmaster
    - 2. regionserver
    - 3. 备份hmaster

11)<font color='red'>查看webui页面</font>

http://ip:16010

12)<font color='red'>查看zookeeper</font>

第五节:hbase shell命令

5.1 可以查看命令组,或者是命令的帮助信息

hbase(main):000:0> help
hbase(main):000:0> help 'command group'
hbase(main):000:0> help 'command'

5.2 namespace的操作

1) list_namespace:查询所有命名空间

hbase(main):020:0> list_namespace

2) list_namespace_tables: 查询指定命名空间的表

hbase(main):022:0> list_namespace_tables 'myns'  

3) create_namespace: 创建指定的命名空间

hbase(main):023:0> create_namespace 'myns'
hbase(main):024:0> list_namespace

4)describe_namespace: 查询指定命名空间的描述信息(也叫结构信息,属性信息)

hbase(main):025:0> describe_namespace 'ns4'

5) alter_namespace :修改命名空间的描述信息

添加描述信息
hbase(main):026:0> alter_namespace 'ns4', {METHOD => 'set', 'name' => 'michael'}
hbase(main):027:0> describe_namespace 'ns4'

删除描述信息
hbase(main):028:0> alter_namespace 'ns4', {METHOD => 'unset', NAME => 'name'}
hbase(main):029:0> describe_namespace 'ns4'

6) drop_namespace:删除指定命名空间

hbase(main):030:0> drop_namespace 'ns4'
hbase(main):031:0> list_namespace

5.3 Table的DDL操作

1) 建表:必须至少指定一个列族名

- 直接创建
  hbase(main):034:0> create 'ns3:emp','base_info'

- 使用变量
  hbase(main):036:0> t = create 'ns3:employee','base_info'

- 创建多个列族名
  hbase(main):040:0> create 'ns3:emp1','f1','f2','f3'

- 创建表时同时指定列族属性
  hbase(main):043:0> create 'ns3:emp2',
  {NAME=>'f1',VERSIONS=>3,TTL=>2592000,BLOCKCACHE=>TRUE}

- 创建表同时指定分片
  hbase(main):050:0> create 'ns3:emp3', 'f1', SPLITS => ['10', '20', '30', '40']

2)查看表属性信息

hbase(main):051:0> describe 'ns3:emp1'

3) 列出所有的表

hbase(main):052:0> list

4) 修改表属性

hbase(main):062:0> alter 'ns3:emp3',{NAME=>'f1',BLOOMFILTER=>'rowcol',VERSIONS=>5,TTL=>2592000}

hbase(main):063:0> describe 'ns3:emp3'

5) 追加列族:

- 方式1
  hbase(main):064:0> alter 'ns3:emp3',{NAME=>'f2'}

- 方式2
  hbase(main):066:0> alter 'ns3:emp3','f3'

- 方式3:
  hbase(main):070:0> alter 'ns3:emp3','f5','f6'

6) 删除列族

hbase(main):075:0> alter 'ns3:emp3','delete'=>'f6'

7) 删除表

先禁用,再删除
hbase(main):076:0> disable 'ns3:emp3'
hbase(main):078:0> drop 'ns3:emp3'

5.4 Table的DQL操作

1) 插入数据:put只能插入一个单元格

指定 表名、行键、列名、列值、[时间戳]

hbase(main):081:0> put 'ns3:emp','rk0001','base_info:name','smith'
hbase(main):084:0> put 'ns3:emp','rk0001','base_info:empno','7369',1990000000

2) 使用scan查询数据

1. 浏览表所有数据:已经排过序,先按rowkey,再按列族名、然后按列名

   hbase(main):085:0> scan 'ns3:emp' 

2. 指定版本数量进行浏览

   hbase(main):110:0> scan 'ns3:emp',{VERSIONS=>3}
   hbase(main):110:0> scan 'ns3:emp',VERSIONS=>3

3. 指定列进行浏览

   hbase(main):122:0> scan 'ns3:emp',{COLUMNS=>'base_info:empno'}
   scan 'ns3:emp',{COLUMNS=>['base_info:empno','extra_info:province']} 

4. 限定行范围进行浏览(分页查询)

   hbase(main):137:0> scan 'ns3:emp',
   {COLUMNS=>'base_info:empno',LIMIT=>5,STARTROW=>'rk0001'}
   
   hbase(main):136:0> scan 'ns3:emp',{LIMIT=>5,STARTROW=>'rk0001'}

3) 使用get进行指定行浏览该行内的数据

1. 查询指定行 hbase(main):140:0> get 'ns3:emp','rk0001'

2. 查询指定行中的列

   hbase(main):155:0> get 'ns3:emp','rk0001','base_info:empno'
   hbase(main):155:0> get 'ns3:emp','rk0001',{COLUMN=>'base_info:empno'}
   hbase(main):157:0> get 'ns3:emp','rk0001','base_info:name','extra_info:province'    
   hbase(main):145:0> get 'ns3:emp','rk0001',{COLUMN=>
   ['base_info:empno','extra_info:province']}

3. 指定版本号

   hbase(main):146:0> get 'ns3:emp','rk0001',{COLUMN=>['base_info:empno','extra_info:province'],VERSIONS=>3}

4. 指定时间戳的范围

   hbase(main):152:0> get 'ns3:emp','rk0001',{TIMERANGE=>[1568619337238,1568619348753]}

4) 更新数据

1. 使用put

   hbase(main):159:0> put 'ns3:emp','rk0001','base_info:name','smith'

2. 使用incr,进行自动赋值

   incr 'ns3:emp','rk0001','base_info:age'

5) 删除数据:

1. 删除某行内的指定key-value对

   hbase(main):001:0> delete 'ns3:emp','rk0001','base_info:name'

2. 删除指定版本号的单元格

   hbase(main):008:0> delete 'ns3:emp','rk0001','base_info:empno',1568619337238

3. 删除指定行

   hbase(main):011:0> deleteall 'ns3:emp','rk0008'

6) 判断表是否存储

hbase(main):013:0> exists 'ns3:emp'

7) 禁用表和启用表

hbase(main):014:0> disable 'ns3:emp'
hbase(main):016:0> enable 'ns3:emp'

8) 统计表行数

hbase(main):018:0> count 'ns3:emp'

9) 清空表数据

hbase(main):019:0> truncate 'ns3:emp'
上一篇下一篇

猜你喜欢

热点阅读