3. Hadoop

  • Published on
    09-Feb-2017

  • View
    30

  • Download
    3

Embed Size (px)

Transcript

<ul><li><p>1</p><p>Hadoop</p><p>Cristian Gonzlez Garca v 1.2.2 Noviembre 2015</p><p>mailto:gonzalezgarciacristian@hotmail.commailto:gonzalezgarciacristian@hotmail.com</p></li><li><p>ndice Introduccin</p><p> Arquitectura</p><p> Configuracin Bsica</p><p> Standalone Mode</p><p> Pseudo-Distributed Mode</p><p> Ejemplo: Word Count</p><p> Ejemplo: Hipotecas</p><p> Errores Comunes</p><p> Comandos y otros</p><p> Bibliografa</p><p>2</p></li><li><p>Introduccin</p><p>3</p></li><li><p>Qu es? http://hadoop.apache.org/</p><p> Proyecto Open Source Licencia Apache License 2.0</p><p> Mantenido por Apache Foundation</p><p> Framework Sistema de archivos distribuidos</p><p> Volmenes grandes de datos</p><p> Escalable, deteccin de fallos, alta disponibilidad</p><p> Ejecucin de computacin paralela</p><p> Desarrollado en Java</p><p> Multiplataforma</p><p> Yahoo! Es su mayor contribuyente</p><p>4</p><p>http://hadoop.apache.org/</p></li><li><p>Nacimiento Creado por Doug Cutting y Mike Cafarella</p><p> Coincidieron en Yahoo!</p><p> Nutch, Hadoop</p><p> Se basaron en el artculo sobre MapReduce de Google [1]</p><p> Doug Cutting</p><p> El nombre proviene del elefante de juguete de su hijo</p><p> Desarroll tambin Lucene (API)</p><p> Ahora forma parte de Cloudera</p><p> Se desarroll para Nutch, un motor de bsqueda basado en Lucene</p><p>5</p></li><li><p>Artculo de Google</p><p> Se inspir en el artculo [1] de Google sobre </p><p>MapReduce y Google File System (GFS)</p><p> Computacin distribuida</p><p>6</p><p>http://static.googleusercontent.com/media/research.google.com/es/archive/mapreduce-osdi04.pdf</p></li><li><p>Qu ofrece?</p><p> Computacin distribuida</p><p> Para cualquier tarea que pueda ejecutarse </p><p>por lotes</p><p> Anlisis de datos, procesamiento de imagen </p><p>y video, estadsticas, bsquedas, paralelizar </p><p>servicios, publicidad, almacenaje y </p><p>bsqueda, </p><p> Gran capacidad de cmputo</p><p>7</p></li><li><p>Es utilizado por I Adobe</p><p> Desarrollo de software Almacenamiento y procesamiento de datos desde 2008 30 nodos y prximamente 80 Hadoop, Hbase y trabajos MapReduce</p><p> Alibaba Comercio electrnico Procesamiento de datos para su motor de bsqueda 15 nodos de 8 cores, 16GB Ram y 1.4TB (10^12)</p><p> Ebay Subastas Optimizacin de bsquedas 532 nodos de 8 cores y 5.3PB (10^15)</p><p> MapReduce, Pig, Hive y HBase</p><p> Facebook Red Social Almacenar copias de los logs, anlisis y Machine Learning 1100 nodos con 8800 cores y 12PB (10^15) 300 nodos con 2400 cores y 3PB (10^15)</p><p>8</p></li><li><p>Es utilizado por II Last.fm</p><p> Red Social y Radio por Internet</p><p> Clculo de grficas, informes, anlisis de datos, </p><p> 100 nodos (Dual quad-core Xeon L5520 @ 2.27GHz &amp; L5630 @ 2.13GHz , 24GB RAM, 8TB(4x2TB)/node storage)</p><p> LinkedIn Red Social</p><p> Gente que puedas conocer, tabln, skills, </p><p> ~4100 nodos ~800 Westmere-based HP SL 170x, with 2x4 cores, 24GB RAM, 6x2TB SATA ~1900 Westmere-based SuperMicro X8DTT-H, with 2x6 cores, 24GB RAM, 6x2TB SATA ~1400 Sandy Bridge-based SuperMicro with 2x6 cores, 32GB RAM, 6x2TB SATA</p><p> Pig</p><p> Twitter Red Social</p><p> Almacenaje y procesamiento de Tweets, logs, etc</p><p> Pig, Avro, Hive y Cassandra</p><p> Yahoo! Empresa global</p><p> Ms de 100.000 cpu. El mayor clster es de 4500 nodos</p><p> Pig</p><p>9</p></li><li><p>Es utilizado por III</p><p> Amazon</p><p> Spotify</p><p> Universidades</p><p> Telefnica </p><p> Y decenas de empresas ms</p><p> http://wiki.apache.org/hadoop/PoweredBy</p><p>10</p><p>http://wiki.apache.org/hadoop/PoweredBy</p></li><li><p>Arquitectura</p><p>11</p></li><li><p>Componentes de un Clster I Componentes</p><p> Nodo Maestro MapReduce: Procesamiento</p><p> JobTracker</p><p> TaskTracker</p><p> HDFS: Almacenamiento NameNode</p><p> DataNode</p><p> Nodos esclavo MapReduce</p><p> TaskTracker</p><p> HDFS DataNode</p><p> JRE 1.6+, JRE 1.7+ (A partir de Hadoop 2.7.1)</p><p> SSH: Para conectar los nodos</p><p>12</p></li><li><p>JobTracker Gestiona los trabajos y recursos del clster Funcionamiento</p><p>1. Recibe el trabajo de la aplicacin cliente</p><p>2. Se comunica con el NameNode para localizar los datos</p><p>3. Localiza nodos TaskTracker con ranuras disponibles o cercanas a los datos</p><p>4. Enva el trabajo a los nodos TaskTracker elegidos</p><p>5. Monitoriza los nodos TaskTracker Si no recibe noticias de un nodo TaskTracker, lo dar </p><p>por fallido y reprogramar ese trabajo para otro nodo TaskTracker</p><p>6. Actualiza el estado cuando se complet el trabajo</p><p>7. La aplicacin cliente puede preguntar al JobTracker por el estado del proceso</p><p>13</p></li><li><p>TaskTracker Son los nodos que aceptan tareas del nodo </p><p>JobTracker</p><p> Sus operaciones son Map, Reduce y Shuffle</p><p> Tienen configurados un nmero de slots que se corresponden con el nmero de trabajos que pueden aceptar Tienen preferencia los nodos con un DataNode que </p><p>contenga datos de ese trabajo Si no, busca una slot en un nodo del mismo rack</p><p> Para realizar el trabajo, crea un proceso separado. As evita que se caiga el TaskTracker si el proceso falla</p><p> Cuando el proceso termina, notifica el JobTracker</p><p> Enva seales cada poco minutos al JobTracker para que este sepa que el nodo sigue vivo Adjunta el nmero de slots libres</p><p>14</p></li><li><p>NameNode Es el nodo principal del sistema de ficheros HDFS</p><p> Guarda el rbol del directorio de ficheros y su localizacin</p><p> No almacena datos de ficheros</p><p> Recibe las peticiones de ficheros y responde con los nodos que los poseen</p><p> Si se cae, se cae todo el sistema de ficheros</p><p> Puede existir un nodo secundario (SecondaryNameNode) en otro nodo para evitar perder el sistema si se cae el principal</p><p> Se recomienda que no comparta el nodo con ninguno de los otros 3: JobTracker, TaskTracker y DataNode</p><p>15</p></li><li><p>DataNode Almacena datos en el sistema HDFS</p><p> Se conectan con el NameNode</p><p> Responde a las peticiones del NameNode</p><p> Las aplicaciones cliente y los trabajos MapReducehablan directamente con los DataNode una vez estas recibieron la localizacin del NameNode</p><p> Deberan de compartir nodo con los TaskTracker, para estar cerca de las operaciones MapReduce, por rendimiento</p><p> Los DataNodes pueden hablar entre ellos para replicar datos No se necesitan discos RAID</p><p> Configuracin ideal 1 disco fsico por CPU 1 TaskTracker por CPU. As usan el 100% de la CPU</p><p>16</p></li><li><p>Componentes de un Clster II</p><p>17</p><p>Almacena los datos</p><p>Gestin de datos</p><p>Gestin de componentes</p><p>Enva las tareas Map y reduce</p><p>Obedece al JobTracker</p><p>Ejecuta tareas Map y Reduce</p></li><li><p>Componentes de Hadoop HDFS MapReduce</p><p> Hadoop Streaming</p><p> Hive</p><p> Hue</p><p> Pig</p><p> Sqoop</p><p> Oozie</p><p> HBase</p><p> FlumeNG</p><p> Mahout</p><p> Fuse</p><p> Zookeeper</p><p>18</p></li><li><p>Hadoop Distributed File System </p><p>(HDFS) http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-</p><p>hdfs/HdfsUserGuide.html</p><p> Sistema de ficheros distribuidos y escalable de Hadoop</p><p> Escrito en Java</p><p> Soporta comandos de Shell http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-</p><p>common/FileSystemShell.html</p><p> Altamente configurable</p><p> Distribuye los ficheros por los diferentes nodos Permite trabajar con URL: Amazon con S3</p><p> Tiene interfaz web en: http://namenode-ip:50070/</p><p> Se compone de NameNode</p><p> Gestiona el sistema de ficheros</p><p> DataNode Almacena los datos y sirve los datos</p><p> Soporta otros tipos de trabajo adems de MapReduce Aprendizaje automtico, procesamiento de imgenes, anlisis de </p><p>marketing, </p><p>19</p><p>http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/HdfsUserGuide.htmlhttp://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-common/FileSystemShell.html</p></li><li><p>MapReduce I http://hadoop.apache.org/docs/r2.7.1/hadoop-mapreduce-client/hadoop-</p><p>mapreduce-client-core/MapReduceTutorial.html</p><p> Framework para facilitar la programacin de aplicaciones para procesar grandes volmenes de datos de manera paralela usando clsteres</p><p> Dos fases Map: Trata los elementos ya divididos de la entrada y los transforman en un conjunto </p><p>clave-valor Reduce: Ordena y junta los elementos clave-valor para crear el resultado</p><p> Componentes Job</p><p> Programa MapReduce que divide en trozos los datos</p><p> JobTracker Gestiona los trabajos y recursos del clster</p><p> Gestiona los TaskTracker y su situacin</p><p> TaskTracker Toma las rdenes del JobTracker y realiza los trabajos MapReduce</p><p> Se obtiene un fichero por cada reduce task configurado</p><p> Soporta varios lenguajes de programacin Java, Python, Ruby, C++</p><p>20</p><p>http://hadoop.apache.org/docs/r2.7.1/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html</p></li><li><p>MapReduce II</p><p>21</p></li><li><p>MapReduce III</p><p>22</p></li><li><p>MapReduce IV </p><p>Programacin I</p><p> Se compone de 3 partes</p><p> Map</p><p> Reduce</p><p> Main</p><p> Se puede modificar tambin el Combiner</p><p> Todo va dentro de una clase (En Java)</p><p> http://hadoop.apache.org/docs/r2.7.1/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html</p><p>23</p><p>http://hadoop.apache.org/docs/r2.7.1/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html</p></li><li><p>MapReduce IV </p><p>Programacin II</p><p>24</p><p>Clave-Valor generado por el Map</p><p>Contexto de la aplicacin</p><p>Valor recibido. Es una lnea</p><p>Iteramos para obtener todas las palabras</p><p>Indicamos que el Map va a ser</p><p>Recibe un objeto genrico</p></li><li><p>MapReduce IV </p><p>Programacin II</p><p> La salida no se reordena</p><p>25</p><p>Indicamos la entrada del ReduceEs la misma que la salida del Map</p><p>Valor recibido. </p><p>Agrupa slo los valores por la misma Clave</p><p>Al estar agrupados por Clave,sumamos para ver cuantos hay iguales</p><p>Clave</p><p>Metemos al contexto el resultado del Reducer</p></li><li><p>MapReduce IV </p><p>Programacin III</p><p> Contiene las llamadas y configuraciones Configuracin</p><p> Job</p><p> Clase principal Clase del Map</p><p> Clase del Combiner</p><p> Clase del Reducer</p><p> Salida</p><p> Ruta de entrada</p><p> Ruta de salida</p><p> Salida</p><p> https://hadoop.apache.org/docs/r2.7.1/api/org/apache/hadoop/mapreduce/Job.html</p><p>26</p><p>https://hadoop.apache.org/docs/r2.7.1/api/org/apache/hadoop/mapreduce/Job.htmlhttps://hadoop.apache.org/docs/r2.7.1/api/org/apache/hadoop/mapreduce/Job.html</p></li><li><p>MapReduce IV </p><p>Programacin IV</p><p> En el Map debemos hacer las operaciones necesarias para preparar nuestros datos En vez de iterar, tal vez obtener una columna </p><p>determinada, extraer una etiqueta, etc</p><p> Si se quiere enviar dos datos en el Map, hay que crear una clase que permita instanciar un objeto que guarde dos valores y usar esa. Heredad de Writable y sobrescribid sus mtodos</p><p> Si queris leer un tipo de dato diferente, como XML, tenis que crear una clase que herede de TextInputFormat y sobrescribir sus mtodos</p><p> Si tenis varias entradas, tenis que especificar todas en el main</p><p>27</p></li><li><p>YARN http://hadoop.apache.org/docs/current/hadoo</p><p>p-yarn/hadoop-yarn-site/YARN.html</p><p> YARN (Yet Another Resource Negotiator)</p><p> MapReduce 2.0, conocido como YARN o NextGen MapReduce</p><p> Separacin del JobTracker ResourceManager: Gestin de recursos</p><p> Application Master: Negociacin de recursos</p><p> Desacoplamiento de las dos tareas</p><p> Ofrecer ms gama de procesamientos y aplicaciones Streaming interactivos simultneos</p><p> Acceso Web</p><p>28</p><p>http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html</p></li><li><p>Hadoop Streaming</p><p> Parte de Hadoop</p><p> http://hadoop.apache.org/docs/r2.6.2/hadoop-mapreduce-client/hadoop-mapreduce-client-core/HadoopStreaming.html (ltima versin) </p><p> https://wiki.apache.org/hadoop/HadoopStreaming</p><p> Librera que permite crear trabajos MapReduce en otros lenguajes de programacin</p><p> C, C++, Python, Perl, Bash, </p><p>30</p><p>http://hadoop.apache.org/docs/r2.6.2/hadoop-mapreduce-client/hadoop-mapreduce-client-core/HadoopStreaming.htmlhttps://wiki.apache.org/hadoop/HadoopStreaming</p></li><li><p>Hive</p><p> Proyecto de la Apache Foundation</p><p> http://hive.apache.org/</p><p> Inicialmente desarrollado por Facebook</p><p> HiveQL es un lenguaje similar a SQL para crear trabajos MapReduce</p><p> Permite incluir Map y Reduce propios cuando sea ineficiente usar HiveQL</p><p> Est escrito en Java</p><p> Tiene interfaces JDBC/ODBC</p><p>31</p><p>http://hive.apache.org/</p></li><li><p>Hue</p><p> Proyecto Open Source</p><p> http://gethue.com/</p><p> Interfaz web grfica para desarrollar con </p><p>utilidades para Hadoop</p><p> Hive, Pig, Sqoop, Oozie, grficas, </p><p>monitorizacin, </p><p> Escrita en Python</p><p>32</p><p>http://gethue.com/</p></li><li><p>Apache Pig Proyecto de la Apache Foundation</p><p> http://pig.apache.org/</p><p> Inicialmente desarrollado por Yahoo! El 40% de los trabajos de Yahoo! Estn hechos con Pig</p><p> PIG Al igual que los cerdos comen de todo, Pig est pensado </p><p>para poder trabajar con cualquier tipo de datos</p><p> Plataforma para anlisis de grandes conjuntos de datos</p><p> Componentes Lenguaje de alto nivel Lenguaje Pig Latin</p><p> Sintaxis parecida a SQL</p><p> Compilador que crea programas MapReduce</p><p>33</p><p>http://pig.apache.org/</p></li><li><p>Apache Sqoop</p><p> Proyecto de la Apache Foundation</p><p> http://sqoop.apache.org/</p><p> Sqoop </p></li><li><p>Oozie</p><p> Proyecto de la Apache Foundation</p><p> http://oozie.apache.org/</p><p> Aplicacin web REST en Java</p><p> Orquestador de procesos</p><p> Creador de flujos de trabajos MapReduce</p><p> Similar a BPM</p><p> Permite acumular acciones</p><p> Coordinador de procesos</p><p> Definicin de aplicaciones</p><p> Monitorizacin de sus aplicaciones</p><p>35</p><p>http://oozie.apache.org/</p></li><li><p>HBase</p><p> Proyecto de la Apache Foundation</p><p> http://hbase.apache.org/</p><p> Almacenamiento clave-valor</p><p> BBDD no relacional</p><p> Open Source</p><p> Escrita en Java</p><p> Funciona sobre el HDFS de Hadoop</p><p> No lo sustituye</p><p>36</p><p>http://hbase.apache.org/</p></li><li><p>Apache FlumeNG</p><p> Proyecto de la Apache Foundation</p><p> http://flume.apache.org/</p><p> Cargador en tiempo real para transmitir </p><p>datos a Hadoop</p><p> Almacena datos en HDFS y HBase</p><p> Captura, agregacin y movimiento de </p><p>forma eficiente de datos log de diferentes </p><p>orgenes a un repositorio</p><p>37</p><p>http://flume.apache.org/</p></li><li><p>Apache Mahout</p><p> Proyecto de la Apache Foundation</p><p> http://mahout.apache.org/</p><p> Librera de aprendizaje de mquinas y </p><p>minera de datos utilizando Hadoop</p><p> Utilizado para anlisis predictivos y </p><p>avanzados</p><p> Descubrimiento de patrones</p><p> Posee algoritmos de recomendacin, </p><p>clustering y clasificacin</p><p>39</p><p>http://mahout.apache.org/</p></li><li><p>Fuse</p><p> http://fuse.sourceforge.net/</p><p> Permite utilizar el sistema de ficheros HDFS </p><p>como un sistema normal</p><p> Permite el uso de comandos como ls, rm, cd, </p><p> Soporta GNU/Linux, Mac OS, Windows, </p><p>40</p><p>http://fuse.sourceforge.net/</p></li><li><p>Apache Zookeeper Proyecto de la Apache Foundation</p><p> http://zookeeper.apache.org/</p><p> Provee de una estructura centralizada para la sincronizacin y coordinacin de servicios de las aplicaciones distribuidas Configuracin, jerarqua de nombres, </p><p> Soporta alta disponibilidad al tener redundancia de servicios</p><p> Se encarga de almacenar toda la informacin necesaria para distribuir aplicaciones</p><p> Coordina los servicios para aplicaciones distribuidas</p><p>41</p><p>http://zookeeper.apache.org/</p></li><li><p>Modos de funcionamiento Standalone</p><p> Modo por defecto</p><p> No distribuido</p><p> Un solo proceso Java</p><p> til para depurar</p><p> Pseudo-distributed</p><p> Modo distribuido en una sola mquina</p><p> Varios procesos Java a la vez</p><p> Fully-Distributed</p><p> Modo distribuido en varios nodos</p><p>43</p></li><li><p>Configuracin bsica</p><p>44</p></li><li><p>Actualizar</p><p> Actualizamos el servidor</p><p> Actualizamos la lista de paquetes y versiones </p><p> Actualizamos los paquetes disponibles</p><p> Instalamos el OpenJDK 7</p><p>45</p></li><li><p>Descargar Hadoop</p><p> Descargamos Hadoop 2.5.1 (no el -src)</p><p> http://apache.rediris.es/hadoop/common/h</p><p>adoop-2.7.1/</p><p> Utilizaremos WGET</p><p> Esperamos</p><p>46</p><p>http://apache.rediris.es/hadoop/common/hadoop-2.7.1/</p></li><li><p>Descomprimir Hadoop</p><p> Nos situamos en la carpeta de la descarga </p><p>y comprobamos que est</p><p> Descomprimimos el archivo en una carpeta</p><p>47</p></li><li><p>Preparar Hadoop</p><p> Movemos Hadoop a /usr/local</p><p> Vamos a la carpeta /usr/local</p><p> Creamos un enlace para mejorar el </p><p>mantenimiento</p><p> Comprobamos que esta todo correcto</p><p>48</p></li><li><p>Variables de entorno I</p><p> Vamos a la carpeta del usuario</p><p> Establecemos paths y directorios</p><p> Hadoop, Java y JavaTools</p><p>49</p></li><li><p>Variables de entorno II</p><p> Cargamos el nuevo fichero .bashrc para </p><p>cargar las variables sin tener que iniciar un </p><p>nuevo Shell</p><p>50</p></li><li><p>Clave pblico-privada</p><p>51</p><p>La renombramos a id_rsa</p><p>Subimos este fichero, el .pem</p></li><li><p>Standalone Mode</p><p>52</p></li><li><p>Ejemplo I</p><p> Creamos una carpeta</p><p> Insertamos datos en ella</p><p> Ejecutamos un ejemplo de Hadoop</p><p> bin/hadoop jar /example.jar grep carpetaDatos </p><p>carpetaResultado expresin regular</p><p> Si la carpeta carpetaResultado existe, dar error</p><p> Buscamos las cadenas que comiencen por dfs</p><p>53</p></li><li><p>Obtencin de...</p></li></ul>