Conectar Flume con #Hadoop

flume-logoBuenas, en este articulo seré breve, lo que haremos sera conectar Apache Flume con el HDFS de Hadoop, esto para poder obtener el Stream de Twitter de una cuenta particular, para ello debemos realizar varias tareas, estamos listos? Lo primero que debes hacer es descargar los paquetes que necesitaremos, son dos el primero Apache flume bajatelo de aqui, luego necesitaremos el código fuente o el .JAR que ofrece el proyecto Cloudera para esta tarea, les comento que a la primera no me funciono en Ubuntu, se debe recompilar el .JAR para que esto camine, asumo en este articulo que la implementación de HADOOP en la plataforma es efectiva y correcta.

Lo primero que se debe hacer,  es cambiar el nombre del archivo “flume-env.sh.template” “flume-env.sh” y ajustar los parámetros:

  • JAVA_HOME = La ruta a Java
  • Descomenta los parámetros pasados a JAVA y sube el valor de la memoria a 512m
  • Configura el FLUME CLASSPATH indicando la ruta absoluta al .JAR de Cloudera.

Lo que sigue es crear una cuenta de correo y de Twitter si estas haciendo una prueba los necesitaras, si ya tienes la cuenta creada entonces dirigite a “apps.twitter.com”  y deberás crear los siguientes elementos:

  • TwitterAgent.sources.Twitter.consumerKey = xxxxxxxx
  • TwitterAgent.sources.Twitter.consumerSecret = xxxxxxxxx
  • TwitterAgent.sources.Twitter.accessToken = xxxxxxxxxxx
  • TwitterAgent.sources.Twitter.accessTokenSecret =xxxxxxxx

Lo que sigue es dentro del directorio “conf” de Apache Flume , debes crear un archivo que puede llamar “twitter.conf” y dentro de el colocar lo siguiente:

# The configuration file needs to define the sources,
# the channels and the sinks.
# Sources, channels and sinks are defined per agent,
# in this case called 'TwitterAgent'

TwitterAgent.sources = Twitter
TwitterAgent.channels = MemChannel
TwitterAgent.sinks = HDFS

TwitterAgent.sources.Twitter.type = com.cloudera.flume.source.TwitterSource
TwitterAgent.sources.Twitter.channels = MemChannel
TwitterAgent.sources.Twitter.consumerKey = xxxxxxxxxxxxxx
TwitterAgent.sources.Twitter.consumerSecret = xxxxxxxxxxxx
TwitterAgent.sources.Twitter.accessToken =  xxxxxxxxxxxxxx
TwitterAgent.sources.Twitter.accessTokenSecret = xxxxxxxxx
TwitterAgent.sources.Twitter.keywords = modi, india electioins, bjp, congress, tdp, jana sena, pwan kalyan, aap
TwitterAgent.sinks.HDFS.channel = MemChannel
TwitterAgent.sinks.HDFS.type = hdfs
TwitterAgent.sinks.HDFS.hdfs.path = hdfs://localhost:8020/elections/tweets/%Y/%m/%d/%H/
TwitterAgent.sinks.HDFS.hdfs.fileType = DataStream
TwitterAgent.sinks.HDFS.hdfs.writeFormat = Text
TwitterAgent.sinks.HDFS.hdfs.batchSize = 10
TwitterAgent.sinks.HDFS.hdfs.rollSize = 0
TwitterAgent.sinks.HDFS.hdfs.rollCount = 10000

TwitterAgent.channels.MemChannel.type = memory
TwitterAgent.channels.MemChannel.capacity = 10000
TwitterAgent.channels.MemChannel.transactionCapacity = 100

Ya luego de eso vienen dos cosas la prueba de que el .JAR se este conectando correctamente al SILK de TWIITER y dos que funcione la configuración, para ello en el directorio “bin” de A-flume,  remplace y ejecute:

/usr/bin/flume-ng agent -c <config-dir> -f <config-file> -n <agent-name>

Al momento de la corrida hay 2 puntos importantes uno la salida DEBE indicar “Connection Established” y numero dos se deben generar los archivos correspondientes en el HDFS de hadoop para su posterior tratado con otras herramientas. Las cuales desarrollaremos en otros POSTs.  Eso es todo por ahora. Espero les sirva. Nos vemos.


Leave a Comment