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

相关推荐
数字化老赵2 小时前
设备管理三好、四会、五律、五定,都是啥?
大数据·设备管理
智讯天下4 小时前
垂类数据基础设施:骨码智元GOMAX LAB如何重塑AI后训练数据供给体系
大数据·人工智能
麒麟信安4 小时前
第三届行业数智化发展峰会召开,麒麟信安核心内网虚拟化方案备受关注
大数据·麒麟信安·企业资讯
延凡科技4 小时前
延凡科技IoT设备管理监控系统:赋能工业智能制造
大数据·科技·物联网·制造
塔能物联运维4 小时前
液冷数据中心市场突破900亿元,两相液冷成AI算力散热新方向
大数据·人工智能
GOWIN革文品牌咨询4 小时前
受众、内容、形式、渠道:B2B营销四象限的结构模型
大数据·人工智能
天国梦5 小时前
AI时代营销全链路落地实战指南
大数据·人工智能
石像鬼₧魂石5 小时前
【Y2Ksoft】智慧农场管理平台 —— 航拍实景 · 物联网可视化 · 单文件HTML开箱即用
大数据·物联网·数据库架构
其实防守也摸鱼5 小时前
渗透--损坏的对象级别鉴权漏洞(Broken Object Level Authorization, BOLA)
大数据·网络·数据库·学习·tcp/ip·安全·安全威胁分析
chatexcel7 小时前
不用写 SQL,如何用AI直连数据库生成可刷新的数据看板?ChatExcel的一种实践
大数据·数据库·人工智能·sql·数据分析·excel