Blog
Introducción a AWS para Data Scientists o Científicos de Datos
- Publicado por: Rafael Fernandez
- Categoría: Analisis de datos AWS Blog
Durante los últimos años, muchas empresas han implementado servicios basados en la nube; como resultado, varias empresas comenzaron a construir y proveer dichos servicios. Amazon marcó tendencia, con Amazon Web Services (AWS). Aunque AWS comenzó en 2006 como un negocio paralelo, ahora genera $14.5 billones en ingresos cada año.
Otras empresas que lideran en este campo son:
- Google – plataforma en la nube de google (GCP)
- Microsoft – servicios en la nube de Azure
- IBM – Nube de IBM
Los servicios en la nube son útiles para empresas de todos los tamaños – las pequeñas empresas se benefician del bajo costo, en comparación con la compra de servidores. Las compañías más grandes ganan confiabilidad y productividad, con menos costos, ya que los servicios se ejecutan con energía y mantenimiento óptimos.
Estos servicios también son herramientas poderosas que puede utilizar para facilitar su trabajo. Configurar un clúster de Hadoop para que funcione con Spark manualmente puede llevar días si es la primera vez, pero AWS lo configura en minutos.
Este articulo estará centrado en AWS aquí porque viene con más productos relevantes para los científicos de datos. En general, podemos decir que la familiaridad con AWS ayuda a los científicos de datos a:
- Preparar la infraestructura que necesitan para su trabajo (por ejemplo, clusters de Hadoop) con facilidad.
- Configurar de forma sencilla las herramientas necesarias (por ejemplo, Spark).
- Disminuir los gastos significativamente, por ejemplo, pagar clusters de Hadoop sólo cuando sea necesario.
- Dedicar menos tiempo al mantenimiento, ya que no es necesario realizar tareas como respaldar datos manualmente.
- Desarrollar productos y funciones que están listos para el lanzamiento sin necesidad de ayuda de ingenieros (o, al menos, con muy poca ayuda)
En esta publicación, se dará una descripción general de los servicios de AWS útiles para los científicos de datos – qué son, por qué son útiles y cuánto cuestan.
Elastic Computer Cloud (EC2)
Muchos otros servicios de AWS fueron desarrollados alrededor del EC2, lo que lo convierte en una pieza central de AWS. EC2 es, en realidad un grupo de servidores (virtuales) que pueden ser rentados a Amazon para configurar o ejecutar cualquier programa/aplicación en éste. Estos servidores vienen con diferentes sistemas operativos y Amazon cobra según la capacidad de procesamiento y espacio disponible del servidor (esto es, la capacidad del disco duro, CPU, memoria RAM, etc.).
Beneficios de EC2
Se puede rentar un servidor Linux o Windows con un procesador y con capacidades que se adapten a necesidades específicas y Amazon cobrará según estas especificaciones y el tiempo de uso del servidor. Anteriormente, AWS cobraba un mínimo de una hora por cada entorno que sea ejecutado, pero recientemente cambiaron a una política de cobro por segundo.
Entre las mejores características de EC2, se encuentra su capacidad de personalización – al cambiar la memoria, la cantidad de vCPU, el ancho de banda, etc., el sistema puede ser personalizado de forma muy precisa. Por lo tanto, si se cree que un sistema no tiene la potencia suficiente para ejecutar una tarea específica o que un cálculo en su proyecto está tardando demasiado, se pueden aumentar sus capacidades para culminar el trabajo y luego se reducen nuevamente para reducir costos. EC2 también es muy confiable, ya que Amazon se encarga del mantenimiento.
Costos de EC2
Las instancias del EC2 son relativamente económicas, y hay diferentes tipos para diferentes propositos. Por ejemplo, hay instancias que están optimizadas para computación y tienen un costo relativamente más bajo en el uso de la CPU. O aquellos optimizados para la memoria tienen un menor costo en el uso de la memoria.
AWS cuenta con precios de instancias puntuales, que calculan el precio en función de la oferta / demanda en ese momento y ofrecen hasta un 90% de descuento para usos a corto plazo, dependiendo del tiempo que desee usar la instancia.
Es necesario tomar en cuenta que también se deben agregar los costos de almacenamiento. La mayoría de las instancias de EC2 utilizan los sistemas Elastic Block Store (EBS), y cuestan alrededor de $ 0.1 / GB / mes. Las instancias de almacenamiento optimizado utilizan discos de estado sólido (SSD), que son más caros.
EBS actúa como un disco duro externo. Se puede adjuntar a una instancia, quitarlo y volver a ser adjunto a otra instancia. También puede detener o cerrar una instancia después de que haya terminado su trabajo y no pagar por la instancia cuando está inactiva.
Si cierra una instancia, AWS mantendrá el EBS activo y, como resultado, los datos que estén en el disco duro permanecerán intactos (es como apagar la computadora). Luego, se pueden reactivar las instancias detenidas y obtener acceso a los datos generados y a las herramientas que fueron instaladas en las sesiones anteriores. Sin embargo, cuando detiene una instancia en lugar de finalizarla, Amazon aún le cobrará el EBS adjunto (~ $ 0.1 / GB / mes). Si finaliza la instancia, la EBS se limpiará, por lo que se perderán todos los datos en esa instancia, pero ya no tendrá que pagar por la EBS.
Si necesita mantener los datos en EBS para su uso futuro (digamos que tiene herramientas personalizadas instaladas en esa instancia y no desea volver a hacer su trabajo más tarde) puede hacer respaldo del EBS y luego restaurarlo en un nuevo EBS y adjuntarlo a una nueva instancia.
Los respaldos se almacenan en S3 (el sistema de almacenamiento económico de Amazon), por lo que le costará menos ($ 0.05 por GB-mes) mantener los datos en EBS. Sin embargo, lleva tiempo (dependiendo del tamaño del EBS) generar un respaldo y restaurarlo. Además, volver a instalar una instancia de EBS restaurada en EC2 no es tan sencillo, por lo que sólo tiene sentido usar un respaldo como ese sí se sabe que no se va a utilizar la EBS por un tiempo.
Hay que tomar en cuenta que, para personalizar una instancia, primero se debe detener la instancia y luego cambiar las especificaciones de la instancia. No se puede disminuir el tamaño del EBS, solo se puede aumentar y es más difícil. Se tiene que:
- Detener la instancia.
- Hacer un respaldo de la EBS.
- Restaurar el respaldo en un EBS con el tamaño nuevo.
- Desacoplar el EBS anterior.
- Adjuntar el nuevo.
Simple Storage Service (S3)
S3 es el servicio de almacenamiento de AWS. S3 es como Dropbox o Google Drive, pero es mucho más personalizable y está especialmente diseñado para trabajar con código y aplicaciones.
S3 no proporciona una interfaz fácil de utilizar, ya que está diseñado para trabajar con aplicaciones en línea, no con el usuario final. Por lo tanto, trabajar con S3 a través de las APIs es más fácil que a través de su consola web y hay muchas bibliotecas y APIs desarrolladas (en varios lenguajes) para trabajar con este servicio. Por ejemplo, Boto3 es una biblioteca de S3 escrita en Python (de hecho, Boto3 también es adecuada para trabajar con muchos otros servicios de AWS).
S3 almacena archivos en cubos y llaves. Los cubos son similares a las carpetas raíz, y las llaves son similares a las subcarpetas y archivos. Si almacena un archivo llamado archivo.py en s3 como proyecto/archivos/archivo.py, entonces “proyecto” es el cubo que está usando y luego archivos/archivo.py es la clave de ese archivo. Esto es importante, ya que las APIs solicitarán el cubo y la clave por separado cuando se desee abrir un archivo de s3.
Beneficios de S3
No hay límite en el tamaño de los datos que se almacenan en S3. Solo se debe pagar por el almacenamiento según el tamaño que se necesita por mes.
S3 es sumamente confiable. Sin embargo, el servicio puede no estar siempre activo. Han ocurrido fallas en sus servidores que han perjudicado a los usuarios.
Costos de S3
El costo es muy bajo y si no se requieren cargar archivos con regularidad, puede ser mas bajo aun. AWS puede cobrar por otras acciones relacionadas con S3, como las solicitudes a través de APIs, pero el costo se mantiene bajo.
Relational Database Service (RDS)
AWS RDS es un servicio de base de datos relacional en la nube. Actualmente, RDS es compatible con SQL Server, MySQL, PostgreSQL, ORACLE y otros marcos basados en SQL. AWS configura el sistema que necesita y ajusta los parámetros para que se pueda tener una base de datos relacional y funcionando en minutos. RDS también maneja el respaldo, la recuperación, la aplicación de parches al software, la detección de fallas y se repara por sí mismo, por lo que no necesita mantenimiento.
Beneficios de RDS
RDS es personalizable. Tanto la potencia del CPU como la capacidad de almacenamiento se pueden aumentar o disminuir de forma sencilla en pocos minutos. El máximo son 32 vCPU y 244 GB de RAM.
Cambiar la capacidad de almacenamiento es tarea sencilla también. Amazon Aurora es una versión de MySQL y PostgreSQL con algunas características adicionales, y puede ampliarse automáticamente cuando se necesita más espacio de almacenamiento (se puede definir la capacidad máxima). MySQL, MariaDB, Oracle y PostgreSQL le permiten editar las capacidades de manera inmediata sin tiempo de inactividad.
Costos de RDS
El costo de los servidores RDS toma en cuenta tres factores: la potencia del procesador, la capacidad de almacenamiento y la velocidad de transferencia de datos. La relacion potencia – almacenamiento – velocidad es directamente proporcional con los costos.
Redshift
Es el servicio de almacenamiento de datos de Amazon; es un sistema distribuido que le permite almacenar grandes cantidades de datos y hacer búsquedas en ellos. La diferencia entre este servicio y RDS es su gran capacidad y habilidad para trabajar con Big Data. También se pueden hacer consultas simples SQL en Redshift.
Redshift funciona en un marco distribuido: los datos se distribuyen en diferentes nodos (servidores) conectados en un cluster. En pocas palabras, las búsquedas en un sistema distribuido se ejecutan en paralelo en todos los nodos y luego los resultados se recopilan de cada nodo y se genera un resumen.
Beneficios de Redshift
Redshift es altamente personalizable. La velocidad para obtener la consulta de 1 terabyte de datos puede ser la misma que la de 1 petabyte de datos puede coincidir al aumentar la cantidad de clusters en el sistema.
Cuando se crea una tabla en Redshift, se puede elegir uno de los tres estilos de distribución: EVEN, KEY, o ALL.
- EVEN (par o uniforme en inglés) significa que las filas de la tabla se distribuirán entre todos los nodos de manera uniforme (EVEN). Luego, las consultas que involucran esa tabla se distribuyen sobre el cluster y se ejecutan en paralelo
- ALL significa que en cada nodo habrá una copia de la tabla, por lo que, si se solicita una combinación en dicha tabla, la misma ya estará en todos (ALL) los nodos y no será necesario copiar los datos a través de la red desde de nodo a nodo.
- En KEY (clave o llave en inglés), las filas de distribución de la tabla se distribuyen según los valores en una columna, buscando mantener las filas con el mismo valor (KEY) de esa columna en el mismo nodo. El almacenamiento físico de los valores coincidentes en los mismos nodos hace que la unión en esa columna específica sea más rápida en sistemas paralelos.
Costos de Redshift
Redshift tiene dos tipos de instancias: Dense Compute o Dense Storage. Dense Compute está optimizado para consultas rápidas y es rentable para menos de 500 GB de datos.
El Dense Storage está optimizado para un almacenamiento de gran tamaño y es rentable para mas de 500GB, pero es más lento.
También se puede guardar una gran cantidad de datos en S3 y utilizar Amazon Redshift Spectrum para ejecutar la consulta SQL en esos datos. Para Redshift Spectrum, AWS cobra por el número de bytes escaneados por consulta.
Elastic MapReduce (EMR)
EMR es adecuado para configurar clusters de Hadoop con Spark y otras aplicaciones de tipo distribuido. Un cluster de Hadoop puede ser utilizado como un motor de cómputo o un sistema de almacenamiento (distribuido). Sin embargo, si los datos son tan grandes que se necesita un sistema distribuido para manejarlos, Redshift es más adecuado y mucho más barato que almacenar en EMR.
Hay tres tipos de nodos en un cluster:
- El nodo maestro (único) es responsable de administrar el cluster. Distribuye las cargas de trabajo al núcleo y a los nodos de tareas, rastrea el estado de las tareas y supervisa el estado del clúster.
- Los nodos centrales ejecutan tareas y almacenan los datos.
- Los nodos de tareas que solo ejecutan tareas.
Beneficios de EMR
Ya que puede ajustar EMR para instalar Apache Spark, este servicio es bueno para limpiar, cambiar el formato y analizar Big Data. Se puede usar EMR bajo demanda, lo que significa que puede ajustar para tomar el código y los datos de una fuente, ejecutar la tarea en el clúster y almacenar los resultados en algún lugar y finalice el clúster.
Al utilizar el servicio de tal forma, se puede reducir significativamente el costo del cluster.
Para configurar un clúster EMR, primero se deben ajustar las aplicaciones que se desean tener en el cluster. Hay que tomar en cuenta que las diferentes versiones de EMR vienen con diferentes versiones de las aplicaciones.
Un clúster EMR viene con una instancia maestra y varios nodos-núcleo. Se puede personalizar el número de nodos-nucleo, la potencia del procesador de los servidores y el espacio de almacenamiento disponible en cada nodo. Se puede usar la opción de escala automática para sus nodos centrales, lo que significa que puede agregar reglas al sistema para agregar/eliminar un nodo-núcleo si es necesario, mientras se ejecuta algún código.
Precios de EMR
El precio del EMR es calculado según la potencia de cálculo que se elija para diferentes instancias (maestro, núcleo y nodos de tareas). Básicamente, es el costo del servidor EC2 más el costo del EMR.
➡ Te invitamos a nuestro Curso Python de Análisis de Datos: