jueves, 19 de mayo de 2016

JMeter III..y pico.Depurando Scripts avanzado.

En este artículo vamos a completar algunas técnicas que se usan habitualmente en las pruebas con esta herramienta, porque tal y como dicen , “la creación de código es un proceso retroalimentado, dado que siempre se pueden encontrar errores”.

Depurando un script de JMeter. Debug Sampler.


Muchas veces nos encontramos con la necesidad de saber cómo varian los valores de las variables, ya sean parametrizadas o correlacionadas. Para conocer el valor de las mismas , se dispone de un elemento de postprocesado sumamente útil : El debug Post-processor.

Este elemento sigue las normas de ámbito del resto de elementos de un plan de trabajo o script de JMeter, es decir, recoge información acerca de las peticiones que se encuentren por encima del mismo en la estructura de árbol del script.

Debug PostProcessor. Habilitación de visualización de variables

Como se puede ver, el elemento post-procesador de Debug, permite seleccionar
  • Valores del entorno

JMeter properties
Sampler properties
System properties

  • Valores relacionados con la prueba (¡lo que nos interesa! )
                     JMeter Properties

   

lunes, 15 de febrero de 2016

OPTIMIZACION DE LA MAQUINA VIRTUAL DE JAVA II

Resumen General de los Componentes de la JVM

La manera básica del funcionamiento de un compilador es primero tomar como entrada un idioma y producir un lenguaje ejecutable como salida. Un compilador Java tiene dos tareas principales:
  • ·        Habilitar el lenguaje Java para ser más portabe, esto quiere decir que no necesariamente tiene que estar ligado a alguna plataforma en específico.
  • ·         Asegurar que el resultado es el código de ejecución eficiente de la plataforma en curso.

Los compiladores pueden ser estáticos o dinámicos.

Un ejemplo de un compilador estático es “javac”. Para este compilador es necesario el código Java como entrada y lo traduce a bytecode (un lenguaje que es ejecutable por la JVM). Los compiladores estáticos interpretan el código de entrada una vez y el ejecutable de salida es la forma que se utilizará cuando el programa se ejecute.

Debido a que su entrada es estática siempre se ve el mismo resultado. Solo cuando se realizan cambios en el código fuente original y se vuelve a compilar se puede ver un resultado diferente.

Los compiladores dinámicos conocidos como “Just In Time” (JIT), realizan la traducción de un idioma a otro de forma dinámica, lo que significa que lo hacen según como se va ejecutando el código. Un compilador JIT permite recopilar datos en tiempo de ejecución o crear perfiles (por medio de la inserción de contadores de rendimiento) y así tomar decisiones sobre la marcha utilizando los mismos datos del entorno sobre el cual se está ejecutando.

La compilación dinámica permite mejores instrucciones de secuencia en los programas compilado con el lenguaje y reemplazar las instrucciones más eficientes e incluso eliminar las operaciones redundantes,

Con el tiempo se puede recoger más datos acerca de los perfiles de código y tomar decisiones sobre 
optimización de código y recomplilacion.

La compilación dinámica permite la ventada de ser capaz de adaptarse a los cambios en el comportamiento o la carga de aplicaciones. Esta es la razón por la cual los compiladores dinámicos están muy bien adaptados al tiempo de ejecución de Java. El problema es que los compiladores dinámicos requieren estructuras adicionales de datos, hilos, y ciclos de CPU para la optimización.

La asignación de recursos conduce a la recolección de basura (Garbage Collection)

La asignación de recursos se realiza en función de cada hilo (thread) que no es más que un espacio de memoria dedicada y direcciones del proceso de Java también conocido como “Heap” que  no es más que un almacenamiento dinámico.

La asignación de un thread individual es común de encontrar en las aplicaciones cliente-servidor. La asignación de un thread individual hacia un único subproceso

Continuará…


viernes, 12 de febrero de 2016

OPTIMIZACION DE LA MAQUINA VIRTUAL DE JAVA I

Las aplicaciones Java, se ejecutan en la Memoria Virtual de Java, pero alguna vez se ha preguntado que tanto conoce acerca de la tecnología de la Memoria Virtual de Java? Este artículo, el primero de esta serie, es un breve resumen que explica la manera de funcionar de la Máquina Virtual de Java que en lo sucesivo denominaremos JVM, así como los pros y los contras de la misma, el garbage collector y una pequeña muestra de los algoritmos que se utilizan dentro del garbage collector.

Si usted está involucrado en equipos de optimización de aplicaciones Java, es ingeniero de pruebas de rendimiento o programador, sin duda ha experimentado esa sensación especial cuando se encuentra la luz al final del camino en un proceso de pensamiento cuando se encuentra frente a un problema complejo de resolver. Personalmente me encanta la sensación de aprender algo nuevo. Durante el trabajo y la experiencia que he tenido con tecnologías como la JVM, sobre todo con el garbage collector y la optimización de ésta misma, espero poder compartir algunos temas que considero que pueden ser de gran utilidad a alguien más.

¿Qué es una JVM?

De manera sencilla, la JVM es un módulo de software que ejecuta una aplicación Java en modo de código y traduce ese código en instrucciones y procesos entendibles para hardware y ciertas instrucciones propias del sistema operativo.
De tal forma que al hacerlo, la JVM permite que los programas o aplicaciones Java puedan ser ejecutados en distintos entornos (lo que se conoce como portabilidad del software) sin que se requiera algún cambio en el código de la aplicación original. La portabilidad de Java es la clave de su popularidad como un lenguaje para aplicaciones empresariales, donde los desarrolladores no tienen que volver a escribir el código de aplicación para cada plataforma, ya que la JVM se encarga de la traducción y optimización.
La JVM también se encarga de la gestión dinámica de los recursos necesarios para ejecutar las aplicaciones Java. Esto significa que se encarga de la asignación y reasignación de memoria, el mantenimiento de un modelo de hilos consistente en cada plataforma y la organización de instrucciones necesarias. La JVM libera al programador de hacer el seguimiento de las referencias entre objetos y saber el tiempo que éstos deben mantenerse en el sistema. También lo libera de tener que decidir exactamente cuándo emitir instrucciones explicitas para liberar la memoria (un punto de dolor en todos los lenguajes de programación no dinámicos como C).
Se podría pensar en la JVM como un sistema operativo especializado para Java, su función es gestionar el entorno de ejecución de las aplicaciones Java. Una JVM básicamente es un entorno de ejecución virtual que actúa como una máquina para obtener instrucciones de código, mientras que la asignación de tareas de ejecución y la realización de operaciones de memoria a través de la interacción con las capas subyacentes.







martes, 5 de enero de 2016

Big Data II.Ecosistema de Hadoop.

Introducción.



Como ya dijimos en el anterior artículo, Hadoop actúa sobre los datos contenidos en su HDFS mediante las operaciones MapReduce. Ahora voy a contaros una cosa. Antes de empezar a tratar sobre dichos datos debe volcarlos a  ficheros y para ellos , requiere de herramientas externas para realizar lo que se llama E.T.L. (Extraction , Transformation ,Loading).



Extraction: Extrae datos de diferentes origenes. Si se dispone de conectores o drivers específicos sobre BBDD Hadoop y su ecosistema admite la conexión a fuentes de datos via ODBC o similares para el proceso.
Transformation: Valida, normaliza los datos para evitar errores
Loading: Vuelca los datos al HDFS (o a otros sistemas de BigData).

Para ello se introduce aquí el concepto de “ecosistema de hadoop”, es decir aquellas herramientas y utilidades que complementan a Hadoop para realizar las tareas de procesamiento masivo de datos.



Hadoop es el “motor” del vehículo. Las herramientas de ecosistema se pueden ejemplarizar como los neumáticos, la suspensión,..etc



Para realizar dichas operaciones ETL tenemos herramientas como scoop (http://sqoop.apache.org/), que permite la transferencia de datos de E.T.L.  de manera eficiente e integrada con Hadoop. Está también desarrollada por la Apache Software Foundation. Aquí hago un paréntesis para indicar que Hadoop es capaz de tratar tanto con datos estructurados (las clásicas tablas de BBDD organizadas en columnas ) como con no estructurados (XML).



Flujo de Scoop y Hadoop.

sábado, 12 de diciembre de 2015

Big Data. Introducción y características



En los próximos artículos vamos a dar algunas pinceladas describiendo una de las últimas tendencias de las tecnologías de la información: Big Data.
También daremos alguna visión acerca de su evaluación como producto desde el punto de vista de QA y su uso como herramienta para estas metodologías.


Big Data:Conceptos y presentación.


Si tenemos que definir Big Data en base a alguna de las muchas descripciones que hay publicadas podríamos decir cosas como que “herramienta de recolección masiva de datos “, “el futuro de las analíticas de empresa” , “el descendiente listo de Business Inteligence”…
Pero para ser concisos , hemos elegido esta:


Proceso de recolección de datos en grandes cantidades y su tratamiento para encontrar patrones y correlaciones.


En cuanto a las características del mismo hay también varias ideas que podríamos definir como mnemotécnicas:


“Las 5V”

  •   Volumen: Captar toda la info, de manera completa y no sesgada, evitando duplicidad y redundancia
  •   Velocidad:Herramientas ágiles y con poco tiempo de respuesta
  •   Variedad:Datos de múltiples fuentes heterogeneas se uniformizan y centralizan.
  •   Veracidad:Que sea verdadera, de calidad y disponible,eliminando fallos
  •   Valor: Aporta competitividad y da servicio rentabilizando la información
“Las 5 R”
  •   ROI:Retorno de Inversión considerar el dato como un activo.
  •  Reliable:Fiabilidad en los datos para generar acciones fiables.
  •  Realistics: Que sea verdadera y ajustada a la realidad.
  • Realtime: Información en tiempo real.
  •  Relevant: Definir qué es relevante y útil.
 

Metodologías


Como principal metodología hay que destacar I.C.A.V. ,que por supuesto son unas siglas que coinciden con Identificación, Consolidación, Análisis y Visualización.

En concreto la identificación del área y sus necesidades de datos, la consolidación  como tratamiento, limpieza y filtrado de datos , el análisis emitiendo predicciones con la información consolidada y la visualización que muestra los resultados del análisis.

La implantación de Big Data en la empresa requiere de cambios en la relación entre los departamentos de tecnología de la información y el resto de la compañía, puesto que nuestro objetivo es disponer de toda la información que se genera en la empresa, tanto la histórica como la que viene desde todas las posibles fuentes de información por las que los datos entran en la empresa. Esto incluye a los datos automatizados y determinar cómo mecanizar aquellos que no lo estén.

Big data a dia de hoy se enfoca principalmente a


  • Marketing, con la realización de campañas por distintos segmentos de clientes
  •  Nuevos productos: Estableciendo qué nuevas necesidades se pueden satisfacer
  •  Aumento de clientes
  •  Expansión de mercados

 

Para realizar estas tareas se ha establecido como estándar en el mercado una herramienta específica y utilidades asociadas. De esto trataremos en el siguiente punto.


Apache Hadoop. Qué es y cómo funciona.




Como ya hemos dicho, la realización de las tareas que componen el Big Data en todas sus vertientes se ha de llevar a cabo mediante herramientas específicas por los elevados volúmenes de datos y procesamiento asociado que requiere. En el mercado actual una herramienta específica sobresale por encima del resto , imponiéndose como el estándar a seguir : Hadoop.

Haddop es un sistema de código abierto que almacena, procesa y analiza grandes volúmenes de datos. No solo determina el software sino que da proporciona las guías de una infraestructura hardware donde se pueda aprovechar hardware commoditie, es decir , normalizado en el mercado  de manera que por procesamiento paralelo alcance grandes valores de cálculo.
La arquitectura de Hadoop se base en nodos maestros y servidores .  En un cluster de Hadoop al nodo maestro se le conoce como namenode y  a los nodos servidores como datanodes.

El nodo maestro contiene el datos asociado a sus datanodes y mantiene el estatus de los datanodes. Los datanodes almacenan la información procesada.

Flujo información y tareas Hadoop