我正在尝试通过Lambda函数配置/启动EMR。它可以正常工作,除了在配置文件中获取IP地址或主机名。我正在尝试为presto config.properties文件配置一个属性,如
"hive.metastore.uri" : "thrift://<IP address of the Master Node>:9083"
每次启动新的群集/ emr时,我不确定如何在配置文件中获取要替换的主节点的IP地址或主机名?我试过了 -
"hive.metastore.uri" : "thrift://${yarn.nodemanager.hostname}:9083"
它没有用,它不会用实际的主机名替换主机名。
Configurations=[
{
"Classification": "presto-log",
"Properties": {
"com.facebook.presto":"DEBUG",
"com.sun.jersey.guice.spi.container.GuiceComponentProviderFactory":"DEBUG",
"com.ning.http.client":"DEBUG",
"com.facebook.presto.server.PluginManager":"DEBUG"
}
},
{
"Classification": "presto-config",
"Properties": {
"http-server.threads.max" : "500",
"discovery-server.enabled" : "true",
"sink.max-buffer-size" : "1GB",
"query.max-memory" : "90GB",
"query.max-history" : "40",
"query.min-expire-age" : "100m",
"http-server.log.path" : "/var/log/presto/http-request.log",
"http-server.log.max-size" : "67108864B",
"http-server.log.max-history" : "5",
"log.max-size" : "268435456B",
"log.max-history" : "5",
"distributed-joins-enabled" : "true",
"query.client.timeout" : "30m"
}
},
{
"Classification": "presto-connector-hive",
"Properties": {
"hive.s3.connect-timeout" : "2m",
"hive.s3.max-backoff-time" : "10m",
"hive.s3.max-error-retries" : "50",
"hive.metastore-refresh-interval" : "1m",
"hive.s3.max-connections" : "500",
"hive.s3.max-client-retries" : "50",
"connector.name" : "hive-hadoop2",
"hive.s3.socket-timeout" : "2m",
"hive.metastore.uri" : "thrift://${yarn.nodemanager.hostname}:9083",
"hive.metastore-cache-ttl" : "20m",
"hive.s3.staging-directory" : "/mnt/tmp",
"hive.s3.use-instance-credentials" : "true",
"hive.external-table-writable " : "true"
}
}
],
任何想法如何使这个工作?
答案 0 :(得分:0)
您无需在配置上设置hive.metastore.uri
。 EMR将在所有节点上自动配置此参数,以包含主节点的FQDN(Metastore守护程序所在的位置)。
如果您确实想要在应用程序配置上替换master / core / task的FQDN,那么EMR上没有支持的文档可以这样做。但是,Amazon EMR版本使用基于Apache BigTop的系统打包。因此,您可以在config API上使用yaml文件中定义的参数。
https://github.com/apache/bigtop/blob/master/bigtop-deploy/puppet/hieradata/bigtop/cluster.yaml
示例JSON:
[
{
"Classification": "presto-config",
"Properties": {
"http-server.http.port" : "8081",
"discovery.uri" : "http://%{hiera('bigtop::hadoop_head_node')}:8081",
}
}
]
其中,
%{hiera('bigtop::hadoop_head_node')}
:可用于替换主节点的FQDN
%{fqdn}
:可用于替换自己的FQDN。
注意:未对此配置进行测试以成功启动EMR群集,并且所有此类自定义参数的使用都应由您自行承担风险。