当前位置: 首页 > article >正文

HBase的原理

一、什么是HBase

HBase是一个分布式,版本化,面向列的数据库,依赖Hadoop和Zookeeper

(1)HBase的优点

提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统

 (2) HBase 表的特性

Region包含多行

列族包含多个列

Region Server管理一定数量的Region

如果一个Region Server宕机了,Master节点会重新将其负责的Region分配给其他Region Server

Master和Region Server之间的状态同步,还有Master HA,都借助于Zookeeper;

二、HBase的安装

1. 上传hbase-1.4.0-bin.tar.gz

2. 解压

tar xvf hbase-1.4.0-bin.tar.gz

3. 改名

mv  hbase-1.4.0 hbase

4. 配置环境,vi .bashrc

export HBASE_HOME=/usr/local/hbase

export PATH=$PATH:$HBASE_HOME/bin

5. 环境变量生效

source .bashrc

6. 测试

hbase version

三 配置HBase

7 配置sh文件

1. 修改conf/hbase-env.sh

export JAVA_HOME=/usr/java/default

export HBASE_MANAGES_ZK=true

8  配置XML 文件

编辑conf/hbase-site.xml

<configuration>

    <property>

        <name>hbase.rootdir</name> <!-- hbase存放数据目录 -->

        <value>hdfs://hadoop-ip-address:9000/opt/hbase/hbase_db</value>

        <!-- 端口要和Hadoop的fs.defaultFS端口一致-->

    </property>

    <property>

        <name>hbase.master</name>

        <value>60000</value>

    </property>

    <!-- 开启集群运行方式 -->

    <property>

        <name>hbase.cluster.distributed</name><!-- 是否分布式部署 -->

        <value>true</value>

    </property>

    <property>

        <name>hbase.tmp.dir</name>

        <value>/opt/hbase/tmp</value>

    </property>

    <property>

        <name>hbase.zookeeper.quorum</name> <!-- list of  zookeeper

        <value>node1,node2,node3</value>-->

       <value>node1</value>

    </property>

</configuration>

9 复制hadoop的配置文件

cd /usr/local/hbase/conf

cp /usr/local/hadoop/etc/hadoop/core-site.xml .

cp /usr/local/hadoop/etc/hadoop/hdfs-site.xml .

10 编辑regionservers文件

# 配置多个regionserver

node2

node3

11、配置conf/backup-masters

node01

node02

13、启动

# 依赖hdfs

start-dfs.sh

start-hbase.sh

启动HBase集群:

bin/start-hbase.sh

单独启动一个HMaster进程:

bin/hbase-daemon.sh start master

单独停止一个HMaster进程:

bin/hbase-daemon.sh stop master

单独启动一个HRegionServer进程:

bin/hbase-daemon.sh start regionserver

单独停止一个HRegionServer进程:

bin/hbase-daemon.sh stop regionserver

四、启动客户端 HBase shell

显示hbase中的表

list

创建user表,包含info、data两个列族

create 'user', 'info1', 'data1'

create 'user', {NAME => 'info', VERSIONS => '3'}

修改表结构

alter 'user', NAME=>'info', VERSIONS=>'6'

向user表中插入信息,row key为rk0001,列族info中添加name列标示符,值为zhangsan

put 'user', 'rk0001', 'info:name', 'zhangsan'

向user表中插入信息,row key为rk0001,列族info中添加gender列标示符,值为female

put 'user', 'rk0001', 'info:gender', 'female'

向user表中插入信息,row key为rk0001,列族info中添加age列标示符,值为20

put 'user', 'rk0001', 'info:age', 20

向user表中插入信息,row key为rk0001,列族data中添加pic列标示符,值为picture

put 'user', 'rk0001', 'data:pic', 'picture'

获取user表中row key为rk0001的所有信息

get 'user', 'rk0001'

获取user表中row key为rk0001,info列族的所有信息

get 'user', 'rk0001', 'info'

获取user表中row key为rk0001,info列族的name、age列标示符的信息

get 'user', 'rk0001', 'info:name', 'info:age'

获取user表中row key为rk0001,info、data列族的信息

get 'user', 'rk0001', 'info', 'data'

get 'user', 'rk0001', {COLUMN => ['info', 'data']}

get 'user', 'rk0001', {COLUMN => ['info:name', 'data:pic']}

获取user表中row key为rk0001,列族为info,版本号最新5个的信息

get 'people', 'rk0002', {COLUMN => 'info', VERSIONS => 2}

get 'user', 'rk0001', {COLUMN => 'info:name', VERSIONS => 5}

get 'user', 'rk0001', {COLUMN => 'info:name', VERSIONS => 5, TIMERANGE => [1392368783980, 1392380169184]}

获取user表中row key为rk0001,cell的值为zhangsan的信息

get 'people', 'rk0001', {FILTER => "ValueFilter(=, 'binary:图片')"}

获取user表中row key为rk0001,列标示符中含有a的信息

get 'people', 'rk0001', {FILTER => "(QualifierFilter(=,'substring:a'))"}

put 'user', 'rk0002', 'info:name', 'fanbingbing'

put 'user', 'rk0002', 'info:gender', 'female'

put 'user', 'rk0002', 'info:nationality', '中国'

get 'user', 'rk0002', {FILTER => "ValueFilter(=, 'binary:中国')"}

查询user表中的所有信息

scan 'user'

查询user表中列族为info的信息

scan 'people', {COLUMNS => 'info'}

scan 'user', {COLUMNS => 'info', RAW => true, VERSIONS => 5}

scan 'persion', {COLUMNS => 'info', RAW => true, VERSIONS => 3}

查询user表中列族为info和data的信息

scan 'user', {COLUMNS => ['info', 'data']}

scan 'user', {COLUMNS => ['info:name', 'data:pic']}

查询user表中列族为info、列标示符为name的信息

scan 'user', {COLUMNS => 'info:name'}

查询user表中列族为info、列标示符为name的信息,并且版本最新的5个

scan 'user', {COLUMNS => 'info:name', VERSIONS => 5}

查询user表中列族为info和data且列标示符中含有a字符的信息

scan 'people', {COLUMNS => ['info', 'data'], FILTER => "(QualifierFilter(=,'substring:a'))"}

查询user表中列族为info,rk范围是[rk0001, rk0003)的数据

scan 'people', {COLUMNS => 'info', STARTROW => 'rk0001', ENDROW => 'rk0003'}

查询user表中row key以rk字符开头的

scan 'user',{FILTER=>"PrefixFilter('rk')"}

查询user表中指定范围的数据

scan 'user', {TIMERANGE => [1392368783980, 1392380169184]}

删除数据

删除user表row key为rk0001,列标示符为info:name的数据

delete 'people', 'rk0001', 'info:name'

删除user表row key为rk0001,列标示符为info:name,timestamp为1392383705316的数据

delete 'user', 'rk0001', 'info:name', 1392383705316

清空user表中的数据

truncate 'people'

五、访问管理页面

http://node1:16010

六、启动rest服务

hbase-daemon.sh start rest

http://node02:8080/words/10000 Accept:application/json 结果需要Base64解密


http://www.kler.cn/a/518772.html

相关文章:

  • 万字长文总结前端开发知识---JavaScriptVue3Axios
  • Flink把kafa数据写入Doris的N种方法及对比。
  • GCC之编译(8)AR打包命令
  • OLMo:开启AI研究新纪元的开放利器
  • Git 如何将旧仓库迁移新仓库中,但不显示旧的提交记录
  • ThinkPhp伪静态设置后,访问静态资源也提示找不到Controller
  • c#使用Confluent.Kafka实现生产者发送消息至kafka(远程连接kafka发送消息超时的解决 Local:Message timed out)
  • 9.像素概念
  • 利用机器学习创建基于位置的推荐程序
  • 自定义数据集 使用tensorflow框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测
  • 【Linux】命令为桥,存在为岸,穿越虚拟世界的哲学之道
  • adc和dma的使用原理和过程
  • L9305驱动组件接口TESSY测试
  • OpenFGA
  • 小识JVM堆内存管理的优化机制TLAB
  • 基于模糊PID的孵化箱温度控制系统(论文+源码)
  • vue3 vue2区别
  • C#常考随笔1:const和readonly有什么区别?
  • [笔记] 极狐GitLab实例 : 手动备份步骤总结
  • Windows11离线安装wsl2(适用于 Linux 的 Windows 子系统)和Ubuntu
  • Android Toast 系统切换多语言显示
  • 当AI风暴来袭:中美科技商业版图的迥异走向
  • MyBatis 写法
  • 力扣算法题——1089.复写零【系统讲解】
  • 回归测试中的自动化与手动测试平衡
  • 大数运算之C语言实现