HBASE_API的应用

实验

目的

要求

目的:

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

 

 

 

 

 

 

 

 

 

 

  1. Java jdk 1.8;
  2. apache-maven-3.6.0;
  3. Myeclipse C10;
  4. Hadoop集群;
  5. 已配置Hbase;
  6. 具体规划:

主机名

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课程成绩;

出现的问题与解决方案

排错一

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

排错思路:

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

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

 

排错二:

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

排错思路:

  1. 检查集群中各服务都是否正常;
  2. 检查主备两节点的状态;
  3. 检查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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值