{"id":1955,"date":"2016-01-15T12:54:03","date_gmt":"2016-01-15T10:54:03","guid":{"rendered":"https:\/\/inlab.fib.upc.edu\/?p=1955"},"modified":"2016-01-15T12:54:03","modified_gmt":"2016-01-15T10:54:03","slug":"que-herramientas-necesitas-para-iniciarte-en-big-data","status":"publish","type":"post","link":"https:\/\/inlab.fib.upc.edu\/es\/uncategorized-ca-en\/que-herramientas-necesitas-para-iniciarte-en-big-data","title":{"rendered":"\u00bfQu\u00e9 herramientas necesitas para iniciarte en Big Data?"},"content":{"rendered":"<p><span style=\"line-height: 20.8px; text-align: justify;\">Desde la creaci\u00f3n de Internet y cada vez m\u00e1s, se ha contado con datos generados por infinidad de aplicaciones y que tenemos a nuestro alcance esperando a ser usados. Anta\u00f1o, tener y consumir todo este ingente material se pod\u00eda volver una tarea pr\u00e1cticamente imposible o inviable tanto econ\u00f3mica como tecnol\u00f3gicamente.<\/span><\/p>\n<p><!--more--><\/p>\n<h2>Introducci\u00f3n<\/h2>\n<p class=\"rtejustify\">Desde la creaci\u00f3n de Internet y cada vez m\u00e1s, se ha contado con datos generados por infinidad de aplicaciones y que tenemos a nuestro alcance esperando a ser usados. Anta\u00f1o, tener y consumir todo este ingente material se pod\u00eda volver una tarea pr\u00e1cticamente imposible o inviable tanto econ\u00f3mica como tecnol\u00f3gicamente. Esto limitaba el uso de la informaci\u00f3n a aquella que era m\u00e1s relevante y punto. Vamos a ver en que herramientas podemos iniciarnos para solventar este handicap y sacar el <strong>m\u00e1ximo valor a nuestros datos<\/strong>. Herramientas open-source y que cualquiera tiene a su disposici\u00f3n. El ecosistema <strong>Hadoop<\/strong>.<\/p>\n<h2>Hardware<\/h2>\n<p class=\"rtejustify\"><img fetchpriority=\"high\" decoding=\"async\" class=\" alignleft size-full wp-image-1934\" alt=\"Cubieboard cluster\" src=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2016\/01\/cubieboard_hadoop_cluster.jpg\" style=\"width: 200px; height: 133px; margin: 5px 10px; float: left;\" width=\"900\" height=\"600\" srcset=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2016\/01\/cubieboard_hadoop_cluster.jpg 900w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2016\/01\/cubieboard_hadoop_cluster-300x200.jpg 300w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2016\/01\/cubieboard_hadoop_cluster-768x512.jpg 768w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2016\/01\/cubieboard_hadoop_cluster-370x247.jpg 370w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/>Hoy en d\u00eda tenemos a nuestro alcance el poder consumir esta informaci\u00f3n sin necesidad de contar con un car\u00edsimo supercomputador en nuestro trastero. Podemos llegar a hacer pruebas con sistemas de 8-16GB de RAM y unos cuantos GB de disco duro. En un entorno de producci\u00f3n se usa \u00ab<strong>comodity hardware<\/strong>\u00ab, es decir, m\u00e1quinas que no necesitan tener un alto grado de fiabilidad y sofisticaci\u00f3n (sistemas RAID, discos duros enterprise, componentes redundantes, etc). M\u00e1quinas de este tipo son mucho m\u00e1s baratas y si se rompen, ponemos otras y ya est\u00e1. El peso de la fiabilidad recae sobre el software. Tendremos, esto s\u00ed, que dimensionar las caracter\u00edsticas seg\u00fan los requerimientos de nuestro escenario. Una configuraci\u00f3n t\u00edpica de un nodo de un entorno productivo podr\u00eda ser una m\u00e1quina con 8-24 cores, 32-256GB de RAM y unos 8-12 discos HDD.<\/p>\n<p class=\"rtejustify\">Para introducirnos en el uso de este software, no es necesario tener un cluster de m\u00e1quinas potentes, podremos ponernos a trastear con un \u00bf<a href=\"http:\/\/docs.cubieboard.org\/tutorials\/cb1\/customization\/deploying_hadoop_cluster_on_cubieboard_guide\" style=\"line-height: 20.8px; text-align: justify;\">Cubieboard cluster <\/a><span style=\"line-height: 20.8px; text-align: justify;\">:)?, unas simples VM&#8217;s en nuestro PC o con alguna VM como la Cloudera QuickStart VM con todo ya montado, que sirve justamente para aprender.<\/span><\/p>\n<h2><span style=\"line-height: 1.6em;\">Motivaci\u00f3n<\/span><\/h2>\n<p><img decoding=\"async\" class=\" alignright size-full wp-image-1937\" alt=\"Big Data tools\" src=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2016\/01\/bigdata_tools_02.jpg\" style=\"width: 200px; height: 180px; margin: 5px 10px; float: right;\" title=\"Cortes\u00eda de Stuart Miles v\u00eda freedigitalphotos.net\" width=\"400\" height=\"360\" srcset=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2016\/01\/bigdata_tools_02.jpg 400w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2016\/01\/bigdata_tools_02-300x270.jpg 300w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2016\/01\/bigdata_tools_02-370x333.jpg 370w\" sizes=\"(max-width: 400px) 100vw, 400px\" \/><\/p>\n<p>Antes de nada, dejemos clara una cosa y no nos enga\u00f1emos, Big Data es para tratar con grandes vol\u00famenes de datos. Big Data aparece cuando decidimos dejar de quedarnos con lo que era m\u00e1s relevante y pasar a quedarnos con <strong>TODO<\/strong>. <strong>Toda informaci\u00f3n sirve en alg\u00fan momento<\/strong> y nos puede permitir ver cosas que con solamente \u00ablo importante\u00bb no podemos llegar a ver y que en muchas ocasiones nos <strong>puede aportar mucho valor<\/strong>.<\/p>\n<p class=\"rtejustify\">Como dec\u00edamos, hoy en d\u00eda se ha vuelto factible tener mucha informaci\u00f3n y ser capaz de consumirla, pero tambi\u00e9n hay que entender cuando tiene sentido usar herramientas Big Data y cuando no. Si tenemos un <strong>volumen alto de datos<\/strong> y tenemos que lidiar con gigas y gigas de datos (o alguna magnitud mayor) estar\u00e1 bien usar estas herramientas. De no ser as\u00ed, tambi\u00e9n podemos hacer uso de todo esto, pero matar moscas a ca\u00f1onazos quiz\u00e1s no es tan adecuado, aunque sea la moda.<\/p>\n<h2><span style=\"line-height: 1.2em;\">La Base<\/span><\/h2>\n<p class=\"rtejustify\" style=\"line-height: 20.8px;\">Hablar de Big Data es hablar de Hadoop y todo lo que lo rodea. Vamos a ver qu\u00e9 es Hadoop. Hadoop se sustenta en la forma en la que almacena y accede a los datos. Hadoop est\u00e1 formado por HDFS y MapReduce. La combinaci\u00f3n de estos dos permite que los <strong>datos est\u00e9n replicados y distribuidos<\/strong> por N nodos beneficiando la capacidad de acceso a grandes vol\u00famenes. Cuando queremos ejecutar alguna operaci\u00f3n sobre estos datos distribuidos, Hadoop se encarga de <strong>procesar cada porci\u00f3n de los datos en el nodo que los contiene<\/strong>. De esta forma se aprovecha la localidad de tener los datos cerca de donde se van a procesar y permite <strong>escalar<\/strong> de forma casi lineal. Si queremos crecer en capacidad, a\u00f1adimos m\u00e1s nodos y listo. Del almacenamiento se encarga HDFS y del procesamiento MapReduce.<\/p>\n<p class=\"rtecenter\"><img decoding=\"async\" class=\" size-full wp-image-1940\" alt=\"aplicaciones de Hadoop\" src=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2016\/01\/hadoop_applications.png\" style=\"line-height: 20.8px; text-align: justify; opacity: 0.9; width: 600px; height: 206px;\" width=\"960\" height=\"329\" srcset=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2016\/01\/hadoop_applications.png 960w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2016\/01\/hadoop_applications-300x103.png 300w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2016\/01\/hadoop_applications-768x263.png 768w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2016\/01\/hadoop_applications-370x127.png 370w\" sizes=\"(max-width: 960px) 100vw, 960px\" \/><\/p>\n<h2>Complementos B\u00e1sicos<\/h2>\n<p class=\"rtejustify\">Con HDFS y MapReduce tenemos la capacidad b\u00e1sica de almacenar datos en crudo y realizar procesos en paralelo abstray\u00e9ndonos de la complejidad de este tipo de computaci\u00f3n. Ahora bien, podemos utilizar otras herramientas encima de Hadoop que nos potencian estas capacidades. Todo depender\u00e1 de nuestras necesidades. Estos son los dos m\u00e1s t\u00edpicos:<\/p>\n<h3>HDFS<\/h3>\n<p class=\"rtejustify\">Es el filesystem en el que se basa Hadoop. Este sistema de ficheros se basa en una arquitectura master-slave donde los MasterNodes coordinan a los DataNodes, que son aquellos donde se guarda la informaci\u00f3n. Los datos en HDFS se distribuyen por los diferentes DataNodes en particiones del fichero original, asegurando que cada una de estas particiones est\u00e1 replicada en un nivel de replicaci\u00f3n definido. Por tanto, no necesitamos disponer de sistemas con RAID, si un disco se estropea, HDFS autom\u00e1ticamente replica muy r\u00e1pidamente todas las particiones que estaban en este disco en todo el resto de DataNodes.<\/p>\n<p class=\"rtecenter\"><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-1943\" alt=\"HDFS data distribution\" src=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2016\/01\/hdfs-data-distribution.png\" style=\"line-height: 20.8px; text-align: justify; width: 500px; height: 165px;\" width=\"858\" height=\"283\" srcset=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2016\/01\/hdfs-data-distribution.png 858w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2016\/01\/hdfs-data-distribution-300x99.png 300w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2016\/01\/hdfs-data-distribution-768x253.png 768w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2016\/01\/hdfs-data-distribution-370x122.png 370w\" sizes=\"(max-width: 858px) 100vw, 858px\" \/>\u200b<\/p>\n<h3>YARN &#8211; MapReduce<\/h3>\n<p class=\"rtejustify\">YARN es la evoluci\u00f3n de MapReduce para Hadoop 2.0. La funci\u00f3n de YARN en Hadoop es la de proporcionar un entorno que gestione los recursos para realizar trabajos de computaci\u00f3n. YARN se ocupa de distribuir el trabajo a hacer teniendo en cuenta donde est\u00e1n los datos a procesar, adem\u00e1s de gestionar las propias ejecuciones de los programas. Con YARN podemos separar el sistema de ficheros del sistema de ejecuci\u00f3n. Por tanto podemos usar HDFS sin pasar por YARN o bien usar este gestor de recursos para correr aplicaciones (Como es el caso de la mayor\u00eda de herramientas que trabajan en Hadoop).<\/p>\n<h3 class=\"rtejustify\"><span style=\"line-height: 1.6em;\">HBase<\/span><\/h3>\n<p class=\"rtejustify\"><a href=\"https:\/\/hbase.apache.org\" style=\"line-height: 20.8px; text-align: justify;\"><img loading=\"lazy\" decoding=\"async\" class=\" alignright size-full wp-image-1946\" alt=\"HBase\" src=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2016\/01\/hbase_logo_with_orca_large.png\" style=\"opacity: 0.9; width: 200px; height: 51px; margin: 5px 10px; float: right;\" width=\"470\" height=\"120\" srcset=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2016\/01\/hbase_logo_with_orca_large.png 470w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2016\/01\/hbase_logo_with_orca_large-300x77.png 300w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2016\/01\/hbase_logo_with_orca_large-370x94.png 370w\" sizes=\"(max-width: 470px) 100vw, 470px\" \/><\/a>Se puede considerar \u00abla base de datos\u00bb de Hadoop. Basado en <a href=\"https:\/\/en.wikipedia.org\/wiki\/Bigtable\">BigTable<\/a> de Google, proporciona la capacidad de crear tablas con millones de entradas y permite hacer accesos de lectura\/escritura r\u00e1pida y consistentemente. Tambi\u00e9n es versionada y no-relacional, por lo que ofrece flexibilidad. Adem\u00e1s es f\u00e1cilmente conectable, ya sea a trav\u00e9s de su API java o mediante web services. Podemos usar HBase para dar forma a nuestros datos.<\/p>\n<h3 class=\"rtejustify\">Hive<\/h3>\n<p class=\"rtejustify\"><a href=\"https:\/\/hive.apache.org\"><img loading=\"lazy\" decoding=\"async\" class=\" alignright size-full wp-image-1949\" alt=\"Hive\" src=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2016\/01\/hive_logo_medium.jpg\" style=\"width: 114px; height: 105px; margin: 5px 10px; float: right;\" width=\"114\" height=\"105\" \/><\/a> Es una mezcla entre MapReduce y HBase. Permite estructurar los datos en tablas y vistas y nos permite realizar todo tipo de consultas usando su lenguaje de querying tipo SQL, el HiveQL. Para aquellos casos en los que no podamos obtener lo que queremos con HiveQL, podemos conectar Hive con nuestros propios mappers y reducers, ya que Hive es muy flexible en cuanto a conectividad y se le puede conectar cualquier cosa.<\/p>\n<h3 class=\"rtejustify\"><span style=\"line-height: 20.8px;\">Spark<\/span><\/h3>\n<p class=\"rtejustify\"><a href=\"http:\/\/spark.apache.org\"><img loading=\"lazy\" decoding=\"async\" class=\" alignright size-full wp-image-1952\" alt=\"Spark\" src=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2016\/01\/spark-logo-trademark.png\" style=\"width: 200px; height: 101px; margin: 5px 10px; float: right;\" width=\"270\" height=\"137\" \/><\/a> Es el rey que ha venido a conquistarlos a todos. Mientras que MapReduce realiza sus procesos sobre disco, Spark carga en memoria los datos y realiza operaciones entre datasets intermedios llamados RDDs. Esto hace que su rendimiento sea brutal. Adem\u00e1s es bastante sencillo de utilizar y tiene soporte tanto para Scala como para Java y Python, contando con librer\u00edas para realizar procesamiento en micro-batch (STREAMING), machine learning (MLLIB), grafos (GRAPH) y SQL (SPARKSQL).<\/p>\n<h2 class=\"rtejustify\">Otros Complementos<\/h2>\n<p class=\"rtejustify\"><span style=\"line-height: 1.6em;\">Adem\u00e1s de la suite t\u00edpica que hemos visto, hay muchos otros productos que <strong>funcionan junto con Hadoop<\/strong> y permiten nuevas funcionalidades. Seg\u00fan el tipo de aplicaci\u00f3n usaremos unas u otras. Tambi\u00e9n existen variantes de estas <strong>herramientas adaptadas a usos espec\u00edficos<\/strong>, como <a href=\"https:\/\/github.com\/cloudera-labs\/SparkOnHBase\">SparkOnHBase<\/a>, <a href=\"https:\/\/github.com\/sigmoidanalytics\/spork\">Spork<\/a>, <a href=\"https:\/\/github.com\/RevolutionAnalytics\/RHadoop\">RHadoop<\/a> y otros muchos m\u00e1s. Aqu\u00ed ten\u00e9is una min\u00fascula clasificaci\u00f3n:<br \/>\nData Engineering: <a href=\"http:\/\/spark.apache.org\/\">Spark<\/a>, <a href=\"https:\/\/hive.apache.org\/\">Hive<\/a>, <a href=\"https:\/\/pig.apache.org\/\">Pig<\/a><br \/>\nData Discovery &amp; Analytics: <a href=\"http:\/\/spark.apache.org\/\">Spark<\/a>, <a href=\"http:\/\/impala.io\/\">Impala<\/a>, <a href=\"http:\/\/lucene.apache.org\/solr\/\">Solr<\/a><br \/>\nData Integration &amp; Storage: <a href=\"https:\/\/hbase.apache.org\/\">HBase<\/a>, <a href=\"http:\/\/getkudu.io\/\">Kudu<\/a>, <a href=\"http:\/\/hadoop.apache.org\/\">HDFS<\/a><br \/>\nUnified Data Services: <a href=\"http:\/\/hadoop.apache.org\/\">Yarn<\/a>, <a href=\"http:\/\/sentry.apache.org\/\">Sentry<\/a>, <a href=\"http:\/\/gethue.com\/\">Hue<\/a>, <a href=\"http:\/\/oozie.apache.org\/\">Oozie<\/a><br \/>\nData Ingestion: <a href=\"http:\/\/sqoop.apache.org\/\">Sqoop<\/a>, <a href=\"https:\/\/flume.apache.org\/\">Flume<\/a>, <a href=\"http:\/\/kafka.apache.org\/\">Kafka<\/a><\/span><\/p>\n<h2 class=\"rtejustify\"><span style=\"line-height: 20.8px;\">Hands <\/span><span style=\"line-height: 20.8px;\">o<\/span><span style=\"line-height: 20.8px;\">n<\/span><\/h2>\n<p class=\"rtejustify\"><span style=\"line-height: 20.8px;\">Hemos visto solo una pincelada de las herramientas que se usan para BigData. Dominarlas es cuesti\u00f3n de horas y de pr\u00e1ctica. Para practicar, pod\u00e9is hacer uso de la <a href=\"https:\/\/www.cloudera.com\/downloads\/quickstart_vms\/5-12.html\">VM que anteriormente os comentaba<\/a> para poner en practica alguno de los muchos cursos y tutoriales que se pueden encontrar on-line, como <a href=\"https:\/\/www.udemy.com\/big-data-basics-hadoop-mapreduce-hive-pig-spark\/\" style=\"line-height: 1.6em;\">este curso gratuito<\/a>, que te ense\u00f1ar\u00e1n desde hacer el cl\u00e1sico WordCount hasta realizar tareas de Analytics m\u00e1s complejas. Tambi\u00e9n recomiendo encarecidamente echar mano de los cl\u00e1sicos libros <a href=\"http:\/\/www.oreilly.com\/\">O&#8217;Reilly<\/a> espec\u00edficos de cada tecnolog\u00eda.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Desde la creaci\u00f3n de Internet y cada vez m\u00e1s, se ha contado con datos generados por infinidad de aplicaciones y que tenemos a nuestro alcance esperando a ser usados. Anta\u00f1o, tener y consumir todo este ingente material se pod\u00eda volver una tarea pr\u00e1cticamente imposible o inviable tanto econ\u00f3mica como tecnol\u00f3gicamente.<\/p>\n","protected":false},"author":594,"featured_media":1931,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[590],"tags":[],"experteses":[8],"class_list":["post-1955","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized-ca-en","experteses-datascienceandbigdata-en"],"acf":[],"_links":{"self":[{"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/posts\/1955","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/users\/594"}],"replies":[{"embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/comments?post=1955"}],"version-history":[{"count":0,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/posts\/1955\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/media\/1931"}],"wp:attachment":[{"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/media?parent=1955"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/categories?post=1955"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/tags?post=1955"},{"taxonomy":"experteses","embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/experteses?post=1955"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}