Han pasado casi 6 años desde los artículos de Mordiendo Hadoop: Mordiendo Hadoop: Instalación y primeras pruebasMordiendo Hadoop: Instalación en Cluster y Mordiendo Hadoop: Desarrollo de aplicaciones MapReduce. En ese tiempo el ecosistema de Hadoop se ha enriquecido, su arquitectura ha cambiado y su uso se ha extendido, convirtiéndose en la referencia de tecnología para Big Data. En estos años hemos realizado varias instalaciones de Hadoop en el grupo de Ingeniería de Información de la universidad, tanto para los cursos de maestría como para proyectos de pregrado y postgrado.

Desde hace poco más de 3 años, usamos la distribución de HortonWorks, HDP, por su facilidad de instalación (a través de ambari), por ser de código abierto y por su estabilidad. Cada vez es más fácil realizar la instalación, pero todo depende de la configuración previa de los nodos. En este artículo describiré la instalación de HDP, los pasos preliminares y las lecciones aprendidas que pueden ser aplicadas a nuevas instalaciones ( una traducción-resumen de la documentación oficial, con algunos consejos).

Preparación

Antes de iniciar la instalación de la plataforma HDP, debemos asegurarnos de cumplir con unos prerrequisitos:

  1. Tener instalado en los nodos un sistema operativo soportado (Recomendados para HDP 2.3: Centos 6.x o 7.x). Consejo: Instalar el sistema operativo en inglés, ambari en ocasiones tiene problemas con la codificación de caracteres cuando el sistema operativo tiene un idioma diferente.
  2. Desde la que será la máquina host de ambari el usuario root debe poder autenticarse sin contraseña a las otras máquinas del cluster.
  3. Todas las máquinas deberían tener la hora sincronizada (usando ntp), el servicio de ntp debe estar configurado para iniciar al iniciar el sistema operativo.
  4. Todas las máquinas deben ser alcanzables por nombre de dominio. (DNS es la mejor opción, si no es posible se puede lograr agregándolas al /etc/hosts de todas las máquinas).
  5. Cada máquina debe tener correctamente configurado su FQDN (es una continuación del punto anterior). En especial, si la máquina tiene más de una interfaz de red debemos asegurarnos que siempre resuelva su nombre de dominio con la misma dirección IP (y que sea la que está en el segmento del cluster).
  6. El número máximo de descriptores de archivos abiertos (el número máximo de archivos abiertos de forma simultanea) debe ser de, como mínimo, 10000 (el recomendado es 65536 ). Se puede verificar usando ulimit -Snulimit -Hn (Límite suave y fuerte respectivamente) y se puede cambiar usando ulimit -n 10000.
  7. Desactivar SELinux  y configurar el firewall para que las máquinas del cluster puedan comunicarse entre ellas por los puertos apropiados, y permitir el acceso de los usuarios a los servicios.  Se recomienda desactivar el firewall durante el proceso de instalación, e iniciarlo y configurarlo apropiadamente una vez la instalación esté completa.
  8. Debemos tener una idea de cómo vamos a distribuir los servicios en el cluster (en qué máquinas tendremos los servicios maestros y en cuáles tendremos los esclavos y los clientes).

Instalación

Antes de iniciar la instalación debemos determinar cuál será la máquina dedicada como host de Ambari. En esta máquina debemos:

  1. Configurar el repositorio:
    wget -nv http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.1.0/ambari.repo -O /etc/yum.repos.d/ambari.repo
    
  2. Instalar ambari-server:
    yum install ambari-server
  3. Configurar ambari-server:
    ambari-server setup
    1. Seleccione el JDK deseado (Oracle JDK 1.8 es una buena opción). Debe aceptar la licencia para continuar con la instalación.
    2. Si desea tener una manejador de bases de datos diferente a postgres para ambari, seleccione la configuración avanzada. En caso contrario acepte el valor por defecto (En ese caso se creará en Postgres una base de datos llamada ambari; El usuario por defecto será ambari y contraseña bigdata).
  4. Inicie el servidor ambari:
    ambari-server start
  5. Desde un navegador web ingresar al servidor de ambari, http://<fqdn del servidor de ambari>:8080
    • Ingresar con el nombre de usuario y contraseña por defecto (admin /admin).Bienvenida de ambari
    • Al ingresar podrá crear un nuevo cluster usando el asistente, manejar los usuarios y grupos que pueden acceder a ambari y desplegar vistas.
    • Al iniciar el asistente para la creación de un nuevo cluster le solicitará un nombre. Debe ser descriptivo, porque es la forma de identificar el cluster en ambari.
      ambari2
    • El segundo paso del asistente es seleccionar la versión de HDP a instalar.  Si las máquinas tendrán conexión a Internet durante la instalación sólo es necesario indicar la versión, en caso contrario es necesario abrir las opciones avanzadas y configurar la dirección del repositorio local que se utilizará.
      ambari3
    • En el siguiente paso se agregan los nombres de las máquinas que harán parte del cluster, una por línea o utilizando expresiones.  También debe indicar la llave privada ssh autorizada para acceder a los nodos del cluster.  (Si realizó correctamente el paso 2 de la preparación, la llave privada probablemente estará en /root/.ssh/id_rsa del host de ambari)
      ambari4Si utilizó expresiones aparecerá una ventana confirmando los nombres
      ambari4.1
    • En el siguiente paso se instalará el agente de ambari en los hosts seleccionados y se pueden eliminar nodos que no se quieran incluir en el cluster.
      ambari5
    • A continuación es necesario seleccionar los servicios que se desean en el cluster.
      ambari6
    • Luego debemos seleccionar dónde quedaran los componentes maestros de estos servicios.
      ambari8
    • También seleccionar en qué nodos quedarán los componentes esclavos y los clientes de los servicios.
    • Antes de la revisión final y la instalación, debemos personalizar la configuración de los servicios. Ambari hace recomendaciones de acuerdo a las características de los nodos, que pueden ser usados como valores por defecto, sin embargo conviene revisarlas y es necesario completar las configuraciones que aparecen marcadas en rojo (para las cuales no hay un valor pre-establecido).
      ambari9
    • Luego se realiza una revisión final y se procede a la instalación, configuración y prueba de los servicios.
      ambari10
      ambari11
      El proceso de instalación puede tomar varios minutos, pero es completamente automático. Si hay una falla en alguno de los procesos se puede hacer clic en el mensaje para obtener el log (para determinar la causa). Son comunes los problemas de conexión con los servidores espejo, por lo que la solución más común es reintentar la instalación. Al finalizar verá el resumen de la instalación y podrá ir al tablero de control, en el cual puede ver cuáles servicios están activos, cuáles inactivos, los recursos utilizados, ver las alertas y realizar tareas de administración (por ejemplo, agregar un nuevo servicio al cluster, iniciar o detener un servicio y modificar la configuración).
      ambari12
      ambari13
      ambari14

El proceso de instalación es sencillo, semiautomático y permite tener rápidamente un entorno funcional. Sin embargo, se debe tener en cuenta que esta instalación es sólo un punto de arranque y se deben definir políticas para el uso de los recursos (generalmente más de un usuario utilizará el cluster) e ir ajustando la configuración de acuerdo a las métricas obtenidas.

 

He visto cientos de startups buscando “Ninja Programmers”. Sólo conozco un candidato que cumple ese requisito y aunque casualmente es uno de los mejores desarrolladores que conozco, que sea un maestro del ninjutsu no dice mucho acerca de su experiencia en el desarrollo de software. Aunque la analogía del Ninja puede servir para sintetizar algunas de las cualidades de un buen desarrollador, términos como Ninja o Rockstar no aportan a la descripción del perfil que se busca para cubrir las necesidades de la empresa.

BigData at the peak of inflated expectations
Gartner’s 2013 Hype Cycle for Emerging Technologies

Con el término “Data Scientist” pasa algo similar: no sabemos qué esperar.  Según el ciclo de Gartner para tecnologías emergentes para el 2013, tanto Big Data como Content Analysis están en la cima del  pico de expectativas infladas lo que hace que muchas empresas busquen sacarle provecho, sin tener muy claro cómo, e integrar a un científico de datos a la nómina parece tener mucho sentido. Incluso, Data Scientist es considerado el trabajo más sexy del siglo 21.

El problema del término Data Scientist es que engloba un conjunto de roles, con diferentes habilidades, que interactúan entre sí.

Existen varios trabajos que intentan clasificar los roles de los científicos de datos. Kandel et al. (2012), por ejemplo, identifican tres arquetipos: Hacker, Scripter y Usuario de aplicación; en el mismo trabajo describen 5 tareas de alto nivel: Descubrir, Discutir, Perfilar, Modelar y Reportar. En su reporte “Four Functional Clusters of Analytics Professionals“, Talented Analytics identifica 4 categorías de profesionales de acuerdo a sus funciones: Preparación de datos, Programadores, Administradores y Generalistas. Así como estos, se pueden encotrar varias taxonomías de Data Scientists, pero la que más me ha gustado y la que utilizaré en el resto del artículo es la presentada en “Analyzing the Analyzers: An Introspective Survey of Data Scientists and Their Work“, en la que definen un conjunto de habilidades, y un conjunto de roles, a partir de una encuesta realizada a profesionales que se identifican con el rol de Data Scientist.

Analyzing the Analyzers An Introspective Survey of Data Scientists and Their Work
Grupos de habilidades

En el análisis identifican una serie de habilidades que se relacionan con el trabajo de los diferentes profesionales entrevistados y se generan cinco grupos de habilidades usando Non-negative Matrix Factorization: Negocio, Machine Learning/Big Data, Matemáticas/Investigación de operaciones, Programación y Estadística.

En la encuesta también se les preguntó a los profesionales cómo se ven a sí mismos y, de igual forma, se generaron cuatro clusters:  Data Developer (o Data Engineer), Data Researcher, Data Creative y Data Businessperson.

Aunque cada uno de estos roles tiene fortalezas de manera predominante en uno o dos de los grupos de habilidades, todos los profesionales tienen habilidades en los 5 grupos.  El análisis sugiere tener equipos de Data Scientists de los diferentes roles de tal forma que sus habilidades se superpongan de la mejor manera posible.

" Analyzing the Analyzers An Introspective Survey of Data Scientists and Their Work"
Diferentes Roles con habilidades predominantes, pero todos los roles tienen habilidades de los 5 grupos.

Este marco nos permite diferenciar entre profesionales del análisis de datos y nos permite describir de una manera más detallada los perfiles necesarios. También nos permite hablar acerca de las habilidades que se persiguen en un curso específico de Data Science. Por ejemplo, en el curso de “From Big Data to Content Analysis” dictado en el 2012 en la universidad de los Andes, el programa buscaba desarrollar habilidades de los grupos ML/Big Data y Programming, asociadas con los roles Data Creative y Data Engineer, pero gracias a la interdisciplinariedad de los participantes los proyectos se nutrieron con habilidades del grupo de estadística (Visualización, análisis espacial, marketing), más asociado al rol de Data Researcher.

Pensamientos finales

  • No todos los Data Scientists son iguales. Un científico de datos no trabaja solo, se necesita un equipo que sume sus fortalezas y su conocimiento del dominio de los datos para obtener los mejores resultados.
  • Aunque cada rol tiene fortalezas especialmente en un grupo de habilidades, un científico de datos debe conocer lo suficiente de los otros grupos de habilidades como para facilitar las discusiones.
  • La interdisciplinaridad de un equipo de análisis de datos es una de sus mayores fortalezas.
  • Prefiero el término Data Engineer frente a Data Developer, es más general y describe mejor el rol.
  • Los autores de  Analyzing the Analyzers han publicado un test para determinar tu rol como Data Scientist. A mi me pareció bastante acertado.
  • Conozco personas que conformarían un excelente grupo de data science, algunas de ellas creo que nunca han pensado en sí mismas como data scientists.
  • Data Science no implica Big Data, aunque sean términos que se relacionan.

Los recomendados de la semana llegan mezclando algo de reflexión, comics, social media, entre otras cosas:

  • ¿Por qué marchan los estudiantes?, en contravía, expone los  argumentos de los estudiantes, frente a los del gobierno, sobre la ley 30. Entre otros recursos, la vicerrectoría de sede Bogotá de la universidad Nacional de Colombia ha puesto a disposición del público una recopilación de documentos sobre la reforma para su discusión. 
  • El poyecto “Rooftop” busca rediseñar los trajes de los superheroes de toda la vida. Reciben permanentemente contribuciones, que únicamente deben cumplir sus guidelines.
Project : Rooftop – P:R Redesign : Michelle Sciuto’s Harley Quinns!
Con esto terminan los recomendados de la semana, para cerrar los dejo con el último vídeo de Simon’s Cat  😆