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

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

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/514745.html

相关文章:

  • 鸿蒙参考文档和问题记录
  • 如何实现网页不用刷新也能更新
  • 步入响应式编程篇(二)之Reactor API
  • npm操作大全:从入门到精通
  • 【深度学习项目】语义分割-DeepLab网络(DeepLabV3介绍、基于Pytorch实现DeepLabV3网络)
  • 高并发内存池_各层级的框架设计及ThreadCache(线程缓存)申请内存设计
  • HDBaseT和KVM 和POE是怎么融合在一块的
  • 国产编辑器EverEdit - 文件列表
  • 08-Elasticsearch
  • 区块链的数学基础:核心原理与应用解析
  • ImportError: cannot import name ‘datapoints‘ from ‘torchvision‘
  • # [Unity]【游戏开发】 脚本生命周期与常见事件方法
  • 局域网中 Windows 与 Mac 互相远程连接的最佳方案
  • 网络编程-网络原理HTTP初识
  • 【Python】笔试面试题之生成器、闭包、字典
  • Java设计模式 九 桥接模式 (Bridge Pattern)
  • 【软件测试项目实战 】淘宝网:商品购买功能测试
  • Spring Boot 使用 Micrometer 集成 Prometheus 监控 Java 应用性能
  • R 语言科研绘图 --- 散点图-汇总
  • C++:将字符数组rkpryyrag,每个字母转换为其前面第13个字母后输出,如果超过a则从z再继续接着数。例如:b前面第1个字母是a。a前面第3个字母是x。
  • 【华为路由的arp配置】
  • 利用 SoybeanAdmin 实现前后端分离的企业级管理系统
  • 隐私保护+性能优化,RyTuneX 让你的电脑更快更安全
  • 麒麟操作系统服务架构保姆级教程(十三)tomcat环境安装以及LNMT架构
  • 【Qt】窗口
  • windows下本地部署安装hadoop+scala+spark-【不需要虚拟机】