Reconfiguration

EMR的reconfiguration(重新配置)是 EMR 提供的一项功能,允许我们在集群运行期间修改集群上应用程序的配置,而无需重启集群或创建新集群。

这项功能的主要用途和特点包括:

  1. 动态调整配置 - 允许在不停止服务的情况下更改应用程序配置参数
  2. 适应工作负载变化 - 根据实际工作负载需求调整资源分配和性能参数
  3. 修复配置问题 - 在发现配置不当导致的性能问题时进行修正
  4. 应用最佳实践 - 在集群运行期间应用新的配置最佳实践

与bootstrap action(引导操作)的区别:

• 引导操作只能在集群创建时执行,而reconfiguration可以在集群运行期间执行

• 引导操作通常用于初始设置和软件安装,而reconfiguration主要用于调整配置参数

reconfiguration支持多种EMR应用程序的配置修改,包括Hadoop、Spark、Hive、HBase等。这使得EMR集群更加灵活,能够适应不断变化的业务需求和工作负载特性。

测试

我们将创建一个测试EMR集群,并使用Reconfigure功能来更改HBase端口:

1. 创建EMR集群(包含HBase)

进入EMR控制台,点击"Create cluster”;Applications: 选择 Hadoop, HBase, Zookeeper

image-20250606174153150

其他选项保持默认。

验证HBase默认端口

Hbase在EMR上的默认端口如下: 参考 https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-hbase-configure.html

Interface Port Protocol
HMaster 16000 TCP
HMaster UI 16010 HTTP
RegionServer 16020 TCP
RegionServer Info 16030 HTTP

我们将更改HMaster UI,让它从16010变成16011

更改RegionServer Info,让它从16030变成16031


集群启动后,SSH到Master节点 访问16010:

image-20250606180158347

查看当前HBase配置,现在里面并没有HMaster UI相关的信息。后面reconfiguration后这个xml文件将会新增内容:

cat /etc/hbase/conf/hbase-site.xml 

登录到一台core节点,查看它的16030端口(或者直接curl访问它):

# 查看HBase RegionServer默认端口  
netstat -tlnp | grep 16030

image-20250606182736005

同样,core节点的/etc/hbase/conf/hbase-site.xml文件上面还没有跟region server端口相关的配置。

执行Reconfigure更改HBase端口

我们先更改primary节点的端口,选择对应的配置,点击Reconfigure

image-20250606181311776

在新的页面里输入以下内容:

[
  {
    "Classification": "hbase-site",
    "Properties": {
      "hbase.master.info.port": "16011"
    }
  }
]

image-20250606181424750

然后等待1-2min,中间状态会先成变Reconfiguring,再变成Running

image-20250606181629326

等状态变成Running后,重新在master节点上执行cat /etc/hbase/conf/hbase-site.xml ,会发现增加了如下配置:

image-20250606181703201

同理,对core节点执行一样的reconfigure操作,json如下:

[
  {
    "Classification": "hbase-site",
    "Properties": {
      "hbase.regionserver.info.port": "16031"
    }
  }
]

等待它完成:

image-20250606183208633

然后登录到core节点查看``cat /etc/hbase/conf/hbase-site.xml`:

image-20250606182052128

4. 验证配置更改

重启HBase服务使配置生效,在master节点上执行:

sudo systemctl restart hbase-master

然后访问对应端口:

curl http://localhost:16011  # 新的Master UI端口

image-20250606182119206

在core节点上执行:

sudo systemctl restart hbase-regionserver

curl -http://localhost:16031  # 新的RegionServer UI端口

image-20250606182144898

5. 测试验证

验证HBase功能正常工作:

# 进入HBase shell
hbase shell

# 创建测试表
create 'test_table', 'cf1'

# 插入数据
put 'test_table', 'row1', 'cf1:col1', 'value1'

# 查询数据
get 'test_table', 'row1'

# 查看表信息
describe 'test_table'

image-20250606182239866