EMR的reconfiguration(重新配置)是 EMR 提供的一项功能,允许我们在集群运行期间修改集群上应用程序的配置,而无需重启集群或创建新集群。
这项功能的主要用途和特点包括:
与bootstrap action(引导操作)的区别:
• 引导操作只能在集群创建时执行,而reconfiguration可以在集群运行期间执行
• 引导操作通常用于初始设置和软件安装,而reconfiguration主要用于调整配置参数
reconfiguration支持多种EMR应用程序的配置修改,包括Hadoop、Spark、Hive、HBase等。这使得EMR集群更加灵活,能够适应不断变化的业务需求和工作负载特性。
我们将创建一个测试EMR集群,并使用Reconfigure功能来更改HBase端口:
进入EMR控制台,点击"Create cluster”;Applications: 选择 Hadoop, HBase, Zookeeper
其他选项保持默认。
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:
查看当前HBase配置,现在里面并没有HMaster UI相关的信息。后面reconfiguration后这个xml文件将会新增内容:
cat /etc/hbase/conf/hbase-site.xml
登录到一台core节点,查看它的16030端口(或者直接curl访问它):
# 查看HBase RegionServer默认端口
netstat -tlnp | grep 16030
同样,core节点的/etc/hbase/conf/hbase-site.xml
文件上面还没有跟region server端口相关的配置。
我们先更改primary节点的端口,选择对应的配置,点击Reconfigure
:
在新的页面里输入以下内容:
[
{
"Classification": "hbase-site",
"Properties": {
"hbase.master.info.port": "16011"
}
}
]
然后等待1-2min,中间状态会先成变Reconfiguring
,再变成Running
:
等状态变成Running后,重新在master节点上执行cat /etc/hbase/conf/hbase-site.xml
,会发现增加了如下配置:
同理,对core节点执行一样的reconfigure操作,json如下:
[
{
"Classification": "hbase-site",
"Properties": {
"hbase.regionserver.info.port": "16031"
}
}
]
等待它完成:
然后登录到core节点查看``cat /etc/hbase/conf/hbase-site.xml`:
重启HBase服务使配置生效,在master节点上执行:
sudo systemctl restart hbase-master
然后访问对应端口:
curl http://localhost:16011 # 新的Master UI端口
在core节点上执行:
sudo systemctl restart hbase-regionserver
curl -http://localhost:16031 # 新的RegionServer UI端口
验证HBase功能正常工作:
# 进入HBase shell
hbase shell
# 创建测试表
create 'test_table', 'cf1'
# 插入数据
put 'test_table', 'row1', 'cf1:col1', 'value1'
# 查询数据
get 'test_table', 'row1'
# 查看表信息
describe 'test_table'