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

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

配置 HBase

尽管默认HBase设置应该适用于大多数应用程序,但您可以修改HBase配置设置。为此,请使用HBase配置分类的属性。有关更多信息,请参阅 配置应用程序

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

注意

为了便于读取,包含 Linux 行继续符 (\)。它们可以通过 Linux 命令删除或使用。对于 Windows,请将它们删除或替换为脱字号(^)。

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

myConfig.json 文件指定 hbase-site 配置分类的 hbase.rootdir 属性,如以下示例中所示。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 5.21.0 及更高EMR版本中,您可以覆盖集群配置,并为正在运行的集群中的每个实例组指定其他配置分类。为此,您可以使用 Amazon EMR 控制台、 Amazon Command Line Interface (Amazon CLI) 或 Amazon SDK。有关更多信息,请参阅为运行的集群中的实例组提供配置

中对内存分配的更改 YARN

HBase不是作为YARN应用程序运行的,因此必须重新计算分配给YARN其应用程序的内存,这YARN会HBase导致安装后可用的总内存减少。在计划将YARN应用程序放在同一个集群HBase上时,应将此考虑在内。内存小于 64 GB 的实例类型拥有一半的可用内存NodeManager,然后将其分配给HBase RegionServer。对于内存大于 64 GB 的实例类型,HBase RegionServer 内存上限为 32 GB。通常,YARN设置内存是 MapReduce 缩减器任务内存的几倍。

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

HBase端口号

为其选择的HBase某些端口号与默认端口号不同。以下是 Amazon HBase 上的接口和端口EMR。

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

kms-http-port亚马逊EMR发布的版本4.6.0及更高版本中,kms-admin-port是9701,是9701。

HBase要优化的网站设置

您可以设置任何或全部HBase站点设置,以针对应用程序的工作负载优化HBase集群。建议您将以下设置作为调查的起点。

zookeeper.session.timeout

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

此参数控制单个区域的大小(以字节为单位)。默认情况下,将它设置为 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" } } ]