[Hadoop] Instalar HDP en un cluster sin conexión

Hadoop… sí, ya sé lo que seguramente estas pensando: “¿porque instalar Hadoop en un cluster, si tenemos la posibilidad de utilizar la nube de Amazon?, todos los problemas con el mantenimiento, todos los problemas con la integración de las herramientas”. Uff, realmente yo pensaría lo mismo, Hadoop es un pantano en el que muy pocos les gusta meterse… y si te digo la verdad, si pudiera volver atrás… pues mira, volvería encantado.

Obviamente, no hay nada mejor que luchar en las trincheras para entender cómo funcionan todos los sistema, leerte la arquitectura, darte leches y leches con los que otros han creado, leerte el código [o no], ver esquemas de arquitecturas [y comprobar que después no es lo que hay en el código (aquí puedo decir lo que un compañero de la vieja escuela me dijo una vez: Da igual las palabras, los diagramas y los esquemas, lo único que es real es el código fuente)], eso es realmente lo que te hace crecer como programador, arquitecto, y técnico realmente. 

En fin, me voy por las ramas. 

Instalar Hadoop es una tarea árdua, aunque Hortonworks [en otro post explicaré porqué elegimos Hortonworks y no Cloudera que estaba de moda en aquel momento, os puedo adelantar que el señor $ estuvo cerca] nos indicara en aquel momento que era tan fácil como “play and go”… ilusos [o ilusos nosotros]. Todo esto comenzó cuando un cliente quería integrar un sistema de datos, y que desarrollaramos un ETL que permitiera integrar todas las partes de su sistema de recolección de datos, con grandes volúmenes y quería procesamientos de estos en tiempo real. Genial, dijimos, podemos utilizar AWS y así… “ah, y los servidores donde se van a instalar no queremos que tengan internet, todo ha de quedar en casa”… 

Así que imagina lo que pensamos, pues nada instalamos Hadoop y arreando. Pero no acaba ahí la cosa: “ah, y esos servidores jamás podrán tener acceso afuera, así que nos dáis un instalable y lo instalamos”

Ante esta situación, barajamos tres situaciones.

1.Desarrollar un sistema con scripts de python, scala y node para integrar todo.

2. Instalar Hadoop en servidores sin conexión a internet.

3. Salir corriendo por la puerta y bajarnos a tomarnos una cerveza en algún bar de Málaga.

Evaluando ambos sistemas lo vimos rápido. La tercera opción. XD

Ahora no, en serio, aunque la tercera opción fue la que elegimos en primer lugar, al final decidimos que instalar Hadoop en los servidores era lo mejor.

Así que buscamos por internet y encontramos esto: [Automated install with Ambari]. Así que podríamos instalar HDP dentro de un cluster con servers que estén en una zona militarizada. Mola.

Así que listamos una serie de pasos que fuimos haciendo.

Paso 1. Obtener los repositorios

Nosotros utilizamos Ubuntu 14, para ello, tuvimos que descargarnos el tarball de ambari, y también el HDP-utils.

Paso 2. Preparar un repositorio local en la máquina

En este paso, os dejo todos los pasos que dimos para instalar el repositorio en la máquina.

  1. Seleccionar un servidor [mirror server] que tenga el sistema operativo del que hemos descargado el repo.
  2. Nos aseguramos que todos los servidores pueden conectarse con ese servidor que será el mirror server.
  3. Hay que instalar el apache o algún http server.
  4. Asegurarse que el mirror server tiene el apt-get manager instalado.
  5. Crear un HTTP server [asegúrate que no hay ningún tipo de firewall activado en el mirror server.
  6. Ejecutar: mkdir -p /var/www/html
  7. Copiar todos los tarballs en el directorio del servidor web.
  8. Ejecutar: cd /var/www/html
  9. Untar los tarballs.
  10. Deberán de estar de la siguiente forma [es un ejemplo]:
    1. /var/www/html/Ambari-2.5.2.0/ubuntu16
    2. /var/www/html/HDP/HDP/ubuntu16/2.x/updates/2.6.2.14
    3. /var/www/html/HDP/HDP-UTILS-1.1.0.21/repos/ubuntu16
  11. Asegúrate que puedes entrar en estos directorios.

URLs for a Local Repository – No Internet Access

RepositoryBase URL
Ambari Base URLhttp://<web.server>/ambari-2.5.2.0/<OS>
HDP Base URLhttp://<web.server>/hdp/HDP/<OS>/2.x/updates/<latest.version>
HDP-UTILS Base URLhttp://<web.server>/hdp/HDP-UTILS-<version>/repos/<OS>
  1. Descargarse el ambari.repo [en el caso de ubuntu es ambari.list] desde el respositorio público:
http://public-repo-1.hortonworks.com/ambari/ubuntu16/2.x/updates/2.5.2.0/ambari.list
http://public-repo-1.hortonworks.com/HDP/ubuntu16/2.x/updates/2.6.2.14/hdp.list
  1. Editar el ambari.list y el hdp.list, 


Ambari.list:
#VERSION_NUMBER=2.5.2.0-298
deb http://localhost/Ambari-2.5.2.0/ubuntu16/ Ambari main

hdp.list


#VERSION_NUMBER=2.6.2.14-5
#deb http://localhost/HDP/HDP/ubuntu16/2.x/updates/2.6.2.14 HDP main
deb http://localhost/HDP/HDP/ubuntu16/ HDP main
deb http://localhost/HDP/HDP-UTILS-1.1.0.21/repos/ubuntu16/dists HDP-UTILS main

  1. Pon el repo en la máquina que va a utilizar el Ambari Server en este lugar: “/etc/apt/sources.list.d/ambari.list” “/etc/apt/sources.list.d/hdp.list”
  1. El /etc/apt/sources.list se pasa a /etc/apt/old.source.list 
  2. Para actualizar la base de datos, hay que hacer apt-get update.
  3. Creo que haciendo: add-apt-repository ppa:localhost y apt-get update
  4. wget http://public-repo-1.hortonworks.com/ARTIFACTS/jdk-8u112-linux-x64.tar.gz a /var/lib/ambari-server/resources/jdk-8u112-linux-x64.tar.gz
  5. wget http://public-repo-1.hortonworks.com/ARTIFACTS/jce_policy-8.zip a /var/lib/ambari-server/resources/jce_policy-8.zip
  6. apt-get install ambari-server
  7. ambari-server setup
  8. ambari-server start
  9. En un navegador ir a http://127.0.0.1:8080
  10. admin/admin
  11. Click en Ambari Cluster Install Wizard.
  12. Seleccionar HDP 2.5.2
  13. Seleccionar Local Repository,  quitar todas las versiones excepto Ubuntu16 y HDP 2.5
  14. Copiar ambari.list base url e insertarlo en la web.
  15. Copiar hdp.list base url e insertarlo en la web [hdp-utils]
  16. Crear un enlace simbólico a HDP: 

ln -s /var/www/html/HDP/HDP/ubuntu16/dists/HDP HDP

  1. Copiar en los target hosts con el hostname
  2. Crear una llave pública: ssh-keygen -t rsa
  3. Asegúrate que ssh está instalado: “service status ssh” “apt-get -s install openssh-server”

Y ya está. Sencillo, solamente son dos pasos, uno con una sola tarea y otra con 33 pero en fin, es lo que hay. Para más documentación, consulta la web de Hortonwork: https://docs.cloudera.com/HDPDocuments/Ambari-2.2.0.0/bk_Installing_HDP_AMB/content/_using_a_local_repository.html para instalar el HDP desde un repositorio local.

ESCRITO POR:

Rafael Piernagorda

Founder on DigitalDrimz, Hadoop Software Expert

Sígueme en Twitter

¿Te gustaría saber cómo podría encajar Hadoop con tu proyecto?

Contacta con nosotros y te ayudaremos con tu proyecto de Hadoop