实验

目的

要求

目的:

  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处理程序计数

HBASE_API的应用相关推荐

  1. 大数据--Hbase

    Hbase 数据库 Hbase 基础 hbase 数据库介绍 hbase 集群结构 系统架构 物理存储 寻址机制 读写过程 Region 管理 Hbase 容错性 Hbase 集群搭建(外部 zook ...

  2. HBase与Hive练习题

    本题是一个综合练习题目总共包括以下部分: 1.数据的预处理阶段 2.数据的入库操作阶段 3.数据的分析阶段 4.数据保存到数据库阶段 5.数据的查询显示阶段 原始数据示例: qR8WRLrO2aQ:m ...

最新文章

  1. 编程方法学笔记:karel
  2. python selenium p_python selenium 常见问题列表
  3. Post方式之百度翻译的爬取
  4. Silverlight 2 DispatcherTimer和通过XAML创建UI元素
  5. [LeetCode] 547. Friend Circles Java
  6. C++:28 --- C++内存布局(上)
  7. 2017.3.5 yveh测试
  8. radiogroup多选_【RadioGroup】实现单选并获得所选项值 | 学步园
  9. Simscape Multibody --- 齿轮齿条约束
  10. 两级运放积分器的带宽分析
  11. 知其然,知其所以然!
  12. 手机无限重启可能跟电压不稳有关
  13. OSPF的6种LSA
  14. tipask 问答系统 如何设置第三方一键登录
  15. 上计算机课怎么备课,如何备课写教案
  16. vue 2个方法先后执行_《拖延心理学》:2个对策,3个法宝,6个方法,教你战胜拖延...
  17. 全球名校AI课程库(2)| 吴恩达 · 机器学习专项课程『Machine Learning』
  18. MATLAB 时间变量 和 常用时间处理函数 datetime datestr datevec datenum
  19. 武林外传辅助工具详细制作过程[第八篇:终结篇]
  20. 一文教你如何写出高效的软件测试用例?

热门文章

  1. 检测缓存文件是否超时
  2. php解决 mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysq
  3. RXSwift基本使用1
  4. python socket编程
  5. bzoj1251: 序列终结者 (splay)
  6. JAVA数组的定义及用法
  7. 【Java】Lucene检索引擎详解
  8. 求几亿个数中不重复元素的个数
  9. 2010年5月blog汇总:OpenExpressApp、其他
  10. vue---进行post和get请求