
HBase
文章平均质量分 71
张俊杰zjj
一个大龄的码农.目前是Java+Python开发,业余时间研究减肥健身养生,后期可能会去做减肥健身博主.
展开
-
HBase的高可用
概念在HBase中Hmaster负责监控RegionServer的生命周期,均衡RegionServer的负载,如果Hmaster挂掉了,那么整个HBase集群将陷入不健康的状态,并且此时的工作状态并不会维持太久。所以HBase支持对Hmaster的高可用配置。如果HMaster挂掉的话:1.不能建表修改表了,但是可以在已经存在的表增删改查数据,因为这些操作是RegionServer做的.Region分配也是由HMaster来处理的.如果HMaster挂掉的话,那么Region分配也是无法完成的.原创 2021-03-19 13:30:30 · 467 阅读 · 0 评论 -
HBase 是列式存储数据库吗
在介绍 HBase 是不是列式存储数据库之前,我们先来了解一下什么是行式数据库和列式数据库。行式数据库和列式数据库在维基百科里面,对行式数据库和列式数据库的定义为:列式数据库是以列相关存储架构进行数据存储的数据库,主要适合于批量数据处理(OLAP)和即时查询。相对应的是行式数据库,数据以行相关的存储体系架构进行空间分配,主要适合于小批量的数据处理,常用于联机事务型数据处理(OLTP)。比如我们有以下的表格:那么行式数据库和列式数据库存储模型分别如上面的左图和右图。可以看到,行式数据一行的数据是在转载 2021-02-07 13:20:17 · 895 阅读 · 0 评论 -
HBase为什么适合海量数据场景
出自中华石杉HBase使用场景条件, 第一个条件必须是海量的数据场景用表来形容, 单表在千万以内级别的数据量级别都是属于小数据,千万级别的数据量最多只能说中等数据量,几千万条数据,MySQL搞一下分库分表,搞两三台服务器就可以轻松扛住千万级别数据量的表了.假如说你单个表3000w条数据,你拆成三个库,每个库也就1000w条数据了.再给表拆开,拆成1024个表,可能每个表就几万条数据了.基于一些分库分表中间件,比如说Mycat等等直接做一些路由什么的就可以轻松搞定几千万级别的数据了,性能也很高的.原创 2021-02-05 09:37:10 · 1919 阅读 · 0 评论 -
HBase数据的读写流程
转载地址http://c.biancheng.net/view/6529.htmlHBase 的核心模块是 Region 服务器。Region 服务器由多个 Region 块构成,Region 块中存储一系列连续的数据集。Region 服务器主要构成部分是 HLog 和 Region 块。HLog 记录该 Region 的操作日志。Region 对象由多个 Store 组成,每个 Store 对应当前分区中的一个列族,每个 Store 管理一块内存,即 MemStoreo 当 MemStore 中的数原创 2021-02-04 17:05:08 · 494 阅读 · 0 评论 -
HBase WAL机制
转载地址http://c.biancheng.net/view/6533.html前面两节分别讲解了 HBase 原理的 Region 定位和 HBase 原理的数据存储与读取,本节将讲解 HBase 原理的 WAL 机制。在分布式环境下,用户必须要考虑系统出错的情形,例如,Region服务器发生故障时, MemStore 缓存中还没有被写入文件的数据会全部丢失。因此,HBase 采用 HLog 来保证系统发生故障时能够恢复到正常的状态。如上图所示,每个 Region 服务器都有一个 HLog 文原创 2021-02-04 17:02:38 · 540 阅读 · 1 评论 -
HBase Region管理(拆分+合并+负载均衡)
前面章节讲到 Region 的概念,它是 HBase 集群的负载均衡和数据分发的基本单元。当 HBase中 表的容量非常庞大时,用户就需要将表中的内容分布到多台机器上。那么,需要根据行键的值对表中的行进行划分,每个行区间构成一个 Region,一个 Region 包含了位于某个阈值区间的所有数据。下面将介绍 Region 在集群运行过程中进行合并、拆分及分配的过程。HFile 合并每个 RegionServer 包含多个 Region,而每个 Region 又对应多个 Store,每一个 Store转载 2021-02-04 16:59:33 · 1872 阅读 · 0 评论 -
HBase Region分区及定位
在 HBase 中,表的所有行都是按照 RowKey 的字典序排列的,表在行的方向上分割为多个分区(Region),如下图所示。每张表一开始只有一个 Region,但是随着数据的插入,HBase 会根据一定的规则将表进行水平拆分,形成两个 Region。当表中的行越来越多时,就会产生越来越多的 Region,而这些 Region 无法存储到一台机器上时,则可将其分布存储到多台机器上。Master 主服务器把不同的 Region 分配到不同的 Region 服务器上,同一个行键的 Region 不会被拆转载 2021-02-04 16:46:34 · 4720 阅读 · 0 评论 -
HBase数据模型解析
HBase数据模型解析HBase 是一种列存储模式与键值对存储模式结合的 NoSQL 数据库,它具有灵活的数据模型,不仅可以基于键进行快速查询,还可以实现基于值、列名等的全文遍历和检索。HBase 可以实现自动的数据分片,用户不需要知道数据存储在哪个节点上,只要说明检索的要求,系统会自动进行数据的查询和反馈。HBase 的基本概念HBase 不支持关系模型,它可以根据用户的需求提供更灵活和可扩展的表设计。与传统的关系型数据库类似,HBase 也是以表的方式组织数据,应用程序将数据存于 HBase 的转载 2021-02-04 16:34:21 · 3669 阅读 · 0 评论 -
HBase的使用场景及案例
HBase 解决不了所有的问题,但是针对某些特点的数据可以使用 HBase 高效地解决,如以下的应用场景。数据模式是动态的或者可变的,且支持半结构化和非结构化的数据。数据库中的很多列都包含了很多空字段,在 HBase 中的空字段不会像在关系型数据库中占用空间。需要很高的吞吐量,瞬间写入量很大。数据有很多版本需要维护,HBase 利用时间戳来区分不同版本的数据。具有高可扩展性,能动态地扩展整个存储系统。在实际应用中,有很多公司使用 HBase,如 Facebook 公司的 Social Inb转载 2021-02-04 16:27:43 · 2346 阅读 · 0 评论 -
HMaster是什么?
HMaster 是 HBase 集群中的主服务器,负责监控集群中的所有 RegionServer,并且是所有元数据更改的接口。在分布式集群中,HMaster 服务器通常运行在 HDFS 的 NameNode上,HMaster 通过 ZooKeeper 来避免单点故障,在集群中可以启动多个 HMaster,但 ZooKeeper 的选举机制能够保证同时只有一个 HMaster 处于 Active 状态,其他的 HMaster 处于热备份状态。HMaster 主要负责表和 Region 的管理工作。管理转载 2021-02-04 16:26:11 · 5332 阅读 · 0 评论 -
HBase的优势有哪些?
概述HBase 是典型的 NoSQL 数据库,通常被描述成稀疏的、分布式的、持久化的,由行键、列键和时间戳进行索引的多维有序映射数据库,主要用来存储非结构化和半结构化的数据。因为 HBase 基于 Hadoop 的 HDFS 完成分布式存储,以及 MapReduce 完成分布式并行计算,所以它的一些特点与 Hadoop 相同,依靠横向扩展,通过不断增加性价比高的商业服务器来增加计算和存储能力。HBase 虽然基于 Bigtable 的开源实现,但它们之间还是有很多差别的,Bigtable 经常被描述成键原创 2021-02-04 16:22:54 · 2248 阅读 · 0 评论 -
HBase作为一个NoSQL数据库,有哪些架构上的特点
分布式数据存储HBase定位是分布式NoSQL数据库,把自己的NoSQL数据库的功能是通过多台机器来实现的,所以HBase定位是分布式的NoSQL.HBase集群下会有很多台机器,每台机器都叫做RegionServer,RegionServer底层操作数据的时候会和HDFS打交道.你往HBase里面搞一个表,往表里面灌数据,其实这些数据会分散为很多个region(数据分片)的,每个region其实就是数据的一个分片.这些region作为数据的分片,最底层的数据其实是存在HDFS上的DataNode原创 2021-02-04 12:14:19 · 694 阅读 · 0 评论 -
NoSQL概念
一 . NoSQL的简介NoSQL是海量数据增删改查的, 基本不支持SQL语法,NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,互联网的早期我们的数据大多以关系型数据库来存储的。其特点是规范的数据结构(预定义模式)、强一至性、表与表之间通过外键进行关联,这些特征使我们对数据的管理更加清晰和严谨,但随着互联网的发展数据成爆炸式的增长我们对数据库需要更好的灵活性和更快的速度。这就是NoSql可以做到的。它不需要预先定义模式,没有主外键关联、支持分片、支持复本。NoSQL的原创 2021-02-04 09:29:51 · 1352 阅读 · 1 评论 -
为什么有了hdfs之后,还需要HBase呢
hdfs设计的主要针对的是大数据,超大文件,比如说要放100GB的用户行为的日志,甚至是1TB 1PB的数据, 这么大的文件很难放到一台服务器里面.此时就可以把超大文件拆散,拆成N多个128MB的小文件,每个小文件就可以说是这个大文件的一个block(块儿)hdfs只能是存储文件的,最多是你只能不停的往文件的末尾不停的追加数据.hdfs基本只能做 目录层级结构,创建文件,管理权限,对文件进行删除,对大文件的数据读取,对文件进行数据的追加.如果要对hdfs上存储的海量数据进行增删改查, 我要往里面插入原创 2021-02-02 17:59:02 · 2733 阅读 · 2 评论 -
Scala封装Phoenix工具类操作Hbase
Maven依赖<!--注意 底层引用的\org\glassfish\javax.el\3.0.1-b06-SNAPSHOT在仓库中已经移除了我们这里引用其稳定版本--><dependency> <groupId>org.apache.phoenix</groupId> <artifactId>phoenix-spark</artifactId> <vers原创 2021-01-17 15:03:57 · 501 阅读 · 0 评论 -
Phoenix 对HBASE表操作
https://www.yuque.com/docs/share/c0b81507-2318-48a7-a22c-2278b0e82ab9?# 《01.对HBase表操作》原创 2021-01-17 14:33:45 · 529 阅读 · 0 评论 -
Hbase的物理存储结构
如果是mysql的话,那么就是一行一行的存储,.如果是HBase的话,就是下面,key是多个维度组成的,不简简单单是一个 RowKeyvalue是当前的值.原创 2021-01-03 15:45:21 · 246 阅读 · 0 评论 -
关于HBase和MySQL
HBase有行的概念,也有列的概念.Hbase存储是kv类型的, 更像多维度的Map.Mysql要简单用的话,没啥问题.Mysql如果数据字段缺失了, 就得不断的添加字段数据量大了的话又得水瓶切分,垂直切分等等.Hbase的设计就挺好的.单看图结构的话和mysql几乎是没啥区别. mysql的数据量大的话就得垂直切分啥的.而Hbase在设计的时候就给你避免了这个问题,Hbase有列族的概念.咱们可以先建列族, 然后在列族里面放列.在生产的时候列族不是越多越好,一般是一个两个就差不多了.原创 2021-01-03 15:33:18 · 309 阅读 · 0 评论 -
HBase的 RowKey的设计
RowKey设计的好是可以提升集群的性能的,如果设计不好的话,那么集群的HBase集群的性能不好. HBase是Key Value存储的,Key就是RowKey,数据在存到HBase之前会先计算RowKey在Region列表的中的起始范围. 比如说RowKey为1000的话,就会存到StartKey和EndKey在这个范围内的那个Region里面 一条数据的唯一标识就是rowkey,那么这条数据存储于哪个分区,取决于rowkey处于哪个一个预分区的区间内,设计rowkey的主要目的 ,就是让数据均原创 2020-12-30 10:16:25 · 588 阅读 · 0 评论 -
HBase的Region Split
Region手动切分可以手动去切,也可以自动去切第一个参数是表名,第二个参数是key, 切分完了之后在r4之前的数据就第一个region去处理,r4之后的数据就第二个region去处理. key是字典排序的 ,比如说 r11和r4比,第一个字符串r是一样大的,比较第二个字符串1比4小,那么r11就在r4前面. 如果是r51的话,是在r4后面,因为第二个值5比4大.split 't1','r4'Region自动切分 默认情况下,每次建表的时候只有一个Region,随着数据的不断写入,原创 2020-11-30 10:17:43 · 551 阅读 · 0 评论 -
HBase的StoreFile Compaction
由于Hbase依赖HDFS存储,HDFS只支持追加写。所以,当新增一个单元格的时候,HBase在HDFS上新增一条数据。当修改一个单元格的时候,HBase在HDFS又新增一条数据,只是版本号比之前那个大(或者自定义)。当删除一个单元格的时候,HBase还是新增一条数据!只是这条数据没有value,类型为DELETE,也称为墓碑标记(Tombstone)HBase每间隔一段时间都会进行一次合并(Compaction),合并的对象为HFile文件。合并分为两种minor compaction和major .原创 2020-11-30 09:43:05 · 432 阅读 · 0 评论 -
HBase的VERSIONS的意思
每个不同时间戳的cell就是一个版本,时间戳就是版本可以设置列族的VERSIONS属性,当执行flush操作时,put的记录会根据时间戳选择最新的VERSIONS个版本的数据flush到磁盘中!每次flush,最多flush VERSIONS个版本的数据!查看表的列族的版本号下面VERSIONS都是一个,意思是cf1和cf2和f3列族都是保留一个版本.hbase(main):002:0> describe 'ns1:t1'Table ns1:t1 is ENABLEDns1..原创 2020-11-30 09:38:13 · 3244 阅读 · 0 评论 -
HBase的MemStore Flush
MemStore存在的意义是在写入HDFS前,将其中的数据整理有序。MemStore刷写时机1.当某个memstore的大小达到了hbase.hregion.memstore.flush.size(默认值128M),其所在region的所有memstore都会刷写.注意是所有的Region下所有的memstore, 列族通常是以表为单位的.Hbase在插入数据的时候是以行为单位插入的.一般插入数据的时候是多个列族都有可能插入数据.一旦其中一个列族到了128M了,那么其它的列族也有可能到128M了..原创 2020-11-30 09:34:39 · 689 阅读 · 0 评论 -
HBase的RegionServer的架构解释
架构图1)StoreFile保存实际数据的物理文件,StoreFile以Hfile的形式存储在HDFS上。每个Store会有一个或多个StoreFile(HFile),数据在每个StoreFile中都是有序的。MemStore写缓存,由于HFile中的数据要求是有序的,所以数据是先存储在MemStore中,排好序后,等到达刷写时机才会刷写到HFile,每次刷写都会形成一个新的HFile。WAL由于数据要经MemStore排序后才能刷写到HFile,但把数据保存在内存中会有很高的概率原创 2020-11-30 09:31:51 · 2405 阅读 · 0 评论 -
HBase的Linux Shell命令操作
给bin目录配置到环境变量里面不然的话每次使用HBase命令都得去HBase的bin目录下面去操作.注意事项1.在hbase shell中不要敲 ;,如果敲了;,需要敲两个 单引号结束!在hbase shell中如果需要使用上下方向键查找历史命令,需要查看xshell的设置配置图![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GRBllafN-1606637569948)(https://gitee.com/crow1/picture_bed/raw/mas原创 2020-11-29 16:13:21 · 1889 阅读 · 0 评论 -
HBase的对象表现形式
1.默认有两张系统表hbase:meta: 保存的是用户的表和region的对应信息hbase:namespace: 保存的是用户自己创建的namespace的信息2.hbase中的对象的表现形式库以目录的形式存放在 /HBase/data中表是以子目录的形式存在在 /HBase/data/库名 中region也是以子目录的形式存在 /HBase/data/库名/表名 中列族也是以子目录的形式存在 /HBase/data/库名/表名/region 中数据以文件的形式存放在 /H原创 2020-11-29 16:02:28 · 204 阅读 · 0 评论 -
HBase的web控制台说明
查看Master机器查看Region Servers列表查看表信息User Tables 是用户自己安装的表用户表系统表System Tables 是系统表hbase:meta 的前面 hbase是名称空间, meta是表名上面意思是 meta和namespace这两个表都在hbase名称空间里面.系统表作用meta表是保存所有用户的regions信息namespace保存的是所有用户自己创建的namespace信息HDFS存放HBase的信息(HBase中对象的表现形式)原创 2020-11-29 15:59:35 · 1825 阅读 · 0 评论 -
HBase的bin目录和conf目录
HBase的目录bin目录在hbase命令的时候会先调用hbase-config.sh ,然后hbase-config.sh 调用hbase-env.sh 命令hbase-daemon.sh 启动hbase进程hbase-daemons.sh 群启动hbase进程start-hbase.sh 一键启动所有HBase所有进程stop-hbase.sh 一键停止所有HBase所有进程.conf目录hbase-env.sh 配置环境变量的命令hbase-site.xml 是hbase的参原创 2020-11-29 15:56:55 · 931 阅读 · 0 评论 -
HBase读流程
架构图读流程1)Client先访问zookeeper,获取hbase:meta这个系统表位于哪个Region Server,因为访问表需要RegionServer2)访问对应的Region Server,获取hbase:meta系统表,根据读请求的namespace:table/rowkey,查询出目标数据位于哪个Region Server中的哪个Region中。并将该table的region信息以及meta表的位置信息缓存在客户端的meta cache,方便下次访问。3)与目标Region Se原创 2020-11-29 15:54:56 · 297 阅读 · 0 评论 -
HBase写流程
架构图写流程:1)Client先访问zookeeper,获取hbase:meta表位于哪个Region Server,因为要想操作hbase:meta这个系统表之前必须要有RegionServer服务器. 这个数据是存放在Zookeeper里面的.2)访问对应的Region Server,获取hbase:meta这个系统表,根据读请求的namespace:table/rowkey,查询出目标数据位于哪个Region Server中的哪个Region中。并将该table的region信息以及meta表原创 2020-11-29 15:52:26 · 397 阅读 · 0 评论 -
HBase存储数据结构LSM树
转自 李智慧 从零开始学大数据传统的机械式磁盘的访问特性是连续读写很快,随机读写很慢。这是因为机械磁盘靠电机驱动访问磁盘上的数据,电机要将磁头落到数据所在的磁道上,这个过程需要较长的寻址时间。如果数据不连续存储,磁头就要不停的移动,浪费了大量的时间。为了提高数据写入速度,HBase使用了一种叫作LSM树的数据结构进行数据存储。LSM树的全名是Log Structed Merge Tree,翻译过来就是Log结构合并树。数据写入的时候以Log方式连续写入,然后异步对磁盘上的多个LSM树进行合并。原创 2020-11-29 15:44:02 · 581 阅读 · 0 评论 -
HBase可扩展数据模型列族
内容来自 李智慧 从零开始学大数据 专栏传统的关系数据库为了保证关系运算(通过SQL语句)的正确性,在设计数据库表结构的时候,需要指定表的schema也就是字段名称、数据类型等,并要遵循特定的设计范式。这些规范带来了一个问题,就是僵硬的数据结构难以面对需求变更带来的挑战,有些应用系统设计者通过预先设计一些冗余字段来应对,但显然这种设计也很糟糕。那有没有办法能够做到可扩展的数据结构设计呢?不用修改表结构就可以新增字段呢?当然有的,许多NoSQL数据库使用的列族(ColumnFamily)设计就是其中一个解原创 2020-11-29 15:41:12 · 665 阅读 · 0 评论 -
HBase的集群启动和停止操作
集群启动停止方式1[更方便]启动执行bin目录下的 sh start-hbase.sh ,你会发现在当前机器上启动了一个Master,在所有的机器上启动了RegionServer[root@zjj101 bin]# sh start-hbase.shstarting master, logging to /root/soft/hbase-1.3.1/bin/../logs/hbase-root-master-zjj101.outzjj102: starting regionserver, logg原创 2020-11-23 19:01:45 · 4198 阅读 · 0 评论 -
HBase配置环境变量
编辑/etc/profile 配置文件# 配置HBase环境变量export HBASE_HOME=/root/soft/hbase-1.3.1export PATH=$PATH:$HBASE_HOME/bin# 配置Kafka环境变量export KAFKA_HOME=/root/soft/kafka_2.11-0.11.0.2export PATH=$PATH:$KAFKA_HOME/bin# 配置sparkexport SPARK_HOME=/root/soft/spark-2.1原创 2020-11-23 18:56:56 · 2369 阅读 · 0 评论 -
HBase集群的安装和启动停止
Hbase安装前配置配置hbase-env.sh1.先配置环境变量修改 hbase-env.sh如果用jdk8的话给下面两行代码注释掉,因为jdk8没有永久代了.jdk8叫元空间,下面配置是对永久代的配置.,没有用处,所以就注释掉.一般在/root/soft/hbase-1.3.1/conf/hbase-env.sh 的 46 47行,给下面的代码注释掉.# export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:Ma原创 2020-11-23 18:53:11 · 744 阅读 · 0 评论 -
HBase数据模型介绍
逻辑上,HBase的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。但从HBase的底层物理存储结构(K-V)来看,HBase更像是一个multi-dimensional map (一个key 可以存多个value的版本)。1.Name Space 命名空间命名空间,类似于关系型数据库的database概念,每个命名空间下有多个表。HBase两个自带的命名空间,分别是hbase和default,hbase中存放的是HBase内置的表,default表是用户默认使用的命名空间。一个表可以自由原创 2020-11-16 13:44:08 · 1636 阅读 · 0 评论 -
HBas介绍,CAP中的CA,特点,优缺点总结.快速理解Hbase
(一)Hbase的来源2006年Google技术人员Fay Chang发布了一篇文章Bigtable: ADistributed Storage System for Structured Data。该文章向世人介绍了一种分布式的数据库,这种数据库可以在局部几台服务器崩溃的情况下继续提供高性能的服务。2007年Powerset公司的工作人员基于此文研发了BigTable的Java开源版本,即HBase。刚开始它只是Hadoop的一部分。2008年HBase成为了Apache的顶级项目。HBase几乎实原创 2020-11-16 13:34:17 · 1729 阅读 · 0 评论