本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
配置 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" } } ]