View
2.390
Download
2
Category
Preview:
DESCRIPTION
Algunos algoritmos de la Web 2.0 exigen una capacidad de cálculo que no todos los servidores pueden proporcionar. ¿Qué posibilidades hay ahora mismo para ejecutar algoritmos de manera distribuida? ¿Y para montar una infraestructura de ordenadores? ¿Podríamos instalar nuestras aplicaciones en plataformas web? ¿Podríamos llegar a más usuarios? Estas transparencias están basadas en unas confeccionadas por mi para un curso sobre Cloud Computing.
Citation preview
Cloud Computing:
Amazon Web Services,
Apache Hadoop y
Widgets
Previously…
Previously…
Así que ahora…
Fotografía publicada bajo Creative Commons por el usuario santi_martin en flickr: http://www.flickr.com/photos/santi_martin/2944882285/
¿Y ahora?
?
Cuando no todo es CRUDo
Emergencia en la web 2.0o Los datos puros no son lo único.
Cuando no todo es CRUDo
Emergencia en la web 2.0o Las entradas del usuario pueden
generar cambios.
Cuando no todo es CRUDo
Emergencia en la web 2.0o Los algoritmos suelen ser costosos
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)
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
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.
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
Cloud Computing
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
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
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
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
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
Cloud Computing ¿Quien habla de esto?
Cloud Computing ¿Quien habla de esto?
¿Futura Web 2.0?
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)
Amazon EC2
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
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
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
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
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
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
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
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?
Amazon S3
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
Amazon S3 Conceptos
o Buckets
o Directorios
o Ficheros
o Permisos
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
Apache Hadoop
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
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
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
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
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
Apache Hadoop El Framework
Input
Map
Output
ReduceResultados intermedios
Ficheros [K1, V1] [K2, V2] [K3, V3] Ficheros
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
Apache Hadoop El Framework
Input
Map
Output
ReduceResultados intermedios
Ficheros [K1, V1] [K2, V2] [K3, V3] Ficheros
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
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
Apache Hadoop El Framework
Input
Map
Output
ReduceResultados intermedios
Ficheros [K1, V1] [K2, V2] [K3, V3] Ficheros
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
Apache Hadoop El Framework
Input
Map
Output
ReduceResultados intermedios
Apache Hadoop El Framework
o JobConf
• Configuración del trabajo distribuido
• Permite especificar Mappers, Reducers, InputFormats…
• Permite especificar opciones ad-hoc
Apache Hadoop El Framework
o Tool
• Crea las configuraciones de trabajos
• Permite crear más de un trabajo distribuido
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
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
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
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>
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>
Apache Hadoop Creando un cluster
1. Configurando el cluster
o masters / slaves: ficheros en que se indican maestros y esclavos
Apache Hadoop Creando un cluster
1. Iniciar el cluster
o bin/start-all.sh
Amazon Map/Reduce
Amazon Map/Reduce Storm Computing
Hadoop
EC2
S3
Amazon Map/Reduce Storm Computing
Hadoop
EC2
S3
Amazon Map/Reduce
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
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.
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
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/ .
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
Amazon Map/Reduce ¿Cómo funciona Amazon Map/Reduce?
1. Creamos las instancias
o Elegimos número de instancias
o Elegimos tipo de instancias
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
Widgets
Widgets ¿Dónde está la nube?
Widgets ¿Dónde está 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?
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?
Widgets Cloud Computing para los usuarios
Widgets Cloud Computing para los usuarios
Widget
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
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
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
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 ------ ]]>
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=“…” />
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
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
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
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>
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
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>
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)
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)
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.
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>
Google Gadgets
Vistas
o Se puede cambiar de vista desde código
var vistas = gadgets.views.getSupportedViews();
gadgets.views.requestNavigateTo(vistas[vista_deseada]);
Conclusiones
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
Conclusiones
Dudas y comentarios a
docencia@davidjbrenes.info
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/
Recommended