Dataiku en AWS

Apuntes en la instalación de Dataiku Data Science Studio (DSS) en AWS.


Introducción

Dataiku puede ser instalado en AWS en dos formas: a través de AWS Marketplace o creando una instancia de AWS EC2 y procediendo con la instalación del producto como se haría en cualquier otro computador. Estas notas se dedican a esa segunda opción. La primera es la que podría ser más adecuada de contar con una licencia de Dataiku y si lo que se busca es contar con una infraestructura más potente o que pueda ser compartida de mejor manera a la que resulta de hacer uso de un computador personal o en infraestructura propia. Esta primera alternativa es sumamente simple y rápida de habilitar pero es prácticamente imprescindible el contar con la licencia de Dataiku para que sea rentable la decisión, ya que uno no evita los costos asociados al uso de AWS EC2.

Para la segunda alternativa uno puede hacer uso de la versión comunitaria de Dataiku y el soporte que da hasta para tres usuarios (ideal para proyectos personales o de pequeños equipos de trabajo) y que resulta adecuado para presupuestos reducidos. Desafortunadamente, los requerimientos de cómputo de Dataiku hace que sea poco viable de ser usado en la categoría de instancias gratuitas de AWS (sobre todo pasado el periodo de exploración y gratuidad que AWS provee), pero sabiendo administrar el tiempo de uso de la instancia (apagándola cuando no se necesite) los costos por mes pueden realmente ser asequibles y justificables para un presupuesto académico austero. Esta segunda alternativa requiere más trabajo y conocimiento para la instalación, que es lo que se ha buscado recoger en estas notas.

1. La instancia

1.1. Categoría, costo y selección

Al momento de la elaboración de estas notas, AWS Marketplace recomienda una instancia de tipo m5.xlarge (16 GiB de memoria, 10 GiB de transferencia de red y 4 CPU virtuales) con un costo de $0.192 US/hora (que parece ser la más barata que puede usarse). El costo de otras instancias se puede ver aquí. Para estas notas (y posteriores comparaciones) se seleccionará dicha categoría que es un buen punto de inicio si no se tienen antecedentes y se desconocen los requerimientos de memoria y procesamiento que se necesitan.

1.2. Creación

Decidido el tipo de instancia a usar, el siguiente paso es seleccionar el sistema operativo. En un previo intento ya se probó por Ubuntu pero resultó problemático la instalación de algunos paquetes adicionales requeridos por DDS o el sistema operativo. Se ha encontrado que Amazon Linux es menos complicado y parece ya estar pre configurado con lo que se necesita. Así, se tomó la sugerencia de versión de este sistema operativo con dada en el formulario de creación de la instancia.

Dado que se requerirá acceso a una sesión de línea de comando para actividades de instalación, es necesario hacer crear o uso de alguna llave SSH.

En la sección de parámetros de comunicaciones, se activan todas las alternativas y se da clic en Edit para poder cambiar el nombre del grupo de seguridad.

Lo último es configurar la capacidad de almacenamiento. La última categoría de settings, Advanced details no se tocó, se toman los valores por defecto que pudiera tener.

Finalmente se da click en Launch instance.

2. Instalación de Dataiku

2.1 Conexión vía SSH

Con la instancia ya operando uno debe conectarse vía SSH para proceder con la instalación. AWS proporciona información al respecto del URI a usar y sobre algunos aspectos a tener presentes de la conexión.

Sin embargo, a fin de mantener la conexión sin que ésta se cierre o caiga por falta de actividad, conviene:

$ ssh -o TCPKeepAlive=yes -o ServerAliveCountMax=20 -o ServerAliveInterval=15 -i <certificado PEM> ec2-user@<URI de la instancia>

Una conexión exitosa deberá mostrar:

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
19 package(s) needed for security, out of 31 available
Run "sudo yum update" to apply all updates.
[ec2-user@ip-172-31-19-240 ~]$ 

2.2. Instalación

La instalación requiere descargar el producto, que se hace (para este ejemplo para la versión 11.1.4, última disponible al momento de escribir esto). Antes es conveniente crear un direcorio donde colocar esto y los subdirectorios necesarios según se considere.

$ wget https://cdn.downloads.dataiku.com/public/dss/11.1.4/dataiku-dss-11.1.4.tar.gz
$ tar xvf dataiku-dss-11.1.4.tar.gz

Una utilería muy útil es tree(1), que se instala:

$ sudo yum install tree

con ésta se muestra la estructura de directorios que se ha creado en esta instalación (estando un nivel arriba):

$ tree -L 3
.
└── Dataiku
    └── 11
        ├── 11.1.4
        └── dataiku-dss-11.1.4.tar.gz

Otros paquetes y programas que son necesarios instalar antes de Dataiku, así como algunas acciones administrativas (en el orden mismo en que se realizaron) son:

$ sudo yum install git -y
$ sudo yum install java-1.8.0-openjdk
$ sudo amazon-linux-extras enable nginx1
$ yum clean metadata
$ sudo yum -y install nginx
$ sudo yum install ncurses-compat-libs
$ sudo yum install compat-gcc-48-libgfortran

Para este ejemplo, dentro del directorio 11 se estará creando un directorio de nombre Current que contendrá el resultado de la instalación de la versión descargada. Adicionalmente, se hará uso del mismo puerto empleando en instalaciones locales.

$ cd /home/ec2-user/Dataiku/11
$ 11.1.4/installer.sh -d Current -p 11200
*********************************************
*           Dataiku DSS installer           *
*********************************************
[+] Creating data directory: Current
[+] Saving installation log to /home/ec2-user/Dataiku/11/Current/run/install.log
[!] SELinux is installed but not enforcing
[+] Using Java at /usr/bin/java : openjdk version "1.8.0_342"
[+] Checking required dependencies
+ Detected OS distribution : amazonlinux 2
+ Checking required packages...
[+] Installation starting
[+] Initializing Python environment
[+] Initializing Python environment using platform default
+ Using default base Python for this platform : python3.7
created virtual environment CPython3.7.15.final.0-64 in 324ms
  creator CPython3Posix(dest=/home/ec2-user/Dataiku/11/Current/pyenv, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/ec2-user/.local/share/virtualenv)
    added seed packages: pip==21.3.1, setuptools==58.3.0, wheel==0.37.0
  activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator
[+] Precompiling Dataiku Python code
[+] Precompiling Jupyter Python code
[+] Precompiling third-party Python 3.7 code
[+] Performing initial install
[+] Writing version metadata conf=11100 product=11.1.4 revision=
[+] Writing default install config file
[+] Writing default env file
[+] Preparing data directory initial data
[2022/12/11-01:00:15.653] [main] [INFO] [dku.logging]  - Loading logging settings
[2022/12/11-01:00:15.700] [main] [INFO] [dku.logging]  - Configuring additional logging settings from /home/ec2-user/Dataiku/11/11.1.4/resources/logging/dku-log4j.properties
[2022/12/11-01:00:15.712] [main] [INFO] [dku.logging]  - Configuring additional JUL logging settings from /home/ec2-user/Dataiku/11/11.1.4/resources/logging/dku-log-jul.properties
Installed kernelspec python3 in /home/ec2-user/Dataiku/11/Current/jupyter-run/jupyter/kernels/python3
Installing /home/ec2-user/Dataiku/11/11.1.4/python37.packages/widgetsnbextension/static -> jupyter-js-widgets
Making directory: /home/ec2-user/Dataiku/11/Current/jupyter-run/jupyter/nbextensions/jupyter-js-widgets/
Copying: /home/ec2-user/Dataiku/11/11.1.4/python37.packages/widgetsnbextension/static/extension.js -> /home/ec2-user/Dataiku/11/Current/jupyter-run/jupyter/nbextensions/jupyter-js-widgets/extension.js
Copying: /home/ec2-user/Dataiku/11/11.1.4/python37.packages/widgetsnbextension/static/extension.js.map -> /home/ec2-user/Dataiku/11/Current/jupyter-run/jupyter/nbextensions/jupyter-js-widgets/extension.js.map
- Validating: OK

    To initialize this nbextension in the browser every time the notebook (or other app) loads:
    
          jupyter nbextension enable widgetsnbextension --user --py
    
Extension collapsible_headings/main enabled successfully
Extension codefolding/main enabled successfully
Extension toggle_all_line_numbers/main enabled successfully
Extension hide_input_all/main enabled successfully
Extension addbefore/main enabled successfully
Extension jupyter-js-widgets/extension enabled successfully
[+] Generating default env file
[+] Generating supervisor configuration
[+] Generating nginx configuration
***************************************************************
* Installation complete (DSS node type: design)
* Next, start DSS using:
*         '/home/ec2-user/Dataiku/11/Current/bin/dss start'
* Dataiku DSS will be accessible on http://<SERVER ADDRESS>:11200
*
* You can configure Dataiku DSS to start automatically at server boot with:
*    sudo -i "/home/ec2-user/Dataiku/11/11.1.4/scripts/install/install-boot.sh" "/home/ec2-user/Dataiku/11/Current" ec2-user
***************************************************************

El siguiente paso es abrir el puerto designado con el switch -p en la invocación del script de instalación, lo que se hace desde la configuración de la instancia (EC2 > instances > instancia), click el tab Security, seleccionando el Security Group y Edit Inbound Rules, donde se agrega una regla de tipo Custom TCP para el puerto seleccionado y el bloque CIDR 0.0.0.0/0.


Twitter Wordpress eMail
© Todos los derechos reservados.
Dr. Eduardo René Rodríguez Avila
Creación: 2022.12.10
Última actualización: 2022.12.11
El contenido de este sitio puede ser copiado y reproducido libremente mientras no sea alterado y se cite su origen. Marcas y productos registrados son citados por referencia y sin fines de lucro o dolo. Todas las opiniones son a título personal del o los autores de éstas y, salvo sea expresado de otro modo, deben considerarse como registro y expresión de la experiencia de uso de aquello que es tratado. Para conocer más sobre la posición de privacidad y responsabilidad de lo que se presenta en este sitio web y como ha sido obtenido, consulte la declaración al respecto.