大数据技术之HBase 快速入门(2)

目录

[HBase 安装部署](#HBase 安装部署)

[Zookeeper 正常部署](#Zookeeper 正常部署)

[Hadoop 正常部署](#Hadoop 正常部署)

[HBase 的解压](#HBase 的解压)

[HBase 的配置文件](#HBase 的配置文件)

[HBase 远程发送到其他集群](#HBase 远程发送到其他集群)

[HBase 服务的启动](#HBase 服务的启动)

[查看 HBase 页面](#查看 HBase 页面)

高可用(可选)

[HBase Shell 操作](#HBase Shell 操作)

基本操作

Namespace

DDL

DML


HBase 安装部署

Zookeeper 正常部署

首先保证 Zookeeper 集群的正常部署,并启动之。

bash 复制代码
[lzl@hadoop12 zookeeper-3.5.7]$ bin/zkServer.sh start
[lzl@hadoop13 zookeeper-3.5.7]$ bin/zkServer.sh start
[lzl@hadoop14 zookeeper-3.5.7]$ bin/zkServer.sh start

Hadoop 正常部署

Hadoop 集群的正常部署并启动。

bash 复制代码
[lzl@hadoop12 hadoop-3.1.3]$ sbin/start-dfs.sh
[lzl@hadoop13 hadoop-3.1.3]$ sbin/start-yarn.sh

HBase 的解压

  1. 解压 Hbase 到指定目录

    bash 复制代码
    [lzl@hadoop12 software]$ tar -zxvf hbase-2.4.11-bin.tar.gz -C /opt/module/
    [lzl@hadoop12 software]$ mv /opt/module/hbase-2.4.11 /opt/module/hbase
  2. 配置环境变量

    bash 复制代码
    [lzl@hadoop12 ~]$ sudo vim /etc/profile.d/my_env.sh

    添加

    bash 复制代码
    # HBASE_HOME
    export HBASE_HOME=/opt/module/hbase
    export PATH=$PATH:$HBASE_HOME/bin
  3. 使用 source 让配置的环境变量生效

    bash 复制代码
    [lzl@hadoop12 module]$ source /etc/profile.d/my_env.sh

HBase 的配置文件

  1. hbase-env.sh 修改内容

    bash 复制代码
    export HBASE_MANAGES_ZK=false
  2. hbase-site.xml 修改内容

    bash 复制代码
    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
      <property>
        <name>hbase.zookeeper.quorum</name>
        <value>hadoop12,hadoop13,hadoop14</value>
        <description>The directory shared by RegionServers.</description>
      </property>
      <!-- <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/export/zookeeper</value>
        <description>记得修改 ZK 的配置文件
          ZK 的信息不能保存到临时文件夹
        </description>
      </property> -->
      <property>
        <name>hbase.rootdir</name>
        <value>hdfs://hadoop12:8020/hbase</value>
        <description>The directory shared by RegionServers.</description>
      </property>
      <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
      </property>
    </configuration>
  3. regionservers 文件

    bash 复制代码
    hadoop12
    hadoop13
    hadoop14
  4. 解决 HBase 和 Hadoop 的 log4j 兼容性问题

    bash 复制代码
    [lzl@hadoop12 hbase]$ mv /opt/module/hbase/lib/client-facing-thirdparty/slf4j-reload4j-1.7.33.jar /opt/module/hbase/lib/client-facing-thirdparty/slf4j-reload4j-1.7.33.jar.bak

HBase 远程发送到其他集群

bash 复制代码
[lzl@hadoop12 module]$ xsync hbase/

HBase 服务的启动

  1. 单点启动

    bash 复制代码
    [lzl@hadoop12 hbase]$ bin/hbase-daemon.sh start master
    [lzl@hadoop12 hbase]$ bin/hbase-daemon.sh start regionserver
  2. 群启

    bash 复制代码
    [lzl@hadoop12 hbase]$ bin/start-hbase.sh
  3. 对应的停止服务

    bash 复制代码
    [lzl@hadoop12 hbase]$ bin/stop-hbase.sh

查看 HBase 页面

启动成功后,可以通过"host:port"的方式来访问 HBase 管理页面,例如:

bash 复制代码
http://hadoop12:16010

高可用(可选)

在 HBase 中 HMaster 负责监控 HRegionServer 的生命周期,均衡 RegionServer 的负载,如果 HMaster 挂掉了,那么整个 HBase 集群将陷入不健康的状态,并且此时的工作状态并不会维持太久。所以 HBase 支持对 HMaster 的高可用配置。

  1. 关闭 HBase 集群(如果没有开启则跳过此步)

    bash 复制代码
    [lzl@hadoop12 hbase]$ bin/stop-hbase.sh
  2. conf 目录下创建 backup-masters 文件

    bash 复制代码
    [lzl@hadoop12 hbase]$ touch conf/backup-masters
  3. backup-masters 文件中配置高可用 HMaster 节点

    bash 复制代码
    [lzl@hadoop12 hbase]$ echo hadoop13 > conf/backup-masters
  4. 将整个 conf 目录 scp 到其他节点

    bash 复制代码
    [lzl@hadoop12 hbase]$ xsync conf
    
    #集群分发脚本如下
    #!/bin/bash
    #1. 判断参数个数
    if [ $# -lt 1 ]
    then
      echo Not Enough Arguement!
      exit;
    fi
    #2. 遍历集群所有机器
    for host in hadoop12 hadoop13 hadoop14
    do
      echo ====================  $host  ====================
      #3. 遍历所有目录,挨个发送
      for file in $@
      do
        #4 判断文件是否存在
        if [ -e $file ]
        then
          #5. 获取父目录
          pdir=$(cd -P $(dirname $file); pwd)
          #6. 获取当前文件的名称
          fname=$(basename $file)
          ssh $host "mkdir -p $pdir"
          rsync -av $pdir/$fname $host:$pdir
        else
          echo $file does not exists!
        fi
      done
    done
  5. 重启 HBase, 打开页面测试查看

    bash 复制代码
    http://hadoop12:16010

HBase Shell 操作

基本操作

  1. 进入 HBase 客户端命令行

    bash 复制代码
    [lzl@hadoop12 hbase]$ bin/hbase shell
  2. 查看帮助命令

    bash 复制代码
    hbase:001:0> help

Namespace

  1. 创建命名空间

    bash 复制代码
    hbase:002:0> help 'create_namespace'
  2. 创建命名空间 bigdata

    bash 复制代码
    hbase:003:0> create_namespace 'bigdata'
  3. 查看所有的命名空间

    bash 复制代码
    hbase:004:0> list_namespace

DDL

  1. 创建表

    bash 复制代码
    hbase:005:0> create 'bigdata:student', {NAME => 'info', VERSIONS => 5}, {NAME => 'msg'}

    如果创建表格只有一个列族,没有列族属性,可以简写。

    bash 复制代码
    hbase:009:0> create 'student1','info'
  2. 查看表

    bash 复制代码
    hbase:013:0> list

    查看一个表的详情

    bash 复制代码
    hbase:014:0> describe 'student1'
  3. 修改表

    bash 复制代码
    hbase:015:0> alter 'student1', {NAME => 'f1', VERSIONS => 3}

    删除信息使用特殊的语法

    bash 复制代码
    hbase:015:0> alter 'student1', NAME => 'f1', METHOD => 'delete'
    hbase:016:0> alter 'student1', 'delete' => 'f1'
  4. 删除表

    bash 复制代码
    hbase:017:0> disable 'student1'
    hbase:018:0> drop 'student1'

DML

  1. 写入数据

    bash 复制代码
    hbase:019:0> put 'bigdata:student','1001','info:name','zhangsan'
    hbase:020:0> put 'bigdata:student','1001','info:name','lisi'
    hbase:021:0> put 'bigdata:student','1001','info:age','18'

    如果重复写入相同 rowKey,相同列的数据,会写入多个版本进行覆盖。

  2. 读取数据

    bash 复制代码
    hbase:022:0> get 'bigdata:student','1001'
    hbase:023:0> get 'bigdata:student','1001' , {COLUMN => 'info:name'}

    修改读取 cell 的版本数,默认读取一个。最多能够读取当前列族设置的维护版本数。

    bash 复制代码
    hbase:024:0>get 'bigdata:student','1001' , {COLUMN => 'info:name', VERSIONS => 6}

    scan 是扫描数据,能够读取多行数据,不建议扫描过多的数据,推荐使用 startRowstopRow 来控制读取的数据,默认范围左闭右开。

    bash 复制代码
    hbase:025:0> scan 'bigdata:student',{STARTROW => '1001',STOPROW => '1002'}
  3. 删除数据

    bash 复制代码
    hbase:026:0> delete 'bigdata:student','1001','info:name'

    deleteall 表示删除所有版本的数据,即为当前行当前列的多个 cell。(执行命令会标记数据为要删除,不会直接将数据彻底删除,删除数据只在特定时期清理磁盘时进行)

    bash 复制代码
    hbase:027:0> deleteall 'bigdata:student','1001','info:name'
相关推荐
2401_858120264 小时前
探索Oracle数据库的多租户特性:架构、优势与实践
数据库·oracle·架构
pokemon..5 小时前
MySQL主从复制与读写分离
数据库·mysql
码农鑫哥的日常5 小时前
MySQL高可用配置及故障切换
数据库·mysql
longlongqin5 小时前
redis的 stream数据类型实现 消息队列?
数据库·redis·缓存
一只积极向上的小咸鱼5 小时前
git常用命令总结
大数据·git·elasticsearch
hankl19905 小时前
spark里使用geohash处理数据之线程安全问题
大数据·分布式·spark
wrx繁星点点5 小时前
多个线程同时写入一个共享变量,会发生什么问题?如何解决?
java·开发语言·数据库
鲨鱼辣椒ii6 小时前
sql中索引查看是否生效
数据库·sql
檀越剑指大厂6 小时前
【Elasticsearch系列】Elasticsearch中的分页
大数据·elasticsearch·搜索引擎