Transcript
Page 1: Cloud Computing: Algoritmos en la Nube

Cloud Computing:

Amazon Web Services,

Apache Hadoop y

Widgets

Page 2: Cloud Computing: Algoritmos en la Nube

Previously…

Page 3: Cloud Computing: Algoritmos en la Nube

Previously…

Page 4: Cloud Computing: Algoritmos en la Nube

Así que ahora…

Fotografía publicada bajo Creative Commons por el usuario santi_martin en flickr: http://www.flickr.com/photos/santi_martin/2944882285/

Page 5: Cloud Computing: Algoritmos en la Nube

¿Y ahora?

?

Page 6: Cloud Computing: Algoritmos en la Nube

Cuando no todo es CRUDo

Emergencia en la web 2.0o Los datos puros no son lo único.

Page 7: Cloud Computing: Algoritmos en la Nube

Cuando no todo es CRUDo

Emergencia en la web 2.0o Las entradas del usuario pueden

generar cambios.

Page 8: Cloud Computing: Algoritmos en la Nube

Cuando no todo es CRUDo

Emergencia en la web 2.0o Los algoritmos suelen ser costosos

Page 9: Cloud Computing: Algoritmos en la Nube

Cuando no todo es CRUDo

Emergencia en la web 2.0o Normalmente se cachean los resultados

o Permite una mayor separación de capas

o Alivia la carga al ejecutarse una sola vez

o Presenta problemas de actualización

o Cacheando solo parte (Google, la Wikipedia y otros RSS)

Page 10: Cloud Computing: Algoritmos en la Nube

Los caminos de la escalada

Hardware

o Mayor potencia de cálculo

o Escalado de una máquina (límite tecnológico)

o Granjas de servidores (dificultades lógicas)

Software

o Necesidades especiales

o Aprovechamiento del multiprocesador

o Aprovechamiento de las redes

Page 11: Cloud Computing: Algoritmos en la Nube

Los caminos de la escalada

Hardware

o Límites tecnológicos de crecimiento

o Complicado mantenimiento de instalaciones

o Dispositivos no triviales (SANs, gestión avanzada de redes, equipos con características especiales…)

o Dificultades de administración

o Costes de almacenaje y acondicionamiento.

o Resistencia a fallos.

Page 12: Cloud Computing: Algoritmos en la Nube

Los caminos de la escalada

Softwareo Dificultad de programación a través de redes.

o Estrategia bottom-up:• División del problema

• Composición de las soluciones

o Deformación del uniproceso.

o Dificultad de mantenimiento.

o Registro de errores

Page 13: Cloud Computing: Algoritmos en la Nube

Cloud Computing

Page 14: Cloud Computing: Algoritmos en la Nube

Cloud Computing El nuevo paradigma de computación

distribuidao Los recursos (CPU, Disco...) se comparten a

traves de Internet.

o Virtualización de dispositivos

o Desarrollo de estrategias de tolerancia a fallos

o Independencia de plataforma

Page 15: Cloud Computing: Algoritmos en la Nube

Cloud Computing Computación distribuida a la Web 2.0

o Software as a Service

o Uso de tecnologías web (SOAP, Rest, Ajax...) estándar

o Minimización de soluciones ad-hoc

o Mezcla de diversos servicios

o Trabajo en entornos heterogéneos

Page 16: Cloud Computing: Algoritmos en la Nube

Cloud Computing Ejecución remota

o Aplicaciones completas sin apenas recursos

Ideal para entornos RIA (Air, XUL...) Widgets El caso Spotify

o Ideal para dispositivos móviles (iPhone, Android...)

o Actualizaciones instantáneas

o Independencia de localización

Page 17: Cloud Computing: Algoritmos en la Nube

Cloud Computing Ventajas

o Liberación de carga computacional

o Simplificación de infraestructura

o Ahorro de costes

o Persistencia de servicios (datos, aplicaciones)

o Independencia de localización

o Facilidad de adopción de aplicaciones

Page 18: Cloud Computing: Algoritmos en la Nube

Cloud Computing Inconvenientes

o Dependencia de la red

o Dependencia de terceros (caso GMail)

o Falta de control (polémica Facebook)

o Riesgos de seguridad

Page 19: Cloud Computing: Algoritmos en la Nube

Cloud Computing ¿Quien habla de esto?

Page 20: Cloud Computing: Algoritmos en la Nube

Cloud Computing ¿Quien habla de esto?

¿Futura Web 2.0?

Page 21: Cloud Computing: Algoritmos en la Nube

Cloud Computing ¿Quien juega a esto?

o Google (Google Apps)

o Sun (Sun Grid, Sun Cloud)

o Amazon (Amazon Web Services: EC2, S3, SimpleDB...)

o Microsoft (Azure)

o Apache (CouchDB, Hadoop)

o Yahoo! (Open Social, Pipes, Y!OS)

Page 22: Cloud Computing: Algoritmos en la Nube

Amazon EC2

Page 23: Cloud Computing: Algoritmos en la Nube

Amazon EC2 ¿Qué es Amazon EC2?

o Infraestructura en la nube

o Instalación de máquinas virtuales para ejecución de procesos

o Total control de administración sobre la máquina virtual remota

o Amazon proporciona los servicios de escalabilidad y fiabilidad del servicio

Page 24: Cloud Computing: Algoritmos en la Nube

Amazon EC2 ¿Cómo conectarse a Amazon EC2?

o http://aws.amazon.com/ec2/

o AWS Management Console: https://console.aws.amazon.com/

o Versión Beta de una interfaz central de administración para AWS

Page 25: Cloud Computing: Algoritmos en la Nube

Amazon EC2 ¿Cómo dar de alta una máquina en Amazon

EC2?o Máquinas virtuales: Amazon Machine Image

o Lanzamos una nueva instancia

o Seleccionamos la imagen

o Plataforma.

o Número de instancias

o Capacidad de la máquina

o Keypair a usar

Page 26: Cloud Computing: Algoritmos en la Nube

Amazon EC2 Personalización de las AMIs

o Se pueden crear AMIs personalizadas

o A partir de Máquinas Windows

o Facilidad para crear máquinas replicadas

Page 27: Cloud Computing: Algoritmos en la Nube

Amazon EC2 Elastic Block Store

o Posibilidad de crear volúmenes compartidos entre las instancias

o Se comportan como un disco normal

• Formatear

• Montar/Desmontar

• RAID

o Se pueden crear copias de seguridad

Page 28: Cloud Computing: Algoritmos en la Nube

Amazon EC2 Elastic IPs

o Mecanismo para hacer el servicio independiente de la instancia

o Enmascaran el acceso a una máquina mediante una IP pública

o Facilidad para recuperación de errores y alta disponibilidad

Page 29: Cloud Computing: Algoritmos en la Nube

Amazon EC2 Seguridad

o Creación de KeyPairs para acceso por SSH

o Creación de grupos de seguridad

o Tipo de conexión

o Ancho de banda

Page 30: Cloud Computing: Algoritmos en la Nube

Amazon EC2 API

o Como todo Amazon Web Service tiene API

o Permite acceder a los recursos vistos antes

o Permite crear aplicaciones de gestión

o ¿Ausencia de interfaz de administración?

Page 31: Cloud Computing: Algoritmos en la Nube

Amazon S3

Page 32: Cloud Computing: Algoritmos en la Nube

Amazon S3 ¿Qué es Amazon S3?

o Sistema de almacenamiento de ficheros en la nube

o Creación de carpetas

o Subida de ficheros

o Análogo al FTP

Page 33: Cloud Computing: Algoritmos en la Nube

Amazon S3 Conceptos

o Buckets

o Directorios

o Ficheros

o Permisos

Page 34: Cloud Computing: Algoritmos en la Nube

Amazon S3 API

o Como todo Amazon Web Service tiene API

o Permite crear/listar/actualizar/eliminar buckets, directorios, ficheros…

o ¿Ausencia de interfaz de administración?

Otros accesoso HTTP

o Protocolo s3

Page 35: Cloud Computing: Algoritmos en la Nube

Apache Hadoop

Page 36: Cloud Computing: Algoritmos en la Nube

Apache Hadoop ¿Qué es Apache Hadoop?

o Plataforma de computación distribuida

o Desarrollada sobre la plataforma Java

o “Implementación” open-source basada en:

• Google FileSystem

• Google MapReduce

Page 37: Cloud Computing: Algoritmos en la Nube

Apache Hadoop HDFS

o Hadoop's Distributed File System

o Diseñado para detección de fallos y recuperación automática

o Acceso a modo streaming

o Soporte para grandes conjuntos de datos.

o Optimizado para lecturas

o Multiplataforma

Page 38: Cloud Computing: Algoritmos en la Nube

Apache Hadoop MapReduce

o Arquitectura de computación distribuida

o Mútiples implementaciones (Google, Hadoop, CouchDB, Facebook Hive…)

o Basado en la estrategia dividir-vencer

Page 39: Cloud Computing: Algoritmos en la Nube

Apache Hadoop MapReduce

Input

Map

Output

Reduce

Realiza una primera computación devolviendo

resultados intermedios

Realiza una segunda computación sobre esos resultados intermedios

Resultados intermedios

Ficheros [K1, V1] [K2, V2] [K3, V3] Ficheros

Page 40: Cloud Computing: Algoritmos en la Nube

Apache Hadoop MapReduce

o No todos los problemas son aplicables a este modelo

o La entrada debe ser fácilmente divisible

o Los resultados deben poder ser agregados

CouchDB y MapReduceo ¿Se reconoce la estructura?

o Map: Obtener los resultados

o Reduce: Realizar operaciones sobre los resultados intermedios

Page 41: Cloud Computing: Algoritmos en la Nube

Apache Hadoop El Framework

Input

Map

Output

ReduceResultados intermedios

Ficheros [K1, V1] [K2, V2] [K3, V3] Ficheros

Page 42: Cloud Computing: Algoritmos en la Nube

Apache Hadoop El Framework

o InputFormat y RecordReader

• Juntos se encargan de dividir los datos de entrada

• Devuelven registros

• Especifican los tipos de las claves y valores de entrada al algoritmo Map

Page 43: Cloud Computing: Algoritmos en la Nube

Apache Hadoop El Framework

Input

Map

Output

ReduceResultados intermedios

Ficheros [K1, V1] [K2, V2] [K3, V3] Ficheros

Page 44: Cloud Computing: Algoritmos en la Nube

Apache Hadoop El Framework

o Mapper

• Implementa la fase Map del algoritmo

• Se invoca el método “map” una vez por cada registro (Record)

• Recibe pares clave/valor del tipo especificado por el RecordReader

• Devuelve pares clave/valor de nuevos tipos

Page 45: Cloud Computing: Algoritmos en la Nube

Apache Hadoop El Framework

o Combiner

• Reagrupa los resultados intermedios

• Reduce el tamaño de los datos a enviar de una fase a otra al ejecutar operaciones para agrupar los resultados

• Dependiendo del problema no resulta viable

• Envía los resultados agregados a la fase Reduce

Page 46: Cloud Computing: Algoritmos en la Nube

Apache Hadoop El Framework

Input

Map

Output

ReduceResultados intermedios

Ficheros [K1, V1] [K2, V2] [K3, V3] Ficheros

Page 47: Cloud Computing: Algoritmos en la Nube

Apache Hadoop El Framework

o Reducer

• Implementa la fase Reduce del Algoritmo

• Recibe pares clave/valor del tipo especificado por la fase Map

• Devuelve pares clave/valor de nuevos tipos

Page 48: Cloud Computing: Algoritmos en la Nube

Apache Hadoop El Framework

Input

Map

Output

ReduceResultados intermedios

Page 49: Cloud Computing: Algoritmos en la Nube

Apache Hadoop El Framework

o JobConf

• Configuración del trabajo distribuido

• Permite especificar Mappers, Reducers, InputFormats…

• Permite especificar opciones ad-hoc

Page 50: Cloud Computing: Algoritmos en la Nube

Apache Hadoop El Framework

o Tool

• Crea las configuraciones de trabajos

• Permite crear más de un trabajo distribuido

Page 51: Cloud Computing: Algoritmos en la Nube

Apache Hadoop El Framework… ¿Y si no quiero Java?

o Modo Streaming

• Permite usar lenguajes “de script” (PHP, Python, Ruby…)

• Especificamos un Mapper y un Reducer

• Los datos se pasan a los scripts, que se ejecutan

Page 52: Cloud Computing: Algoritmos en la Nube

Apache Hadoop Creando un cluster

1. Preparando todas las máquinas

o Instalar soporte para Hadoop

o Copiar algoritmos necesarios

o Modificar hadoop-env.sh: Indicar JAVA_HOME

Page 53: Cloud Computing: Algoritmos en la Nube

Apache Hadoop Creando un cluster

1. Configurando el cluster

o NameNode: Nodo encargado de gestionar el sistema de ficheros distribuido de Apache

o JobTracker: Nodo encargado de gestionar los trabajos pendientes

Page 54: Cloud Computing: Algoritmos en la Nube

Apache Hadoop Creando un cluster

1. Configurando el clustero Hadoop-site.xml

<property> <name>fs.default.name</name> <value>hdfs://{{IP del NameNode}}:{{Puerto del NameNode}}</value> <description>La URI del sistema de ficheros. </description></property>

Page 55: Cloud Computing: Algoritmos en la Nube

Apache Hadoop Creando un cluster

1. Configurando el clustero Hadoop-site.xml

<property> <name>mapred.job.tracker</name> <value>{{IP del JobTracker}}:{{Puerto del JobTracker}}</value> <description>El host y el puerto donde correra el jobTracker. </description></property>

Page 56: Cloud Computing: Algoritmos en la Nube

Apache Hadoop Creando un cluster

1. Configurando el cluster

o masters / slaves: ficheros en que se indican maestros y esclavos

Page 57: Cloud Computing: Algoritmos en la Nube

Apache Hadoop Creando un cluster

1. Iniciar el cluster

o bin/start-all.sh

Page 58: Cloud Computing: Algoritmos en la Nube

Amazon Map/Reduce

Page 59: Cloud Computing: Algoritmos en la Nube

Amazon Map/Reduce Storm Computing

Hadoop

EC2

S3

Page 60: Cloud Computing: Algoritmos en la Nube

Amazon Map/Reduce Storm Computing

Hadoop

EC2

S3

Amazon Map/Reduce

Page 61: Cloud Computing: Algoritmos en la Nube

Amazon Map/Reduce Falta de acoplamiento

o Amazon EC2 incorpora la infraestructura necesaria

o Apache Hadoop nos proporciona un framework para desarrollar algoritmos para procesar grandes conjuntos de datos

o Amazon S3 nos permite almacenar grandes cantidades de ficheros asegurando la disponibilidad

Page 62: Cloud Computing: Algoritmos en la Nube

Amazon Map/Reduce ¿Qué es Amazon Map/Reduce?

o Servicio Web de Amazon para implementar algoritmos Map/Reduce

o Nos permite crear trabajos de Apache Hadoop que operen sobre datos de Amazon S3, en instancias de Amazon EC2.

Page 63: Cloud Computing: Algoritmos en la Nube

Amazon Map/Reduce ¿Cómo funciona Amazon Map/Reduce?

1. Configurando la entrada y la salida

o Cargamos los datos de entrada en Amazon S3

o Cargamos el algoritmo en Amazon S3

o Creamos el directorio de salida en Amazon S3

Page 64: Cloud Computing: Algoritmos en la Nube

Amazon Map/Reduce ¿Cómo funciona Amazon Map/Reduce?

1. Cargando el algoritmo

o Hay que compilar nuestro algoritmo en un .jar

javac -classpath ${HADOOP_HOME}/hadoop-${HADOOP_VERSION}-

core.jar -d output_directory WordCount.java

jar -cvf output_file.jar-C output_directory/ .

Page 65: Cloud Computing: Algoritmos en la Nube

Amazon Map/Reduce ¿Cómo funciona Amazon Map/Reduce?

1. Creamos el trabajo

o En la AWS Console

o “Create new Job Flow ”

o Elegimos el tipo de algoritmo

o Elegimos la entrada y la salida

Page 66: Cloud Computing: Algoritmos en la Nube

Amazon Map/Reduce ¿Cómo funciona Amazon Map/Reduce?

1. Creamos las instancias

o Elegimos número de instancias

o Elegimos tipo de instancias

Page 67: Cloud Computing: Algoritmos en la Nube

Amazon Map/Reduce ¿Cómo funciona Amazon Map/Reduce?

1. Ejecutamos

o Ventana de Estado en la AWS Console

o Salida en directorios de Amazon S3

Page 68: Cloud Computing: Algoritmos en la Nube

Widgets

Page 69: Cloud Computing: Algoritmos en la Nube

Widgets ¿Dónde está la nube?

Page 70: Cloud Computing: Algoritmos en la Nube

Widgets ¿Dónde está la nube?

Page 71: Cloud Computing: Algoritmos en la Nube

Widgets ¿Que perciben los usuarios?

o Las revoluciones deben afectar a los usuarios

o Percepción indirecta (mejores servicios)

o ¿Percepción directa?

Page 72: Cloud Computing: Algoritmos en la Nube

Widgets Cloud Computing para los usuarios

o Mayor uso de servicios alojados en la web

o Mayor interconexión entre servicios

o Acceso ubicuo

o Difuminar el acceso a la siguiente capa:

• ¿Quién se conecta?• ¿Cuando?• ¿A donde?

Page 73: Cloud Computing: Algoritmos en la Nube

Widgets Cloud Computing para los usuarios

Page 74: Cloud Computing: Algoritmos en la Nube

Widgets Cloud Computing para los usuarios

Widget

Page 75: Cloud Computing: Algoritmos en la Nube

Widgets ¿Qué es un Widget?

portable chunk of code that can be installed and executed within any separate HTML-based web page by an end user without requiring

additional compilation. - Wikipedia

o Facilidad de instalacion

o Uso de Servicios Web y Ajax para interacción con el widget

o Dependencia de la aplicación de terceros

o Nosotros somos la nube

Page 76: Cloud Computing: Algoritmos en la Nube

Widgets Plataformas de Widgets

o Aplicaciones web específicas para ejecución de Widgets

o API de desarrollo

o Funciones sociales para ordenación y filtrado de Widgets

o Ejemplos:

• DockBar• Netvibes• iGoogle• Blogger

Page 77: Cloud Computing: Algoritmos en la Nube

Google Gadgets Google Gadget

o Plataforma de Widgets de Google

o Distribución por Orkut, Google Desktop o iGoogle

o Publicables en cualquier página web.

o Mllones de potenciales usuarios

o Desarrollo con HTML y Javascipt

o API: http://code.google.com/intl/en/apis/gadgets/docs/dev_guide.html

Page 78: Cloud Computing: Algoritmos en la Nube

Google Gadgets Hello World!

<?xml version="1.0" encoding="UTF-8" ?> <Module> <ModulePrefs title="hello world example" /> <Content type="html"> <![CDATA[ Hello, world! ]]> </Content> </Module>

o ModulePrefs: Datos sobre el widget

o <![CDATA[ ----- contenido ------ ]]>

Page 79: Cloud Computing: Algoritmos en la Nube

Google Gadgets Content

o Sección central del widget

o Opción 1: Implementar vista y lógica con HTML y Javascript (<content type=”html”>)

o Opción 2: Implementar vista y lógica en una aplicación web en un servidor y enlazar a ella (<content type=”url” href=”...”>)

<Content type="html"><![CDATA[ contenido ]]></Content>

<Content type=“url“ href=“…” />

Page 80: Cloud Computing: Algoritmos en la Nube

Google Gadgets Obteniendo datos

o Realiza petición a una URL

o Se ejecuta un callback tras la petición donde se procesan los resultados.

gadgets.io.makeRequest(url, response, params);

function response(obj)

o obj.data = Datos parseados

o obj.errors = Errores

o obj.text = Texto de la respuesta

Page 81: Cloud Computing: Algoritmos en la Nube

Google Gadgets Obteniendo datos

o Tipos de datos esperados

• Text: gadgets.io.ContentType.TEXT

• Dom: gadgets.io.ContentType.DOM

• Json: gadgets.io.ContentType.JSON

• Feed: gadgets.io.ContentType.FEED

o Influyen en el parseo de la respuesta

Page 82: Cloud Computing: Algoritmos en la Nube

Google Gadgets Obteniendo datos

o Tipos de datos esperados

• Text: gadgets.io.ContentType.TEXT

• Dom: gadgets.io.ContentType.DOM

• Json: gadgets.io.ContentType.JSON

• Feed: gadgets.io.ContentType.FEED

o Influyen en el parseo de la respuesta

Page 83: Cloud Computing: Algoritmos en la Nube

Google Gadgets Obteniendo datos<script type="text/javascript"> function consultarDBs(){ var params = {}; params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.JSON; var url = "http://host/_all_dbs"; gadgets.io.makeRequest(url, cargarDBs, params);} function cargarDBs(obj){ var html = "<ul>"; for (var key in obj.data) { html += "<li>"+ obj.data[key] + "</li>"; } document.getElementById('dbs').innerHTML = html;}</script>

Page 84: Cloud Computing: Algoritmos en la Nube

Google Gadgets

¡¡¡¡ gagdets.io is not defined !!!!

o Parte del nuevo API de Google Gadget

o Aún no soportado por iGoogle

• Soportado por otros: http://wiki.opensocial.org/index.php?title=Cross-container_Development#Containers

o Disponible en el sandbox de desarrollo: http://www.google.com/ig/sandbox

Page 85: Cloud Computing: Algoritmos en la Nube

Google Gadgets

Enviando información

o Método de petición como parámetro de la Request

<script type="text/javascript"> function sendData(data){ var params = {}; params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST; params[gadgets.io.RequestParameters.POST_DATA] = data;

var url = "http://host/_all_dbs"; gadgets.io.makeRequest(url, callback, params);} function callback(obj){...}</script>

Page 86: Cloud Computing: Algoritmos en la Nube

Google Gadgets

Enviando información

o Métodos de generación de JSON:

{"title":“Sacando datos a JSON"}

var data = {};

data['title'] = “sacando datos a JSON”;

gadgets.json.stringify(data)

Page 87: Cloud Computing: Algoritmos en la Nube

Google Gadgets

Actualizando la información

o Google optimiza los gadgets a través de la caché

o Para evitarlo podemos modificar la URL con parámetros extra

o Problemas con algunos Servicios REST (CouchDB, por ejemplo)

Page 88: Cloud Computing: Algoritmos en la Nube

Google Gadgets

Vistas

o Los contenedores suelen tener distintas vistas para los Gadgets

o iGoogle posee: “home” (pequeño) y “canvas” (grande)

o Se pueden especificar contenidos para distintas vistas.

Page 89: Cloud Computing: Algoritmos en la Nube

Google Gadgets

Vistas<?xml version="1.0" encoding="UTF-8" ?><Module> <ModulePrefs title="Multiple Views Demo"> <Require feature="opensocial-0.8" /> </ModulePrefs> <Content type="html" view="home"> <![CDATA[ Esto en pequeño ]]> </Content> <Content type="html" view="canvas"> <![CDATA[ Esto en grande ]]> </Content></Module>

Page 90: Cloud Computing: Algoritmos en la Nube

Google Gadgets

Vistas

o Se puede cambiar de vista desde código

var vistas = gadgets.views.getSupportedViews();

gadgets.views.requestNavigateTo(vistas[vista_deseada]);

Page 91: Cloud Computing: Algoritmos en la Nube

Conclusiones

Page 92: Cloud Computing: Algoritmos en la Nube

Conclusiones Sobre el Cloud Computing

o ¿Compensa?

o ¿Mera reformulación de la computación distribuida?

o ¿Uso empresarial de Gadgets?

o Problemas de Amazon EC2

o Problemas de Hadoop

o Problemas de Google Gadget

Page 93: Cloud Computing: Algoritmos en la Nube

Conclusiones

Dudas y comentarios a

[email protected]

Page 94: Cloud Computing: Algoritmos en la Nube

ConclusionesEstas transparencias se publican bajo licencia Creative Commons y se pueden redistribuir o modificar bajo las siguientes condiciones:

1. Se dé reconocimiento al autor de estas transparencias.

2. No se use con propósitos comerciales.3. Se distribuya con la misma licencia.

Texto de la licencia: http://creativecommons.org/licenses/by-nc-sa/3.0/


Top Related