前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式NoSQL列存储数据库Hbase_MR集成Hbase:读写Hbase规则(九)

分布式NoSQL列存储数据库Hbase_MR集成Hbase:读写Hbase规则(九)

作者头像
Maynor
发布2021-04-09 15:48:50
1.5K0
发布2021-04-09 15:48:50
举报
文章被收录于专栏:最新最全的大数据技术体系

分布式NoSQL列存储数据库Hbase(九)

知识点01:课程回顾

知识点02:课程目标

  1. MapReduce读写Hbase
    • 重点:记住读写的规则
      • Spark中读写Hbase规则与MapReduce的规则是一模一样的
    • 应用:一般在工作中都是使用Spark来读写Hbase,如果是MapReduce可以使用Hive来实现
  2. BulkLoad的实现【了解】
    • 问题:大量的数据并发往Hbase中写入,会导致内存和磁盘的利用率非常高,会影响其他程序的性能
    • Hbase中提供两种写入数据的方式
      • Put:直接写入memstore
      • BulkLoad:先将数据转换为storefile文件,将storefile文件直接放入Hbase表的目录中
    • 实现方式
      • 自己开发代码
      • 使用Hbase中的工具类来实现
  3. 协处理的介绍【了解】
    • 什么是协处理器,分类
    • 怎么开发协处理器:自己开发协处理器,实现索引表与原表数据同步
  4. Hbase中的优化方案【重点:记住】
    • 对于Hbase做了哪些性能的优化?
    • 内存优化
    • 压缩优化
    • 参数优化
    • ……

知识点03:MR集成Hbase:读Hbase规则

知识点04:MR集成Hbase:读Hbase实现

知识点05:MR集成Hbase:写Hbase规则

知识点06:MR集成Hbase:写Hbase实现

知识点07:BulkLoad的介绍

  • 目标
    • 了解BulkLoad的功能及应用场景
  • 分析
    • 问题:有一批大数据量的数据,要写入Hbase中,如果按照传统的方案来写入Hbase,必须先写入内存,然后内存溢写到HDFS,导致Hbase的内存负载和HDFS的磁盘负载过高,影响业务
    • 解决
      • 写入Hbase方式
      • 方式一:构建Put对象,先写内存
      • 方式二:BulkLoad,直接将数据变成StoreFile文件,放入Hbase对应的HDFS目录中
        • 数据不经过内存,读取数据时可以直接读取到
  • 实现
    • step1:先将要写入的数据转换为HFILE文件
    • step2:将HFILE文件加载到Hbase的表中【直接将文件放入了Hbase表对应的HDFS目录中】
  • 总结
    • 应用场景:Hbase提供BulkLoad来实现大数据量不经过内存直接写入Hbase
  • 特点
    • 优点:不经过内存,降低了内存和磁盘的IO吞吐
    • 缺点:性能上相对来说要慢一些,所有数据都不会在内存中被读取

知识点08:BulkLoad的实现

知识点09:ImportTSV的使用

知识点10:协处理器的介绍

  • 目标
    • 了解协处理器的功能、分类和应用场景
  • 分析
    • 什么是协处理器?
      • 协处理器指的是可以自定义开发一些功能集成到Hbase中
      • 类似于Hive中的UDF,当没有这个功能时,可以使用协处理器来自定义开发,让Hbase支持对应的功能
  • 实现
    • observer类:观察者类,类似于监听机制,MySQL中的触发器、Zookeeper中的监听
      • 实现:监听A,如果A触发了,就执行B
      • 监听对象
        • Region
        • Table
        • RegionServer
        • Master
      • 触发:监听A,如果A触发了,执行B
        • pre:阻塞A,先执行B,再执行A
        • post:A先执行,B在A执行完成之后再执行
    • endpoint类:终端者类,类似于MySQL中的存储过程,Java中的方法
      • 实现:固定一个代码逻辑,可以随时根据需求调用代码逻辑
  • 总结
    • Hbase通过协处理器来弥补一些用户自定义功能的实现,例如二级索引等,但开发难度较高,一般通过第三方工具来实现

知识点11:协处理器的实现

知识点12:Hbase优化:内存分配

知识点13:Hbase优化:压缩机制

知识点14:Hbase优化:布隆过滤

  • 目标
    • 了解布隆过滤器的功能及使用
  • 分析
    • 什么是布隆过滤器?
      • 是列族的一个属性,用于数据查询时对数据的过滤,类似于ORC文件中的布隆索引
  • 实现
    • 列族属性:BLOOMFILTER => NONE | ‘ROW’ | ROWCOL
    • NONE :不开启布隆过滤器
    • ROW:开启行级布隆过滤
      • 生成StoreFile文件时,会将这个文件中有哪些Rowkey的数据记录在文件的头部
      • 当读取StoreFile文件时,会从文件头部或者这个StoreFile中的所有rowkey,自动判断是否包含需要的rowkey,如果包含就读取这个文件,如果不包含就不读这个文件
    • ROWCOL:行列级布隆过滤
      • 生成StoreFile文件时,会将这个文件中有哪些Rowkey的以及对应的列族和列的信息数据记录在文件的头部
      • 当读取StoreFile文件时,会从文件头部或者这个StoreFile中的所有rowkey以及列的信息,自动判断是否包含需要的rowkey以及列,如果包含就读取这个文件,如果不包含就不读这个文件
  • 总结
    • Hbase通过布隆过滤器,在写入数据时,建立布隆索引,读取数据时,根据布隆索引加快数据的检索

知识点15:Hbase优化:列族属性

知识点16:Hbase优化:其他优化

附录一:Maven依赖

代码语言:javascript
复制
	<repositories>
        <repository>
            <id>aliyun</id>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        </repository>
    </repositories>
    <properties>
        <hadoop.version>2.7.3</hadoop.version>
        <hbase.version>2.1.2</hbase.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-client</artifactId>
            <version>${hbase.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-mapreduce</artifactId>
            <version>${hbase.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-mapreduce-client-jobclient</artifactId>
            <version>${hadoop.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>${hadoop.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-mapreduce-client-core</artifactId>
            <version>${hadoop.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-auth</artifactId>
            <version>${hadoop.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>${hadoop.version}</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>
    </dependencies>

sion>

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/03/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 分布式NoSQL列存储数据库Hbase(九)
    • 知识点01:课程回顾
      • 知识点02:课程目标
        • 知识点03:MR集成Hbase:读Hbase规则
          • 知识点04:MR集成Hbase:读Hbase实现
            • 知识点05:MR集成Hbase:写Hbase规则
              • 知识点06:MR集成Hbase:写Hbase实现
                • 知识点07:BulkLoad的介绍
                  • 知识点08:BulkLoad的实现
                    • 知识点09:ImportTSV的使用
                      • 知识点10:协处理器的介绍
                        • 知识点11:协处理器的实现
                          • 知识点12:Hbase优化:内存分配
                            • 知识点13:Hbase优化:压缩机制
                              • 知识点14:Hbase优化:布隆过滤
                                • 知识点15:Hbase优化:列族属性
                                  • 知识点16:Hbase优化:其他优化
                                    • 附录一:Maven依赖
                                    相关产品与服务
                                    TDSQL MySQL 版
                                    TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
                                    领券
                                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档