本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
配置 HBase
尽管默认 HBase 设置应该适用于大多数应用程序,但您可以修改 HBase 配置设置。为此,请使用 HBase 配置分类的属性。有关更多信息,请参阅 配置应用程序。
以下示例基于存储在 Amazon S3 中的配置文件创建具有备用 HBase 根目录的集群。myConfig.json
注意
为了便于读取,包含 Linux 行继续符(\)。它们可以通过 Linux 命令删除或使用。对于 Windows,请将它们删除或替换为脱字号(^)。
aws emr create-cluster --release-label
emr-7.7.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
属性,如以下示例中所示。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 及其应用程序的内存,如果 HBase 安装了 YARN,则会减少 YARN 可用的总内存。在计划将 YARN 应用程序放在同一个集群 HBase 上时,应考虑到这一点。内存小于 64 GB 的实例类型拥有一半的可用内存NodeManager,然后将其分配给 HBase RegionServer。对于内存大于 64 GB 的实例类型, HBase RegionServer 内存上限为 32 GB。通常,YARN 设置内存是 MapReduce 缩减器任务内存的几倍。
中的表格任务配置设置的默认值显示了根据所需内存对 YARN 设置所做的更改 HBase。
HBase 端口号
为其选择的 HBase 某些端口号与默认端口号不同。以下是 Amazon EMR HBase 上的接口和端口。
接口 | 端口 | 协议 |
---|---|---|
HMaster | 16000 | TCP |
HMaster 用户界面 | 16010 | HTTP |
RegionServer | 16020 | TCP |
RegionServer 信息 | 16030 | HTTP |
REST 服务器 | 8070 | HTTP |
REST 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 秒(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"
}
}
]