• HBase集群部署与基础命令


    HBase 集群部署

    安装 hbase 之前需要先搭建好 hadoop 集群和 zookeeper 集群。hadoop 集群搭建可以参考:https://www.cnblogs.com/javammc/p/16545146.html

    1. 下载安装包 http://archive.apache.org/dist/hbase/1.3.1/
    1. 解压到安装目录
    tar -zxvf hbase-1.3.1-bin.tar.gz
    

    我解压到了/opt/lagou/servers/hbase-1.3.1 目录。

    1. 修改配置文件
    • 把 hadoop 中配置的 core-site.xml、hdfs-site.xml 拷贝到 hbase 下的 conf 目录下
    ln -s /opt/lagou/servers/hadoop-2.9.2/etc/hadoop/core-site.xml /opt/lagou/servers/hbase-1.3.1/conf/core-site.xml
    ln -s /opt/lagou/servers/hadoop-2.9.2/etc/hadoop/hdfs-site.xml /opt/lagou/servers/hbase-1.3.1/conf/hdfs-site.xml
    
    • 修改 hbase-env.sh
    #添加java环境变量
    export JAVA_HOME=/opt/module/jdk1.8.0_231
    #指定使用外部的zk集群
    export HBASE_MANAGES_ZK=FALSE
    
    • 修改 hbase-site.xml
    <configuration>
     <!-- 指定hbase在HDFS上存储的路径 -->
       <property>
           <name>hbase.rootdir</name>
           <value>hdfs://linux2:9000/hbase</value>
       </property>
           <!-- 指定hbase是分布式的 -->
       <property>
           <name>hbase.cluster.distributed</name>
           <value>true</value>
       </property>
           <!-- 指定zk的地址,多个用“,”分割 -->
       <property>
           <name>hbase.zookeeper.quorum</name>
           <value>linux2:2181,linux3:2181,linux4:2181</value>
       </property>
    </configuration>
    
    • 修改 regionservers
    linux2
    linux3
    linux4
    
    • 在 hbase 的 conf 目录下创建文件 backup-masters

    内容如下:

    linux2
    
    • 在每个节点上配置环境变量,vi /etc/profile
    export HBASE_HOME=/opt/lagou/servers/hbase-1.3.1
    export PATH=$PATH:$HBASE_HOME/bin
    

    执行命令使配置生效

    source /etc/profile
    
    • 将 hbase-1.3.1 目录分发到其他 2 个节点
    scp -r hbase-1.3.1 linux3:/opt/lagou/servers/
    scp -r hbase-1.3.1 linux4:/opt/lagou/servers/
    
    1. 启动集群
    #启动命令
    start-hbase.sh
    #停止命令
    stop-hbase.sh
    
    1. 启动完成后,可以访问地址:

      HMaster 的 ip:16010

    HBase shell 基本操作

    1. 进入 HBase 客户端命令操作界面
    hbase shell
    

    shell 命令行里如果输错了命令,删除需要使用 Ctrl+Backspace

    1. 查看帮助命令
    help
    
    1. 查看当前数据库里有哪些表
    list
    
    1. 创建一个 user 表,包含 user_info、extra_info 两个列族
    create 'user','base_info','extra_info'
    #或者指定版本
    create 'user2',{NAME => 'base_info',VERSIONS => '3'},{NAME => 'extra_info',VERSIONS => '3'}
    
    1. 添加数据
    • 向 user 表中 row key 为 rk1,列族 base_info 的 name 列上插入值'xiaowang'
    put 'user','rk1','base_info:name','xiaowang'
    
    • 向 user 表中 row key 为 rk1,列族为 base_info 的 age 列插入值 30
     put 'user','rk1','base_info:age',30
    
    • 向 user 表中 row key 为 rk1,列族为 extra_info 的 address 列插入值'shanghai'
    put 'user','rk1','extra_info:address','shanghai'
    
    1. 查询数据
    • 查询 user 表中 row key 为 rk1 的所有信息
    get 'user','rk1'
    
    • 查询 user 表中 row key 为 rk1 的 base_info 列族的所有信息
    get 'user','rk1','base_info'
    
    • 查询 user 表中指定列族,指定字段的值
    get 'user','rk1','base_info:name','base_info:age'
    
    • 查询 user 表中多个列族的信息
    get 'user','rk1','base_info','extra_info'
    
    
    • 根据 rowkey 和列值进行查询
    get 'user','rk1',{FILTER => "ValueFilter (=,'binary:shanghai')"}
    
    • 根据 row key 和列名进行模糊查询

    查询出列名:address

    get 'user','rk1',{FILTER => "QualifierFilter (=,'substring:add')"}
    
    • 查询表中所有数据
    scan 'user'
    
    • 查询表中列族为 base_info 的信息
    scan 'user',{COLUMNS => 'base_info'}
    
    # Scan时可以设置是否开启Raw模式,开启Raw模式会返回包括已添加删除标记但是未实际删除的数据
    # VERSIONS指定查询的最大版本数
    scan 'user',{COLUMNS => 'base_info',RAW => true, VERSIONS=> 3}
    
    • 查询 user 表中列族为 base_info、extra_info,且列名中含 add 字符的数据
     scan 'user',{COLUMNS => ['base_info','extra_info'],FILTER => "(QualifierFilter(=,'substring:add'))"}
    
    • rowkey 的范围值查询
    scan 'user',{COLUMNS => 'base_info',STARTROW => 'rk1',ENDROW => 'rk3'}
    
    • 指定 rowkey 模糊查询

    查询 user 表中 row key 以 rk 开头的数据

    scan 'user' ,{FILTER =>"PrefixFilter('rk')"}
    
    1. 更新数据

    更新操作同插入操作一模一样,只不过有数据就更新,没数据就添加

    • 更新数据值

    将 user 表中 rowkey 为 rk1 的 base_info 列族下的 name 修改为 xiaoliao

    put 'user','rk1','base_info:name','xiaoliao'
    
    1. 删除数据和表
    • 指定 rowkey 以及列名进行删除
    delete 'user','rk2','base_info:name'
    
    • 指定 rowkey 以及列名、时间戳进行删除
    delete 'user','rk2','base_info:age',1662245345710
    
    • 删除列族
    alter 'user','delete' => 'extra_info'
    
    • 清空表数据
    truncate 'user'
    
    • 删除表
    #先disable,再drop,否则会报错
    disable 'user'
    drop 'user'
    
  • 相关阅读:
    safenet 超级狗 java调用 小计
    解析Javascript中大括号“{}”的多义性
    openlayers研究(一) 初始化流程
    计算球面两点间距离实现Vincenty+Haversine
    搭建高可用mongodb集群(四)—— 分片
    搭建高可用mongodb集群(三)—— 深入副本集内部机制
    搭建高可用mongodb集群(二)—— 副本集
    C# 7.1 的 Async Main()
    深入理解 C# 7.1 提供的 async 非同步 Main() 方法
    使用Blazor Server 线路处理程序 (circuit handler)跟踪打开的SignalR连接
  • 原文地址:https://www.cnblogs.com/javammc/p/16655312.html
Copyright © 2020-2023  润新知