Oracle Data Integrator Enterprise Edition 12.1.3.0.1 – Instalación y detalle de opciones avanzadas para Big Data
17/07/2015 -
Oracle anunció recientemente las opciones avanzadas de Oracle Data Integrator Enterprise Edition para Oracle Big Data. La nueva versión (12.1.3.0.1) de ODI, incorpora funcionalidades para trabajar en entornos Hadoop. En este post vamos a estudiarlas, así como la forma de instalar esta versión sobre la Virtual Machine Big Data Lite 4.1, que incluye la última versión CDH5.3.0 de Cloudera Hadoop, donde ya está instalado ODI 12.1.3, así como todos los componentes de Hadoop que necesitamos.
Conceptos previos a tener en cuenta
Antes de entrar en detalle en la instalación de componentes Big data de ODI 12c, es conveniente hacer un resumen de conceptos previos a tener en cuenta sobre Big Data:
- Hadoop: Es un framework para computación distribuida que permite a las aplicaciones trabajar con miles de nodos y petabytes de datos. Hadoop no es un tipo de base de datos, aunque sobre él se ejecutan ciertos tipos de bases de datos NoSQL (tales como HBase), que permiten que los datos se distribuyan sobre miles de servidores. Sobre la base del Hadoop Distributed File System (HDFS), un sistema de archivos distribuido, Hadoop permite el acceso de alto rendimiento a los datos a la vez que ofrece un cierto nivel de disponibilidad. Al igual que otras tecnologías relacionadas con Hadoop, HDFS se ha convertido en una herramienta clave para la gestión de grandes volúmenes de datos y el apoyo a las grandes aplicaciones de análisis de datos.
- NoSQL: Es una BD del tipo Key-Value en memoria, que ofrece alto rendimiento y procesamiento ágil de la información a escala masiva. En otras palabras, se trata de una infraestructura de base de datos que ha sido muy bien adaptada a las exigencias de Big Data.
- HBase: Es una BBDD que corre sobre Hadoop. Almacena datos estructurados y semiestructurados de forma natural, y está diseñado para correr en un clúster de ordenadores en lugar de una sola computadora. Características principales:
- Almacenamiento NoSQL.
- Provee una API Clave –Valor.
- Corre en múltiples nodos en un clúster.
- Nuestra aplicación no sabe si estamos tratando con 1 nodo o con 100 nodos.
- HBase está diseñado y optimizado para manejar terabytes o petabytes de datos. Es una parte del ecosistema Hadoop por lo que depende de algunas de sus características clave, como redundancia de datos y procesos en segundo plano.
- MapReduce: Es un modelo de programación para el procesamiento y tratamiento de grandes cantidades de datos no estructurados, en paralelo a través de un grupo distribuido de procesadores u ordenadores independientes (clústeres de servidores). MapReduce basa su funcionalidad en complejos algoritmos matemáticos que permite distribuir una tarea a través de múltiples nodos de manera transparente al desarrollador. El proceso MapReduce se compone de tres fases:
- 1º fase es la función “map” o “mapper” en la que cada tarea opera sobre un único bloque HDFS y se ejecuta sobre el nodo dónde el bloque está almacenado, generando conjuntos de pares clave/valor intermedios.
- 2º fase es la denominada “shuffle& sort” y es la encargada de ordenar y consolidar los datos intermedios generados por los “mapper” una vez han finalizado.
- 3º fase se denomina “reduce” y opera sobre los datos generados en la fase “shuffle& sort” produciendo la salida del resultado final.
- JobTracker: (Nodo Maestro).
- TaskTracker: (Nodos Esclavos)
- El nodo maestro consiste en un servicio demonio llamado JobTracker, el cual se encarga de asignar las tareas a los nodos esclavos.
- Hive: es una interface que facilita la estructura de datos y permite la escritura de programas MapReduce. Hive utiliza una especia de lenguaje SQL denominado HiveQL, y comparte algunas de sus características, como el uso de tipos de datos primitivos o conectores JDBC y ODBC. Hive es un gran interface para cualquiera que provenga del mundo de las bases de datos relacionales.
- Pig: es un lenguaje de flujo de datos especialmente diseñado para simplificar la escritura de aplicaciones MapReduce. PIG es una simplificación de MapReduce, que combina dos elementos: el compilador PIG y el lenguaje de script PIG Latin. PIG Latin está basado en el paradigma de flujo de datos, este paradigma se asemeja a las señales eléctricas que fluyen a través de los circuitos eléctricos. El procesamiento en Pig Latin se realiza mediante operadores tales como “Join”, “Filter”, “GroupBy” y “Union”. PIG aporta las siguientes ventajas y características:
- Es un lenguaje similar a SQL
- Soporta tipos complejos de datos que pueden ser embebidos como campos de una tabla
- Soporta la creación de funciones definidas por el usuario
- Aporta una característica especial llamada “Illustrate” que permite al desarrollador escribir código rápidamente utilizando datos de muestra
- Spark: Se trata de otra plataforma que proporciona soporte para la implementación de aplicaciones según el modelo MapReduce sobre un clúster Hadoop, pero Spark lleva a MapReduce al siguiente nivel en el procesamiento de datos, con capacidades como el almacenamiento y procesamiento de datos en memoria y en tiempo real, ofreciendo tasas de rendimiento varias veces más rápidas que otras tecnologías big data.
- Oozie: Es una aplicación Web basada en Java que permite controlar y programar flujos de tareas dentro del sistema Hadoop, así como la toma de decisiones en tiempo de ejecución.
Pig y Spark support
Hasta ahora ODI12c nos permitió utilizar Hive para cualquier transformación basada en Hadoop. Con esta nueva versión, podemos utilizar también Pig y Spark, dependiendo del caso de uso, para dar un mejor rendimiento.
Estas dos tecnologías ya están disponibles en la topología, junto con el servidor de datos Hadoop para poder definir dónde extraer los datos, y podemos importar también algunos módulos con los KM para Pig y Spark. Por lo que para trabajar con Pig y Spark con ODI, todo lo que se necesita es crear un flujo de datos lógico en el mapping y elegir su tecnología.
Pig es un lenguaje de flujo de datos, esto hace que encaje perfectamente con el nuevo modelo de programación orientado a “flujo” recientemente añadido en ODI 12c. La idea es escribir un flujo de datos en Pig latín, donde la carga de trabajo se ejecutará en MapReduce.
Spark puede utilizar diferentes lenguajes de programación, los dos más comunes son Python y Scala. Permite hacer operación con filtros, join y agregados. Todo esto se puede hacer en memoria, lo que proporciona mejor rendimiento del que ofrece MapReduce. Los programadores de ODI eligieron utilizar Python como lenguaje de programación para el Spark, por lo que el Módulo de conocimiento utilizará PySpark.
Nuevos drivers Hive y LKMs
Esta versión también ofrece importantes mejoras en la tecnología Hive, incorporando un nuevo driver llamado DataDirect Apache Hive JDBC. El Driver Weblogic Hive JDBC, tiene por objetivo mejorar el rendimiento y la estabilidad.
Los nuevos módulos de Conocimiento son mejorados con el nuevo driver y los LKMs son los protagonistas en vez del uso de múltiples conexiones IKMs como solía ser. Gracias a esto, se pueden combinar con otros LKMs en la misma asignación, cosa que no era posible anteriormente.
Agente Oozie
Oozie es otro proyecto de Apache que se define como “un sistema de flujo de trabajo del planificador para administrar los trabajos de Apache Hadoop”. Con Oozie podemos crear un flujo con los diferentes trabajos con Hadoop stack, y luego programarlo a una hora determinada o lanzarse automáticamente cuando se disponga de datos.
El motor Oozie, integrado en el ecosistema de Hadoop, puede hacer lo que el agente de ODI hace normalmente -ejecuciones, programaciones, supervisiones-. Así que a través de él vamos a ser capaces de programar y supervisar nuestro trabajo de Hadoop dentro de ODI. Oozie puede incluso recuperar automáticamente los registros de Hadoop. Utilizando Oozie no sería necesaria la instalación de un agente específico-ODI en el clúster Hadoop.
El único problema que podemos encontrar es que los planes de carga no sean compatibles. La alternativa sería ejecutar los planes de carga con un agente independiente o agente JEE para delegarle las ejecuciones de escenarios relacionados con Big Data desde el motor Oozie.
Hadoop Distributed File System (HDFS) sistema de archivos distribuidos con ODI
ODI también permite manipular ficheros de Hadoop, pudiendo borrar, mover y copiar archivos y carpetas. También se pueden anexar archivos y transferirlos a HDFS a través de FTP, o detectar cuando se crea un archivo en HDFS. Para ello indicaremos un esquema lógico de Hadoop para la fuente, el destino o ambos.
Detallamos un ejemplo con un archivo del sistema de Unix para HDFS, en el que realizamos un mantenimiento o ejecución de tareas, indicando la operación deseada como archivar, borrar o copiar. Este paso resultará más fácil realizarlo con ODI 12c. Hasta ahora, era un poco tedioso: había que crear un shell script utilizando comandos hdfs dfs y luego lanzarlo usando la herramienta OdiOsCommand. Ahora, se ejecutan directamente todos los comandos en un paquete de ODI, o mediante un procedimiento determinando, le indicamos su objetivo de integración.
Dos nuevos componentes de mapeo: Jagged y Flatten
Estos dos nuevos componentes se pueden utilizar en un contexto de Big data, pero también pueden ser útiles en proyectos de integración de datos tradicional:
- Jagged, pivotará un conjunto de datos clave-valor en unas columnas con sus valores.
- Flatten se puede utilizar cuando haya campos anidados, como en JSON (datos con los campos anidados/repetidos) que pueden ser útiles para expresar datos jerárquicos. Se reduce la duplicación al desnormalizar los datos. El uso de un componente de Flatten generará más filas si fuera necesario, para ello, extraerá los valores diferentes para un mismo atributo que esté anidado en otro atributo. Para ver con más detalle estas nuevas características podéis descargar este manual de Oracle: “desarrollo ODI 12c para Big Data“.
¿Cómo se pueden instalar los nuevos componentes BIG DATA mencionados?
El parche se debe aplicar sobre una instalación de Oracle Data Integrator 12.1.3.0.0 existente. No es un parche incluido y sólo está relacionado con opciones avanzadas de Big data. No tiene sentido que se instale si no necesitan sus funcionalidades, ya que además, para poder disfrutar de Big data con ODI 12c, es necesario contratar una nueva licencia, correspondiente a la opción avanzada de Big Data para ODI EE.
El primer paso es descargarlo de la OTN o My Oracle Support, después nos aseguramos de cerrar ODI Estudio y apagar los agentes, entonces el README recomienda actualizar OPatch y comprobar la OUI, después se establecen algunas variables de entorno y se descomprime el parche para ODI.
[ oracle @ bigdatalite ~ ] $ mkdir / home / oracle / bck
[ oracle @ bigdatalite ~ ] $ ORACLE_HOME = / u01 / ODI12c /
[ oracle @ bigdatalite ~ ] $ cd $ ORACLE _ HOME
[ oracle @ bigdatalite ODI12c ] $ unzip / home / oracle / Desktop / p6880880_132000_Generic . zip – d $ ORACLE _ HOME
[ oracle @ bigdatalite ODI12c ] $ OPatch / opatch lsinventory – jre / usr / java / latest /
[ oracle @ bigdatalite ODI12c ] $ export PATH = $ PATH : / u01 / ODI12c / OPatch /
[ oracle @ bigdatalite ODI12c ] $ unzip – d / home / oracle / bck / / home / oracle / Desktop / p20042369_121300_Generic . zip
[ oracle @ bigdatalite ODI12c ] $ cd / home / oracle / bck /
Este parche se compone realmente de tres partes. Hay que tener en cuenta que siempre se puede especificar el JRE para ser utilizado por OPatch para asegurarse que todo funciona bien.
[ oracle @ bigdatalite bck ] $ unzip p20042369_121300_Generic . zip
[ oracle @ bigdatalite ODI12c ] $ cd 20042369 /
[ oracle @ bigdatalite 20042369 ] $ opatch apply – jre / usr / java / latest /
[ oracle @ bigdatalite 20042369 ] $ cd / home / oracle / bck /
// ONLY FOR ENTERPRISE INSTALL
//[oracle@bigdatalite bck]$ unzip p20674616_121300_Generic.zip
//[oracle@bigdatalite bck]$ cd 20674616/
//[oracle@bigdatalite 20674616]$ opatch apply -jre /usr/java/latest/
//[oracle@bigdatalite 20674616]$ cd /home/oracle/bck/
[ oracle @ bigdatalite bck ] $ unzip p20562777_121300_Generic . zip
[ oracle @ bigdatalite bck ] $ cd 20562777 /
[ oracle @ bigdatalite 20562777 ] $ opatch apply – jre / usr / java / latest /
También es necesario actualizar tablas del repositorio de ODI, tarea que se puede realizar con el asistente de actualización, aunque en la VM Big Data Lite, las tablas del repositorio se han comprimido, por lo que primero se tendrá que descomprimir y reconstruir los índices no válidos.
select ‘alter table’|| t.owner||’.’||t.table_name||’ move nocompress;’ qfrom all_tables twhere owner = ‘DEV_ODI_REPO’ and able_name<gt;’SNP_DATA’;select ‘alter index’||owner||’.’||index_name||’rebuild tablespace’||tablespace_name ||’;’from all_indexeswhere owner=’DEV_ODI_REPO’ and status= ‘UNUSABLE’; |
Una vez realizado, podemos iniciar el asistente de actualización:
[ oracle @ bigdatalite 20562777 ] $ cd / u01 / ODI12c / oracle_common / upgrade / bin [ oracle @ bigdatalite bin ] $ . / ua
A partir de ahora los pasos son bastantes sencillos siguiendo el asistente gráfico: seleccionamos esquemas, o un agente independiente que tendrá que correr de nuevo, “Standalone System Component Configuracions” para actualizar el dominio.
Antes de abrir ODI estudio vamos a borrar la caché de JDev, así estamos seguros que todo se ve bien.
[ oracle @ bigdatalite bin ] $ rm – rf / home / oracle / . odi / system12 . 1.3.0.0 /
El último paso es ir a la topología y cambiar el driver utilizado para Hive Data Server. Ahora todos los nuevos LKMs utilizan el nuevo controlador weblogic, lo que requiere acutalizar la URL existente. Para ello simplemente seleccionamos “Driver DataDirect Apache Hive JDBC” en lugar del controlador de Apache existente. Después abrimos ODI Studio, y aunque la versión seguirá siendo la v 12.1.3.0.0 se verán las nuevas características que se han instalado correctamente.
En conclusión, ahora podemos disfrutar de todas las características del nuevo ODI para Big Data en 12c. Con ellas podemos hacer que tareas de integración aparentemente complejas en entornos Big Data resulten bastante más simples de realizar y aprovechar lo mejor de las tecnologías de integración de datos Oracle actuales.