HBASE

    xiaoxiao2022-07-14  152

    实验

    目的

    要求

    目的:

    掌握HBase编程;搭建HBase编程环境;配置Myeclipse引入对应的jar包;

     

     

     

     

     

     

     

     

     

     

    Java jdk 1.8;apache-maven-3.6.0;Myeclipse C10;Hadoop集群;已配置Hbase;具体规划:

    主机名

    IP地址

    服务描述

    Cluster-01

    192.168.10.111

    Hbase主控节点

    Cluster-02

    192.168.10.112

    Hbase备用主控节点

    Cluster-03

    192.168.10.113

    Hbase Region服务

    Cluster-04

    192.168.10.114

    Hbase Region服务

    Cluster-05

    192.168.10.115

    Hbase Region服务

     

     

    练习内容

    任务一:编写HBaseTest.java,完成与数据库的连接、创建表、修改表、查看表结构等,并进行验证;

    1、创建普通java项目,并导入需要的jar包;

    2、修改Windows下的host文件;

    3、连接并查看数据库中的表;

    4、创建表

    5、进行修改表操作

    6、查看表结构;

    7、编写主类main方法;

    8、结果验证;

     

    任务二:使用Put方法进行操作,并验证;

    1、通过Table接口和Put类向source表插入一些数据;

    2、验证;

    任务三:使用Get方法进行操作,并验证;

    1、按行键获取;

    2、按行键列族获取;

    3、按行键、列族、列修饰符获取;

    4、写入scan方法;

    5、写入main方法;

    6、验证;

    任务四:课后作业;

    1、第7题,删除source表中Jason的math课程成绩;

    出现的问题与解决方案

    排错一

    错误:数据库访问被拒绝连接

    排错思路:

    查看网络环境是否畅通;查看HBase各节点是否正常;查看开发环境是否合适;

    解决方案:重新启动Hadoop集群,确保每一个服务都启动正常,主节点一必须是Active状态;然后重启Myeclipse软件,重新运行程序;

     

    排错二:

    错误:主节点01,的HMaster服务经常掉线;

    排错思路:

    检查集群中各服务都是否正常;检查主备两节点的状态;检查HBase环境的配置文件是否正常;

    解决:

    1、修改各节点的hbase-site.xml文件,将里面的 时钟延迟值改为240000,原来默认值为60000;

    2、Hadoop集群的各节点启动顺序为:

    在数据节点03、04、05上启动Zookeeper服务;

    在主节点01上启动Hadoop服务;

    在主节点01与备用主节点02上分别启动HBase服务;

    3、在关闭集群前依次的从开启服务顺序的倒序开始关闭各服务;

    知识拓展

    优化HBase

    1、随机读密集型

    优化方向:高效利用缓存和更好的索引

     增加缓存使用的堆的百分比,通过参数 hfile.block.cache.size 配置。减少MemStore占用的百分比,通过hbase.regionserver.global.memstore.lowerLimit和hbase.regionserver.global.memstore.upperLimit来调节。使用更小的数据块,使索引的粒度更细。打开布隆过滤器,以减少为查找指定行的Key Value对象而读取的HFile的数量。设置激进缓存,可以提升随机读性能。关闭没有被用到随机读的列族,提升缓存命中率。

    2、顺序读密集型

    优化方向:减少使用缓存。

    增大数据块的大小,使每次硬盘寻道时间取出的数据更多。设置较高的扫描器缓存值,以便在执行大规模顺序读时每次RPC请求扫描器可以取回更多行。 参数 hbase.client.scanner.caching 定义了在扫描器上调用next方法时取回的行的数量。关闭数据块的缓存,避免翻腾缓存的次数太多。通过Scan.setCacheBlocks(false)设置。关闭表的缓存,以便在每次扫描时不再翻腾缓存。

    3、写密集型

    优化方向:不要太频繁刷写,合并或者拆分。

    调高底层存储文件(HStoreFile)的最大大小,region越大意味着在写的时候拆分越少。通过参数 hbase.hregion.max.filesize设置。增大MemStore的大小,通过参数hbase.hregion.memstore.flush.size调节。刷写到HDFS的数据越多,生产的HFile越大,会在写的时候减少生成文件的数量,从而减少合并的次数。在每台RegionServer上增加分配给MemStore的堆比例。把upperLimit设为能够容纳每个region的MemStore乘以每个RegionServer上预期region的数量。垃圾回收优化,在hbase-env.sh文件里设置,可以设置初始值为:-Xmx8g  -Xms8g  -Xmn128m  -XX:+UseParNewGC  -XX:+UseConcMarkSweepGC

       -XX:CMSInitiatingOccupancyFraction=70

    打开MemStore-Local Allocation Buffer这个特性,有助于防止堆的碎片化。 通过参数hbase.hregion.memstore.mslab.enabled设置

    4、混合型

    优化方向:需要反复尝试各种组合,然后运行测试,得到最佳结果。

     

    影响性能的因素还包括:

    压缩:可以减少集群上的IO压力好的行键设计在预期集群负载最小的时候手工处理大合并优化RegionServer处理程序计数
    最新回复(0)