2017-05-23 1 views
0

Ich versuche, ein EMR über eine Lambda-Funktion zu konfigurieren/hochzufahren. Es funktioniert ok, außer die IP-Adresse oder den Hostnamen in den Konfigurationsdateien zu erhalten. Ich versuche, eine Eigenschaft für presto config.properties Datei zu konfigurieren, die wie etwas hatErstellen von EMR über Lambda Funktion: Abrufen von Hostname/IP in der Konfigurationsdatei

"hive.metastore.uri" : "thrift://<IP address of the Master Node>:9083" 

Ich bin nicht sicher, wie die IP-Adresse oder den Hostnamen des Master-Knoten erhalten in der Config-Datei jedes Mal ersetzt werden i Spin ein neues Cluster/emr? Ich habe das versucht -

"hive.metastore.uri" : "thrift://${yarn.nodemanager.hostname}:9083" 

Es hat nicht funktioniert, es ersetzt nicht den Hostnamen mit dem tatsächlichen Hostnamen.

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" 
      } 
     } 
    ], 

Irgendwelche Ideen wie man das funktioniert?

+0

Welchen Parameter versuchen Sie auf Presto einzustellen? Wenn es spezifisch für hive.metastore.uri ist, wird EMR diesen Parameter automatisch auf allen Knoten konfigurieren, um den fqdn des Master-Knotens einzuschließen (wo der Metastorendämon zurückkommt). Sie müssen es nicht manuell festlegen. –

+0

Es gibt 2 verschiedene Parameter, die ich einstellen wollte. Der Bienenstockmetastere uri wird automatisch eingestellt. Danke, dass du das gezeigt hast. Der andere Parameter ist der Presto-Port in confif.properties. Wir verwenden 8081 Port anstelle von 8889. Wie ändere ich das? Dies sind die Parameter, die ich versuche zu ändern - discovery.uri = http: // ip- <>: 8081 und http-server.http.port = 8081. – Ashwin

+0

Für http-server.http.port können Sie die Presto-Config-Klassifizierung mit Schlüssel als 'http-server.http.port' und '8081' als Wert verwenden. Es überschreibt einfach den Standard 8889. –

Antwort

0

Sie müssen hive.metastore.uri nicht auf Konfigurationen setzen. EMR konfiguriert diesen Parameter automatisch auf allen Knoten, um den FQDN des Master-Knotens (in dem sich der Metasore-Daemon befindet) einzubeziehen.

Wenn Sie den vollqualifizierten Domänennamen (FQDN) für Master/Core/Task in den Konfigurationen von Anwendungen ersetzen möchten, gibt es dafür keine unterstützten Dokumente für EMR. Amazon EMR-Versionen werden jedoch mit einem System basierend auf Apache BigTop verpackt. Sie können also Parameter verwenden, die in der yaml-Datei in der Konfigurations-API definiert sind.

https://github.com/apache/bigtop/blob/master/bigtop-deploy/puppet/hieradata/bigtop/cluster.yaml

Beispiel JSON:

[ 
    { 
    "Classification": "presto-config", 
      "Properties": { 
       "http-server.http.port" : "8081", 
       "discovery.uri" : "http://%{hiera('bigtop::hadoop_head_node')}:8081", 
      } 
    } 
] 

Wo,

%{hiera('bigtop::hadoop_head_node')}: kann der Master-Knoten FQDN

%{fqdn} ersetzen verwendet werden: kann verwendet werden, um seine eigenen FQDN zu ersetzen .

Hinweis: Diese Konfiguration wurde nicht getestet, um einen EMR-Cluster erfolgreich zu starten, und die Verwendung solcher benutzerdefinierten Parameter sollte auf eigenes Risiko erfolgen.

Verwandte Themen