Hbase
文章平均质量分 69
列式存储
Alienware^
喜欢专研Java,Scala,Python,数据库,以及大数据框架系列知识。希望通过不断的学习,记录自己的点点滴滴。
展开
-
HBase2.x(十六) HBase与 Hive 的集成
目标:在 HBase 中已经存储了某一张表 hbase_emp_table,然后在 Hive 中创建一个外部表来关联 HBase 中的 hbase_emp_table 这张表,使之可以借助 Hive 来分析 HBase 这张表中的数据。如果大量的数据已经存放在 HBase 上面,需要对已经存在的数据进行数据分析处理,那么 Phoenix 并不适合做特别复杂的 SQL 处理,此时可以使用 hive 映射 HBase 的表格,之后写 HQL 进行分析处理。(1)在 Hive 中创建表同时关联 HBase。原创 2022-10-03 23:56:26 · 1067 阅读 · 1 评论 -
HBase2.x(十五)Phoenix 二级索引
写数据的时候会消耗大量开销,因为索引表也要更新,而索引表是分布在不同的数据节点上的,跨节点的数据传输带来了较大的性能消耗。也就是说索引数据和数据表是存放在不同的表中的,因此全局索引适用于多读少写的业务场景。索引数据和数据表的数据是存放在同一张表中(且是同一个 Region),避免了在写操作的时候往不同服务器的索引表中写索引带来的额外开销。本地索引会将所有的信息存在一个影子列族中,虽然读取的时候也是范围扫描,但是没有全局索引快,优点在于不用写多个表了。创建携带其他字段的全局索引(本质还是全局索引)。原创 2022-10-03 22:49:31 · 854 阅读 · 0 评论 -
HBase2.x(十四)Phoenix 快速入门
Phoenix 是 HBase 的开源 SQL 皮肤。可以使用标准 JDBC API 代替 HBase 客户端 API来创建表,插入数据和查询 HBase 数据。原创 2022-10-02 22:40:55 · 907 阅读 · 0 评论 -
HBase2.x(十三)HBase 分区
每一个 region 维护着 startRow 与 endRowKey,如果加入的数据符合某个 region 维护的rowKey 范围,则该数据交给这个 region 维护。那么依照这个原则,我们可以将数据所要投放的分区提前大致的规划好,以提高 HBase 性能。1)手动设定预分区2)生成 16 进制序列预分区3)按照文件中设置的规则预分区aaaabbbbccccdddd4)使用 JavaAPI 创建预分区。原创 2022-10-02 08:24:01 · 1116 阅读 · 0 评论 -
HBase2.x(十二)HBase 文件合并机制
MinorCompaction会将临近的若干个较小的 HFile 合并成一个较大的 HFile,并清理掉部分过期和删除的数据,有系统使用一组参数自动控制,Major Compaction 会将一个 Store 下的所有的 HFile 合并成一个大 HFile,并且会清理掉所有过期和删除的数据,由参数 hbase.hregion.majorcompaction控制,默认 7 天。(2)hbase.hstore.compaction.min(默认 3) 为 Minor Compaction 的最少文件个数。原创 2022-10-01 23:18:36 · 1354 阅读 · 0 评论 -
HBase2.x(十一)HBase 读流程
每一个 HFile 还会维护一个布隆过滤器(就像是一个很大的地图,文件中每有一种 key,就在对应的位置标记,读取时可以大致判断要 get 的 key 是否存在 HFile 中)。包括数据本身(keyValue 键值对)、元数据记录、文件信息、数据索引、元数据索引和一个固定长度的尾部信息(记录文件的修改情况)。timestamp -----------→ 时间戳(默认系统时间)rowlength -----------→ key 的长度。row -----------------→ key 的值。原创 2022-10-01 21:49:00 · 961 阅读 · 0 评论 -
HBase2.x(十)HBase MemStore Flush (写缓存冲洗规则)
当 region server 中 memstore 的总大小达到低水位线java_heapsize * hbase.regionserver.global.memstore.size(默认值 0.4) * hbase.regionserver.global.memstore.size.lower.limit(默认值 0.95),region 会按照其所有 memstore 的大小顺序(由大到小)依次进行刷写。主要的刷写规则是控制刷写文件的大小,在每一个刷写线程中都会进行监控。原创 2022-10-01 19:42:40 · 364 阅读 · 0 评论 -
HBase2.x(九)写流程
(2)访问对应的 Region Server,获取 hbase:meta 表,将其缓存到连接中,作为连接属性 MetaCache,由于 Meta 表格具有一定的数据量,导致了创建连接比较慢;(3)调用Table的put方法写入数据,此时还需要解析RowKey,对照缓存的MetaCache,查看具体写入的位置有哪个 RegionServer;(4)将数据顺序写入(追加)到 WAL,此处写入是直接落盘的,并设置专门的线程控制 WAL 预写日志的滚动(类似 Flume);(6)向客户端发送 ack;原创 2022-10-01 19:36:15 · 392 阅读 · 0 评论 -
HBase2.x(八) RegionServer 架构
由于数据要经 MemStore 排序后才能刷写到 HFile,但把数据保存在内存中会有很高的概率导致数据丢失,为了解决这个问题,数据会先写在一个叫做 Write-Ahead logfile 的文件中,然后再写入 MemStore 中。所以在系统出现故障的时候,数据可以通过这个日志文件重建。写缓存,由于 HFile 中的数据要求是有序的,所以数据是先存储在 MemStore 中,排好序后,等到达刷写时机才会刷写到 HFile,每次刷写都会形成一个新的 HFile,写入到对应的文件夹 store 中。原创 2022-10-01 16:57:00 · 206 阅读 · 0 评论 -
HBase2.x(七)Master 架构
注意:在客户端对元数据进行操作的时候才会连接 master,如果对数据进行读写,直接连接zookeeper 读取目录/hbase/meta-region-server 节点信息,会记录 meta 表格的位置。如果一个表处于切分的过程中,即 region 切分,还会多出两列 info:splitA 和 info:splitB,存储值也是 HRegionInfo 对象,拆分结束后,删除这两列。全称 hbase:meta,只是在 list 命令中被过滤掉了,本质上和 HBase 的其他表格一样。原创 2022-10-01 16:51:49 · 854 阅读 · 0 评论 -
HBase2.x(六)HBase API DML的操作
创建类 HBaseDML。原创 2022-09-30 21:41:25 · 449 阅读 · 0 评论 -
HBase2.x(五)HBase API DDL的操作
创建 HBaseDDL 类,添加静态方法即可作为工具类。原创 2022-09-30 21:35:20 · 445 阅读 · 0 评论 -
HBase2.x(四)HBase API 创建连接
根据官方 API 介绍,HBase 的客户端连接由 ConnectionFactory 类来创建,用户使用完成之后需要手动关闭连接。同时连接是一个重量级的,推荐一个进程使用一个连接,对 HBase的命令通过连接中的两个属性 Admin 和 Table 来实现。在 resources 文件夹中创建配置文件 hbase-site.xml,添加以下内容。注意:会报错 javax.el 包不存在,是一个测试用的依赖,不影响使用。使用类单例模式,确保使用一个连接,可以同时用于多个线程。原创 2022-09-29 21:28:25 · 652 阅读 · 0 评论 -
HBase2.x(三)HBase Shell操作
scan 是扫描数据,能够读取多行数据,不建议扫描过多的数据,推荐使用startRow 和stopRow 来控制读取的数据,默认范围左闭右开。能够展示 HBase 中所有能使用的命令,主要使用的命令有 namespace 命令空间相关,DDL 创建修改表格,DML 写入读取数据。delete 表示删除一个版本的数据,即为 1 个 cell,不填写版本默认删除最新的一个版本。表名创建时写的所有和列族相关的信息,都可以后续通过 alter 修改,包括增加删除列族。如下语句是查看 name列中的6个版本的数据,原创 2022-09-29 18:07:03 · 703 阅读 · 0 评论 -
HBase2.x(二)HBase安装部署
在 HBase 中 HMaster 负责监控 HRegionServer 的生命周期,均衡 RegionServer 的负载,如果 HMaster 挂掉了,那么整个 HBase 集群将陷入不健康的状态,并且此时的工作状态并不会维持太久。4)解决 HBase 和 Hadoop 的 log4j 兼容性问题,修改 HBase 的 jar 包,使用 Hadoop 的 jar 包。3)在 backup-masters 文件中配置高可用 HMaster 节点。1)关闭 HBase 集群(如果没有开启则跳过此步)原创 2022-09-29 14:53:49 · 506 阅读 · 0 评论 -
HBase2.x(一)HBase简介
Apache HBase™ 是以 hdfs 为数据存储的,一种分布式、可扩展的 NoSQL 数据库。当您需要对大数据进行随机、实时的读写访问时,请使用Apache HBase™。该项目的目标是在商用硬件集群上托管非常大的表——数十亿行X数百万列。Apache HBase是一个开源的、分布式的、版本化的、非关系数据库,模仿了Chang等人开发的谷歌的Bigtable:结构化数据的分布式存储系统。原创 2022-09-29 12:03:13 · 317 阅读 · 0 评论 -
HBase快速入门系列 (九)| HBase 的实战案例(微博)
文章目录HBase实战之谷粒微博需求分析表的分类1.微博内容表2.用户关系表3.微博收件箱表代码实现1.代码设计总览:2. 环境搭建3.创建命名空间以及表名的定义4.设置一个工具类,在工具类里面将命名空间和表的参数设置好方便后续调用5.写好相应的业务需求方便测试调用6.最后进入测试方法,展示需求HBase实战之谷粒微博需求分析微博内容的浏览,数据库表设计用户社交体现:关注用户,取关用户拉取关注的人的微博内容表的分类1.微博内容表表结构:方法名creatTable原创 2020-09-24 12:57:37 · 3365 阅读 · 0 评论 -
HBase快速入门系列 (八)| HBase 的优化
这里写目录标题HBase 优化高可用预分区RowKey设计内存优化基础优化HBase 优化高可用在 HBase 中 HMaster 负责监控 HRegionServer 的生命周期,均衡 RegionServer 的负载,如果 HMaster 挂掉了,那么整个 HBase 集群将陷入不健康的状态,并且此时的工作状态并不会维持太久。所以 HBase 支持对 HMaster 的高可用配置。1.关闭 HBase 集群(如果没有开启则跳过此步)[root@Bigdata01 hbase]$ bin/s原创 2020-09-22 21:28:00 · 138 阅读 · 0 评论 -
HBase快速入门系列 (七)| HBase 与 Hive的集成
文章目录HBase与 Hive 的集成HBase 与Hive 的对比HBase 与Hive 集成使用HBase与 Hive 的集成HBase 与Hive 的对比1.Hive(1) 数据仓库Hive 的本质其实就相当于将 HDFS 中已经存储的文件在 Mysql 中做了一个双射关系,以方便使用 HQL 去管理查询。(2) 用于数据分析、清洗Hive 适用于离线的数据分析和清洗,延迟较高。(3) 基于 HDFS、MapReduceHive 存储的数据依旧在 DataNode 上,编写的 HQL原创 2020-09-22 19:35:01 · 168 阅读 · 0 评论 -
HBase快速入门系列 (六)| HBase 与 Mapreduce的集成
文章目录官方HBase-MapReduce自定义HBase-MapReduce1自定义Hbase-MapReduce2官方HBase-MapReduce1.查看 HBase 的 MapReduce 任务的执行$ bin/hbase mapredcp2.环境变量的导入(1)在/etc/profile 配置export HBASE_HOME=/opt/module/hbaseexport HADOOP_HOME=/opt/module/hadoop-2.7.2 并在 hadoop-env.s原创 2020-09-22 15:23:05 · 778 阅读 · 1 评论 -
HBase快速入门系列 (五)| HBase 的 API
文章目录HBase API环境准备判断表是否存在(旧API)判断表是否存在(新API)优化后的API优化后的API判断表是否存在创建表创建命名空间删除表添加数据查看数据(Get)查看数据(Scan)删除数据HBase API环境准备新建项目后在 pom.xml 中添加依赖:<dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-server</artifactI原创 2020-09-21 21:40:37 · 228 阅读 · 0 评论 -
HBase快速入门系列(四)| HBase原理
文章目录HBase 进阶架构原理写流程MemStore Flush读流程StoreFile CompactionRegion SplitHBase 进阶架构原理1)StoreFile保存实际数据的物理文件,StoreFile 以 HFile 的形式存储在 HDFS 上。每个 Store 会有一个或多个 StoreFile(HFile),数据在每个 StoreFile 中都是有序的。2)MemStore写缓存,由于 HFile 中的数据要求是有序的,所以数据是先存储在 MemStore 中,排原创 2020-09-20 22:48:19 · 205 阅读 · 0 评论 -
HBase快速入门系列(三) | HBase 的Shell操作
文章目录HBase Shell 操作基本操作命名空间操作表的操作HBase Shell 操作基本操作1.进入 HBase 客户端命令行[root@hadoop102 hbase]$ bin/hbase shell2.查看帮助命令 hbase(main):001:0> help3.查看当前数据库中有哪些表 hbase(main):002:0> list命名空间操作1.创建命名空间hbase(main):023:0> create_namespace 'stu'原创 2020-09-20 20:48:28 · 175 阅读 · 0 评论 -
HBase快速入门系列(二) | HBase 的安装
文章目录HBase 安装部署Zookeeper 正常部署Hadoop 正常部署HBase 的解压HBase 的配置文件HBase 远程发送到其他集群HBase 服务的启动查看 HBase 页面HBase 安装部署Zookeeper 正常部署首先保证 Zookeeper 集群的正常部署,并启动之:[root@hadoop102 zookeeper-3.4.10]$ bin/zkServer.sh start[root@hadoop103 zookeeper-3.4.10]$ bin/zkServer原创 2020-09-20 18:07:27 · 337 阅读 · 0 评论 -
HBase快速入门系列(一) | HBase 的介绍
文章目录HBase 简介HBase 定义HBase 数据模型HBase 逻辑结构HBase 物理存储结构数据模型HBase 基本架构HBase 简介HBase 定义HBase 是一种分布式、可扩展、支持海量数据存储的 NoSQL 数据库。HBase 数据模型逻辑上,HBase 的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。但从 HBase 的底层物理存储结构(K-V)来看,HBase 更像是一个 multi-dimensional map。HBase 逻辑结构HBase 物原创 2020-09-20 13:51:54 · 240 阅读 · 0 评论