Ubuntu Enterprise Cloud

UEC Architecture

Ubuntu Enterprise Cloud permite el despliegue de una Cloud privada, con el enfoque infraestructura como servicio(IaaS) compatible con Amazon EC2. Usa el hypervisor KVM y una versión de Eucalyptus modificada para usarlo. En este post revisaremos la arquitectura e instalación de Ubuntu Enterprise Cloud, siendo principalmente un resumen, y traducción, de la documentación pertinente.

Una visión general de los componentes se presenta en el siguiente diagrama, tomado del white paper Ubuntu Enterprise Cloud Architecture:

UEC Architecture

Cloud Controller

Provee la interface con la que el usuario de la cloud interactúa. Esta interface se compone de una API SOAP standard compatible con la API de Amazon EC2, una interfaz de consulta más simple que es usada por euca2ools y ElasticFox,  y una interfaz web tradicional para la interacción directa.

Walrus Storage Controller(WS3)

Implementa APIs REST y SOA que son compatibles con Amazon Simple Storace Protocol (S3). Es usado para almacenar las imágenes de máquinas que pueden ser instanciadas por UEC y para acceder y almacenar datos. Actualmente la máquina en la cual corre el Cloud Controller también corre WS3, pero se espera que ésta limitación sea removida en las siguientes versiones.

Elastic Block Storage Controller(EBS)

Corre en la misma máquina que el Cluster Controller y se configura cuando éste es instalado. Permite crear dispositivos de bloques persistentes que pueden ser montados en máquinas en ejecución.  Estos dispositivos pueden ser usados como cualquier dispositivo de bloques, por ejemplo creando en ello un sistema de archivos.

EBS permite crear instantaneas de volúmenes, que son almacenados en WS3. Las instantaneas pueden ser usadas como punto de inicio para nuevos EBS. La misma instantánea puede ser usada para instanciar tantos volúmenes como se desee.

A nivel de red los dispositivos de bloques se acceden usando ATA over Ethernet(AoE). Dado que los paquetes no pueden ser ruteados se requiere  que tanto el EBS como los nodos que tienen las imágenes de las máquinas que lo acceden estén en el mismo segmento Ethernet.

Cluster Controllers

Opera entre los Node Controllers y el Cloud Controller. Recibe las peticiones para asignar imágenes de máquinas del Cloud Controller y decide cual Node Controller correrá la instancia de máquina (MInst). Esta decición es tomada en base a los reportes de estado que el Cluster Controller recibe de cada Node Controller. También puede responder al Cloud Controller acerca de la capacidad del cluster de correr tipos específicos de instancia, ayudándolo a decidir sobre cual cluster correr nuevas instancias.

El Cluster Controller está a cargo de manejar las redes virtuales que las Minst corran y enrutar el tráfico entre ellas. Los Cluster Controllers también corren los EBS Controllers. El grupo formado por un Cluster Controller y EBS Controller y un número variable de Node Controllers conforman el equivalente a las “zonas de disponibilidad” de Amazon.

Node Controllers

Corre en las máquinas físicas en las cuales se instanciarán las imágenes de máquinas. Interactúa con el hypervisor y el sistema operativo corriendo en el nodo, según es instruido por el Cluster Controller. La tarea inicial del Node Controller es descubrir el entorno en el cual está corriendo, en términos de recursos disponibles(memoria, espacio en disco, tipo de procesador y número de núcleos) así como máquinas virtuales en ejecución que puedieron se iniciadas independientemente del Node Controler, Cluster Controller y Cloud Controller.

Los node controllers esperan y realizan las tareas solicitadas por el Cluster Controller (iniciar o parar instancias) o responde a consultas de disponibilidad.

Cuando le llega una petición para instanciar una imágen de máquina el NC debe:

  1. verificar la autenticidad de la petición.
  2. Descargar la imagen de WS3(Las imágenes son cacheadas, para iniciar varias instancias en una máquina sólo se descarga una vez).
  3. Se crea la intefaz de red virtual (VNI).
  4. Inicia la instancia de la máquina corriendo como una maquina virtual.

Para detenerla se realizan las operaciones opuestas en el orden 1,4,3.

Instalación y despliegue.

Seguir leyendo…

Recomendados de la semana XV

Después de un par de semanas sin recomendados, con una carga abismal de trabajo, y aunque aún queda mucho por hacer… llegan los enlaces recomendados de la semana, algunos de ellos tienen que ver con Cloud Computing… quienes conozcan mi área de investigación sabrán por qué :P, llega un punto en el que no se deja de trabajar ni en los momentos de ocio 😛

  • Un gran impedimento para la penetración del paradigma Cloud Computing en el mundo empresarial es el manejo de datos en la nube, el nivel de confianza y dependencia hacia el proveedor. SalesForce que ha sabido ganarse la confianza de muchas empresas, lanza Database un SMBD en la nube. Provee autenticación y acceso a los datos a través de estándares abiertos. El hecho de que sea SalesForce quien lo ofrece es una de las razones que llevan a Antonio Ortiz a plantearlo como posible rival para Oracle.
  • Google lanza el programa piloto de Chrome OS, para la gente que vive en la web, ofreciendo un netbook a cada participante. Lástima que para poder participar sea necesario tener un domicilio en los Estados Unidos…
  • Me he sentido identificado con algunas… 32 Síntomas que indican que estás afectado por el desarrollo. (via error500).
  • Más sobre las novedades presentadas en el evento de Googe, sobre Chrome OS, en Genbeta.
  • Priority Inbox de Gmail es una funcionalidad interesante, aunque a veces no funciona como debería y el usuario no se entera el por qué. Ahora Google ha mejorado el algoritmo de priority Inbox y explica por qué se ha marcado el mensaje como importante.
  • Una interesante reflexión sobre reputación y Google en Genbeta.
  • GrooveShark es uno de mis servicios favoritos, sin embargo nunca es malo tener alternativas. Musicuo, es una buena alternativa, desarrollada en html5(aunque con un componente de flash para audio en los navegadores que lo soporten). (via Genbeta)

Esto es todo por el momento, para terminar, una charla animada que dará algo en qué pensar, SMILE OR DIE:

Recomendados de la semana XIV

Llegan los recomendados de la semana, mientras puedo sacar tiempo para terminar alguno de los post que tengo en borrador(entre otros… el de Mahout, una reflexión y algunos delirios)  😛

  • A veces queremos ejecutar una aplicación sin necesidad de instalarla y manteniendo la configuración, para eso llega Spoon que nos ofrece la Virtualización de aplicaciones desde la nube. Aún le falta ser multiplataforma, pero prometen que lo será.  Via Genbeta. (También vale la pena darle un vistazo a Spoon Server)
  • Enrique Dans comparte un genial corto, CineEspañol, algo de humor sobre el mundo del cine en España.
  • Nadie puede negar que el equipo de Google Chrome sabe algunas cosas sobre la Web y los navegadores. Por eso vale la pena darle al menos una ojeada a 20 Things I learned about browsers and the web. Las ilustraciones y animaciones en html5 son un plus.
  • La capacidad de cambiar de opinión no exclusiva ni inherente al ser humano. Eduardo Punset habla de la capacidad de cambiar de opinión y de simular una situación como indicadores de inteligencia en Acostumbramos a vivir por encima de nuestros medios.
  • Cuando pensamos en un PetaByte, probablemente no estamos consientes de la magnitud que representa, la infografía How much is a petabyte nos da una idea. (vía microsiervos)

Eso es todo por el momento, para terminar una genial caricatura de Montt, a más de uno le recordará algo.

Recomendados de la semana XIII

Los recomendados de esta semana vienen cargados de diferentes temas: SEO, aplicaciones….

Para terminar, ahora que se acerca Navidad (y muchas personas la celebran desde octubre…) una genial caricatura de Montt:

Recomendados de la semana XII

Mientras termino la revisión de Mahout, un post rápido con los recomendados de la semana 😛

Eso es todo por el momento, para ilustrar la entrada una tira de XKCD que muy probablemente les recordará algo 😛

Una mirada rápida a JabRef

JabRef es una de mis herramientas favoritas para gestión de referencias, llevo un par de años usándola y aún me sorprende con funcionalidades que me facilitan la vida. El motivo de este post es documentar el uso de algunas de éstas funcionalidades, algunas de uso muy común y otras para usos específicos.

  • Para empezar maneja el formato BibTex, que separa el formato del contenido y que no depende de la aplicación, es manejado por muchas herramientas en especial por las que manejan LATEX, como Lyx.
  • Tiene varias formas para ingresar una nueva referencia, las que más uso son:
    • BibTex->New entry (CTRL+N o el icono + en la barra de herramientas), despliega un menú donde seleccionamos el tipo de entrada (articulo, tesis, libro, etc.) y a continuación nos presenta los campos a ingresar.
    • BibTex->New entry from plain text. despliega el menú de tipo de entrada y a continuación nos presenta un área donde podemos pegar texto plano y etiquetar partes de éste como cada uno de los campos de la referencia. También tenemos una pestaña para pegar directamente la referencia en Bibtex.
  • Permite importar referencias desde otros formatos. File->import into current database o File-> Import into new database. Entre los formatos soportados se encuentran BibTeXML, JSTOR y MSBib(Formato de bibliografía de MS Office 2007).
  • Permite exportar las referencias, no solo a formatos de bibliografía de otras aplicaciones sino también a formatos que facilitan la visualización. File->Export y se selecciona el formato de salida, mi favorito para visualización es HTML Table (with Abstract & BibTex).
  • Permite encontrar duplicados. Tools->Scan Database->Find duplicates
  • Permite hacer búsquedas y filtros.
  • Permite el manejo de grupos. Lo descubrí hace poco, solo debemos habilitar la interfaz de grupos (CTRL->SHIFT->G)
  • Permite hacer búsquedas directamente a JSTOR, IEEEXplore, ACM Portal, entre otras Bases de datos. Menú Web Search.

Éstas son las opciones que más utilizo pero JabRef tiene muchas más herramientas, además de ser extensible usando plugins.

Por último, un dato útil, para importar la bibliografía a MS Word 2007 primero exportamos la bibliografía en formato Office 2007 y luego, en Word, en la pestaña Referencias hacemos clic en Administrar Fuentes, en la ventana que nos despliega vemos “Fuentes disponibles en”, vamos a Examinar y buscamos el xml que generamos al exportar, ahora podemos usar las referencias en nuestro documento.

Actualización 2012-03-11: Hoy tuve el problema complementario, exportar la bibliografía de un documento de Word 2007 a Bibtex, la solución fue mucho más simple de lo que esperaba gracias a el add-in Refmanager.

Recomendados de la semana XI

Llegan los recomendados de la semana, con algunos eventos, lanzamientos, herramientas y artículos:

Eso es todo por ésta ocasión, terminemos con un anuncio de Google, vía la Cocina creativa.

Mordiendo Hadoop: Desarrollo de aplicaciones MapReduce

Hadoop Logo

En los post anteriores instalamos Hadoop en un nodo, tanto en modo standalone como pseudo-distribuido, y en un cluster de dos nodos, ahora revisaremos la creación de una aplicación MapReduce.

Hadoop Logo

Para estas pruebas configuraremos un ambiente de desarrollo usando una instalación en modo pseudo-distribuida, eclipse y el plugin de Hadoop para éste IDE. También se puede usar la maquina virtual de entrenamiento proveída por Cloudera, que incluye una instalación de Hadoop, ejemplos, eclipse, entre otras herramientas. Para ejecutar ésta máquina virtual se puede usar VMWare Player. Una vez descargada la imagen de la maquina virtual se descomprime, se abre el archivo .vmx con VMPlayer.

Configuración del entorno de desarrollo

Para nuestro ambiente de desarrollo iniciamos con una máquina con Hadoop configurado en modo pseudo-distribuido, descargamos e instalamos eclipse, y procedemos con la instalación del plugin de Hadoop:

  1. Establecer las variables de entorno JAVA_HOME y HADOOP_HOME, con la ruta a la carpeta raiz de Java y Hadoop respectivamente.
  2. Copiar el plugin de hadoop a la carpeta de plugins de eclipse.
    cp $HADOOP_HOME/contrib/eclipse-plugin/hadoop-0.20.2-eclipse-plugin.jar PATH_TO/eclipse/plugins/
  3. Iniciamos Eclipse.
  4. Abrimos la perspectiva Map/Reduce. Window->Open Perspective->Others->Map/Reduce
  5. Entramos en la vista MapReduce Locations.
  6. Clic derecho sobre la lista MapReduce Locations, seleccionar New Hadoop location.
  7. Le damos un nombre a la nueva ubicación, y configuramos el host y puerto tanto del MapReduce master(JobTracker) cómo del dfs.master (NameNode).
  8. Ahora en el explorador de proyectos podremos ver los archivos de nuestro sistema de archivos distribuido en DFS Locations.

Ahora tenemos listo nuestro ambiente de desarrollo, a continuación crearemos una aplicación MapReduce.

Crear una nueva aplicación

El plugin de Hadoop nos crea un nuevo tipo de proyecto en eclipse y tres tipos de archivo Mapper, Reducer y MapReduce Driver. Para crear nuestra nueva aplicación crearemos un proyecto MapReduce:

Seguir leyendo…

Recomendados de la semana X

Los recomendados de esta semana, llena de nuevos lanzamientos, anuncios y herramientas:

Para terminar los dejo con una excelente tira de xkcd, que me recuerda mucho las conversaciones con el servicio técnico….