配置 HBase - Amazon EMR
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

配置 HBase

尽管默认 HBase 设置应该适用于大多数应用程序,您可以修改 HBase 配置设置。要执行此操作,请使用 HBase 配置分类。有关更多信息,请参阅配置应用程序

以下示例创建具有备用 HBase 基于配置文件的根目录, myConfig.json,存储在 Amazon S3.

注意

包含了 Linux 行继续符 (\) 以提高可读性。可以在 Linux 命令中删除或使用它们。对于 Windows,请删除它们或将其替换为脱字号 (^)。

aws emr create-cluster --release-label emr-5.31.0 --applications Name=HBase \ --instance-type m5.xlarge --instance-count 3 --configurations https://s3.amazonaws.com/mybucket/myfolder/myConfig.json

myConfig.json 文件指定 hbase.rootdir 属性 hbase-site 配置分类,如以下示例所示。Replace ip-XXX-XX-XX-XXX.ec2.internal 使用群集管理节点的内部DNS主机名。

[ { "Classification":"hbase-site", "Properties": { "hbase.rootdir": "hdfs://ip-XXX-XX-XX-XXX.ec2.internal:8020/user/myCustomHBaseDir" } } ]
注意

使用 Amazon EMR 版本 5.21.0 以及更高版本,您可以覆盖集群配置,并为运行的集群中的每个实例组指定更多配置分类。您可以使用 Amazon EMR 控制台、AWS Command Line Interface (AWS CLI) 或 AWS 开发工具包来实现此操作。有关更多信息,请参阅为正在运行的实例中的实例组提供配置

对 YARN 中内存分配的更改

HBase 不是以YARN应用程序运行,因此有必要重新计算分配给YARN及其应用程序的内存,这会导致YARN可用总内存减少, HBase 已安装。在计划将YARN应用与 HBase 相同群集上。内存小于64GB的实例类型具有一半可用于NodeManager的内存,然后分配给 HBase RegionServer。例如,内存大于64GB的类型, HBase RegionServer 内存上限为32GB。一般来说,YARN设置内存是 MapReduce 减量器任务内存。

中的表格 任务配置设置的默认值 根据所需的内存显示对YARN设置的更改 HBase.

HBase 端口号

为选择的某些端口号 HBase 不同于默认。以下是接口和端口,用于 HBase 于 Amazon EMR.

HBase 端口
接口 Port 协议
HMaster 16000 TCP
HMaster 用户界面 16010年 HTTP
RegionServer 16020年 TCP
RegionServer 信息 16030年 HTTP
REST服务器 8070年 HTTP
恢复UI 8085年 HTTP
Thrift服务器 9090年 TCP
Thrift服务器UI 9095年 HTTP
重要

在 Amazon EMR 版本 4.6.0 及更高版本中,kms-http-port 为 9700,kms-admin-port 为 9701。

HBase 要优化的站点设置

您可以设置任何或所有 HBase 站点设置以优化 HBase 集群。我们建议将以下设置作为调查的起点。

zookeeper.session.timeout

默认超时为40秒(40000ms)。如果区域服务器崩溃,则上述值是主服务器注意到区域服务器缺少及开始恢复所需的时长。要帮助更快地恢复主服务器,可以将此值减小到更短的时间。以下示例使用30秒或30000毫秒:

[ { "Classification":"hbase-site", "Properties": { "zookeeper.session.timeout": "30000" } } ]

hbase.regionserver.handler.count

这定义了区域服务器为向表提供请求而保持打开状态的线程数。默认值10较低,以防止用户在使用大量并发客户端的大型写入缓冲区时杀死其区域服务器。经验法则是,当每个请求的有效负载接近MB范围(大负载、使用大缓存扫描)时,保持此数字较低,当有效负载较小(获取、小负载、 ICVs,删除)。以下示例将打开的线程数增加到30:

[ { "Classification":"hbase-site", "Properties": { "hbase.regionserver.handler.count": "30" } } ]

hbase.hregion.max.文件大小

此参数控制各个地区的大小(以字节为单位)。默认情况下,它设置为 1073741824。如果您正在将大量数据写入您的 HBase 群集,并且这导致了频繁的拆分,您可以增加此大小以使单个区域更大。它可以减少拆分,但需要更多的时间从一个服务器向另一个服务器加载平衡区域。

[ { "Classification":"hbase-site", "Properties": { "hbase.hregion.max.filesize": "1073741824" } } ]

hbase.hregion.memstore.flush.size大小

此参数控制memstore的最大大小,单位为字节,然后再刷新到磁盘。默认情况下,它是 134217728。如果您的工作负载包括短时的写入操作,您可能希望增加此限制,以便所有写入在突发期间都保留在内存中,并在稍后被清空到磁盘。这可以在突发期间提高性能。

[ { "Classification":"hbase-site", "Properties": { "hbase.hregion.memstore.flush.size": "134217728" } } ]