ejemplo acens - Saul-R/hadoop_conf_utils GitHub Wiki

Acens

Guia para la conexión al cluster con el proyecto hadoop_conf_utils para el entorno definido por envs/acens.

Prerequisitos

Primero hemos de tener una consola (bash / zsh) sobre la que instalar hadoop_conf_utils. Hay disponibles estas versiónes del proyecto : Releases.

Para instalar hadoop_conf_utils, en Windows es necesario contar con Babun, o un cygwin con los paquetes de openssh instalados( en cualquier caso Babun es la opción recomendada al venir con todos los paquetes preinstalados).

Ahora habría que instalar el hadoop_conf_utils (descomprimir el zip con la release) y desplegar el entorno de acens (install/deploy.sh acens <usuario_en_acens> en la carpeta de hadoop_conf_utils).

Este despliegue nos instalará una serie de utilidades que harán las conexiones más sencillas

Interfaces web.

Para acceder a los servicios web del cluster tendremos que setear un proxy SOCKS y configurar el navegador para que redirija el tráfico que nos interesa por este proxy.

Proxy

Para levantar un proxy que se conecte al frontend de acens y redirija nuestras conexiónes basta, una vez instalado hadoop_conf_utils, con lanzar:

proxy_up_acens
LEVANTANDO EL PROXY EN EL PUERTO: 1298

Este comando levanta este proxy, ahorrandonos el acordarnos del comando específico, que en este caso sería algo así (esto ya no es necesario si tenemos proxy_up_acens):

ssh -f -NC -D 127.0.0.1:${PROXY_PORT} ${ENV} > /dev/null 2>&1

El comando proxy_up_acens nos informa del puerto en el que estará escuchando el proxy (generalmente el 1298).

Configuración del navegador (FoxyProxy)

Para redirigir el tráfico del navegador por el proxy sólo para ciertas URLs recomiendo el uso de FoxyProxy (tiene extensión para Chrome y Firefox).

Una vez instalada esta extensión, hacemos click en el icono de foxyProxy y marcamos la opcion "Use proxies based on their predefined patterns and priorities".

Después hacemos click en "Options":

Icono Foxy_proxy

Dentro de Options debemos completar los detalles del proxy de forma manual. La IP será la 127.0.0.1 y el puerto el 1298, a menos que el proxy_up_acens nos indique otro.

Proxy_settings

En la pestaña de "URL patterns" configuramos las URLs para las que se aplicará el proxy. Hacemos click en "Add new pattern" y seteamos las siguientes

  • Pattern Name: frontend; URL Pattern: *frontend*
  • Pattern Name: Masters ; URL Pattern: *cdh-master*
  • Pattern Name: Workers ; URL Pattern: *cdh-worker*
  • Pattern Name: NoSQL ; URL Pattern: *nosql1*

Ejemplo patrón Frontend: Add/edit Pattern

Debería quedar algo así:

URL patterns

Lista de Servicios Web con URLs

Servicio URL Notas
HUE http://cdh-master3:8888
Cloudera Manager http://cdh-master3:7180
StaticData (Nginx) http://frontend:81 Document_Root: /mnt/data1/nginx/data/
JupyterHub https://frontend:8000
Kibana (via Proxy + authorization) http://frontend:5601 issues_acens #15
Kibana (no authorization) http://nosql1:5601 issues_acens #15
Jenkins http://frontend:8080
YARN http://cdh-master2:8088

Conexión SSH

Para conectarse por ssh; teniendo hadoop_conf_utils instalado; basta con:

ssh acens

Que no deja de ser un alias para:

ssh [email protected] -p 2222

Subida de archivos

El proyecto hadoop_conf_utils nos instala un wrapper sobre la conexión via HTTPFS al HDFS del cluster. Para subir un archivo (de momento no permite la subida de carpetas):

httpfs_put acens <fichero> /ruta/hdfs/<fichero>

Por ejemplo para subir una carpeta (con solo un nivel de profundidad):

REMOTE_PATH=/hdfs/folder/path
LOCAL_PATH=/path/local/folder
hdfs dfs -mkdir -p $REMOTE_PATH
for file in `ls $LOCAL_PATH`; do
  httpfs_put acens $LOCAL_PATH/$file $REMOTE_PATH/$file
  echo "Uploaded $file"
done

Es importante especificar la ruta completa en hdfs, incluyendo el nombre que va a tener el archivo que subiremos.

La opción de subir archivos vía HUE puede ser válida para archivos pequeños (< 20 MB). La de scp al frontend + put a hdfs no está recomendada en ningún caso si se quieren subir datos desde local.

La llamada a la api de HTTPFS si no se quiere utilizar el hadoop_conf_utils es algo similar a:

HTTPFS_URL="http://${HTTPFS_IP}:${HTTPFS_PORT}/webhdfs/v1"
curl -L --socks5 127.0.0.1:${PROXY_PORT} -X PUT -T $FILE \
  ${HTTPFS_URL}${HDFS_PATH}"?op=CREATE&user.name="${REMOTE_USER_NAME} \
  --header "Content-Type:application/octet-stream" \
  --header "Transfer-Encoding:chunked"

Para utilizar esta llamada hace falta tener un proxy SOCKS corriendo. Queda pendiente evaluar si merece la pena exponer el puerto de HTTPFS por la IP pública (89.17.217.233).

Configuración entorno ACENS:

El archivo envs/acens del proyecto hadoop_conf_utils se ha configurado con las siguientes variables:

Campo Valor
IP Pública Servidor (SSH) ENV_IP=89.17.217.233
Puerto SSH SSH_PORT=2222
IP Maquina con HTTPFS Gateway HTTPFS_IP=192.168.2.2
Puerto servicio HTTPFS Gateway HTTPFS_PORT=14000
⚠️ **GitHub.com Fallback** ⚠️