¡Esta es una revisión vieja del documento!
Yarn se utiliza para subir datos o directamente lanzar tareas en HDFS (el sistema de archivos de Hadoop), que es distribuido. Esto acaban siendo tareas en batch, que se van corriendo cada hora o cada día.
Es un frontend web para administrar el cluster de Hadoop
Pig nos permite asignar un formato a los datos leídos y, con este, hacer operaciones sobre los datos. Puede utilizar varios gestores de ejecución como MapReduce o Tez (para executar en memoria, mucho más rápido).
Es un motor para ejecutar programas sobre un cluster Hadoop. Substituye al MapReduce que es únicamente para Java (a pesar de sus ports).
RDD es un objeto que internamente crea Spark para trabajar con datos.
Es una forma de lanzar queries parecidas al SQL a un cluster hadoop. Como Pig, puede ejecutarse sobre MapReduce o sobre Tez.
Se crean tablas de forma paecida al CREATE TABLE de SQL que definirán el estilo de datos.
Se puede extender Hive con User Defined Functions. También puedes cargar datos con varias aplicaciones o formatos (avro, xml…). También se puede usar con Spark (Spark puede usar Hive para obtener datos).
Otra forma distinta a Yarn para leer datos, en vez de hacerlo en batch, es leerlos por streams. Kafka es perfecto para esto, una queue pub-sub distribuida.
Storm puede procesar evento por evento. Se le puede añadir Trident, que permite procesar múltiples eventos a la vez.
Los datos pueden venir de un flujo tipo Flume, Logstash, whatever y se envían a una cola Kafka.
Para procesar los datos puedes hacerlo por eventos (con Storm), o por pequeños batch (con Spark Streaming).
Para guardar los datos lo mejor es utilizar una base de datos distribuida, tipo HBase o Accumulo.
Es un sistema distribuido de mensajes. Los procesos que envían datos, pub, se les llaman produtores. Los que los leen, subs, consumidores.
Los nodos son llamados brokers; la conjunción de nodos Kafka cluster. Zookeeper controla los mensajes y la sincronización.
Procesa flujos de datos, es escalable, tolerante a fallos y garantiza que los datos serán procesados.
Los datos le llegan como mensajes en formato tupla (la fuente puede ser Kafka).
Los que consumen los streams (flujos) son llamados bolts, consumen cualquier número de input streams, los procesan e incluso pueden emitir streams. Ese procesamiento puede ser ejecutar un procedimiento, filtrar mensajes, agregar flujos, conectar con la base de datos…
Trident es otra interface que se puede usar en Storm y es más fácil que este.
Es una alternativa a storm y una de las más famosas librerías en apache. Puede obtener datos de Kafka, flume, HDFS, ficheros… Y guardarlos (o inyectarlos) en HDFS, HBase, dashboards…
Los datos que llegan en un continuo se les llama DStream (pueden venir de Kafka).
También puedes guardar el estado (cómo está actualmente el sistema). Puedes guardar metados en ese “checkpoint” y datos. Esto significa que aunque se joda el sistema, al reiniciarlo mantiene lo que había procesado.
Es una NoSQL DB que utiliza HDFS para guardar los datos. Es perfecta para acceder a los datos de forma aleatoria, para read/write y en real time.
En HBase las columnas agrupan column families (CL). Las celdas pueden tener varias versiones.
Existe una capa para convertir HBase en relacional denominada Phoenix, esta activa SQL sobre HBase.
Phoenix permite crear índices sobre mutable e inmutable (que no van a sufrir un update) columnas.
Impala makes use of many familiar components within the Hadoop ecosystem. Impala can interchange data with other Hadoop components, as both a consumer and a producer, so it can fit in flexible ways into your ETL and ELT pipelines.