logo-apache-hadoop

Guía Tutorial: Cómo montar tu entorno Hadoop monocluster (1)

Un ejemplo de cómo jugar con nuestro entorno de Big Data es resolviendo algún problema cotidiano, que lo podríamos hacer de forma lazy.

Yo, por ejemplo, me encuentro que cada x tiempo tengo invitaciones en LinkedIn y, de vez en cuando, añado gente con algún criterio basado en mis intereses, así que un proyecto interesante sería encontrar una forma para que, cada día, las invitaciones nuevas se aceptaran si cumplen unos requisitos y que a cierta cantidad de gente se le enviara una invitación según unos parámetros.

Planteado de otra forma y a nivel más alto sería un proyecto para una consultora que gestionara candidatos y empresas a nivel global. Las empresas introducen sus propuestas y lo que están buscando, y nuestro algoritmo lo busca y lo clasifica según algún criterio.

Antes de empezar con el código deberíamos tener clara la estructura a seguir. Primero utilizaríamos la API de LinkedIn o simplemente scraping de su web para obtener información de tanta gente como podamos. Esa información se parsea y se clasifica con tags, pongamos por ejemplo años de experiencia, idiomas, skills, etc. Por otro lado, las empresas tendrían que poder introducir lo que buscan: un candidato que hable x idiomas, tenga y experiencia en algún sector, etc Luego usaríamos un decision tree para clasificar los candidatos de LinkedIn y asignarles un valor incrementado por cada tag que cumplan.

Finalmente, podríamos darle a las consultoras un resultado de qué candidatos son los más óptimos para lo que están buscando. Este ejemplo, llevado al extremo del Big Data sería recoger información, no sólo de LinkedIn, sino de cualquier otro sitio donde la gente se anuncie y exponga su curriculum como INEM, Infojobs, etc.

Pero antes de correr hay que aprender a caminar, así que primero haremos una prueba de concepto resolviendo el problema de aceptar las invitaciones que nos llegan y enviar invitaciones según unos criterios. Para que este artículo no sea excesivamente largo, lo dividiré en varias partes.

Cómo montar tu entorno Hadoop monocluster

El objetivo de esta guía es mostrar cómo montar tu entorno Hadoop en la nube a un precio razonable, más allá de la máquina virtual que ofrece Hadoop, con la versatilidad de disponer de tu propio servidor actualizable. Serán varios artículos que iré posteando en Just Code It para que no se haga tan, tan extenso, así que aquí va la primera edición de este tutorial sobre cómo montar tu entorno Hadoop monocluster.

Hosting económico en 1and1

Empezamos contratando un servidor mínimo Linux en 1and1. Para disfrutar de Hadoop necesitaremos como mínimo la siguiente configuración de servidor.
precio-y-especificaciones-servidor
Una vez pagado podemos acceder al servidor mediante ssh con la clave que nos proporcionan.
captura-del-menu-de-acceso-al-servidor

Si la ip fuera 82.211.11.11 la forma de conectarnos sería  ssh root@82.211.11.11Lo primero, una vez conectados, es actualizar el sistema operativo con yum update 

Configurar Ambari

La repo de ambari no está por defecto, así que tenemos que añadirla a mano con el usuario root:
Comprobamos que tenemos el repo añadido correctamente con yum repolisty . Debemos ver una línea donde aparece Ambari: ambari-2.6.0.0 ambari Version – ambari-2.6.0.0 12

Ahora toca configurar el host

Miramos que host tenemos actualmente. Con hostname -f  aparecerá el nombre del host, por ejemplo: host.boatosmosis.com 
Editamos el /etc/hosts y añadimos (supongamos que el ip externo es 235.195.166.198), entonces añadimos la siguiente linea en el /etc/hosts 235.195.166.198 host.boatosmosis.com 
Luego, debemos básicamente ejecutar:
ambari-server setup
Arrancará el proceso y nos preguntará:
OK to continue[y/n](y)? (le damos que sí si aparece este mensaje).
Customize user account for ambari-server daemon[y/n](n)? (le damos que no).
Luego, nos preguntará por el JDK
Checking JDK…
Do you want to change Oracle JDK[y/n](n)? y
[1] Oracle JDK 1.8 + Java Cryptography Extension(JCE) Policy Files 8
[2] Oracle JDK 1.7 + Java Cryptography Extension(JCE) Policy Files 7
Elegimos el 1.
Una vez instalada nos preguntará si queremos configurar los valores avanzados de bases de datos y le decimos que no. Y después de generar los valores correspondientes en la base de datos de Ambari, finalizará el proceso.

Profit!

Ya podemos arrancar Ambari:

Una vez hecho esto, desde nuestro navegador ponemos: http://tu-url-de-1and1:8080

Si no nos deja entrar en esta URL tenemos que entrar en 1and1 en la política de firewall y abrir el puerto 8080.
captura-menu-politicas-firewall
A partir de aquí aparecerá la pantalla y podemos instalar Ambari como dice en la guía http://ihorbobak.com/index.php/2015/05/06/installing-hadoop-using-ambari-server/ a partir de Install Hadoop Components Using Ambari”, con la única diferencia que nos mostrará varias versiones de HDP. Elegimos la última que es la 2.6. A partir de ahí podemos seguir los pasos de la guía, poniendo como hostname cuando lo solicite el host (FQN) de nuestro ejemplo: host.boatosmosis.com
Puede ocurrir que al finalizar con el proceso, haya una serie de warnings de elementos que no se hayan podido arrancar. Esto suele pasar cuando la memoria de nuestro servidor está muy justa”.
Para solucionar esto entramos al dashboard de Ambari, y en primer lugar paramos los servicios que no vamos a usar, dejando los que sí queremos usar. Ojo: Yarn, HDFS, MapReduce2, Hive, Zookeeper y Tez deben siempre estar arrancados.
Muchas veces es conveniente poner el modo maintenance para evitar mensajes de time out que son warnings y en máquinas pequeñas pueden saturar los servicios e incluso provocar que pasen a stop. Si esto nos sucede muy a menudo, debemos entoncestunear” los valores de memoria de algunos de ellos (ver https://docs.hortonworks.com/HDPDocuments/Ambari-2.6.0.0/bk_ambari-administration/content/ambari_admin_overview.html).
Hasta aquí la primera parte de esta entrega.

Por: Borja Robles Gómez

foto-Borja-Robles-Gómez

 

 

 

 

 

Senior Quality Assurance Automation Engineer en Netquest

5 años de experiencia en QA, Testing & Automation. Apasionado sobre automatización de procesos y buscando siempre algo nuevo sobre lo que aprender.

Actual alumno del KeepCoding Big Data & Machine Learning Bootcamp I

 

Si tienes algo que deseas compartir o quieres formar parte de JustCodeIt, escríbenos a [email protected].



Share this:

Leave a comment