非关系型数据库——HBase(基础)

4 篇文章 0 订阅
1 篇文章 0 订阅

什么是NoSQL

NoSQL:not only SQL,非关系型数据库
NoSQL是一个通用术语
指不遵循传统RDBMS模型的数据库
数据是非关系的,且不使用SQL作为主要查询语言
解决数据库的可伸缩性和可用性问题
不针对原子性或一致性问题

NoSQL和关系型数据库对比

主要有以下一些区别

对比NoSQL关系型数据库
常用数据库HBase、MongoDB、RedisOracle、DB2、MySQL
存储格式文档、键值对、图结构表格式,行和列
存储规范鼓励冗余规范性,避免重复
存储扩展横向扩展,分布式纵向扩展(横向扩展有限)
查询方式结构化查询语言SQL非结构化查询
事务不支持事务一致性支持事务
性能读写性能高读写性能差
成本简单易部署,开源,成本低成本高

NoSQL和BI、大数据的关系

BI(Business Intelligence):商务智能
它是一套完整的解决方案
BI应用涉及模型,模型依赖于模式
BI主要支持标准SQL,对NoSQL支持弱于关系型数据库
NoSQL和大数据相关性较高,但是NoSQL != 大数据
NoSQL产品是为了帮助解决大数据存储问题,但是大数据不仅仅包含数据存储的问题
通常大数据场景采用列存储数据库
如:HBase

HBase概述

  1. HBase是一个领先的NoSQL数据库
  2. 是一个面向列存储的NoSQL数据库
  3. 是一个分布式Hash Map,底层数据是Key-Value格式
  4. 基于Google Big Table论文
  5. 使用HDFS作为存储并利用其可靠性
  6. HBase特点
  7. 数据访问速度快,响应时间约2-20毫秒
  8. 支持随机读写,每个节点20k~100k+ ops/s
  9. 可扩展性,可扩展到20,000+节点
  10. 高并发

HBase应用场景

增量数据-时间序列数据

高容量,高速写入
HBase之上有OpenTSDB模块,可以满足时序类场景,比如传感器,系统监控,股票行情监控等

信息交换-消息传递

高容量,高速读写
通信、消息同步的应用构建在HBase之上,比如email,FaceBook等

内容服务-Web后端应用程序

高容量,高速读写
头条类、新闻类的的新闻、网页、图片存储在HBase中

Apache HBase生态圈

HBase生态圈技术
Lily – 基于HBase的CRM
OpenTSDB – HBase面向时间序列数据管理
Kylin – HBase上的OLAP
Phoenix – SQL操作HBase工具
Splice Machine – 基于HBase的OLTP
Apache Tephra – HBase事务支持
TiDB – 分布式SQL DB
Apache Omid - 优化事务管理
Yarn application timeline server v.2 迁移到HBase
Hive metadata存储可以迁移到HBase
Ambari Metrics Server将使用HBase做数据存储

HBase分布式环境部署

启动ZooKeeper
启动Hadoop(HDFS、YARN)
上传、解压、配置环境变量并修改配置文件

hbase-env.sh
hbase-site.xml
regionservers
启动测试
启动:start-hbase.sh
关闭:stop-hbase.sh

HBase物理架构 - 概述

在这里插入图片描述

HBase物理架构 - HMaster

HMaster的作用是:

–集群的主节点,可以配置多个,用来实现HA
–处理元数据的变更
–监控RegionServer
–负责RegionServer的负载均衡
–处理RegionServer故障转移
–通过ZooKeeper发布自己的位置给客户端

HBase物理架构 - RegionServer-1

RegionServer负责管理维护Region,负责存储HBase实际数据
一个RegionServer包含一个WAL、一个BlockCache (读缓存)和多个Region
一个Region包含多个存储区,每个存储区对应一个列族
一个存储区由多个StoreFile和MemStore组成
一个StoreFile对应于一个HFile和一个列族
HFile和WAL作为序列化文件保存在HDFS上
Client与RegionServer交互

HBase物理架构 - RegionServer-2

功能

负责管理HBase的实际数据
处理分配给它的Region
刷新缓存到HDFS
维护HLog
执行Compaction
负责处理Region分片

HBase逻辑架构 - Row

Rowkey(行键)是唯一的并已排序
Schema可以定义何时插入记录
每个Row都可以定义自己的列,即使其他Row不使用
相关列定义为列族
使用唯一时间戳维护多个Row版本
在不同版本中值类型可以不同
HBase数据全部以字节存储
在这里插入图片描述

HBase元数据管理

数据管理目录
系统目录表hbase:meta
存储元数据
ZooKeeper存储hbase:meta表的位置信息
HBase实际数据存储在HDFS上

HBase Shell

HBase Shell是一种操作HBase的交互模式
支持完整的HBase命令集

命令类别命令
Generalversion, status, whoami, help
DDLalter, create, describe, disable, drop, enable, exists, is_disabled, is_enabled, list
DMLcount, delete, deleteall, get, get_counter, incr, put, scan, truncate
Toolsassign, balance_switch, balancer, close_region, compact, flush, major_compact, move, split, unassign, zk_dump
Replicationadd_peer, disable_peer, enable_peer, remove_peer, start_replication, stop_replication

HBase操作-1

通过hbase shell进入

version --查看版本    
status  --查看集群状态
whoami  --查看  
help

基本操作

 create 'customer', {NAME=>'addr'}, {NAME=>'order'} -- 创建一个表 
 list                                               -- 列出HBase所有的表 
 desc 'customer'                                    -- 查看表的详细信息 
 put 'customer', 'jsmith', 'addr:city', 'montreal'  -- 添加数据          
 get 'customer', 'jsmith'                           -- 获取数据 

将文档数据导入HBase

##通过hbase shell导入文档数据

hbase org.apache.hadoop.hbase.mapreduce.ImportTsv \
-Dimporttsv.separator=,  \
-Dimporttsv.columns="HBASE_ROW_KEY,order:numb,order:date" \
customer file:///home/vagrant/hbase_import_data.csv

HBase Java API

使用Java API操作HBase
创建Maven项目并添加依赖
使用Java API开发代码
创建表,查看表,删除表
添加数据,查看数据,删除数据
打包、上传Jar包并测试

// Get client admin
Configuration config = HBaseConfiguration.create();
config.Path("/opt/install/hbase/conf/hbase-site.xml");
config.Path("/opt/install/hadoop/etc/hadoop/conf/core-site.xml");
connect= ConnectionFactory.createConnection(config);
admin = connect.getAdmin();
// 执行表操作
admin.createTable()
admin.disableTable()
admin.deleteTable()
admin.listTable()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值