Habilitación de Spark UI y Ganglia para EMR Cluster

Si ya está aquí, ya ha estado ejecutando su EMR Cluster y tratando de averiguar las diversas métricas que puede monitorear para ajustar el uso de recursos de su clúster.

¿Qué es EMR?

Amazon Elastic MapReduce (EMR) es una herramienta de Amazon Web Services (AWS) para el procesamiento y análisis de big data. Amazon EMR ofrece el servicio ampliable de baja configuración como una alternativa más sencilla a la ejecución de la informática en clúster interna.

Consola EMR
Captura de pantalla 2019-07-31 a las 16.18.31.png Esta es una consola EMR típica.

Mientras se ejecuta un clúster, especialmente cuando se acaba de desarrollar una canalización, hay mucho margen para mejorar en términos de uso de recursos del clúster. Algunos problemas que se pueden resolver con Spark UI y Ganglia son:

  • Solucione el error de asignación de recursos (Créame, este probablemente será su primer problema en EMR)
  • Uso de memoria/CPU/red de recursos
  • Identifique el cuello de botella en su tubería

Interfaz de usuario de Spark
Captura de pantalla 2019-07-31 a las 16.30.35.png

Interfaz de usuario de los ganglios
gangalia.png

Cómo habilitar estos servicios disponibles en su navegador

Hay varias formas de hacerlo. Sólo explicaré cómo lo hago.

Es un proceso de dos pasos.
Paso 1: Configure un túnel ssh al nodo maestro con reenvío de puertos
Paso 2: configure los ajustes del proxy del navegador para acceder a la página web alojada en el nodo principal.

Paso 1

Caso: si no está restringido para acceder al nodo maestro desde su máquina local.

ssh -i ~/emr_key.pem -ND 8157 hadoop@ec2-###-##-##-###.compute-1.amazonaws.com

###-##-##-### es la IP del nodo maestro en el clúster.

Captura de pantalla 2019-08-01 en 12.13.29.png

Busque DNS público maestro en la pestaña Resumen de la consola del clúster.

Caso: si tiene restricciones para acceder al nodo maestro desde su máquina local. En este tipo de configuración, normalmente el acceso (tráfico entrante y saliente) está limitado por grupos de seguridad de EC2.

Captura de pantalla 2019-08-01 en 13.02.22.png

En este caso, debe establecer un túnel con la instancia que tiene acceso al nodo maestro.

export EMR_MASTER=ip-xxx-xx-xxx-xx.eu-central-1.compute.internal
ssh -L 8821:"$EMR_MASTER":22 user@instance-which-has-access-to-emr-master

Después de este comando, ese tráfico a través del puerto 8821 se “canaliza” automáticamente a través de la conexión SSH y se envía al nodo principal. El servidor SSH se encuentra en el medio, reenviando el tráfico de un lado a otro.

ssh -i ~/emr_key.pem -ND 8157 -p 8821 hadoop@localhost

El paso 1 está completo.

Nota: si desea ssh al nodo maestro, simplemente hágalo

ssh -i ~/emr_key.pem -p 8821 hadoop@localhost

Paso 2

  • Agregar Foxy Proxy Extensión de cromo
  • Crear un foxyproxy-settings.xml archivo, pegue esta configuración tal como está.
<?xml version="1.0" encoding="UTF-8"?>
<foxyproxy>
   <proxies>
      <proxy name="emr-socks-proxy" id="2322596116" notes="" fromSubscription="false" enabled="true" mode="manual" selectedTabIndex="2" lastresort="false" animatedIcons="true" includeInCycle="true" color="#0055E5" proxyDNS="true" noInternalIPs="false" autoconfMode="pac" clearCacheBeforeUse="false" disableCache="false" clearCookiesBeforeUse="false" rejectCookies="false">
         <matches>
            <match enabled="true" name="*ec2*.amazonaws.com*" pattern="*ec2*.amazonaws.com*" isRegEx="false" isBlackList="false" isMultiLine="false" caseSensitive="false" fromSubscription="false" />
            <match enabled="true" name="*ec2*.compute*" pattern="*ec2*.compute*" isRegEx="false" isBlackList="false" isMultiLine="false" caseSensitive="false" fromSubscription="false" />
            <match enabled="true" name="10.*" pattern="http://10.*" isRegEx="false" isBlackList="false" isMultiLine="false" caseSensitive="false" fromSubscription="false" />
            <match enabled="true" name="*10*.amazonaws.com*" pattern="*10*.amazonaws.com*" isRegEx="false" isBlackList="false" isMultiLine="false" caseSensitive="false" fromSubscription="false" />
            <match enabled="true" name="*10*.compute*" pattern="*10*.compute*" isRegEx="false" isBlackList="false" isMultiLine="false" caseSensitive="false" fromSubscription="false" /> 
            <match enabled="true" name="*.compute.internal*" pattern="*.compute.internal*" isRegEx="false" isBlackList="false" isMultiLine="false" caseSensitive="false" fromSubscription="false"/>
            <match enabled="true" name="*.ec2.internal* " pattern="*.ec2.internal*" isRegEx="false" isBlackList="false" isMultiLine="false" caseSensitive="false" fromSubscription="false"/>	  
     </matches>
         <manualconf host="localhost" port="8157" socksversion="5" isSocks="true" username="" password="" domain="" />
      </proxy>
   </proxies>
</foxyproxy>
  • Después de haber guardado esta configuración, haga clic en el icono de la extensión de Chrome

Captura de pantalla 2019-08-01 en 13.28.04.png

Luego, seleccione Optionsluego haga clic en Import/Exportbusque el archivo foxyproxy-settings.xml y selecciónelo.
Captura de pantalla 2019-08-01 a las 13.29.58.png

  • Vaya a su consola EMR, vuelva a cargar la página

La página de la consola EMR cambiará de esta
Captura de pantalla 2019-08-01 a las 13.31.04.png

a esto

Captura de pantalla 2019-08-01 a las 13.31.45.png

¡¡Felicidades!! Ha configurado Spark UI y Ganglia en su navegador.

2016-03-15-lado-oscuro-de-la-ciencia-meme.jpg

Enlaces oficiales:

Espero que hayas aprendido algo. Por favor comparta su experiencia y comentarios.
Namasté 🙏

Similar Posts

Leave a Reply

Your email address will not be published.