美文网首页
Hbase安装和入门

Hbase安装和入门

作者: 如虎添 | 来源:发表于2019-12-17 19:19 被阅读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'
    

    相关文章

      网友评论

          本文标题:Hbase安装和入门

          本文链接:https://www.haomeiwen.com/subject/rxrenctx.html