HBase调整准备工作

时间:2020-02-23 14:33:30  来源:igfitidea点击:

任何严重的HBase安装都需要在群集和各个节点上的标准设置。
这里提供了几个例子。
首先要查看监控和管理。

监控群集的工具

如果我们在职业生涯中的某些方面拥有了工程系统的特权,我们可以了解我们面临着突出的主要挑战,以确保系统已准备好生产阶段。
如果我们不计划前面的测试和调试,我们可能会错过生产截止日期或者完全失败。

HBase和Hadoop提交者确保我们将有一个丰富的指标子系统在调试和测试阶段绘制。
我们可以在Apache HBase在线文档中找到所有杂乱的详细信息,尤其是处理HBase备份和复制的部分。

群集复制函数是调试,调整或者如果要运行地图,请在不受影响性能的情况下减少映射的键工具。
显然,我们也需要它遭受灾难恢复。

Hadoop管理工具集入门令人惊讶地简单。
HBase利用Java管理扩展(JMX)技术曝光密钥指标。
使用Java虚拟机,我们还可以使用jconsole工具,一个可用于查看HBase指标的免费JMX客户端。

我们已经使用的HBase分布(0.94.7)默认通过JConsole访问,因此在独立的环境中,我们只需选择要监视的HBASE服务器,然后使用JConsole将我们带来用于查看键的图形用户界面服务器指标。

我们可以使用以下命令启动Jconsole工具:$java_home/bin/jconsole

此外,我们应该熟悉这两个其他开源技术,用于监控HBase集群:

  • Ganglia:经常用来随着时间的推移提供监测图,Ganglia可以发现偶尔发生的问题或者仅在运行时期发生的问题。

  • Nagios:Nagios如果我们是HBASE管理员,并且如果我们想要在PAGER上收到页面或者电子邮件,则为REGIONServer会在群集中占用垃圾收集问题。

如果我们作为商业产品的一部分利用HBase,请务必与供应商进行检查以监视和管理HBase的工具。

群集设置

HBase通常在群集中部署,我们需要对每个服务器进行一些调整以容纳HBase组件。
一个良好的第一步是确保群集中每个服务器上的系统时钟都同步。

在服务器上的同步系统时钟可以真正混淆HBase,因此请查看网络时间协议或者短ntp。
在群集上运行NTP将处理任何时间同步问题。

此外,HBase在某些方面是一个独特的应用程序,因为它强调系统超出了应用程序可能会的水平。
事实是HBase将打开很多文件 - 这只是野兽的本质。

鉴于事实上,我们需要确保操作系统配置为处理肯定是源自典型的文件系统负载。
在Linux操作系统中交换(在磁盘和内存之间移动,换句话说)对ZooKeeper可能具有非常不利的影响。

最后有Java虚拟机(JVM)最终在每个节点上运行并执行HBase进程。
HBase还在JVM上对典型的应力进行了额外的压力。
(例如,MemStore缓存重大练习垃圾收集系统,务必征税到最大值。
)

当MEMSTORE在HDFS上提交给HFILE时,java堆已接收。
如果未正确配置JVM,这会导致暂停垃圾收集暂停。

因此,对于所有这些原因,我们应该审查Apache HBase在线文档的这两部分:

  • 一般配置要求:审查Apache HBase在线文档的第2章,尤其是第2节。

5标题为"重要配置"。

  • Java虚拟机:确定我们正在运行的JVM并确保已测试其与HBase兼容性。 Apache HBase在线文档建议oracle中的Java 6,因为Java 7尚未完全测试。
    另一个JVM是IBM的J9. 如果打算使用J9,请在启动JVM时查看最新命令行选项的IBM文档。

启用压缩

压缩通过减少整体磁盘输入/输出来提高HBase性能。
请考虑启用压缩,除非数据不压缩(例如,图像)或者regionservers无法处理压缩和解压缩所需的额外CPU负载。

可以通过HBASE shell命令启用压缩。
默认情况下,每个列族禁用压缩。
支持的压缩类型是GZIP,LZO和SNAPPY(具有其他一些可用的衍生品,并且在途中提供更多)。
Gzip最适合实现良好的压缩比,但LZO和Snappy更快。

但请记住,LZO和Snappy压缩编解码器必须单独安装;只有Gzip工作而无需进一步配置步骤。
列表显示我们需要在客户联系信息表上启用GZIP压缩的步骤:

hbase(main):007:0> disable 'CustomerContactInfo'
hbase(main):010:0> alter 'CustomerContactInfo', { NAME => 'CustomerName', COMPRESSION => 'GZ' }
hbase(main):014:0> describe 'CustomerContactInfo'
… {NAME => 'CustomerName', REPLICATION_SC                                                    
 OPE => '0', KEEP_DELETED_CELLS => 'false', COMPRESSION => 'GZ',…
hbase(main):017:0> enable 'CustomerContactInfo'