HBased的原理

一、什么是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

  1. 改名

mv hbase-1.4.0 hbase

  1. 配置环境,vi .bashrc

export HBASE_HOME=/usr/local/hbase

export PATH=PATH:HBASE_HOME/bin

  1. 环境变量生效

source .bashrc

  1. 测试

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解密

相关推荐
Raas1002 小时前
MAI Gateway(魔芋企业级AI网关)技术揭秘:AI网关支持哪些模型?从原理到落地
大数据·人工智能·网关·gateway·mai gateway·企业级产品
YangYang9YangYan4 小时前
2026 校招商品分析岗位 JD 拆解,核心指标、工具与面试考点
大数据·数据库·数据分析
大大大大晴天5 小时前
OpenMetadata VS DataHub VS Atlas VS Gravitino
大数据
Qyr998 小时前
2026全球汽车碳刷行业发展全景分析报告
大数据
蓝速科技9 小时前
便民服务大厅 AI 数字人一体机场景适配与落地指南丨蓝速科技
大数据·网络·数据结构·人工智能·自然语言处理·数据分析·运维开发
精益数智工坊9 小时前
云计算环境数据怎么同步?云计算集成方案有哪些?
大数据·人工智能·数据挖掘·数据可视化
huashengzsj10 小时前
什么是DMS经销商管理系统?国内经销商管理系统有哪些品牌
大数据
IT毕设梦工厂11 小时前
计算机毕业设计选题推荐:基于大数据的草鱼价格分析与可视化|毕业设计选题|计算机毕设|选题推荐|毕设指导|项目定制|源码|高质量项目
大数据·hadoop·python·数据挖掘·数据分析·课程设计·大数据毕设项目
辛迪聊物业数字化11 小时前
智慧社区物业管理软件新手部署与实操指南
大数据·php
字节跳动数据平台11 小时前
模型再强,为什么 Demo 还是进不了生产?
大数据