Cómo es el trabajo de un ingeniero de Big Data

Para transportar grupos reducidos de personas a través de distancias cortas y sin mucho apuro podrías arreglártelas conduciendo un autobús. Pero si necesitas transportar a muchas personas, a través de grandes distancias y en tiempos mínimos, deberás aprender a pilotear un avión. De seguro te será más difícil, tendrás más responsabilidades, pero te dará más satisfacciones y ganarás mucho más dinero. Esa misma diferencia es la que existe entre el trabajo de un ingeniero de datos convencional y el de un ingeniero de Big Data.

Big Data se refiere, como podrás imaginarlo, a conjuntos de datos muy grandes. La definición exacta de “muy grandes” puede variar según a quién le preguntes, pero es común que los repositorios de Big Data superen holgadamente los 10 terabytes de datos. Y es cada vez más habitual escuchar hablar de volúmenes que alcanzan el orden de los petabytes (1 petabyte = 1,024 terabytes).

Pero no se trata sólo de alto volumen. Otros atributos de Big Data incluyen amplia variedad de datos (estructurados, semiestructurados y desestructurados) y altas velocidades de procesamiento y acceso. Comúnmente se hace referencia a estas cualidades como “las tres V”: Volumen, Velocidad y Variedad. 

ingeniería de big data
Big Data no se trata sólo de gigantescos volúmenes de información. Otros de sus atributos incluyen amplia variedad de datos (estructurados, semiestructurados y desestructurados) y altas velocidades de procesamiento y acceso. Imagen: NightCafe.

A las tres «V» mencionadas arriba se les suelen agregar otras dos, para abarcar otros importantes aspectos que debe tener toda solución de Big Data: Veracidad, o confiabilidad de los datos (para evitar información incompleta, sucia o imprecisa) y Valor, refiriéndose a la importancia de extraer descubrimientos valiosos que posibiliten decisiones informadas y generen valor de negocio.

Esas particularidades hacen que un ingeniero de Big Data deba utilizar frameworks especiales, además de las herramientas que usa un ingeniero de datos convencional. Más adelante en este artículo veremos en detalle las tecnologías que debe dominar todo ingeniero de Big Data.

Los más buscados

La buena noticia para los ingenieros de Big Data es que son muy requeridos por las empresas, de una forma tal que la demanda de recursos humanos especializados en Big Data excede por mucho a la oferta. Probablemente sepas que, como ingeniero de datos, podrás encontrar un empleo razonablemente bien remunerado. Pero como ingeniero de Big Data, podrás aspirar a remuneraciones bastante más altas.

Para que tengas una idea, el sitio Glassdoor indica que (a marzo de 2024), el sueldo base promedio de un Data Engineer en Estados Unidos era de USD 125.615 al año, mientras que el sueldo base promedio de un Big Data Engineer, también en Estados Unidos, era de USD 154.590 al año. Y estas cifras son sólo promedios. Según la empresa, el sueldo base anual de un Big Data Engineer puede trepar hasta USD 190.000. Y si tienes la suerte de conseguir un puesto de Big Data Engineer en Google o Apple, tu sueldo base podría estar por encima de los USD 230.000 al año (siempre según información de Glassdoor).

También puede interesarte: Primeros pasos en ciencias de datos con Anaconda

remuneración de un ingeniero de Big Data
Como ingeniero de datos, podrás encontrar un empleo razonablemente bien remunerado. Pero como ingeniero de Big Data, podrás aspirar a remuneraciones bastante más altas. Imagen: NightCafe.

Beneficios de Big Data

Si te preguntas por qué las empresas están dispuestas a pagar tanto más dinero por un ingeniero de Big Data, la respuesta es que también esperan mucho más a cambio. Big Data es más que sólo grandes conjuntos de datos – es una herramienta que para las empresas significa información de muy alto valor, que les puede dar ventajas decisivas en sus negocios o generar avances muy grandes en sus objetivos. Para explicar por qué, veamos unos pocos ejemplos.

¿Qué hace un ingeniero de Big Data?

Un ingeniero de Big Data es básicamente un ingeniero de software. Gran parte de su trabajo consiste en diseñar e implementar sistemas de software capaces de recolectar y procesar volúmenes gigantescos de datos. Muchos de esos sistemas involucran procesos de Extract Transform Load (ETL), los cuales utilizan conjuntos de reglas empresariales para limpiar y organizar los datos «crudos» (sin procesar) y prepararlos para su almacenamiento y su uso en procesos de análisis y aprendizaje automático (ML, o Machine Learning).

Otras tareas del ingeniero de big data incluyen:

  • Diseñar arquitecturas aptas para el manejo de grandes volúmenes de datos, alineadas con los objetivos del negocio.
  • Investigar nuevos métodos para mejorar la calidad de la información y para mantenerla segura.
  • Crear soluciones de datos basadas en ecosistemas de Big Data (ver más abajo) y en sus herramientas de desarrollo y de visualización.
  • Colaborar con analistas de datos, científicos de datos y otros equipos para proveer acceso a los resultados de los procesos de Big Data y brindar visualizaciones de los mismos.

Habilidades y herramientas necesarias para la ingeniería de Big Data

Un ingeniero de Big Data necesita tener un título de grado en un campo relacionado con la tecnología de la información o la ciencia de datos. Un Máster en Big Data puede ser de gran ayuda para aspirar a puestos mejor remunerados y más oportunidades de promoción profesional. Al final de este artículo sugiero algunos caminos de carrera para llegar a ser un ingeniero de Big Data y mantenerse vigente como tal.

Más allá de su título, un ingeniero de Big Data debe poseer varias habilidades esenciales. Un conocimiento profundo de algoritmos, estructuras de datos y ciertos lenguajes de programación, así como una comprensión básica de sistemas distribuidos, son cualidades que todo aspirante a ingeniero de Big Data debe poder demostrar.

Habilidades técnicas

Para trabajar con grandes volúmenes de datos y proveer un acceso eficiente a sus insights, el ingeniero de Big Data necesita habilidades y herramientas bastante más diversas de las que necesita un ingeniero de datos convencional (este último bien puede hacer carrera sabiendo únicamente SQL y manejando un par de RDBMS). 

Las habilidades que debe tener un ingeniero de Big Data incluyen bases de datos SQL y NoSQL, datos estructurados y no estructurados, data warehouses (y sus variantes, como data marts y data lakes) y algo conocido como Big Data Frameworks. Veamos cómo cada una de estas habilidades influyen en el trabajo de un ingeniero de big data.

Big Data, SQL y las bases de datos relacionales

El lenguaje SQL nació con las bases de datos relacionales y está íntimamente ligado a ellas. Todo ingeniero de datos sabe que las bases de datos relacionales están diseñadas con el principal objetivo de almacenar información estructurada, priorizando la conservación de la integridad de datos en el procesamiento de transacciones. Esto las hace poco adecuadas cuando las prioridades pasan a ser escalabilidad, velocidad de acceso y tiempo real – que es lo que ocurre al pasar de bases de datos convencionales a repositorios de Big Data. ¿Significa eso que aprender SQL habrá sido en vano cuando te conviertas en ingeniero de Big Data? De ninguna manera.

La adopción del lenguaje SQL es tan grande que se ha convertido en un estándar de facto para manejo de datos, sean éstos chicos o grandes. Y las nuevas tecnologías creadas especialmente para Big Data no pueden ignorar este hecho. Es por eso que todas ofrecen herramientas de acceso a los datos que permiten ver a los repositorios de Big Data como si tuvieran una estructura de base de datos relacional. Más abajo veremos algunas de las tecnologías basadas en SQL que se usan en ambientes de Big Data.

Bases de datos NoSQL

NoSQL (cuyo significado es “not only SQL”) es una familia de tecnologías de bases de datos que apuntan a superar las limitaciones de las bases de datos relacionales y posibilitar las tres “V” de big data explicadas más arriba. Por esa razón es que son preferibles a las bases de datos relacionales para implementar soluciones de Big Data.

Si bien las bases de datos NoSQL varían en sus formas de implementación, algunas características son comunes a todas:

  • Schema-less: Las bases de datos NoSQL pueden almacenar información sin necesidad de que la estructura de los datos esté predefinida – a diferencia de las bases de datos relacionales, en las que es necesario que el esquema (las tablas y sus relaciones) esté definido antes de poder poblarlas con información.
  • Escalabilidad: Varias de las arquitecturas de bases de datos NoSQL están diseñadas con la escalabilidad horizontal como principal objetivo. Esto significa que una base de datos NoSQL puede residir en un sistema de archivos distribuido (como HDFS, ver más abajo) que puede crecer en volumen de datos simplemente agregándole más nodos.
  • Tiempo real: Varias implementaciones de bases de datos NoSQL – como Firebase, Redis o DynamoDB, entre otras – se destacan por su alto rendimiento, escalabilidad y disponibilidad, satisfaciendo las necesidades básicas de cualquier aplicación de datos en tiempo real.

También puede interesarte: Las 7 Mejores notebooks para ciencia de datos

NoSQL es una familia de tecnologías de bases de datos que apuntan a superar las limitaciones de las bases de datos relacionales.
NoSQL es una familia de tecnologías de bases de datos que apuntan a superar las limitaciones de las bases de datos relacionales.

A pesar de su nombre, las bases de datos NoSQL pueden manejarse mediante dialectos del lenguaje SQL, reforzando la idea de que este lenguaje sigue siendo relevante aún cuando no se usen bases de datos relacionales.

Big Data y Data Warehouse

Los data warehouses surgieron hace varias décadas como una forma de recopilar información y centralizarla para su procesamiento analítico. Guardan algunas similitudes con Big Data en cuanto a que ambas tecnologías están pensadas para albergar grandes volúmenes de datos y garantizar la veracidad de la información. También aseguran la obtención de valor de negocio de esos grandes volúmenes de información.

La diferencia entre Big Data y Data Warehouse radica en que los data warehouses están pensados para montarse sobre esquemas relacionales y alimentarse de información proveniente de sistemas transaccionales (también sustentados en bases de datos relacionales). No están preparados para manejar información desestructurada y menos aún para manejar datos en tiempo real.

A pesar de que Big Data es una tecnología más moderna y abarcativa que Data Warehouse, esta última no desaparecerá ni se volverá obsoleta para dar paso a Big Data. Ambas tecnologías son complementarias y apuntan a resolver distintos casos de uso: Si necesitas realizar procesamiento analítico sobre datos estructurados (por ejemplo, información de ventas o de producción de una compañía), lo más recomendable es un data warehouse. Si, en cambio, debes realizar procesamiento analítico sobre información variada y desestructurada, como correos electrónicos, datos de redes sociales, logs de aplicaciones de tiempo real, resultados de encuestas, entre otros, entonces debes apuntar decididamente a una solución de Big Data.

También hay tecnologías de data warehouse que operan sobre repositorios de big data, como veremos más abajo.

Plataformas y Frameworks de Big Data

En las bases de datos relacionales, hay una entidad central, llamada RDBMS, que reside en un servidor y administra la información almacenada en bases de datos con estructuras predefinidas (esquemas). El RDBMS provee mecanismos para consultar y actualizar la información residente en las bases de datos – mayormente a través de comandos SQL. Todas las responsabilidades del almacenamiento y utilización de los datos recaen sobre el monolítico RDBMS.

En Big Data, las responsabilidades están distribuidas entre distintas entidades que se encargan del almacenamiento, el procesamiento, la coordinación y la explotación de los datos. Hace poco más de una década, este concepto fue materializado por la Apache Software Foundation en un ecosistema que se dio en llamar Hadoop.

La parte fundamental de todo ecosistema de Big Data (y de Hadoop en particular) es un sistema de archivos capaz de almacenar cantidades masivas de información. Este sistema de archivos no puede depender de una única unidad de almacenamiento físico. En cambio, debe utilizar múltiples nodos capaces de funcionar coordinadamente para brindar escalabilidad, redundancia y tolerancia a fallos. En Hadoop, dicho sistema de archivos se denomina HDFS (Hadoop Distributed File System).

Hadoop es un framework de Big Data diseñado para operar en clústeres escalables basados en hardware de bajo costo.
Hadoop es un framework de Big Data diseñado para operar en clústeres escalables basados en hardware de bajo costo.

Para poder procesar esas cantidades masivas de información se necesita un modelo de programación basado en tareas capaces de funcionar en paralelo. Y que su ejecución pueda distribuirse entre múltiples nodos de procesamiento. En Hadoop, ese modelo de programación se denomina MapReduce y está basado en tecnología Java.

Teniendo tantos nodos de almacenamiento y de procesamiento, hay una pieza que no puede faltar: un coordinador u orquestador que mantenga el orden en el ecosistema de Big Data. Y además, que se asegure de que cada tarea cuente con los recursos que necesita en el momento en que los necesita. En Hadoop, esta pieza se denomina YARN (Yet Another Resource Negotiator).

Esas tres piezas básicas (almacenamiento, procesamiento y coordinación) de todo ecosistema de Big Data se completan con herramientas que hacen posible la explotación de los datos que residen en el ecosistema. Muchas de estas herramientas se diseñaron para funcionar por encima de Hadoop, complementando al ecosistema y mejorando algunas de sus falencias. Más abajo examinaremos algunas de ellas.

Como comentario al margen, cabe mencionar que Hadoop es la plataforma más “veterana” de Big Data y ha sido superada en varios aspectos por herramientas más nuevas y eficientes. Uno de los principales aspectos negativos de Hadoop que otras tecnologías han buscado resolver es su alta complejidad y costos para instalar, operar, tunear y escalar.

Cómo pilotear una plataforma de Big Data

Volvamos al concepto del chofer de autobús y del piloto de avión con que iniciamos este artículo. Si eres un ingeniero de datos convencional, seguramente estarás habituado a iniciar cada jornada de trabajo abriendo tu cliente SQL favorito, conectándote a las bases de datos con las que necesitas trabajar, y comenzar a ejecutar comandos SQL. Casi como el chofer de autobús, girando la llave para encender el motor de su vehículo, abriendo la puerta para que suban los pasajeros y transportándolos a su destino.

A diferencia del chofer de autobús, el piloto de avión debe asegurarse de que una cantidad de sistemas estén completamente operativos y funcionando coordinadamente. Casi igual que un ingeniero de Big Data.
A diferencia del chofer de autobús, el piloto de avión debe asegurarse de que una cantidad de sistemas estén completamente operativos y funcionando coordinadamente. Casi igual que un ingeniero de Big Data. Imagen: NightCafe.

Pero si eres un ingeniero de Big Data, tienes en tus manos el control de un gigantesco ecosistema de datos, con datos y procesos distribuidos en cientos o miles de nodos que deben ser cuidadosamente coordinados para entregar valor a los usuarios. Piensa en el piloto de avión: antes de abrir las puertas para que suban los pasajeros e iniciar el viaje, debe asegurarse de que una cantidad de sistemas estén completamente operativos y funcionando coordinadamente. Las vidas de sus pasajeros y la suya propia dependen de ello. ¿Estás seguro de que quieres seguir por el camino del piloto de avión?

En la cabina del piloto

Si sigues leyendo, imagino que has contestado que sí a la pregunta anterior. ¡Enhorabuena! Veamos entonces el camino a seguir para que puedas llegar a ser el piloto de una gran maquinaria de Big Data.

En tu cabina de piloto podrás encontrar una enorme cantidad y variedad de herramientas diseñadas para la explotación de datos en repositorios de Big Data. Tomemos, a modo de ejemplo, a una sola de ellas (más abajo revisaremos algunas otras). Esta en particular se denomina Hive y se trata de un framework que permite manipular fácilmente grandes cantidades de datos con un leguaje de consultas llamado HQL (HiveQL) basado en SQL. En particular, HQL convierte los comandos en SQL en trabajos MapReduce para que puedan ejecutarse sobre un cluster Hadoop.

El lenguaje de consultas de Hive guarda muchísimas similitudes con el SQL estándar. Además del comando SELECT con todas sus cláusulas (WHERE, GROUP BY, ORDER BY, LIMIT, etc.), admite comandos DML como INSERT, UPDATE y DELETE, y también comandos DDL como CREATE, ALTER y DROP para administrar un seudo esquema de tablas.

Cuando se ejecuta un comando en Hive – como cualquier SELECT … FROM … – Hive no devuelve los resultados de forma inmediata. En lugar de ello, envía a YARN un trabajo de MapReduce. YARN se asegura de que cuente con los recursos necesarios (procesamiento, almacenamiento, memoria) y lo pone en cola para su ejecución. Hive espera hasta que se haya completado el trabajo para mostrar los resultados de la consulta. Ante tus ojos, será como si hubieras ejecutado ese SELECT en tu cliente SQL favorito. Pero debes saber que, por debajo, hubo toda una gigantesca maquinaria que se puso en funcionamiento para atender esa simple solicitud.

Principales herramientas y plataformas

Hemos dicho más arriba que Hadoop es una plataforma veterana y que ha sido superada por otras más modernas y eficientes. Esto no quiere decir que esté obsoleta. Lo bueno de Big Data es que sus tecnologías han nacido en el mundo Open Source, por lo que la evolución de los ecosistemas de Big Data es rápida y constante. Además de haber grandes empresas involucradas, hay comunidades de desarrolladores que se encargan de impulsar esta evolución dentro del mundo Open Source, construyendo sobre las soluciones existentes, mejorándolas y complementándolas constantemente.

A continuación veremos algunas de las herramientas y tecnologías que se perfilan como las apuestas más seguras de aprendizaje para afianzarse en la ingeniería de Big Data.

Spark

La tecnología Spark surgió en 2014 para hacer frente a las limitaciones de rendimiento de MapReduce. La principal optimización que introdujo Spark fue su capacidad para ejecutar en clústers en memoria, en lugar de almacenar resultados en disco.

Spark es compatible con diversos lenguajes comunes (Python, Java, Scala y R), incluye bibliotecas para diversas tareas, desde SQL hasta streaming y aprendizaje automático, y puede ejecutarse tanto sobre una notebook como sobre un clúster con miles de servidores. Esto hace que sea sencillo empezar y aumentar su tamaño hasta llegar al procesamiento masivo de datos en una amplia gama de aplicaciones.

Apache Spark es un motor de análisis de datos para procesamiento a gran escala
Apache Spark es un motor de análisis de datos para procesamiento a gran escala.

Aunque Spark fue diseñado para ejecutarse en distintos coordinadores de clústers, históricamente se utilizaba principalmente con YARN y estaba integrado en la mayoría de las distribuciones de Hadoop. A lo largo de los años ha habido múltiples iteraciones importantes de Spark. Hoy en día, con el auge de Kubernetes como el planificador más popular, Spark se ha convertido en un ciudadano de primera clase de Kubernetes y recientemente ha eliminado su dependencia de Hadoop.

De cara al usuario, Apache Spark expone un ecosistema de componentes ajustados a distintos casos de uso. El componente central es Spark Core, el motor de ejecución de la plataforma Spark que aporta la infraestructura para computación en memoria, además de las funciones básicas de E/S, programación, supervisión y gestión de fallos. En torno a Spark Core se sitúan componentes con funciones más específicas, como Spark SQL, Spark Streaming, MLlib, Spark R y GraphX.

Flink

Apache Flink es un motor de procesamiento de streams de datos no vinculados, con alto rendimiento y baja latencia, que también puede operar sobre conjuntos de datos en lotes (vinculados). Prioriza la realización de cálculos en memoria, la alta disponibilidad, la eliminación de puntos únicos de falla y la escalabilidad horizontal.

Flink proporciona algoritmos y estructuras de datos para soportar tanto el procesamiento acotado como el no acotado – todo ello a través de una única interfaz de programación. Las aplicaciones que procesan datos no acotados se ejecutan continuamente, mientras que las que procesan datos acotados finalizan su ejecución cuando consumen la totalidad de los datos de entrada.

Storm

Apache Storm facilita el procesamiento fiable de streams ilimitados de datos, haciendo para el procesamiento en tiempo real lo que Hadoop hizo para el procesamiento por lotes. Sus principales cualidades son la sencillez, la posibilidad de usarse con cualquier lenguaje de programación y presentar un enfoque amigable y ameno para los desarrolladores.

Los casos de uso de Storm incluyen análisis en tiempo real, aprendizaje automático en línea, computación continua, RPC distribuido, ETL, entre otros. Está entre los más veloces motores de ejecución de Big Data, superando la marca del millón de tuplas procesadas por segundo y por nodo. Otras de sus cualidades incluyen alta escalabilidad, tolerancia a fallos, procesamiento de datos garantizado y facilidad de configuración y uso.

Cassandra

Apache Cassandra es una base de datos NoSQL (column-oriented) especialmente diseñada para Big Data. Gracias a la utilización de almacenamiento de columna ancha, es capaz de manejar grandes cantidades de datos mediante clústers de servidores commodity, brindando alta disponibilidad sin puntos únicos de falla.

Cassandra emplea una arquitectura peer-to-peer que facilita la distribución de datos, permitiéndole escalar horizontalmente y manejar fácilmente cantidades crecientes de datos y tráfico. Además, ofrece consistencia ajustable, lo que significa que los clientes pueden elegir la consistencia que necesitan para cada operación.

Pig

Apache Pig es una plataforma de alto nivel utilizada para la creación de programas MapReduce que corren sobre Hadoop. Utiliza un lenguaje de scripting sencillo llamado Pig Latin, que permite a los desarrolladores escribir tareas complejas de procesamiento de datos de forma concisa y sencilla, abstrayéndolos de las complejidades de MapReduce y brindando algunas similitudes con SQL.

Los desarrolladores pueden ampliar la funcionalidad de Pig Latin con UDFs (funciones definidas por el usuario) que pueden escribirse en otros lenguajes, como Java, Python, Javascript o Ruby

El motor de Pig traduce los scripts de Pig Latin en una serie de tareas MapReduce que pueden ejecutarse en clústers Hadoop, lo que le permite escalar para manejar grandes cantidades de datos.

Siguientes pasos

Tal como hemos visto más arriba, el prerrequisito educativo para ser ingeniero de big data es contar con un título de grado en alguna carrera sobre tecnología de información. Luego podrás obtener un máster en big data, eligiendo alguno de los cientos que están disponibles en línea. También tienes a tu disposición cientos de cursos y certificaciones en Big Data, muchos de ellos brindados directamente por empresas tecnológicas como Google o IBM. Y lo más importante: muchos de ellos son gratuitos.

Cuando cuentes con los conocimientos básicos sobre Big Data, y aunque no hayas obtenido aún los suficientes diplomas y certificaciones para llenar tu currículum, puedes ir acumulando experiencia trabajando en proyectos de ciencia de datos del mundo real. Claro que para ello necesitarás grandes repositorios de Big Data, y eso no es algo que puedas construir por tus propios medios. Afortunadamente hay abundantes conjuntos de datos de uso libre de los que puedes echar mano para poner en práctica tus conocimientos.

Pero como el mundo de Big Data está en constante evolución, no creas que puedes sentarte a descansar una vez que hayas acumulado suficientes estudios, títulos, certificaciones y horas de práctica. Deberás mantenerte al día, leyendo blogs, siguiendo a influencers especializados en Big Data y participando activamente en comunidades de entusiastas de los grandes datos. Quién sabe, quizás al llegar a esta instancia, tú mismo seas un gurú de los datos y puedas ayudar al mundo a hacer un mejor uso de las gigantescas cantidades de información que circula constantemente por los universos digitales.

Deja un comentario