RELEASE 2.5 de SOFIA2 InCloud

Ya está disponible la versión 2.5.0 de SOFIA2InCloud, se puede acceder a la versión en la URL http://scfront.cloudapp.net

Esta versión incluye:

· SDK multiplataforma: al SDK para Windows se añade el SDK para los entornos Mac y Linux que se pueden encontrar en la sección de descargas del portal http://scfront.cloudapp.net

· SOFIA 2 FORGE Entorno de colaboración de la plataforma http://sofia2-forja.cloudapp.net

Donde cualquier usuario puede registrarse y obtener acceso a los fuentes de la versión Community de SOFIA2.

· Versión 2 de API RESTful de Configuración que incluye los conceptos Autorizaciones, KP, Ontología, Ontología de Grupo, Plantilla, Script, Suscripción y Token

Incluye UI Web de acceso, invocación y documentación al API RESTful http://scfront.cloudapp.net/console/rest.jsp

· Status Check de la Plataforma:permite a través de un servicio REST monitorizar el estado de los componentes de la plataforma http://scfront.cloudapp.net/console/rest.jsp

· Versión 1 del API de monitorización de la Plataforma, suministra información sobre el estado de la JVM y de la infraestructura de la plataforma.

· Soporte ejecución de consultas SQL online sobre BDH, permite hacer consultas online en lenguaje SQL sobre la información histórica almacenada en la Base de Datos de Histórico (Hadoop)

· Resolución de diversos bugs (documentados en la versión)

· Diversas mejoras en cuanto a rendimiento y estabilidad de la Plataforma

Buscar y matar procesos problemáticos en MongoDB

De (link)

A veces puede pasarnos que MongoDB tarde o deje de dar respuesta. Esto suele deberse a una operación de larga duración o bloqueantes, como creación de índices, Jobs MapReduce muy costosos,…

Para detectar operaciones de larga duración MongoDB ofrece el método db.currentOp() que nos identifica las operaciones en progreso.

Una forma típica de usarlo es esta:

db.currentOp().inprog.forEach(

function(op) {

if(op.secs_running > 5) printjson(op);

}

)

Que nos representa en JSON las operaciones en proceso que llevan más de 5 segundos

Otras consultas típicas:

La salida de este comando devolverá una información como esta (el JSON es bastante más extenso :D):

Una vez analizado cuales son los procesos que están creando problemas podré matar ciertas operaciones usando el comando:

db.killOp(1344808)

Un poco de Spark

Apache Spark™ es un motor distribuido para procesar grandes volúmenes de datos.

El equipo de Spark promete ser 100 veces más rápido que un trabajo MapReduce Hadoop en memoria o 10x veces más rápido que un trabajo MapReduce en disco.

Seguro que ya os estáis haciendo la pregunta de ¿Y Hadoop?

Spark no usa el framework MapReduce de Hadoop pero si puede correr sobre clusters YARN (Hadoop 2) y leer cualquier tipo de dato Hadoop (HDFS, HBase, Cassandra,…).

De hecho Spark se ejecuta sin instalación sobre cualquier cluster Hadoop 2 (y puede instalarse en EC2 por ejemplo).

Puede desarrollarse en Java, Python o Scala.

Los que conozcáis el API MapReduce de Hadoop podéis ver las grandes diferencias entre ambos:

Este ejemplo cuenta el número de líneas conteniendo el texto “a” y el número de líneas conteniendo el texto “b”. Imaginaros como sería en MapReduce 😀

Aquí podéis encontrar las guías del desarrollador para Java, Scala y Python.

En su web podéis encontrar varios tutoriales, ejemplos, videocasts,..

Para empezar podéis .

Y seguiréis aún preguntándoos: ¿Debería salir del framework ofrecido por Hadoop?

Una de las ventajas de Spark frente a otras soluciones es que ofrece herramientas de alto nivel para un gran número de escenarios:

Mi opinión es que en este cambiante y creciente ecosistema de Hadoop aún es muy pronto para adoptar Spark para un sistema/solución de amplio recorrido, ya que existen soluciones que aunque menos integradas nos ofrecen toda esta funcionalidad sobre un contenedor estándar, aunque es una solución para tener en el punto de mira por si finalmente se convierte en uno/otro estándar en el mundo del Big Data open-source!!!

Veamos que ofrecen estas tolos de Spark:

Shark es un motor de consultas SQL distribuido open-source que opera sobre el metastore y el cliente de HIVE.

Esto le permite ejecutar queries HIVE sin modificar con incrementos de velocidad de hasta 100x veces.

Frente a otras opciones (Impala, Stinger, Presto, Tajo,…) está su integración transparente sobre Spark.

En el desarrollo de Spark están participando grandes empresas como Intel, Yahoo, Webtrends, Groupon,…

Spark Streamingpermite con el API de Spark escribir aplicaciones que procesan streams de la misma forma que escribes job batch. Se pueden escribir en Java y Scala.

Ofrece semántica de procesado sólo una vez y recuperación ante erorr.

Si veis el API os recordará a Storm, de nuevo la ventaja es la integración transparente:

Un ejemplo sencillo e interesante: http://www.pwendell.com/2013/09/28/declarative-streams.html

MLlibpermite con el API de Spark desarrollar trabajos de Machine Learning, permitiendo trabajar sobre cualquier fuente Hadoop (HDFS, HBASE,…)

Los algoritmos prometen ser hasta 100 veces más rápidos que con MapReduce.

Los algoritmos incluidos son:

GraphX

GraphXextiende el API de colecciones distribuidas tolerante a fallos de Spark con un API de grafos que permite construir, transformar y razonar sobre datos en grafo de modo escalable.

¿Qué es Samoa?

Samoa es un framework de Machine Learning distribuido sobre streams.

Samoa permite desarrollar nuevos algorimos DL de forma sencilla sin trabajar con la complejidad del motor de streaming subyacente (Storm pj) permitiendo además integrar nuevos motores SPE (Stream Processing Engines).

Dentro de los motores ML Samoa se situaría:

Aún es un proyecto en un estado en un estado muy preliminar, aunque prometedor!!!

Para seguir os recomendaría su guía del desarrollador:

http://yahoo.github.io/samoa/SAMOA-Developers-Guide-0-0-1.pdf