目录
hbase数据库
-
linux下软件的安装
hbase的安装也分为三种,单机版、伪分布版、分布版。
1.下载相关的包并解压
去官方网站下载好hbase的安装包,将压缩包放置到自己创建好的目录下面。
(这里是将hbase压缩包下载到了/opt目录下,然后将hbase解压到/app目录下)
mkdir /app #自己创建一个放置hbase软件的目录
cd /opt
tar -zxvf hbase-2.1.1-bin.tar.gz -c /app 将hbase解压到/app目录下
(语句解析:
- tar:linux系统下的归档工具,用于创建、维护和提取归档文件。
- -zxvf:tar命令的选项,分别表示:
- z:通过gzip解压文件。
- x:从归档文件中提取文件。
- v:显示详细信息,即在解压过程中显示每个被解压的文件名。
- f:指定要处理的文件名。
- hbase-2.1.1-bin.tar.gz:要解压的压缩文件名。
- -c /app:将解压后的文件放到/app目录下。)
2. 配置相关的路径
a.配置jdk的路径
在hbase的conf目录下,输入echo $java_home来复制java_home的路径,以后面的配置:
这里我们要记着这个路径。
接着我们编辑hbase 的conf目录下的hbase-env.sh文件,将其中的java_home指向到你java的安装目录,最后保存设置:
export java_home=你自己的java_home的路径
b. 配置hbase-site.xml文件
hbase-site.xml文件,在<configuration>标签中添加如下内容:
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///root/data/hbase/data</value>
</property>
<property>
<name>hbase.zookeeper.property.datadir</name>
<value>/root/data/hbase/zookeeper</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
</configuration>
(对上述参数的解释:
- hbase.rootdir:这个属性是设置hbase的根目录,即存储hbase数据的hdfs路径。在这个例子中,它被设置为file:///root/data/hbase/data。
- hbase.zookeeper.property.datadir:这个属性设置了zookeeper的数据目录,zookeeper是hbase用来管理集群状态和协调分布式操作的服务。在这个例子中,它被设置为/root/data/hbase/zookeeper。
- hbase.unsafe.stream.capability.enforce:这个属性是一个布尔值,用于控制是否强制执行流能力检查。将其设置为false表示不强制执行流能力检查。这可能会导致性能下降或不稳定,但在某些情况下可能是必要的。
c.配置/etc/profile文件
配置好了之后我们就可以启动hbase了,在启动之前我们可以将hbase的bin目录配置到/etc/profile中,这样更方便我们以后操作。
在etc/profile的文件末尾添加如下内容:
# set hbase_enviroment
hbase_home=/app/hbase-2.1.1
export path=$path:$hbase_home/bin
d.启动hbase
首先需要启动hadoop,输入命令start-dfs.sh来启动hadoop,输入jps查看是否启动成功,
接着我们输入start-hbase.sh来启动hbase,同样输入jps查看是否启动成功,出现了hmaster即表示启动成功了。
-
理论知识学习
hbase是一个基于hadoop的分布式数据库,是 google 的 bigtable 开发的java版本。和传统的关系数据库不同,hbase采用了bigtable的数据模型。hbase提供了对大规模数据的随机、实时读写访问,同时,hbase中保存的数据可以使用mapreduce进行处理,他将对数据存储和并行计算完美结合在了一起。同时他也可以理解为一个非常大的分布式hashmap,在hadoop集群的各个节点中以行主键+列族(包含列)+时间戳为键,以储存的值为值。
1.架构
-
- hmaster:负责协调所有regionserver的操作,如负载均衡和故障恢复。
- regionserver:存储和管理数据的物理服务器,每个服务器可以有多个region。
- region:hbase表被分割成多个region,每个region包含一个或多个列族的数据。
- store:每个region由多个store组成,每个store对应于一个列族。
- storefile:store将数据存储在多个storefile中,这些文件是不可变的。
2.数据模型:
-
- 表由行键(row key)、列族(column family)和列限定符(column qualifier)组成。
- 数据通过行键进行排序,这决定了数据的物理布局,因此设计良好的行键对于查询性能至关重要。
- 每个单元格的数据有版本控制,支持时间戳。
3.数据操作:
-
- put:向表中插入或更新数据。
- get:从表中获取数据。
- scan:返回表中的连续行范围。
- delete:删除行或特定的单元格数据。
- 进入 hbase 客户端命令行。hbase shell
- 查看帮助命令。help
- 查看当前数据库中有哪些表。list
- 查看表结构,describe '表名'
- 创建表:create。如:我们新建一个名为test的表,使其中包含一个名为data的列,表和列族属性都为默认值,则可以使用如下命令:create ‘test’ , ‘data’
- 添加数据,使用put命令可以用来添加数据,使用get命令可以获取数据
- 查看所有数据,使用scan
- 删除整行数据:deleteall 表名,行名称即可删除正行数据。如:deleteall 'test','row1'
- 删除表,有两个步骤:disable 表名 ; drop 表名 ;
(为了移除test这个表,首先我们要把它设为禁用,然后再删除)
- 清空表数据,truncate '表名'。提示:清空表的操作顺序为先disable,然后再truncate。
- 更新指定字段的数据,如put 'student','1001','info:age','100'。
- 变更表信息,如alter 'student',{name=>'info',versions=>3}
- 查看命名空间:list_namespace
- 创建命名空间:create_namespace '空间名'
- 在新的命名空间中创建表:create 'bigdata:student','info'
- 删除命名空间
只能删除空的命名空间,如果不为空,需要先删除该命名空间下的所有表
drop_namespace '空间名'
4.hbase的特点
-
- 海量存储
hbase适合存储pb级别的海量数据,在pb级别的数据以及采用廉价pc存储的情况下,能在几十到百毫秒内返回数据;同时能够达到随机读取20~100k ops/s(每秒操作次数)的速度。这与hbase的极易扩展性息息相关。正式因为hbase良好的扩展性,才为海量数据的存储提供了便利。
-
- 列式存储
这里的列式存储其实说的是列族存储,hbase是根据列族来存储数据的。列族下面可以有非常多的列,列族在创建表的时候就必须指定。需要注意的是,列族理论上可以很多,但实际上建议不要超过6个。
-
- 极易扩展
hbase的扩展性主要体现在两个方面,一个是基于上层处理能力(regionserver)的扩展,一个是基于存储的扩展(hdfs)。
通过横向添加regionsever的机器,扩展的机器可以达到20000+,进行水平扩展,提升hbase上层的处理能力,提升hbsae服务更多region的能力。通过横向添加datanode的机器,进行hdfs存储层扩容,提升hbase的数据存储能力和提升后端存储的读写能力。
-
- 高并发
由于目前大部分使用hbase的架构,都是采用的廉价pc,因此单个io的延迟其实并不小,一般在几io延迟下降并不多。能获得高并发、低延迟的服务。
-
- 稀疏
稀疏主要是针对hbase列的灵活性,不同于传统rdbms,null也占用空间,hbase在列数据为空的情况下,是不会占用存储空间的。在列族中,你可以指定任意多的列,在列数据为空的情况下,是不会占用存储空间的。
5.数据持久化与缓存:
-
- 数据首先写入wal(write ahead log),然后写入memstore。
- memstore达到一定大小后,数据会被flush到磁盘上的storefile。
- storefile过大时会触发compaction,合并多个storefile减少数量并清理过期数据。scan’表的名称’
6.容错机制:
-
- regionserver故障时,hmaster会重新分配其管理的region到其他健康的regionserver上。
- wal和多副本机制确保数据的持久性和可用性。
7.性能优化:
-
- 通过预分区和合理的列族设计来改善性能。
- 利用bloom filters减少不必要的磁盘访问。
- 通过设置合适的缓存策略来提高读取速度。
8.集成与生态:
-
- hbase可以与hdfs(hadoop distributed file system)紧密集成,利用hdfs的存储能力。
- 支持使用mapreduce进行数据分析和处理。
- 提供多种接口,如java api、thrift gateway等,便于应用程序访问。
9.应用场景:
-
- 适用于大规模数据分析,如实时分析和历史数据分析。
- 高并发读写场景,如物联网、社交网络和广告系统。
- 需要快速随机读写访问的大数据集存储。
- 完美结合数据存储和并行计算。
10.架构图展示
参考资料
想查看更多,本文引用了一下文章的内容
一图看懂 hbase 架构(全面详细)_hbase网络拓扑结构图-csdn博客
hbase概述(概念、数据模型、特点和优势)_h base采用了更加简单的数据模型,它把数据存储为未经解释的字符串,对吗?-csdn博客
hadoop之hbase建表(详细步骤)_hbase创建表-csdn博客
发表评论