jueves, 20 de febrero de 2014

How To Create a Parameterized Report with Cassandra using Pentaho Report...

Computación en la nube. Introducción

Hace un tiempo me pidieron que investigara sobre computación en la nube, aquí os dejo una pequeña introducción del tema.

La computación en la nube concepto conocido también bajo los términos informática en la nube, nube de cómputo o nube de conceptos, del inglés Cloud Computing, es un paradigma que permite ofrecer servicios de computación a través de Internet.


En este tipo de computación todo lo que puede ofrecer un sistema informático se ofrece como servicio, de modo que los usuarios puedan acceder a los servicios disponibles "en la nube de Internet" sin conocimientos (o, al menos sin ser expertos) en la gestión de los recursos que usan. Según el IEEE Computer Society, es un paradigma en el que la información se almacena de manera permanente en servidores de Internet y se envía a cachés temporales de cliente, lo que incluye equipos de escritorio, centros de ocio, portátiles, etc.

De forma más sencilla podríamos decir que se trata de una nueva tendencia de software, en la cual todos los servicios prestados al ordenador se hacen directamente desde Internet, por lo tanto, ya no se tendrá que instalar una enorme cantidad de archivos en el ordenador, ya que el programa que se desea utilizar, se ejecutará directamente desde el servidor del proveedor de software, aligerando nuestros discos duros.

El único inconveniente de esta tecnología, es que necesariamente tendremos que tener una conexión a Internet para acceder a ella. Podemos decir entonces, que es una tecnología orientada al uso de equipos pequeños y portátiles (que utilizan servicios online), con la cual se simplifica la instalación de software y se optimiza el uso del espacio del disco duro, al no tener que llenarlo con enormes cantidades de archivos complementarios.

Tendencia 

En la actualidad una de las tendencias del mercado de los sistemas de información es la proliferación de los servicios operando en la nube, los cuales son servicios que permiten la asignación dinámica de recursos en función de necesidades de los clientes y que aportan una reducción de costes en infraestructuras considerable.

La reciente publicación del NIST (National Institute of Standards and Technologies) «Guidelines on Security and Privacy in Public Cloud Computing» pone de manifiesto, además de la actualidad de este nuevo modelo para la distribución de servicios y aplicaciones, la necesidad de difundir buenas prácticas de seguridad para este modelo. Este no es el único documento que refleja la creciente preocupación por la seguridad en estas plataformas, como se refleja en documentos de entidades de referencia que también abordan este tema, e informes recientes de la organización internacional CSA (Cloud Security Alliance) y de la consultora Gartner.

Los comienzos de la computación en la nube


El concepto de la computación en la nube empezó en proveedores de servicio de Internet a gran escala, como Google, Amazon AWS, Microsoft y otros que construyeron su propia infraestructura. De entre todos ellos emergió una arquitectura: un sistema de recursos distribuidos horizontalmente, introducidos como servicios virtuales de TI escalados masivamente y manejados como recursos configurados y mancomunados de manera continua. 
Este modelo de arquitectura fue inmortalizado por George Gilder en su artículo de octubre 2006 en la revista Wired titulado Las fábricas de información. Las granjas de servidores, sobre las que escribió Gilder, eran similares en su arquitectura al procesamiento “grid” (red, parrilla), pero mientras que las redes se utilizan para aplicaciones de procesamiento técnico débilmente acoplados (loosely coupled), un sistema compuesto de subsistemas con cierta autonomía de acción, que mantienen una interrelación continua entre ellos), este nuevo modelo de nube se estaba aplicando a los servicios de Internet.


Beneficios

Integración probada de servicios Red. Por su naturaleza, la tecnología de "Cloud Computing" se puede integrar con mucha mayor facilidad y rapidez con el resto de sus aplicaciones empresariales (tanto software tradicional como Cloud Computing basado en infraestructuras), ya sean desarrolladas de manera interna o externa.

Prestación de servicios a nivel mundial. Las infraestructuras de "Cloud Computing" proporcionan mayor capacidad de adaptación, recuperación de desastres completa y reducción al mínimo de los tiempos de inactividad.

Una infraestructura 100% de "Cloud Computing" permite al proveedor de contenidos o servicios en la nube prescindir de instalar cualquier tipo de hardware, ya que éste es provisto por el proveedor de la infraestructura o la plataforma en la nube. La belleza de la tecnología de "Cloud Computing" es su simplicidad… y el hecho de que requiera mucha menor inversión para empezar a trabajar.

Implementación más rápida y con menos riesgos. Podrá empezar a trabajar muy rápidamente gracias a una infraestructura de "Cloud Computing". No tendrá que volver a esperar meses o años e invertir grandes cantidades de dinero antes de que un usuario inicie sesión en su nueva solución. Sus aplicaciones en tecnología de "Cloud Computing" estarán disponibles en cuestión de horas o días en lugar de semanas o meses, incluso con un nivel considerable de personalización o integración.

Actualizaciones automáticas que no afectan negativamente a los recursos de TI. Si actualizamos a la última versión de la aplicación, nos veremos obligados a dedicar tiempo y recursos (que no tenemos) a volver a crear nuestras personalizaciones e integraciones. La tecnología de "Cloud Computing" no le obliga a decidir entre actualizar y conservar su trabajo, porque esas personalizaciones e integraciones se conservan automáticamente durante la actualización.

Contribuye al uso eficiente de la energía. En este caso, a la energía requerida para el funcionamiento de la infraestructura. En los datacenters tradicionales, los servidores consumen mucha más energía de la requerida realmente. En cambio, en las nubes, la energía consumida es sólo la necesaria, reduciendo notablemente el desperdicio.



Desventajas



La centralización de las aplicaciones y el almacenamiento de los datos origina una interdependencia de los proveedores de servicios.



La disponibilidad de las aplicaciones está ligada a la disponibilidad de acceso a Internet.

Los datos "sensibles" del negocio no residen en las instalaciones de las empresas por lo que podría generar un contexto de alta vulnerabilidad para la sustracción o robo de información.

La confiabilidad de los servicios depende de la "salud" tecnológica y financiera de los proveedores de servicios en nube. Empresas emergentes o alianzas entre empresas podrían crear un ambiente propicio para el monopolio y el crecimiento exagerado en los servicios.

La disponibilidad de servicios altamente especializados podría tardar meses o incluso años para que sean factibles de ser desplegados en la red.

La madurez funcional de las aplicaciones hace que continuamente estén modificando sus interfaces, por lo cual la curva de aprendizaje en empresas de orientación no tecnológica tenga unas pendientes significativas, así como su consumo automático por aplicaciones.

Seguridad. La información de la empresa debe recorrer diferentes nodos para llegar a su destino, cada uno de ellos (y sus canales) son un foco de inseguridad. Si se utilizan protocolos seguros, HTTPS por ejemplo, la velocidad total disminuye debido a la sobrecarga que estos requieren.

Escalabilidad a largo plazo. A medida que más usuarios empiecen a compartir la infraestructura de la nube, la sobrecarga en los servidores de los proveedores aumentará, si la empresa no posee un esquema de crecimiento óptimo puede llevar a degradaciones en el servicio o jitter altos.


Tipos de Infraestructuras Cloud

Atendiendo a la titularidad de la infraestructura en la nube se pueden distinguir tres tipos de infraestructuras cloud: privada, pública y comunitaria. A continuación se presentan las ventajas e inconvenientes de cada uno. 



Pública 

Es aquel tipo de nube en la cual la infraestructura y los recursos lógicos que forman parte del entorno se encuentran disponibles para el público en general a través de Internet.

Suele ser propiedad de un proveedor que gestiona la infraestructura y el servicio o servicios que se ofrecen.

Las nubes públicas se manejan por terceras partes, y los trabajos de muchos clientes diferentes pueden estar mezclados en los servidores, los sistemas de almacenamiento y otras infraestructuras de la nube. Los usuarios finales no conocen qué trabajos de otros clientes pueden estar corriendo en el mismo servidor, red, discos como los suyos propios





Ventajas
Inconvenientes
Escalabilidad.
Se comparte la infraestructura con más organizaciones.
Eficiencia de los recursos mediante los modelos de pago por uso.
Poca transparencia para el cliente, ya que no se conoce el resto de servicios que comparten recursos, almacenamiento, etc.
Gran ahorro de tiempo y costes.
Dependencia de la seguridad de un tercero.


Privada

Este tipo de infraestructuras cloud se crean con los recursos propios de la empresa que lo implanta, generalmente con la ayuda de empresas especializadas en este tipo de tecnologías.

Las nubes privadas son una buena opción para las compañías que necesitan alta protección de datos y ediciones a nivel de servicio. Las nubes privadas están en una infraestructura en-demanda manejada por un solo cliente que controla qué aplicaciones debe correr y dónde. Son propietarios del servidor, red, y disco y pueden decidir qué usuarios están autorizados a utilizar la infraestructura.



Ventajas
Inconvenientes
Cumplimiento de las políticas internas.
Elevado coste material.
Facilidad para trabajo colaborativo entre sedes distribuidas.
Dependencia de la infraestructura contratada.
Control total de los recursos.
Retorno de inversión lento dado su carácter de servicio interno.


Un cloud comunitario se da cuando dos o más organizaciones forman una alianza para implementar una infraestructura cloud orientada a objetivos similares y con un marco de seguridad y privacidad común.

Ventajas
Inconvenientes
Cumplimiento con las políticas internas.
Seguridad dependiente del anfitrión de la infraestructura.
Reducción de costes al compartir la infraestructura y recursos.
Dependencia de la infraestructura contratada.
Rápido retorno de inversión.


Este es un término amplio que implica la utilización conjunta de varias infraestructuras cloud de cualquiera de los tres tipos anteriores, que se mantienen como entidades separadas pero que a su vez se encuentran unidas por la tecnología estandarizada o propietaria, proporcionando una portabilidad de datos y aplicaciones.
En este caso las ventajas e inconvenientes son los mismos que los relativos a los tipos de cloud que incluya la infraestructura. 

Las nubes híbridas combinan los modelos de nubes públicas y privadas. Usted es propietario de unas partes y comparte otras, aunque de una manera controlada. Las nubes híbridas ofrecen la promesa del escalado aprovisionada externamente, en-demanda, pero añaden la complejidad de determinar cómo distribuir las aplicaciones a través de estos ambientes diferentes. Las empresas pueden sentir cierta atracción por la promesa de una nube híbrida, pero esta opción, al menos inicialmente, estará probablemente reservada a aplicaciones simples sin condicionantes, que no requieran de ninguna sincronización o necesiten bases de datos complejas.

Referencias
- Computación en nube.org: http://www.computacionennube.org/


Pentaho BI Open Source. Introducción y demo.

He estado viendo este tutorial de Stratebi sobre las posibilidades de Pentaho, me parece interesante. Ahí os lo dejo



Pentaho: Qué es y para que sirve.



Pentaho es una plataforma Open Source para Business Intelligence diseñada para cubrir las necesidades empresariales de Análisis de Datos e Informes. Las soluciones están escritas en Java lo que la hace una solución muy flexible, ya que se pueden crear nuevos módulos para adpatarlo a las necesidades específicas de la organización.

Es la alternativa Open Source comercial para el BI (Business Intelligence o inteligencia de negocio). Entre otras Pentaho proporciona reporting intuitivo, análisis OLAP, cuadros de mando, integración de datos, minería de datos y plataforma BI.
Pentaho nos permite:

  • Informar: acceder a los datos y suministrar información a toda la empresa
  • Analizar: explorar y analizar los datos interactivamente y de forma muy rápida.
  • Sintetizar: conseguir inmediata visibilidad con medidas y ratios a través de cuadros de mando.
  • Integrar: pule e integra datos estén donde estén y desde múltiples fuentes.
  • Investigar, permite hacer minería de datos para descubrir patrones ocultos o tendencias futuras.

Concepto de Datawarehouse y Datamart

DataWarehouse o Almacén de Datos
Según la wikipedia (http://es.wikipedia.org/wiki/Almac%C3%A9n_de_datos) ualmacén de datos (del inglés data warehouse) es una colección de datos orientada a un determinado ámbito (empresa, organización, etc.), integrado, no volátil y variable en el tiempo, que ayuda a la toma de decisiones en la entidad en la que se utilizaSe trata, sobre todo, de un expediente completo de una organización, más allá de la información transaccional y operacional, almacenado en una base de datos diseñada para favorecer el análisis y la divulgación eficiente de datos (especialmente OLAP- online analytic processprocesamiento analítico en línea).

Ralph Kimball , defina un almacén de datos como: "una copia de las transacciones de datos específicamente estructurada para la consulta y el análisis". También fue Kimball quien determinó que un data warehouse no era más que: "la unión de todos los Data marts de una entidad". Defiende por tanto una metodología ascendente (bottom-up) a la hora de diseñar un almacén de datos.

Dicho esto, se puede decir que el datawarehouse va a proporcionar una visión global de los datos de la organización En este almacén de datos se va aguardar la información necesaria relativa a una organización de dónde se sacara información útil para el usuario que va atrabajar con dicha informacióm.
El almacén de datos va a dar respuesta a las necesidades de usuarios expertos, utilizando Sistemas de Soporte a Decisiones (DSS), Sistemas de información ejecutiva (EIS) o herramientas para hacer consultas o informes




DataMart

Un datamart es un subconjunto de datos con el propósito de ayudar a que un área específica dentro del negocio pueda tomar mejores decisiones. Se puede ver como un subconjunto de los datos pertenecientes a un datawarehouse  pero que responden a un determinado análisis, función o necesidad y con una población de usuarios específica.
Los datos existentes en este contexto pueden ser agrupados, explorados y propagados de múltiples formas para que diversos grupos de usuarios realicen la explotación de los mismos de la forma más conveniente según sus necesidades.


Error Pentaho - Cassandra Could not initialize class org.apache.thrift.transport.TSocket

Cuando estaba investigando cómo conectar desde Pentaho a la base de datos NoSQL Cassandra, uno de los primeros problemas que me encontré fué este Could not initialize class org.apache.thrift.transport TSocket .
Después de investigar durante un rato enconntré la solución, me faltaban los archivos log4j-1.2.16.jarslf4j-api-1.7.3.jarslf4j-log4j12-1.7.3.jar en el directorio .../data-integration/plugins/pentaho-cassandra-plugin/lib/ directory


El archivo log4j-1.2.16.jar lo podemos encontrar en la carpeta .../data-integration/lib/ y los otros dos en .../data-integration/plugins/pentaho-big-data-plugin/lib/

miércoles, 19 de febrero de 2014

Conectar Weka a MySQL

Para poder realizar la conexión correcta desde Weka a MySQL necesitamos tener instalado el software de Weka, la base de datos MySQL(en mi caso he instalado la plataforma XAMPP que tiene incorporado un servidor apache aparte de la base de datos) y el conector Mysql de java.



En primer lugar nos creamos una base de datos con una tabla en MySQL e introducimos datos para luego poder comprobar si funciona correctamente la coexión. En mi caso he creado la base de datos prueba y una tabla llamada mitabla como se puede observar en la imagen.


Ahora vamos a copiar el archivo descargado .jar (conector mysql)  a la carpeta de Weka. En mi caso tengo la versión 3-6 de Weka instalada en el directorio C:\Archivos de programa\Weka-3-6



El siguiente paso es editar el fichero de configuración de Weka, RunWeka.ini,y añadir la ruta del conector mysql.jar

En la linea cp=%CLASSPATH% se le añade  nuestra ruta: 
C:/Archivos de programa/Weka-3-6/mysql-connector-java-5.1.29-bin.jar


Una vez hecho lo anterior podemos ejecutar Weka , para comprobar que tenemos acceso a la base de datos MySQL. Abrimos el explorer de weka, y seleccionamos OpenDB


Se muestra una ventana en la que podemos configurar el acceso a nuestra base de datos, si pulsamos en user podemos introducir la url de conexión a la base de datos(jdbc:mysql://localhost/prueba), el usuario y la contraseña.



Una vez introducidos los datos pulsamos OK, y connect.Verificando que se ha realizado la conexión a la base de datos satisfactoriamente, como se muestra.


Para asegurarnos podemos realizar una query sobre nuestra tabla, en mi caso voy a sacar todos los registros de la tabla mitabla que está en la base de datos prueba.: select * from mitabla. en la figura podemos comprobar que nos devuelve 




Nota: Weka no admite campos de tipo INT, para no tener problemas podemos utilizar tipos DECIMAL.





viernes, 14 de febrero de 2014

CQL v3.14 Cassandra Query Language. Tipos de Datos

Tipos de Datos 



CQL soporta un amplio conjunto de datos para la definición de las columnas, incluyendo colecciones.


<type> ::= <native-type>
         | <collection-type>
         | <string>       // Used for custom types. The fully-qualified name of a JAVA class

<native-type> ::= ascii
                | bigint
                | blob
                | boolean
                | counter
                | decimal
                | double
                | float
                | inet
                | int
                | text
                | timestamp
                | timeuuid
                | uuid
                | varchar
                | varint

<collection-type> ::= list '<' <native-type> '>'
                    | set  '<' <native-type> '>'
                    | map  '<' <native-type> ',' <native-type> '>'


La tabla siguiente muestra información adicional de los tipos de datos y las constantes que soportan:



Arquitectura de Cassandra


Cassandra ha sido diseñada para manejar grandes volúmenes de datos a través de múltiples nodos  sin punto único de fallo. Su arquitectura está basada en el entendimiento de que los fallos del sistema y del hardware pueden fallar y lo hacen.  Cassandra soluciona el problema empleando un sistema distribuido punto a punto donde todos los nodos son los mismos y los datos son distribuidos a través de todos los nodos en el cluster. Cada nodo intercambia información a través del cluster cada segundo. Una confirmación de registro captura la actividad de escritura para asegurar la durabiidad de los datos.
Los datos se escriben en una estructura de memoria, llamada memtable , tabla de memoria, y entonces  se escriben a un fichero de dato llamado SSTable en disco una vez que la estructura de memoria está llena. Todas las escrituras son automáticamente particionadas y relpicadas a través del cluster.

Cassandra es una base de datos orientad a columnas. La arquitectura de Cassandra permite a un usuario autorizado conectarse a cualquier nodo en un centro de datos y acceder a los datos usando lenguaje CQL. Para que sea más fácil de usar Cassandra utiliza una sintaxis similar a SQL.

El cliente lee o escribe peticiones que pueden ir a cualquier nodo en el cluster. Cuando un cliente se conecta a un nodo con una petición, el nodo atiende como el coordinador para esa operación particular del cliente. El coordinador actúa como un proxy entre la aplicación del cliente y todos los nodos que poseen la información requerida. El coordinador determinará que nodo del anillo cogerá la petición basado en la configuración del cluster.

jueves, 13 de febrero de 2014

Cassandra. El modelo de Datos

Mientras investigaba el concepto de Big Data, Hadoop, Pentaho... me encontré con esta base de datos opensource: Cassandra. Dado que en los últimos tiempos sólo se habla de todos estos conceptos, creo que es bueno aprender un poquito sobre esta base de datos. En este capítulo contaré el modelo de datos de Cassandra.

El modelo de datos


Cassandra es un almacén de filas con particiones.
Y es un sistema de bases de datos distribuido open source que ha sido diseñado para almacenar grandes cantidades de datos a través de servidores genéricos.

Diseñando el modelo de datos

Una clave para diseñar el modelo de datos de cassandra es basar el diseño en las querys que vamos a ejecutar, no modelando entidades y relaciones como se hace en las bases de datos relacionales. Los elementos esenciales del modelo de datos incluyen:

Familias de columnas


Una base de datos Cassandra consiste en familias de columnas. Una familia de columnas es un conjunto de pares clave-valor. Cada familia de columnas tiene una clave y consiste de columnas y filas. Podemos pensar en una familia de columnas como una tabla y cada par clave-valor como un registro de la tabla.
Nota : a partir de CQL3 se les llama tablas no familias de columnas.

Tablas


La definición de tabla depende de la versión de CQL:
  •          En CQL 3 una tabla es una colección de columnas ordenadas(por nombre).
  •          En las versiones anteriores, una familia de columnas era sinónimo, en algunos aspectos a una tabla. En CQL 3 una tabla es escasa, incluyendo sólo las columnas que filas se han asignado un valor.

Keyspace


La agrupación más externa de datos, similar a un esquema en una base de datos relacional. Todas las tablas van dentro de un espacio de claves. Por lo general, un clúster sólo tiene un keyspace por aplicación.


Tradución de la web original :
http://www.datastax.com/documentation/gettingstarted/index.html?pagename=docs&version=quick_start&file=cassandra_quickstart#getting_started/../getting_started/gettingStarteddataModel_c.html