Hbase基本知识介绍

1. Hbase简介

1.1 什么是Hbase
  • Hbase 是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群;
  • Hbase目的是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。
  • Hbase是Google Bigtable的开源实现,但是也有很多不同之处。比如:Google Bigtable利用GFS作为其文件存储系统,HBASE利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBASE同样利用Hadoop MapReduce来处理HBASE中的海量数据;Google Bigtable利用Chubby作为协同服务,HBASE利用Zookeeper作为对应;
系统文件存储系统海量数据处理分布式协调系统
HbaseHadoop HDFSHadoop MapReduceZookeeper
Google BigtableGoogle GFSGoogle MapReduceChubby

关于Hbase相关技术问题,可以登录中国HBase技术社区,讨论学习

1.2 与传统关系型数据库的对比
序号项目Hbase传统关系型数据库
数据量支持线性扩展,可通过节点扩展进行支撑大量数据数据量大时,无法存储
查询性能通过zookeeper协调查找数据,访问速度快数据量达到一定程度,查询性能缓慢
备份机制备份机制数据存储在Hadoop HDFS上,备份机制健全没有很好的备份机制
1.3 Hbase架构

在这里插入图片描述

2. Hbase安装模式

前提:安装jdk 和 hadoop,并配置了它们的环境变量,Hbase与Hadoop版本兼容可参考本文最后的图片

2.1 单机模式
1.直接解压安装包
	tar -zxvf xxxxx.tar.gz
2.修改conf/hbase-site.xml,配置hbase使用的数据文件的位置,默认在/tmp/hbase-[username],此目录是linux的临时目录,可能会被系统清空,所以最好修改一下:
	<property>
		<name>hbase.rootdir</name>
		<value>file:///<path>/hbase</value>
	</property>
2.2 伪分布式模式
1.修改conf/hbase-env.sh修改JAVA_HOME
	export JAVA_HOME=xxxx
2.修改hbase-site.xml,配置使用hdfs
	<property>
		<name>hbase.rootdir</name>
		<value>hdfs://ha01:9000/hbase</value>
	</property>
	<property>
		<name>dfs.replication</name>
		<value>1</value>
	</property>
启动hbase
2.3 完全分布式模式
1.修改conf/hbase-env.sh修改JAVA_HOME
	export JAVA_HOME=xxxx
2.修改hbase-site.xml,配置开启完全分布式模式
	配置hbase.cluster.distributed为true
	配置hbase.rootdir设置为HDFS访问地址
		<property>
			<name>hbase.rootdir</name>
			<value>hdfs://ha01:9000/hbase</value>
		</property>
		<property>
			<name>dfs.replication</name>
			<value>1</value>
		</property>
		<property>
			<name>hbase.cluster.distributed</name>
			<value>true</value>
		</property>
		<property>
			<name>hbase.zookeeper.quorum</name>
			<value>ha01:2181,ha02:2181,ha03:2181</value>
		</property>

3.修改conf/hbase-env.sh禁用对Hbase自身默认的zookeeper的自动管理:
		export HBASE_MANAGES_ZK false
4.配置region服务器,修改conf/regionservers文件,其中配置所有hbase主机,每个主机名独占一行,hbase启动或关闭时会按照该配置顺序启动或关闭主机中的hbase
5.HBASE配置文件说明
	hbase-env.sh配置HBase启动时需要的相关环境变量
	hbase-site.xml配置HBase基本配置信息
	HBASE启动时默认使用hbase-default.xml中的配置,如果需要可以修改hbase-site.xml文件,此文件中的配置将会覆盖hbase-default.xml中的配置
	修改配置后要重启hbase才会起作用
6.启动集群
	启动zookeeper
	启动hadoop
	启动hbase
	访问http://xxxxx:60010来访问web界面,通过web见面管理hbase
	也可以通过hbase shell脚本来访问bhase
7.启动备用master实现高可用
	hbase-daemon.sh start master
8.关闭集群
	stop-hbase.sh

Hbase集群,Hadoop集群和Zookeeper集群的整合后期会在相关文章中进行详细讲解,Hadoop集群的搭建可参考离线计算—Hadoop集群搭建

3. Hbase数据模型

3.1 逻辑视图

在这里插入图片描述

3.2 物理视图
  • Cell:{row key, columnFamily, version} 唯一确定的单元,无类型,以字节码存储
  • 存储形式: Key-Value 形式;
    在这里插入图片描述
  • 多版本特性:通过不同Time Stamp(时间戳)的多个Key-Value来实现的多版本;
  • 新的版本:put,delete会产生新的Cell,也就是生成新版本;
  • 默认配置:默认只存放数据的三个版本,可以通过配置修改存放的版本数或者版本过期时间;
  • 查询:默认返回最新版本的数据,旧数据可通过制定版本号或版本数获取
    在这里插入图片描述
  • CF(列族):相同列族的数据存在相同文件里面,不同列族存在不同文件里面在这里插入图片描述
3.3 Row Key(行键)

Row Key行键,用来检索记录的主键。访问Hbase Table中的行,只有 3 种方式:

  1. 通过单个row key访问
  2. 通过row key的range(正则)
  3. 全表扫描
  • 类型:任意字符串
  • 长度要求:最大长度是 64KB,实际应用中长度一般为 10-100bytes
  • 存储形式:在HBASE内部,row key保存为字节数组
  • 数据存储方式:数据按照Row key的字典序(byte order)排序存储,注:设计key时,要充分排序存储这个特性,将经常一起读取的行存储放到一起。
3.4 Columns Family(列簇)
  • Hbase表中的每个列,都归属于某个列族
  • 列族是表的schema的一部分(而列不是),必须在使用表之前定义;
  • 列名都以列族作为前缀。例如 courses:history,courses:math都属于courses 这个列族
3.5 Cell(存贮单元)
  • 由{row key, columnsFamily, version} 唯一确定的单元;
  • cell中 的数据是没有类型的,全部是字节码形式存贮。
  • 关键字:无类型、字节码
3.6 Time Stamp(时间戳)
  • Hbase 中通过rowkey和columnsFamily确定的为一个存贮单元称为cell;
  • 每个 cell都保存着同一份数据的多个版本;
  • 版本通过Time Stamp时间戳来索引,时间戳的类型是 64位整型,Time Stamp时间戳可以由Hbase(在数据写入时自动 )赋值,此时时间戳是精确到毫秒 的当前系统时间。时间戳也可以由客户显式赋值。如果应用程序要避免数据版 本冲突,就必须自己生成具有唯一性的时间戳。每个 cell中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面。
  • 为了避免数据存在过多版本造成的的管理 (包括存贮和索引)负担,Hbase 提供了两种数据版本回收方式:一是保存数据的最后n个版本;二是保存最近一段 时间内的版本(比如最近七天)。
  • 数据版本当前默认是只存放数据的三个版本,用户可以针对每个列族进行设置;

4. Hbase与Hadoop版本兼容

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值