jueves, 20 de junio de 2013

Controlando el Clúster de HDInsight (Hadoop) programáticamente y ahorrando costes: Con C# !!!

imageMuy buenas,

Después de varios posts en los que hemos estado hablando de HDInsight (Hadoop de Microsoft), aun a pesar de quedarnos pendientes muchos puntos sobre los que hablar, en esta ocasión me gustaría profundizar en la gestión automática de HDInsight.

 

La importancia de este tema radica principalmente en los siguientes puntos:

Teniendo en cuenta estos puntos podemos:

Los pasos para conseguirlo programáticamente con C#:

1) Crear un certificado e instalarlo en local con el fin de poder hacer el despliegue automático:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\makecert" -sky exchange -r -n "CN=WAHDInsight" -pe -a sha1 -len 2048 -ss My "WAHDInsight.cer"
 

2) Crear un proyecto de tipo consola.


3) Añadir al proyecto las referencias “Microsoft .NET API For Windows Azure HDInsight Cluster Management”  (versión actual: 0.8.4903.27316).


4) Incluir el siguiente código:



   1: static void Main(string[] args)
   2: {
   3:     // Get certificate
   4:     var store = new X509Store();
   5:     store.Open(OpenFlags.ReadOnly);
   6:     var cert = store.Certificates.Cast<X509Certificate2>().First(
   7:         item => item.Thumbprint.Equals(Subscription.Thumbprint, StringComparison.InvariantCultureIgnoreCase));
   8:  
   9:  
  10:     // Create client object to connect to Azure
  11:     var client = new ClusterProvisioningClient(Subscription.SubscriptionId, cert);
  12:  
  13:  
  14:     // Specify details of the cluster to create
  15:     var clusterInfo = new HDInsightClusterCreationDetails();
  16:     clusterInfo.Name = Cluster.Name;
  17:     clusterInfo.Location = Cluster.Location;
  18:     clusterInfo.DefaultStorageAccountName = Subscription.StorageAccountName;
  19:     clusterInfo.DefaultStorageAccountKey = Subscription.StorageAccountKey;
  20:     clusterInfo.DefaultStorageContainer = Subscription.StorageContainer;
  21:     clusterInfo.UserName = Subscription.UserName;
  22:     clusterInfo.Password = Subscription.Password;
  23:     clusterInfo.ClusterSizeInNodes = Cluster.Size;
  24:             
  25:     var cluster = client.CreateCluster(clusterInfo);
  26:     Console.WriteLine("Created cluster: {0}", cluster.ConnectionUrl);
  27: }

5) Crear un fichero de configuración “App.config” e incluir los siguientes parámetros:



   1: <appSettings>
   2:   <add key="SubscriptionId" value="###SUBSCRIPTION_ID###"/>
   3:   <add key="Thumbprint" value="‎###CERTIFICATE_THUMBPRINT###"/>
   4:  
   5:   <add key="StorageAccountName" value="###AZURE_STORAGE_NAME###.blob.core.windows.net"/>
   6:   <add key="StorageAccountKey" value="###AZURE_STORAGE_KEY###"/>
   7:   <add key="StorageContainer" value="###AZURE_STORAGE_CONTAINER###"/>
   8:  
   9:   <add key="UserName" value="admin"/>
  10:   <add key="Password" value="###PASSWORD_CLUSTER_HDINSIGHT###"/>
  11: </appSettings>

6) Tras unos minutos, el Cluster estará creado y podremos trabajar con él tal y como hemos visto en post anteriores.


image


image


7) Finalizada las tareas a realizar con el Cluster, borramos el cluster para evitar el consumo innecesario de €€€ por tener activas las Maquinas virtuales que componen el Cluster.


Nota: Recordemos que se factura por hora de VM aunque estas no estén trabajando.



   1: // Get certificate
   2: var store = new X509Store();
   3: store.Open(OpenFlags.ReadOnly);
   4: var cert = store.Certificates.Cast<;X509Certificate2>().First(
   5:     item =>; item.Thumbprint.Equals(Subscription.Thumbprint, StringComparison.InvariantCultureIgnoreCase));
   6:  
   7:  
   8: // Create client object to connect to Azure
   9: var client = new ClusterProvisioningClient(Subscription.SubscriptionId, cert);
  10: 
  11: // Remove cluster "mycluster"
  12: client.DeleteCluster(Cluster.Name);

 


Un ejemplo completo del código podéis encontrarlo aquí.


Después de esto, nadie puede decir que Windows Azure no es Auto-Scalable, Guiño


 


Continuaremos programando para HDInsight…


 


Saludos and happy HDInsight programming  !
Juanlu, ElGuerre

Etiquetas: , ,


Comments:
Siempre que intento crear el cluster el servicio se queda sin responder, en la consola de Azure en HDInsight aparece el cluster con estatus de error y el mensaje: The request failed. Please contact support for more information.

Ya intenté varias veces y nada.
 
Publicar un comentario

Links to this post:

Crear un enlace



<< Home

This page is powered by Blogger. Isn't yours?