Introducción a HDInsight

HdInsightHDInsight es la distribución de Hadoop pensada para Azure. Azure nos permite en cuestión de unos minutos tener disponible un servicio de Hadoop en la nube.

Que es Hadoop?

Hadoop es un repositorio de datos (o ficheros) que se encuentra distribuido en múltiples servidores (o nodos). Se puede escalar fácilmente y con excelente rendimiento de acceso a los datos. La manera de acceder a los datos es mediante el procesado de los datos en cada servidor (Map) y la unificación de estos datos procesados de los diferentes servidores (Reduce), es lo que se conoce como proceso MapReduce. Este proceso de manera nativa se ejecuta en Java (mediante su empaquetado en un Jar).

Que más incorpora HDInsight

HdInsight incorpora una serie de utilidades que facilitan enormemente el uso de Hadoop.

  • Pig: Ejecuta pseudo comandos (similares a bloques de consulta de SQL) para realizar el proceso de MapReduce.
  • Hive: Ejecuta comandos de Sql que generan el proceso de MapReduce.
  • HCatalog: Independiza Procesos de MapReduce de la ubicación física de los datos y permite trabajar de manera independiente con las diferentes utilidades con MapReduce.
  • Oozi: Script acciones en Hadoop; usa un Xml (como MS-Build).
  • Sqoop: Transfiere los datos de Hadoop desde/hacia Base de datos.
Publicado en Azure | Deja un comentario

Backup de Base de Datos SQL Azure Mejorado y PowerShell

En esta entrada voy presentar un script de PowerShell que nos va a permitir realizar un backup de una base de datos de Azure con tan solo un click.

Hace tiempo publique la entrada Backup de Base de Datos SQL Azure con tan un solo comando. En el Portal de Azure posteriormente utilizando la misma idea se incorporo la posibilidad de realizar backups en la nube. Mediante la API PowerShell de Azure vamos a ser capaces de conseguir nuestro objetivo ;-).

Uso

  • 1.- Editamos los parámetros de configuración del script

    • $serverName: Nombre de nuestro servidor de Sql en la Nube.
    • $databaseOriginal: Nombre de la base de datos que queremos realizar el backup.
    • $databaseCopy: Nombre de base de datos temporal para mantener transaccionalidad del backup.
    • $StorageAccountName: Cuenta del Storage donde almacenaremos el backup.
    • $storageContainerName: Container donde donde almacenaremos el backup.
  • 2.- Ejecutamos el powerShell
    powershell .\Script.ps1
    
    • 2.1.-Introducimos las credenciales de acceso a nuestra cuenta de Azure.
      SignInAzure
    • 2.2.- Introducimos el usuario de acceso al Sql Server (sin @ServerName).
      SingInDatabase
    • 2.3.- Al final de la ejecución del script se muestra la ruta al blob donde se ha almacenado el backup (la url que esta en fuente roja con fondo amarillo :-))
      Backup Database

    El Script

    $serverName = "SqlServerName"
    $databaseOriginal = "database"
    $databaseCopy = "databaseCopy"
    $StorageAccountName = "storageName"
    $storageContainerName = "containerName"
    
    Add-AzureAccount
    #if we have multiple Subscriptions ;-) 
    #       Get-AzureSubscription 
    #       Select-AzureSubscription "Subscription"
    
    #Copy Database 
    Start-AzureSqlDatabaseCopy -ServerName $serverName -DatabaseName $databaseOriginal -PartnerDatabase $databaseCopy
    do
    {
        sleep -Seconds 10
        $statusCopy = Get-AzureSqlDatabaseCopy -ServerName $serverName -DatabaseName $databaseCopy
        $exist = $statusCopy.PercentComplete
    	Write-Host $exist
    }
    while ($exist -ne $null)
    
    #Backup Database Copied
    #Doesn't work on Start-AzureSqlDatabaseExport 
    #$sqlContext = New-AzureSqlDatabaseServerContext -ServerName $serverName -UseSubscription
    $credential = Get-Credential
    $sqlContext = New-AzureSqlDatabaseServerContext -ServerName $serverName -credential $credential
    $SubscriptionName =  (Get-AzureSubscription -Current).SubscriptionName
    Write-Host "SubscriptionName:"$SubscriptionName
    Set-AzureSubscription -SubscriptionName $SubscriptionName -CurrentStorageAccountName $StorageAccountName
    $storageContainer = Get-AzureStorageContainer -Name $storageContainerName
    $now=Get-Date -format 'yyyyMMdd_HHmmss'
    $storageBlobName = "BackupOf" + $databaseOriginal + $now + ".bacpac"
    $exportRequest = Start-AzureSqlDatabaseExport -SqlConnectionContext $sqlContext -StorageContainer $storageContainer -DatabaseName $databaseCopy -BlobName $storageBlobName
    Get-AzureSqlDatabaseImportExportStatus -Request $exportRequest
    do
    {
        sleep -Seconds 10
        $statusExport = Get-AzureSqlDatabaseImportExportStatus -Request $exportRequest
        $status = $statusExport.Status
    	Write-Host $status
    }
    while ($status -ne 'Completed')
    
    #Remove Copied Database
    Remove-AzureSqlDatabase -ServerName $serverName -DatabaseName $databaseCopy -Force
    
    Write-Host "The backup is on this url:"
    Write-Host "https://"$StorageAccountName".blob.core.windows.net/"$storageContainerName"/"$storageBlobName".bacpac" -foregroundcolor red -backgroundcolor yellow
    

    Como funciona

Publicado en Azure, PowerShell, Sql Server | Etiquetado | 1 Comentario

Analizando los datos y Azure Machine Learning

En esta entrada se describen como conocer los datos en Azure Machine Learing; es una paso necesario para el punto 4.- Determinar los elementos clave a analizar descrito en la entrada Pasos para realizar un experimento de Aprendizaje Automático y Azure Machine Learning.

En la entrada se describen los diferentes aspectos por los que los datos pueden ser analizados.

Tendencia Central

  • Media: El valor promedio de tendencia central.
  • Mediana: El valor de la variable de posición central en un conjunto de datos ordenados.
  • Moda: El valor con una mayor frecuencia en una distribución de datos.

En Azure Machine Learing, disponemos del módulo Descriptive Statistics que nos ofrece un conjunto amplio de estadísticas sobre los datos. Al visualizar la información de este módulo; disponemos la lista de las columnas con los diferentes valores estadísticos de los mismos.

Visualización del Modulo Descriptive Statistics

Visualización del Modulo Descriptive Statistics

Distribución

La forma que presentan los datos: siguen una distribución normal, hay outliers o errores, distribución asimétrica…

  • Histograma en Azure Machine Learning

    Histograma en Azure Machine Learning

    Histograma: Gráfico de barras donde se muestra la frecuencia de los valores de la variable.
    En Azure Machine Learing sobre el menú contextual de los datos seleccionamos Visualize, posteriormente pulsamos una columna y en la derecha se nos muestra el histograma.
  • Rango: Diferencia entre el valor maximo y minimo de la variable.
  • Cuartiles: El valor de la variable al 25% (Q1), 50% (Q2) y 75% (Q3) en un conjunto de datos ordenados. Se suele presentar en un diagrama de caja.
  • Variancia: Media de la diferencia al cuadrado entre los valores y la media de la variable.
  • Desviacion Standard: raiz cuadrada de la variancia.
  • Distribución Asimétrica: Para analizar si la distribución esta más a la izquierda o la derecha de la media. Momento de Pearson o Kurtosis.

En el módulo Descriptive Statistics encontraremos esta información.

Representavidad de la Muestra

Determinan el error en función del numero de valores capturados de la variable.

  • Error Standard:Desviación estándar dividido por la raíz del numero de muestras.
  • Intervalos de Confianza: Intervalo de los datos para un nivel de confianza; suponiendo distribución normal.

Relación entre variables

Determinan la interacción entre los valores de las diferentes variables.

  • Diagrama de Dispersión en Azure Machine Learning

    Diagrama de Dispersión en Azure Machine Learning

    Diagramas de Dispersión:Muestran en un gráfico x/y la relación entre dos variables.
    En Azure Machine Learing sobre el menú contextual de los datos seleccionamos Visualize, posteriormente pulsamos la columna X. En la derecha se nos muestra el histograma. En la combo superior seleccionamos la columna Y.
  • Tablas de Contingencia: Muestran una tabla x/y con la distribución entre dos variables categóricas.
    En Azure Machine Learning se obtiene de la misma forma que el punto anterior.
  • Coeficiente de Correlación: Determina si hay una relación lineal (1), inversamente lineal (-1) o no la hay (0).
    Coeficiente de Correlación en Azure Machine Learning

    Linear Correlation en Azure Machine Learning


    En Azure Machine Learning, disponemos del módulo Linear Correlation que nos retorna un matriz con la coeficientes de correlación entre las diferentes columnas.
  • Tau de Kendal: Dos variables son concordantes si dos valores consecutivos de la primera variable tienen el mismo signo la diferencia de la segunda variable observada. Determina si hay una relación de concordancia (1), discordancia (-1) o no la hay (0).
  • T-Test: Determina si dos muestras son similares o desapareadas.
    En Azure Machine Learning, disponemos del módulo Hypothesis Testing T-Test.
  • Anova: Permite determinar si muestras que presentan una distribución normal y variancia parecida pertenecen al mismo grupo.
  • Chi-Square: Determina si entre dos muestras hay una relación de independencia o dependencia.
Publicado en Machine Learning | Etiquetado | Deja un comentario

Técnicas de Aprendizaje automático y Azure Machine Learning

Estaba pendiente determinar la técnica de aprendizaje a usar en la anterior entrada Pasos para realizar un experimento de Aprendizaje Automático. En esta entrada se describen las principales técnicas existentes de aprendizaje automático. Estas técnicas se pueden clasificar en función de la información que se quiere predecir.
La entrada se organiza en función de esta clasificación:

Módulos de Regresión (Regression)

Técnicas que predicen un dato en función de datos de entrada. Por ejemplo, el precio de un vehículo en función de sus características.

  • Regresión Lineal:
    Método estadístico. En Azure Machine Learning, el módulo Linear Regression.

    VariablePredecida = B0 + B1[Variable1] + B2[Variable2] + … + BN[VariableN] + Error

  • Arboles de Decisión:
    Crea un árbol donde en cada nodo se asocia un decisión en función de una variable. En Azure Machine Learning, el módulo Decision Forest Regression.
    Formula Árbol de decisión
  • Gradient Tree Boosting:
    Aplica una técnica que combina múltiples arboles de decisión. En Azure Machine Learning, el módulo Boosted Decision Tree Regression.
  • Redes Bayesianas:
    Aplica una técnica que combina un grafo de nodos y método de probabilidad que se adapta en los casos que los valores de las variables están influenciados entre ellos. Hay que tener en cuenta que es un método costoso; a mayor numero de variables y valores.
  • Redes Neuronales:
    Aplica una malla de nodos (perceptores) que recibe unos pesos de entradas que se pueden activar (activation function) y generar unos pesos de salida. Los nodos de inicio de la red neuronal son nuestras variables de entrada (deben ser numéricas) y los nodos finales nuestra variable de salida. Es un método que requiere de un gran numero de datos para obtener resultados óptimos. En Azure Machine Learning, el módulo Neural Network Regression.

Módulos de clasificación (Classification)

Técnicas que clasifican la información en un grupo mediante una etiqueta o clase. Por ejemplo, el tipo de vehículo en función de sus características. Incluye todas las técnicas anteriores de regresión.

Módulos de Agrupación (Clustering)

Técnicas que clasifican los datos en grupos, pero a diferencia de la técnica anterior los grupos no se conocen a priori. Es el sistema quien determina los grupos a partir de los patrones obtenidos de los datos. En este caso el grupo creado se llama cluster. Por ejemplo, extraer los segmentos que agrupan nuestros clientes.

Módulos de Recomendación (Recomendation Engines)

Realiza recomendaciones de datos en función de un análisis de los mismos. Por ejemplo, recomendar productos en función de los productos en la cesta de compra. En Azure Machine Learning, se deben utilizar los módulos Train Matchbox Recommender y Score Matchbox Recommender.

Publicado en Azure, Machine Learning | Etiquetado , | Deja un comentario

Pasos para realizar un experimento de Aprendizaje Automático y Azure Machine Learning

En esta entrada se describen los pasos estándar para realizar un experimento de aprendizaje automático y su equivalencia en Azure Machine Learning.
En la galería de ML publique un experimento muy simple que realiza una predicción del precio de un vehículo en función de sus características.

Pasos para realizar un experimento de Aprendizaje Automático

  • 1.- Determinar el objetivo del experimento. Generalmente se inicia con una pregunta a responder. En nuestro caso, puedo determinar el precio de un vehículo en función de sus características?
  • 2.- Obtener los datos. En Azure Machine Learning, estos pueden ser obtenidos de múltiples fuentes (maquina local, Blob Storage, Sql, Url…) y en diferentes formatos (CSV, Excel, OData…). La datos se obtienen:
    • Mediante el módulo Reader que permite acceder a las múltiples fuentes externas; a excepción de la maquina local.
    • Los Saved Datasets que contienen datos almacenados. Para adjuntar datos de la maquina local debemos crear un Saved Dataset.
      AzureML Cargar Datos
  • 3.- Preparar los datos para su posterior análisis.
    • Validar datos vacíos o nulos en las columnas. En Azure Machine Learning disponemos del módulo Missing Values Scrubber que nos ayuda en esta tarea.
    • Validar la corrección de tipos en los datos de las columnas.
    • Validar la corrección de valores en los datos de las columnas.
    • Validar ciertos formatos de datos (Por ejemplo: fechas, emails…)
    • Aglutinar datos similares (Por ejemplo: Irlanda, República de Irlanda, Eire, Eir… pero no Irlanda del Norte).
    • AzureML Preparar Datos

  • 4.- Determinar los elementos clave a analizar. Es un paso fundamental sobretodo en volúmenes grandes de datos ya que sino realizamos la correcta elección gastaremos tiempo de proceso analizando datos innecesarios y también reduciremos la precisión de la predicción. En Azure Machine Learning disponemos del módulo Filter Based Feature Selection que nos ayuda en esta tarea; también podemos determinar directamente la columnas a analizar mediante el módulo Project Columns.
    AzureML Determinar Elementos Clave
  • 5.- Aplicar la técnica de aprendizaje automático. La técnica de análisis se aplica sobre un subconjunto de los datos obteniendo un modelo (entrenamos nuestro experimento). El módulo Train Model es el que realiza dicha tarea que alimentamos con el subconjunto de datos obtenido mediante el módulo Split.
    AzureML Aplicar Tecnica Analisis
    En otra entrada futura se describirán las técnicas de aprendizaje automático de la información y sus usos ;-).
  • 6.- Evaluar los resultados del Experimento. El modelo generado en el paso anterior se aplica sobre el En Azure Machine Learning disponemos del módulo Evaluate Model que nos ayuda en esta tarea. Una buena técnica es aplicar varias técnicas en el paso anterior y evaluar la que nos ofrece mejores resultados. En el siguiente enlace se muestra un ejemplo.
    AzureML Evaluar Experimento
Publicado en Azure, Machine Learning | Etiquetado | 3 comentarios

Información del Sistema en PowerShell

System Information en PowerShell

Se enumeran comandos útiles de PowerShell para determinar información del Sistema:

Publicado en PowerShell, Sistemas | Deja un comentario