<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.ms/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Juanlu, elGuerre : Windows Azure</title><link>http://geeks.ms/blogs/jlguerrero/archive/tags/Windows+Azure/default.aspx</link><description>Etiquetas: Windows Azure</description><dc:language /><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Java + Eclipse &amp; Apache Tomcat en Windows Azure. ¡Buceando de principio a fin…!</title><link>http://geeks.ms/blogs/jlguerrero/archive/2012/12/18/java-eclipse-amp-apache-tomcat-en-windows-azure-161-buceando-de-principio-a-fin.aspx</link><pubDate>Tue, 18 Dec 2012 21:27:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:207840</guid><dc:creator>Juanlu,ElGuerre</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jlguerrero/rsscomments.aspx?PostID=207840</wfw:commentRss><comments>http://geeks.ms/blogs/jlguerrero/archive/2012/12/18/java-eclipse-amp-apache-tomcat-en-windows-azure-161-buceando-de-principio-a-fin.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/WindowsAzure_5F00_And_5F00_Java_5F00_32EA2E04.png"&gt;&lt;img title="WindowsAzure_And_Java" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;float:left;padding-top:0px;padding-left:0px;margin:5px 10px 0px 5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="WindowsAzure_And_Java" align="left" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/WindowsAzure_5F00_And_5F00_Java_5F00_thumb_5F00_31A59525.png" width="264" height="87" /&gt;&lt;/a&gt;Muy buenas, &lt;/p&gt;  &lt;p&gt;Cada día son más los clientes que me preguntan sobre cómo llevar sus aplicaciones Java a la Nube y, aunque conozco la teoría, me he querido enfrentar directamente al problema indagando en todo detalle para evitar así imprevistos de los que suelen surgir en el último momento. Además, creo que puede ayudarnos a estimar mejor y más claramente nuestro esfuerzo a la hora de comenzar una migración o un nuevo desarrollo en Windows Azure. De esta manera, el cliente, tendrá mucho más claro a que se enfrenta y cómo abordar este primer paso.&lt;/p&gt;  &lt;p&gt;El tema no es para nada complicado, si bien es cierto, para los que pertenecemos al mundo Microsoft, puede resultar algo más “engorroso” de a lo que estamos acostumbrados. Es más, podemos llegar a desentendernos del tema por no tratarse de .NET y dejar al cliente sin su solución, sin embargo, se sigue tratando de una solución a un problema que Windows Azure si puede resolver y con bastante facilidad. ¡No debemos perder de vista este objetivo!&lt;/p&gt;  &lt;p&gt;Aunque el IDE de Visual Studio .NET, proporciona grandes avances e infinidad de facilidades con respecto a cualquier otro IDE, para Java, Eclipse, está cogiendo carrera en esa misma dirección y, llega a hacer tan fácil la labor de desarrollo y despliegue en Windows Azure que no le tiene nada que envidiar.&lt;/p&gt;  &lt;p&gt;¡Si aún no lo has intentado, esta es tu oportunidad y también el momento!&lt;/p&gt;  &lt;p&gt;Veamos los pasos a seguir partiendo totalmente desde cero:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;font size="2"&gt;REQUISITOS PREVIOS Y PREPARACIÓN DEL ENTORNO DE DESARROLLO&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;1)&lt;/strong&gt; Instalamos el SDK de Java desde &lt;a href="http://www.windowsazure.com/en-us/develop/java/java-home/download-for-windows/"&gt;aquí&lt;/a&gt;: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_05889834.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_02933381.png" width="257" height="210" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;2)&lt;/strong&gt; Instalamos Eclipse desde &lt;a href="http://www.eclipse.org/downloads/"&gt;aquí&lt;/a&gt; u optamos directamente por “&lt;a href="http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/junosr1"&gt;Eclipse IDE for Java EE Developers&lt;/a&gt;”.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;3)&lt;/strong&gt; Una vez instado Eclipse, instalamos el plugin para Windows Azure siguiendo los siguientes pasos e incluyendo este enlace: &lt;a href="http://dl.msopentech.com/eclipse"&gt;http://dl.msopentech.com/eclipse&lt;/a&gt;&lt;strong&gt;,&lt;/strong&gt; en el campo &lt;strong&gt;“&lt;em&gt;Work with&lt;/em&gt;:”&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image41_5F00_52F514F4.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image41_5F00_thumb_5F00_4686F1CB.png" width="344" height="308" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image81_5F00_2F0C3D9A.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image81_5F00_thumb_5F00_1A3A451A.png" width="354" height="310" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;4)&lt;/strong&gt; Una vez instalado el Plug-In chequeamos las actualizaciones para estar seguro de que tenemos la última:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_3040B0AC.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_243EC078.png" width="177" height="167" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_63304113.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_262C0F81.png" width="333" height="254" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;5)&lt;/strong&gt; A continuación instalamos “&lt;strong&gt;Apache Tomcat&lt;/strong&gt;” desde aquí: &lt;a title="http://tomcat.apache.org/download-70.cgi" href="http://tomcat.apache.org/download-70.cgi"&gt;http://tomcat.apache.org/download-70.cgi&lt;/a&gt;. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Importante&lt;/strong&gt;: El instalable (.exe) para Windows no funciona.&amp;#160; Después de tanto probar y Googlear en distintos foros Java, a este instalable le falta algo. En el último momento durante la ejecución siempre se produce el error: “&lt;em&gt;Windows cannot find ‘startup.bat’. Make sure you typed the name correctly, and then try again&lt;/em&gt;”.&lt;/p&gt;    &lt;p&gt;Así que, &lt;strong&gt;descargamos el (.ZIP)&lt;/strong&gt; de 32bit o 64bits y lo descomprimimos por ejemplo en “&lt;em&gt;&lt;strong&gt;C:\Program Files\Tomcat7\&lt;/strong&gt;&lt;/em&gt;”&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;6)&lt;/strong&gt; Establecemos y actualizamos las siguientes variables de entorno para asegurar que nuestro entorno Java funciona todo correctamente.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Creamos estas dos:      &lt;ul&gt;       &lt;li&gt;&lt;em&gt;JAVA_HOME=C:\Program Files\Java\jdk1.7.0_09&lt;/em&gt; &lt;/li&gt;        &lt;li&gt;&lt;em&gt;CATALINA_HOME=C:\Program Files\Tomcat 7.0&lt;/em&gt; &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Actualizamos esta otra (PATH), añadiendo los valores de acuerdo a las variables anteriores:      &lt;ul&gt;       &lt;li&gt;&lt;em&gt;PATH=&amp;lt;…&amp;gt;;%JAVA_HOME%\bin;%CATALINA_HOME%\bin&lt;/em&gt; &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;font size="2"&gt;DESARROLLO&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;7)&lt;/strong&gt; Desde Eclipse, creamos un proyecto “File &amp;gt; New &amp;gt; “&lt;strong&gt;Dinamic Web Project&lt;/strong&gt;” con el nombre “MyJavaApp1” y pulsamos “&lt;strong&gt;Finish&lt;/strong&gt;”&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_4502835F.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_58AF6CF3.png" width="299" height="360" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;8)&lt;/strong&gt; Añadimos un fichero JSP de prueba, “&lt;strong&gt;index.jsp&lt;/strong&gt;” (a partir de la plantilla html), dentro de la carpeta “&lt;strong&gt;WebContent&lt;/strong&gt;”:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_0ED0E543.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_79FEECC2.png" width="341" height="297" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_09524ED2.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_5A20633A.png" width="248" height="300" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;9)&lt;/strong&gt; Añadimos a este fichero, a modo de ejemplo, en el tag &lt;strong&gt;&amp;lt;body&amp;gt;&lt;/strong&gt; la instrucción &lt;em&gt;&lt;strong&gt;“&amp;lt;b&amp;gt;&amp;lt;% out.println(&amp;quot;My first Java application to run on Azure!&amp;quot;); %&amp;gt;&amp;lt;/b&amp;gt;”.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;10) &lt;/strong&gt;Probamos que nuestra aplicación funciona correctamente, pulsando sobre el icono de “play” (&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_64FD4482.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_2B7A348B.png" width="32" height="29" /&gt;&lt;/a&gt;) y siguiendo los siguientes pasos:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_0AF2F4D9.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_42C538FC.png" width="199" height="244" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_0F88FF93.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_208D2D76.png" width="199" height="244" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_2D870D87.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_50D4022C.png" width="244" height="62" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;11)&lt;/strong&gt; Creamos el proyecto de despliegue en Windows Azure.&amp;#160; Aunque podemos hacerlos desde la opción de menú: “&lt;em&gt;File &amp;gt; New &amp;gt; Windows Azure Deployment Project&lt;/em&gt;”, lo haremos más rápido haciendo “click derecho” sobre el proyecto Java “MyJavaApp1” y ”&lt;strong&gt;&lt;em&gt;Windows Azure &amp;gt; Package for Windows Azure….” &lt;/em&gt;&lt;/strong&gt;e introduciendo el nombre “&lt;strong&gt;MyJavaApp1Azure&lt;/strong&gt;”. Seguidamente indicamos la información de nuestro JDK de Java y Servidor Tomcat y “&lt;strong&gt;Finish&lt;/strong&gt;”.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_7016A8FF.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_6ED21020.png" width="209" height="240" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image171_5F00_3B95D6B7.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image171_5F00_thumb_5F00_2C7EF7DD.png" width="209" height="247" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image201_5F00_4B556BBB.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image201_5F00_thumb_5F00_31150297.png" width="216" height="241" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;12)&lt;/strong&gt; Una vez tenemos nuestro desarrollo listo,&amp;#160; aseguramos que nuestro servidor de Tomcat se ejecuta correctamente ejecutando nuestro proyecto web:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image171_5F00_3BF1E3DF.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image171_5F00_thumb_5F00_2000AEE7.png" width="448" height="336" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image21_5F00_47777B51.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image21_5F00_thumb_5F00_01F27B26.png" width="371" height="215" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Nota&lt;/strong&gt;: Si se produce el error: “&lt;em&gt;Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds. If the server requires more time, try increasing the timeout in the server editor.”, &lt;/em&gt;revisaremos que los puertos 8080 y 8009, no están siendo usados. Para ello podemos ejecutar el comando “&lt;em&gt;&lt;strong&gt;netstat -n -f -a -o&lt;/strong&gt;&lt;/em&gt;” desde la línea de comandos y obtener el PID del proceso que esté usando dicho puerto y a continuación actuar en consecuencia. Para esta prueba, “maté” el proceso que lo utilizaba sin más. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;EJECUCIÓN EN EL EMULADOR LOCAL&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;13)&lt;/strong&gt; Al fin, ejecutamos Eclipse. En este punto es necesario, sin duda, tener instalado el Emulador de Windows Azure que podemos descargar desde la &lt;a href="http://www.windowsazure.com/en-us/develop/downloads/"&gt;página de descargas de Windows Azure&lt;/a&gt; (SDK Only), o directamente desde &lt;a href="http://go.microsoft.com/fwlink/?LinkID=254364&amp;amp;clcid=0x409"&gt;aquí&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_712AD077.png"&gt;&lt;strike&gt;&lt;/strike&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_57569A48.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_5B80720D.png" width="349" height="231" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_6AD3D41C.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_3803CDA8.png" width="307" height="62" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;DESPLIEGUE Y EJECUCIÓN EN WINDOWS AZURE&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;14)&lt;/strong&gt; Desplegamos/Publicamos el proyecto directamente en Azure: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;En la barra de tareas de Azure seleccionamos: “&lt;em&gt;&lt;strong&gt;Publish to Windows Azure Cloud&lt;/strong&gt;&lt;/em&gt;”. &lt;/li&gt;    &lt;li&gt;“&lt;strong&gt;Download…&lt;/strong&gt;”. Descargamos el fichero “&lt;strong&gt;.publishsettings&lt;/strong&gt;” con la información de nuestra subscripción de Azure.” &lt;/li&gt;    &lt;li&gt;“&lt;strong&gt;Import&lt;/strong&gt;…” Importamos el fichero descargado. &lt;/li&gt;    &lt;li&gt;“&lt;strong&gt;Next &amp;gt;&lt;/strong&gt;”. Configuramos la venta de “Remote Desktop Settings”. &lt;/li&gt;    &lt;li&gt;“&lt;strong&gt;Publish&lt;/strong&gt;” Esperamos a que finalice el despliegue.&amp;#160; Recordemos que&amp;#160; &lt;a href="http://ant.apache.org/"&gt;ANT&lt;/a&gt;, es la herramienta de empaquetado, configuración y preparación del entorno de despliegue, tanto en el Emulador como en el propio Azure. &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_5B50C24D.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_2880BBD9.png" width="244" height="60" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_20891977.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_2663BD10.png" width="288" height="276" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Nota&lt;/strong&gt;: ¡&lt;em&gt;Aunque he dejado el password del certificado por defecto, Password1, las credenciales de conexión remota las he modificado a mi antojo&lt;/em&gt;!. &lt;/p&gt;    &lt;p&gt;Tengamos en cuenta también, que la configuración anterior, puede ser modificada en cualquier momento, haciendo uso de las propiedades del proyecto de Azure (“MyJavaApp1Azure”):&lt;/p&gt;    &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_32190442.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_152FDF6D.png" width="399" height="269" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Durante el despliegue puede ocurrir que no se llegue a realizar. ¿Por qué? Pues muy buena pregunta, porque al menos yo no he encontrado ningún fichero de log en el que mirar.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_27983022.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_389C5E05.png" width="396" height="115" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Si el error persiste, hacemos el despliegue manual (a partir de los ficheros “&lt;strong&gt;.cspkg&lt;/strong&gt;” y “&lt;strong&gt;.cscfg&lt;/strong&gt;” generados desde la opción “&lt;em&gt;Build Cloud Package for Windows Azure&lt;/em&gt;”) desde el portal de Windows Azure, bien desde local o bien desde el storage, donde previamente habremos realizado la subida, por ejemplo con “&lt;a href="http://azurestorageexplorer.codeplex.com/"&gt;Azure Storage Explorer&lt;/a&gt;”.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_654517DE.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_0B3AC835.png" width="388" height="315" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;15)&lt;/strong&gt; Esperamos a que finalice el proceso de subida de los ficheros al Storage de Azure y el despliegue, y tras ello, al acceder a la url “&lt;em&gt;http://juanluelguerre.cloudapp.net/&lt;/em&gt;”, podremos ver como el Servidor Apache Tomcat ha sido instalado. Si a la misma añadimos la ruta de nuestra aplicación, “&lt;em&gt;http://juanluelguerre.cloudapp.net/&lt;strong&gt;MyJavaApp1/index.jsp&lt;/strong&gt;&lt;/em&gt;”, Voilá, tenemos nuestra aplicación Java ejecutándose en Azure !!!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_4A2C48D0.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_660D57FB.png" width="358" height="265" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_67FAA704.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_4E2670D5.png" width="412" height="101" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;16)&lt;/strong&gt; Si accedemos al portal, podremos ver nuestras instancias en ejecución. Y, además, podremos conectarnos vía terminal server con cada una de ellas.&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_462ECE73.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_0C3F8B87.png" width="274" height="193" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_60228E95.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_6A078000.png" width="217" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Por último, ¿Qué ocurre si el servidor Web en lugar de ser Tomcat es otro, ej.: Jetty, etc….? Aunque el automatismo no es exactamente igual, las posibilidades son las mismas. Aquí os dejo por el momento algunos enlaces relacionados con Jetty: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://blogs.msdn.com/b/windowsazure/archive/2010/04/14/run-java-with-jetty-in-windows-azure.aspx" href="http://blogs.msdn.com/b/windowsazure/archive/2010/04/14/run-java-with-jetty-in-windows-azure.aspx"&gt;http://blogs.msdn.com/b/windowsazure/archive/2010/04/14/run-java-with-jetty-in-windows-azure.aspx&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="http://archive.msdn.microsoft.com/winazurejetty" href="http://archive.msdn.microsoft.com/winazurejetty"&gt;http://archive.msdn.microsoft.com/winazurejetty&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Espero una vez más, haber despertado el interés y, por supuesto, que el post haya sido y sea de utilidad.&lt;/p&gt;  &lt;p&gt;Saludos and Happy Azure from Java.&amp;#160; FELIZ NAVIDAD A TOD@S    &lt;br /&gt;Juanlu&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=207840" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Java/default.aspx">Java</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Tomcat/default.aspx">Tomcat</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Eclipse/default.aspx">Eclipse</category></item><item><title>Hadoop On Azure Mahout: Algoritmos de recomendación, Clasificaciones y Agrupaciones (Clustering)</title><link>http://geeks.ms/blogs/jlguerrero/archive/2012/11/07/hadoop-on-azure-mahout-algoritmos-de-recomendaci-243-n-clasificaciones-y-agrupaciones-clustering.aspx</link><pubDate>Wed, 07 Nov 2012 18:52:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:207349</guid><dc:creator>Juanlu,ElGuerre</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jlguerrero/rsscomments.aspx?PostID=207349</wfw:commentRss><comments>http://geeks.ms/blogs/jlguerrero/archive/2012/11/07/hadoop-on-azure-mahout-algoritmos-de-recomendaci-243-n-clasificaciones-y-agrupaciones-clustering.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/Hadoop_2D00_Mahout_5F00_020687AC.jpg"&gt;&lt;img height="104" width="244" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/Hadoop_2D00_Mahout_5F00_thumb_5F00_603AAF1A.jpg" alt="Hadoop-Mahout" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;float:left;padding-top:0px;padding-left:0px;margin:5px 10px 5px 5px;display:inline;padding-right:0px;border-top-width:0px;" title="Hadoop-Mahout" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Una vez que ya conocemos los conceptos y componentes principales de Hadoop seg&amp;uacute;n vimos en los posts anteriores:&lt;/p&gt;
&lt;li&gt;&lt;a href="http://geeks.ms/blogs/jlguerrero/archive/2012/10/07/windows-azure-hadoop-understanding-diving-and-solving-issues.aspx"&gt;Hadoop&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://geeks.ms/blogs/jlguerrero/archive/2012/10/10/windows-azure-hadoop-understanding-diving-and-solving-issues-ii-hiveql.aspx"&gt;HiveQL&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://geeks.ms/blogs/jlguerrero/archive/2012/10/17/windows-azure-hadoop-understanding-diving-amp-solving-issues-iii-consumiendo-hive-desde-excel-power-pivot-y-power-view.aspx"&gt;Hive desde Excel, Power Pivot y Power View&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://geeks.ms/blogs/jlguerrero/archive/2012/10/23/windows-azure-hadoop-understanding-diving-amp-solving-issues-iv-sql-to-hadoop-sqoop-i.aspx"&gt;Sqoop I&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://geeks.ms/blogs/jlguerrero/archive/2012/10/23/windows-azure-hadoop-understanding-diving-amp-solving-issues-iv-sql-to-hadoop-sqoop-ii.aspx"&gt;Sqoop II&lt;/a&gt;
&lt;p&gt;Continuaremos probando m&amp;aacute;s funcionalidad de y para Hadoop on Azure. En esta ocas&amp;iacute;&amp;oacute;n &lt;a href="http://mahout.apache.org/"&gt;Mahout&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;&lt;em&gt;La verdad es que cuando la semana pasada me dispon&amp;iacute;a a indagar sobre el tema de mahout, no me imaginaba que la Intenligencia Artifical estuviera tan cerca, durante la carrera pensaba que este tipo de algoritmos s&amp;oacute;lo eran teor&amp;iacute;a y estar&amp;iacute;an lejos de acercarse a una realidad, pero sinceramente, creo que me equivoqu&amp;eacute;&lt;/em&gt;&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;iquest;Que es Mahout?&lt;/p&gt;
&lt;p&gt;&lt;a href="http://es.wikipedia.org/wiki/Mahout"&gt;Mahout&lt;/a&gt; proviene del Hindi, mahaut, &amp;ldquo;montador de elefantes&amp;rdquo;, de ah&amp;iacute; el logotipo.&amp;nbsp; La labor de un Mahout es permanecer desde joven vinculado a un elefante tambi&amp;eacute;n joven a fin de que tanto jinete como elefante se conozcan mutuamente a lo largo de toda la vida. &amp;iexcl;Se podr&amp;iacute;a sacar de aqu&amp;iacute; una peli, seguro,jeje&amp;hellip;! T&amp;eacute;cnicamente hablando, Apache Mahout,es una &lt;a href="http://en.wikipedia.org/wiki/Machine_learning"&gt;m&amp;aacute;quina de aprendizaje&lt;/a&gt; cuyo objetivo consiste en construir bibliotecas escalables de aprendizaje autom&amp;aacute;tico. &lt;/p&gt;
&lt;p&gt;Los &lt;a href="http://en.wikipedia.org/wiki/Recommender_system"&gt;sistemas de recomendaci&amp;oacute;n&lt;/a&gt; son alguna de las aplicaciones de aprendizaje m&amp;aacute;s conocida hoy d&amp;iacute;a. Su objetivo es tratar de presentar al usuario items de informaci&amp;oacute;n: pel&amp;iacute;culas, m&amp;uacute;sica, libros, noticias, p&amp;aacute;ginas web, etc, sobre las que el usuario est&amp;aacute; interesado. Todo ello basado en su comportamiento previo. Estos algoritmos proporcionan una funcionalidad importante para muchos sitios de redes sociales , compras on-line, streaming, y otros sitios de Internet. Mahout ofrece un motor de recomendaci&amp;oacute;n &lt;strong&gt;out-of-the-box&lt;/strong&gt; que es f&amp;aacute;cil de usar, tiene muchas caracter&amp;iacute;sticas &amp;uacute;tiles, y es escalable en Hadoop.&amp;nbsp; Algunas de las aplicaciones m&amp;aacute;s conocidas que utilizan estos algoritmos, son &lt;a href="http://en.wikipedia.org/wiki/Pandora_Radio"&gt;Pandora Radio&lt;/a&gt; o&amp;nbsp; &lt;a href="http://en.wikipedia.org/wiki/Netflix"&gt;Netflix&lt;/a&gt; o incluso la propia web de Amazon que ofrece/recomienda a sus clientes productos a partir de los ya comprados por otros.&lt;/p&gt;
&lt;p&gt;A continuaci&amp;oacute;n veremos las t&amp;eacute;cnicas que A continuaci&amp;oacute;n veremos las t&amp;eacute;cnicas que por ahora nos ofrece Hadoop On Azure, es decir, Clasificaci&amp;oacute;n y Agrupaci&amp;oacute;n (Clustering).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;1) Clasificaci&amp;oacute;n&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Partamos del propio ejemplo que nos presenta Hadoop o directamente desde &lt;a&gt;aqu&amp;iacute;&lt;/a&gt;. Este ejemplo esta basado 100% en el &lt;a href="https://cwiki.apache.org/confluence/display/MAHOUT/Twenty+Newsgroups"&gt;ejemplo del website de Mahout&lt;/a&gt; el cual consiste en: &lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;ldquo;The 20 Newsgroups data set is a collection of approximately 20,000 newsgroup documents, partitioned (nearly) evenly across 20 different newsgroups. The 20 newsgroups collection has become a popular data set for experiments in text applications of machine learning techniques, such as text classification and text clustering. We will use Mahout Bayes Classifier to create a model that would classify a new document into one of the 20 newsgroup.&amp;rdquo;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Para ello tal y como nos dice el tutorial y desde el Head Node al que accedemos remotamente:&lt;/p&gt;
&lt;p&gt;1) &lt;a href="http://people.csail.mit.edu/jrennie/20Newsgroups/20news-bydate.tar.gz"&gt;Descargamos del fichero de datos&lt;/a&gt; en la ruta &amp;ldquo;&amp;ldquo;C:\apps\dist\mahout-0.5\examples\bin\work&amp;rdquo; &lt;/p&gt;
&lt;p&gt;2) Descomprimimos el fichero &amp;ldquo;.tar.gz&amp;rdquo; en la capeta: &amp;ldquo;C:\apps\dist\mahout-0.5\examples\bin\work\20news-bydate&amp;rdquo; &lt;/p&gt;
&lt;p&gt;3) Ejecutamos el &amp;ldquo;.cmd&amp;rdquo; c:\apps\dist\mahout-0.5\examples\bin\build-20news-bayes.cmd&amp;rdquo; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nota&lt;/strong&gt;: Aunque esperamos que funcione, resulta que no es as&amp;iacute;, parece que se trata de alg&amp;uacute;n error de configuraci&amp;oacute;n en los scripts de &amp;ldquo;Mahout&amp;rdquo; para Azure on Hadoop o, incluso de alguna incompatibilidad de versiones entre los comandos Mahout y Hadoop.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_5123D040.png"&gt;&lt;img height="356" width="451" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_7568B4C2.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Para solucionar el problema modificamos el script &amp;ldquo;build-20news-bayes.cmd&amp;rdquo; sustituyendo la llamada al comando Mahout por la llamada directa a hadoop (realmente es lo que hace internamente el comando Mahout), es decir,&lt;/p&gt;
&lt;p&gt;Sustituimos esto:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span style="background-color:#ffff00;"&gt;&lt;/span&gt;&lt;span style="background-color:#ffff00;"&gt;call mahout.cmd&lt;/span&gt; org.apache.mahout.classifier.bayes.preparetwentynewsgroups ^ &lt;br /&gt;&lt;span style="background-color:#ffff00;"&gt;&lt;/span&gt;&amp;nbsp; -p %work_path%\20news-bydate-train ^ &lt;br /&gt;&amp;nbsp; -o %work_path%\bayes-train-input ^ &lt;br /&gt;&amp;nbsp; -a org.apache.mahout.vectorizer.defaultanalyzer ^ &lt;br /&gt;&amp;nbsp; -c utf-8&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffff00;"&gt;call mahout.cmd&lt;/span&gt; org.apache.mahout.classifier.bayes.preparetwentynewsgroups ^ &lt;br /&gt;&amp;nbsp; -p %work_path%\20news-bydate-test ^ &lt;br /&gt;&amp;nbsp; -o %work_path%\bayes-test-input ^ &lt;br /&gt;&amp;nbsp; -a org.apache.mahout.vectorizer.defaultanalyzer ^ &lt;br /&gt;&amp;nbsp; -c utf-8 &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;por esto otro:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span style="background-color:#ffff00;"&gt;call %HADOOP_HOME%\bin\hadoop jar %MAHOUT_BIN_PATH%..\mahout-examples-0.5-job.jar ^ &lt;br /&gt;org.apache.mahout.driver.MahoutDriver ^&lt;/span&gt; &lt;br /&gt;org.apache.mahout.classifier.bayes.PrepareTwentyNewsgroups ^ &lt;br /&gt;-p %WORK_PATH%20news-bydate-train ^ &lt;br /&gt;-o %WORK_PATH%bayes-train-input ^ &lt;br /&gt;-a org.apache.mahout.vectorizer.DefaultAnalyzer ^ &lt;br /&gt;-c UTF-8&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffff00;"&gt;call %HADOOP_HOME%\bin\hadoop jar %MAHOUT_BIN_PATH%..\mahout-examples-0.5-job.jar ^ &lt;br /&gt;org.apache.mahout.driver.MahoutDriver ^&lt;/span&gt; &lt;br /&gt;org.apache.mahout.classifier.bayes.PrepareTwentyNewsgroups ^ &lt;br /&gt;&amp;nbsp; -p %WORK_PATH%20news-bydate-test ^ &lt;br /&gt;&amp;nbsp; -o %WORK_PATH%bayes-test-input ^ &lt;br /&gt;&amp;nbsp; -a org.apache.mahout.vectorizer.DefaultAnalyzer ^ &lt;br /&gt;&amp;nbsp; -c UTF-8 &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;De todas formas, os dejo el contenido completo del fichero &amp;ldquo;&lt;strong&gt;build-20news-bayes.cmd&lt;/strong&gt;&amp;rdquo; con el problema solucionado.&lt;/p&gt;
&lt;div style="overflow:auto;cursor:text;font-size:8pt;height:351px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;text-align:left;margin:20px 0px 10px;line-height:12pt;max-height:200px;width:97.5%;background-color:#f4f4f4;border:silver 1px solid;padding:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;" id="codeSnippet"&gt;
&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;@echo off&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;@rem&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;@rem Licensed &lt;span style="color:#0000ff;"&gt;to&lt;/span&gt; the Apache Software Foundation (ASF) under one or more&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;@rem contributor license agreements.  See the NOTICE file distributed &lt;span style="color:#0000ff;"&gt;with&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;@rem this work &lt;span style="color:#0000ff;"&gt;for&lt;/span&gt; additional information regarding copyright ownership.&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;@rem The ASF licenses this file &lt;span style="color:#0000ff;"&gt;to&lt;/span&gt; You under the Apache License, Version 2.0&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;@rem (the &lt;span style="color:#006080;"&gt;&amp;quot;License&amp;quot;&lt;/span&gt;)&lt;span style="color:#008000;"&gt;; you may not use this file except in compliance with&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;@rem the License.  You may obtain a copy of the License at&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;@rem&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;@rem     http://www.apache.org/licenses/LICENSE-2.0&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;@rem&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;@rem Unless required by applicable law or agreed &lt;span style="color:#0000ff;"&gt;to&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; writing, software&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;@rem distributed under the License is distributed on an &lt;span style="color:#006080;"&gt;&amp;quot;AS IS&amp;quot;&lt;/span&gt; BASIS,&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;@rem See the License &lt;span style="color:#0000ff;"&gt;for&lt;/span&gt; the specific language governing permissions and&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;@rem limitations under the License.&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;@rem&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;@rem&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;@rem Downloads the 20newsgroups dataset, trains and tests a bayes classifier. &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;@rem&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;@rem &lt;span style="color:#0000ff;"&gt;To&lt;/span&gt; run:  change into the mahout directory and type:&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;@rem  examples/bin/build-20news.sh&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;setlocal enabledelayedexpansion&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;set SCRIPT_PATH=%~dp0&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;set MAHOUT_BIN_PATH=%SCRIPT_PATH%..\..\bin\&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;set WORK_PATH=%SCRIPT_PATH%work\20news-bydate\&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;set HDFS_WORK_PATH=examples/bin/work/20news-bydate/&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; not exist %WORK_PATH% (&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;    mkdir %WORK_PATH%&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;)&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; not exist %WORK_PATH%20news-bydate-train (&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;     goto :ErrorMessage&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;)&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; not exist %WORK_PATH%20news-bydate-test (&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;     goto :ErrorMessage&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;)&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;pushd %MAHOUT_BIN_PATH%&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;REM call mahout.cmd org.apache.mahout.classifier.bayes.PrepareTwentyNewsgroups ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;  REM -p %WORK_PATH%\20news-bydate-train ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;  REM -o %WORK_PATH%\bayes-train-input ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;  REM -a org.apache.mahout.vectorizer.DefaultAnalyzer ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;  REM -c UTF-8&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;REM call mahout.cmd org.apache.mahout.classifier.bayes.PrepareTwentyNewsgroups ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;  REM -p %WORK_PATH%\20news-bydate-test ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;  REM -o %WORK_PATH%\bayes-test-input ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;  REM -a org.apache.mahout.vectorizer.DefaultAnalyzer ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;  REM -c UTF-8 &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;  &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;call %HADOOP_HOME%\bin\hadoop jar %MAHOUT_BIN_PATH%..\mahout-examples-0.5-job.jar ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;org.apache.mahout.driver.MahoutDriver ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;org.apache.mahout.classifier.bayes.PrepareTwentyNewsgroups ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;-p %WORK_PATH%20news-bydate-train ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;-o %WORK_PATH%bayes-train-input ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;-a org.apache.mahout.vectorizer.DefaultAnalyzer ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;-c UTF-8&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;call %HADOOP_HOME%\bin\hadoop jar %MAHOUT_BIN_PATH%..\mahout-examples-0.5-job.jar ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;org.apache.mahout.driver.MahoutDriver ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;org.apache.mahout.classifier.bayes.PrepareTwentyNewsgroups ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;  -p %WORK_PATH%20news-bydate-test ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;  -o %WORK_PATH%bayes-test-input ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;  -a org.apache.mahout.vectorizer.DefaultAnalyzer ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;  -c UTF-8 &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;  &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;@rem mapreduce test method used on hadoop&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;set TEST_METHOD=&lt;span style="color:#006080;"&gt;&amp;quot;mapreduce&amp;quot;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;call hadoop.cmd dfs -rmr ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;      %HDFS_WORK_PATH%bayes-train-input &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;call hadoop.cmd dfs -rmr ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;      %HDFS_WORK_PATH%bayes-test-input&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;call hadoop.cmd dfs -put ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;      %WORK_PATH%\bayes-train-input ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;      %HDFS_WORK_PATH%bayes-train-input &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;call hadoop.cmd dfs -put ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;      %WORK_PATH%\bayes-test-input ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;      %HDFS_WORK_PATH%bayes-test-input&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;      &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;REM call mahout.cmd trainclassifier ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;  REM -i %HDFS_WORK_PATH%bayes-train-input ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;  REM -o %HDFS_WORK_PATH%bayes-model ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;  REM -type bayes ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;  REM -ng 1 ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;  REM -source hdfs&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;REM call mahout.cmd testclassifier ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;  REM -m %HDFS_WORK_PATH%bayes-model ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;  REM -d %HDFS_WORK_PATH%bayes-test-input ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;  REM -type bayes ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;  REM -ng 1 ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;  REM -source hdfs ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;  REM -method %TEST_METHOD%&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;  &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;call %HADOOP_HOME%\bin\hadoop jar %MAHOUT_BIN_PATH%..\mahout-examples-0.5-job.jar ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;org.apache.mahout.driver.MahoutDriver ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;trainclassifier ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;  -i %HDFS_WORK_PATH%bayes-train-input ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;  -o %HDFS_WORK_PATH%bayes-model ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;  -type bayes ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;  -ng 1 ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;  -source hdfs&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;call %HADOOP_HOME%\bin\hadoop jar %MAHOUT_BIN_PATH%..\mahout-examples-0.5-job.jar ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;org.apache.mahout.driver.MahoutDriver ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;testclassifier ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;  -m %HDFS_WORK_PATH%bayes-model ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;  -d %HDFS_WORK_PATH%bayes-test-input ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;  -type bayes ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;  -ng 1 ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;  -source hdfs ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;  -method %TEST_METHOD%&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;  &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;popd&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;goto :eof&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;:ErrorMessage&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;echo Please download 20news-bydate.tar.gz from:&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;echo http://people.csail.mit.edu/jrennie/20Newsgroups/20news-bydate.tar.gz&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;echo and extract it under:&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;echo %WORK_PATH%&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;4) Solucionado el problema ahora si, el resultado esperado es la siguiente &amp;ldquo;&lt;strong&gt;&lt;a href="http://en.wikipedia.org/wiki/Confusion_matrix"&gt;Confusion Matrix&lt;/a&gt;&lt;/strong&gt;&amp;rdquo;.&amp;nbsp; Esta misma matriz puede verse en el ejemplo de partida de &lt;a href="https://cwiki.apache.org/confluence/display/MAHOUT/Twenty+Newsgroups"&gt;Apache Mohout&lt;/a&gt; que indic&amp;aacute;bamos antes.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_412465AF.png"&gt;&lt;img height="602" width="462" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_1201DE3E.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;En &lt;a href="http://faculty.smu.edu/tfomby/eco5385/lecture/Confusion%20Matrix.pdf"&gt;este ejemplo&lt;/a&gt;, puede verse como funciona una &amp;ldquo;Confusion Matrix&amp;rdquo; y un poco de teor&amp;iacute;a.&lt;/p&gt;
&lt;p&gt;Adicionalmente, &lt;a href="http://www.windowsazure.com/en-us/develop/net/tutorials/hadoop-recommendation-engine/"&gt;aqu&amp;iacute;&lt;/a&gt; tenemos otro ejemplo de clasificaci&amp;oacute;n (en este caso m&amp;aacute;s concretamente, un ejemplo de algoritmo de recomendaci&amp;oacute;n).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;2) Agrupaci&amp;oacute;n(Clustering)&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Partimos nuevamente del propio ejemplo que nos presenta Hadoop o directamente desde &lt;a href="http://social.technet.microsoft.com/wiki/contents/articles/13812.the-hadoop-on-azure-mahout-clustering-sample-tutorial.aspx"&gt;aqu&amp;iacute;&lt;/a&gt;. Este ejemplo esta basado 100% en el &lt;a href="https://cwiki.apache.org/confluence/display/MAHOUT/Clustering+of+synthetic+control+data"&gt;ejemplo del website de Mahout&lt;/a&gt; el cual consiste en: &lt;/p&gt;
&lt;p&gt;&amp;ldquo;The example will demonstrate clustering of control charts which exhibits a time series. &lt;a href="http://en.wikipedia.org/wiki/Control_chart"&gt;Control charts &lt;/a&gt;are tools used to determine whether or not a manufacturing or business process is in a state of statistical control. Such control charts are generated / simulated over equal time interval and available for use in UCI machine learning database. The data is described &lt;a href="http://archive.ics.uci.edu/ml/databases/synthetic_control/synthetic_control.data.html"&gt;here &lt;/a&gt;.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Para ello y como nos dice el tutorial:&lt;/p&gt;
&lt;p&gt;1) Descargamos el fichero &amp;ldquo;http://archive.ics.uci.edu/ml/databases/synthetic_control/synthetic_control.data&amp;rdquo; y lo situamos en la carpeta &amp;ldquo;C:\apps\dist\mahout-0.5\examples\bin\work\clustering\&amp;rdquo; &lt;/p&gt;
&lt;p&gt;2) Ejecutamos &amp;ldquo;C:\apps\dist\mahout-0.5\examples\bin\build-cluster-syntheticcontrol.cmd&amp;rdquo; y elegimos el tipo de &amp;ldquo;clustering&amp;rdquo;:&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_39E4DD9D.png"&gt;&lt;img height="106" width="511" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_18F16AF6.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;3) De la misma manera que para el ejemplo anterior, volvemos a tener problemas as&amp;iacute; que tenemos que hacer algunos ajustes: &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;Creamos un directorio &amp;ldquo;testdata&amp;rdquo; en HDFS desde la consola interactiva de Javascript ejecutando el comando &amp;rdquo;&lt;em&gt;&lt;strong&gt;#mkdir testdata&lt;/strong&gt;&lt;/em&gt;&amp;rdquo; &lt;/li&gt;
&lt;li&gt;Modificamos el script (.cmd) &amp;ldquo;build-cluster-syntheticcontrol.cmd&amp;rdquo; siguiendo las misma pautas que para el ejemplo de clasificaci&amp;oacute;n,
&lt;p&gt;Sustituyendo esto:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;call mahout hadoop fs -rmr %HDFS_WORK_PATH% &lt;br /&gt;call mahout hadoop fs -mkdir %HDFS_WORK_PATH% &lt;br /&gt;call mahout hadoop fs -put %WORK_PATH%\synthetic_control.data %HDFS_WORK_PATH% &lt;br /&gt;call mahout org.apache.mahout.clustering.syntheticcontrol.%_clustertype%.Job&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Por esto otro:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;call %HADOOP_HOME%\bin\hadoop jar %MAHOUT_BIN_PATH%..\mahout-examples-0.5-job.jar org.apache.mahout.driver.MahoutDriver ^ &lt;br /&gt;&amp;nbsp;&amp;nbsp; hadoop fs -rmr %HDFS_WORK_PATH% &lt;br /&gt;call %&lt;em&gt;HADOOP_HOME%\bin\hadoop jar %MAHOUT_BIN_PATH%..\mahout-examples-0.5-job.jar org.apache.mahout.driver.MahoutDriver ^ &lt;br /&gt;&amp;nbsp;&amp;nbsp; hadoop fs -mkdir %HDFS_WORK_PATH% &lt;br /&gt;call %HADOOP_HOME%\bin\hadoop jar %MAHOUT_BIN_PATH%..\mahout-examples-0.5-job.jar org.apache.mahout.driver.MahoutDriver ^ &lt;br /&gt;&amp;nbsp;&amp;nbsp; hadoop fs -put %WORK_PATH%\synthetic_control.data %HDFS_WORK_PATH% &lt;br /&gt;call %HADOOP_HOME%\bin\hadoop jar %MAHOUT_BIN_PATH%..\mahout-examples-0.5-job.jar org.apache.mahout.driver.MahoutDriver ^ &lt;br /&gt;&amp;nbsp;&amp;nbsp; org.apache.mahout.clustering.syntheticcontrol.%_clustertype%.Job&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Nuevamente, aqu&amp;iacute; dejo el fichero &amp;ldquo;build-cluster-syntheticcontrol.cmd&amp;rdquo; con el problema ya solucionado.&lt;/p&gt;
&lt;div style="overflow:auto;cursor:text;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;text-align:left;margin:20px 0px 10px;line-height:12pt;max-height:200px;width:97.5%;background-color:#f4f4f4;border:silver 1px solid;padding:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;" id="codeSnippet"&gt;
&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;@echo off&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;@rem&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;@rem Licensed &lt;span style="color:#0000ff;"&gt;to&lt;/span&gt; the Apache Software Foundation (ASF) under one or more&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;@rem contributor license agreements.  See the NOTICE file distributed &lt;span style="color:#0000ff;"&gt;with&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;@rem this work &lt;span style="color:#0000ff;"&gt;for&lt;/span&gt; additional information regarding copyright ownership.&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;@rem The ASF licenses this file &lt;span style="color:#0000ff;"&gt;to&lt;/span&gt; You under the Apache License, Version 2.0&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;@rem (the &lt;span style="color:#006080;"&gt;&amp;quot;License&amp;quot;&lt;/span&gt;)&lt;span style="color:#008000;"&gt;; you may not use this file except in compliance with&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;@rem the License.  You may obtain a copy of the License at&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;@rem&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;@rem     http://www.apache.org/licenses/LICENSE-2.0&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;@rem&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;@rem Unless required by applicable law or agreed &lt;span style="color:#0000ff;"&gt;to&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; writing, software&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;@rem distributed under the License is distributed on an &lt;span style="color:#006080;"&gt;&amp;quot;AS IS&amp;quot;&lt;/span&gt; BASIS,&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;@rem See the License &lt;span style="color:#0000ff;"&gt;for&lt;/span&gt; the specific language governing permissions and&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;@rem limitations under the License.&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;@rem&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;@rem&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;@rem Downloads the Synthetic control dataset and prepares it &lt;span style="color:#0000ff;"&gt;for&lt;/span&gt; clustering&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;@rem&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;@rem &lt;span style="color:#0000ff;"&gt;To&lt;/span&gt; run:  change into the mahout directory and type:&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;@rem  examples/bin/cluster-syntheticcontrol.sh&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;setlocal enabledelayedexpansion&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;set SCRIPT_PATH=%~dp0&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;set MAHOUT_BIN_PATH=%SCRIPT_PATH%..\..\bin\&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;set WORK_PATH=%SCRIPT_PATH%work\clustering\&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;set HDFS_WORK_PATH=testdata&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; not exist %WORK_PATH% (&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;    mkdir %WORK_PATH%&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;)&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; not exist %WORK_PATH%synthetic_control.data (&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;    echo Please downloading Synthetic control data from:&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;    echo http://archive.ics.uci.edu/ml/databases/synthetic_control/synthetic_control.data&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;    echo and put it under:&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;    echo %WORK_PATH%synthetic_control.data&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;    goto :end&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;)&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;:main&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;echo &lt;span style="color:#006080;"&gt;&amp;quot;Please select a number to choose the corresponding clustering algorithm&amp;quot;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;echo &lt;span style="color:#006080;"&gt;&amp;quot;1. canopy clustering&amp;quot;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;echo &lt;span style="color:#006080;"&gt;&amp;quot;2. kmeans clustering&amp;quot;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;echo &lt;span style="color:#006080;"&gt;&amp;quot;3. fuzzykmeans clustering&amp;quot;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;echo &lt;span style="color:#006080;"&gt;&amp;quot;4. dirichlet clustering&amp;quot;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;echo &lt;span style="color:#006080;"&gt;&amp;quot;5. meanshift clustering&amp;quot;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;set /p _choice=&lt;span style="color:#006080;"&gt;&amp;quot;Enter your choice:&amp;quot;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;  &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;@rem set _algorithms=canopy kmeans fuzzykmeans dirichlet meanshift&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; [%_choice%] == [1] (&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;    set _clustertype=canopy&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;) &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt; (&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; [%_choice%] == [2] (&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;        set _clustertype=kmeans&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;    ) &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt; (&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; [%_choice%] == [3] (&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;            set _clustertype=fuzzykmeans&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;        ) &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt; (&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;            &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; [%_choice%] == [4] (&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;                set _clustertype=dirichlet&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;            ) &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt; (&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;                &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; [%_choice%] == [5] (&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;                    set _clustertype=meanshift&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;                ) &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt; (&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;                    echo &lt;span style="color:#006080;"&gt;&amp;quot;Invalid choice %_choice%. Please try again&amp;quot;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;                    goto :end&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;)))))&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;echo &lt;span style="color:#006080;"&gt;&amp;quot;ok. You chose %_choice% and we&amp;#39;ll use %_clustertype% Clustering&amp;quot;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;pushd %MAHOUT_BIN_PATH%&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;echo &lt;span style="color:#006080;"&gt;&amp;quot;DFS is healthy... &amp;quot;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;echo &lt;span style="color:#006080;"&gt;&amp;quot;Uploading Synthetic control data to HDFS&amp;quot;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;@REM call mahout hadoop fs -rmr %HDFS_WORK_PATH%&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;@REM call mahout hadoop fs -mkdir %HDFS_WORK_PATH%&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;@REM call mahout hadoop fs -put %WORK_PATH%\synthetic_control.data %HDFS_WORK_PATH%&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;call %HADOOP_HOME%\bin\hadoop jar %MAHOUT_BIN_PATH%..\mahout-examples-0.5-job.jar org.apache.mahout.driver.MahoutDriver ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;hadoop fs -rmr %HDFS_WORK_PATH%&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;call %HADOOP_HOME%\bin\hadoop jar %MAHOUT_BIN_PATH%..\mahout-examples-0.5-job.jar org.apache.mahout.driver.MahoutDriver ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;hadoop fs -mkdir %HDFS_WORK_PATH%&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;call %HADOOP_HOME%\bin\hadoop jar %MAHOUT_BIN_PATH%..\mahout-examples-0.5-job.jar org.apache.mahout.driver.MahoutDriver ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;hadoop fs -put %WORK_PATH%\synthetic_control.data %HDFS_WORK_PATH%&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;echo &lt;span style="color:#006080;"&gt;&amp;quot;Successfully Uploaded Synthetic control data to HDFS &amp;quot;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;@REM call mahout org.apache.mahout.clustering.syntheticcontrol.%_clustertype%.Job&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;call %HADOOP_HOME%\bin\hadoop jar %MAHOUT_BIN_PATH%..\mahout-examples-0.5-job.jar org.apache.mahout.driver.MahoutDriver ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;org.apache.mahout.clustering.syntheticcontrol.%_clustertype%.Job&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;:end&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;popd&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;4) Una vez que hemos lanzado este script, ejecutamos los dos siguientes para la comprobaci&amp;oacute;n y obtenci&amp;oacute;n de resultados:&lt;/p&gt;
&lt;p&gt;Para verificar que el resultado se encuentra en HDFS, ejecutamos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;&lt;strong&gt;&lt;em&gt;hadoop fs -lsr output&lt;/em&gt;&lt;/strong&gt;&amp;rdquo;, o, &lt;/li&gt;
&lt;li&gt;&amp;ldquo;&lt;strong&gt;&lt;em&gt;#ls output&lt;/em&gt;&lt;/strong&gt;&amp;rdquo;, desde la consola interactiva de Java Script. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para descargar el resultado desde HDFS en un directorio local del Head Node del cluster de Hadoop: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;&lt;strong&gt;&lt;em&gt;hadoop fs -get output C:\apps\dist\mahout-0.5\examples\bin\work\clustering&lt;/em&gt;&lt;/strong&gt;&amp;rdquo; &lt;/li&gt;
&lt;li&gt;Veremos que la ruta &amp;ldquo;C:\Apps\dist&lt;span style="font-size:xx-small;"&gt;\mahout-0.5\examples\bin\work&lt;/span&gt;\clustering&amp;rdquo; contiene la carpeta &amp;ldquo;output&amp;rdquo; como resultado del comando anterior. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;5) A continuaci&amp;oacute;n, analizaremos los datos obtenidos utilizando el par&amp;aacute;metro de &lt;a href="https://cwiki.apache.org/confluence/display/MAHOUT/Cluster+Dumper"&gt;Mahout &amp;ldquo;clusterdump&amp;rdquo;.&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Creamos un nuevo script: &lt;/li&gt;
&lt;/ul&gt;
&lt;div style="overflow:auto;cursor:text;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;text-align:left;margin:20px 0px 10px;line-height:12pt;max-height:200px;width:97.5%;background-color:#f4f4f4;border:silver 1px solid;padding:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;" id="codeSnippet"&gt;
&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;@echo off&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;setlocal enabledelayedexpansion&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;set SCRIPT_PATH=%~dp0&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;set MAHOUT_BIN_PATH=%SCRIPT_PATH%..\..\bin\&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;set MAHOUT_HOME=%MAHOUT_BIN_PATH%..\&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;pushd %MAHOUT_BIN_PATH%&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;call %HADOOP_HOME%\bin\hadoop jar %MAHOUT_BIN_PATH%..\mahout-examples-0.5-job.jar ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;   org.apache.mahout.driver.MahoutDriver ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;   clusterdump ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;   --seqFileDir output/clusters-0 ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;   --pointsDir output/clusteredPoints ^&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;   --output clusteranalyze.txt&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;popd&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Nota&lt;/strong&gt;: En vista de que el resultado esperado para este ejemplo no es satisfactorio, puesto que no obtendremos resultados, en este &lt;a href="https://cwiki.apache.org/MAHOUT/cluster-dumper.html"&gt;enlace&lt;/a&gt; podemos ver un an&amp;aacute;lisis de los resultados de manera gen&amp;eacute;rica as&amp;iacute; como el contenido del fichero de salida, &amp;ldquo;clusteranalyze.txt&amp;rdquo;.&amp;nbsp; Este fichero lo encontraremos en la carpeta&amp;nbsp; &amp;ldquo;C:\apps\dist\mahout-0.5\bin\&amp;rdquo; una vez hayamos ejecutado este &amp;uacute;ltimo script.&lt;/p&gt;
&lt;p&gt;Adicionalmente, de las 5 opciones que presenta este &amp;uacute;ltimo ejemplo s&amp;oacute;lo la primera y las dos &amp;uacute;ltimas funcionan, el resto producen errores y como ya hemos comentado, es posible que sea debido a las incompatibilidades para las versiones actuales entre Hadoop y Mahout. Siempre que ocurran estos problemas podemos intentar solucionarlo descargando y actualizando sus nuevas versiones: &lt;a href="http://hadoop.apache.org/releases.html"&gt;Hadoop&lt;/a&gt; y &lt;a href="https://cwiki.apache.org/confluence/display/MAHOUT/Downloads"&gt;Mahout&lt;/a&gt;.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Importante&lt;/strong&gt;: Si optamos por actualizar las versiones, tengamos en cuenta lo siguiente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Es posible que las nuevas versiones no contengan los mismo ejemplos. &lt;/li&gt;
&lt;li&gt;Los script (.cmd) adaptados a Windows, tendremos que generarlos manualmente a partir de los &amp;ldquo;.sh&amp;rdquo; de Linux/unix que se distribuyen con la versi&amp;oacute;n original de apache. Por ejemplo, para mahout descargaremos la nueva versi&amp;oacute;n, &lt;a href="http://apache.rediris.es/mahout/0.7/"&gt;mahot-distribution-0.7&lt;/a&gt;, y la renombraremos por &amp;ldquo;mahout-0.7&amp;rdquo; ubic&amp;aacute;ndola en &amp;ldquo;C:\apps\dist\&amp;rdquo; al mismo nivel que &amp;ldquo;mahout-0.5&amp;rdquo;, as&amp;iacute; podremos intentar reutilizar los script (.cmd) de la versi&amp;oacute;n anteriores. &lt;/li&gt;
&lt;li&gt;A partir de aqu&amp;iacute;, toca probar y cruzar los dedos, por eso, no recomiendo esto a menos que los cambios a realizar fueran m&amp;iacute;nimos. Esperemos a que Microsft vaya realizando y adaptando las versiones adecuadamente. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Aunque estos algoritmos y ejemplos est&amp;aacute;n cambiando constantemente y Hadoop aun est&amp;aacute; en &amp;ldquo;Preview&amp;rdquo;, espero haber aclarado inc&amp;oacute;gnitas sobre este nuevo mundo de la Inteligencia Artificial con Mahout&amp;hellip; !&lt;/p&gt;
&lt;p&gt;Saludos y feliz &amp;ldquo;cacharreo&amp;rdquo; con Mahout&amp;hellip; &lt;br /&gt;Juanlu,ElGuerre&lt;/p&gt;
&lt;/li&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=207349" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Hadoop/default.aspx">Hadoop</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Mahout/default.aspx">Mahout</category></item><item><title>Windows Azure Hadoop. Understanding, Diving &amp; Solving issues IV. SQL To Hadoop (Sqoop) II</title><link>http://geeks.ms/blogs/jlguerrero/archive/2012/10/23/windows-azure-hadoop-understanding-diving-amp-solving-issues-iv-sql-to-hadoop-sqoop-ii.aspx</link><pubDate>Tue, 23 Oct 2012 10:21:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:207205</guid><dc:creator>Juanlu,ElGuerre</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jlguerrero/rsscomments.aspx?PostID=207205</wfw:commentRss><comments>http://geeks.ms/blogs/jlguerrero/archive/2012/10/23/windows-azure-hadoop-understanding-diving-amp-solving-issues-iv-sql-to-hadoop-sqoop-ii.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/hive_5F00_logo_5F00_medium_5F00_2335352D.jpg"&gt;&lt;img height="109" width="118" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/hive_5F00_logo_5F00_medium_5F00_thumb_5F00_2DA5E380.jpg" alt="hive_logo_medium" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="hive_logo_medium" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/sqoop_2D00_logo_5F00_6AE69847.png"&gt;&lt;img height="49" width="151" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/sqoop_2D00_logo_5F00_thumb_5F00_6282C2F0.png" alt="sqoop-logo" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="sqoop-logo" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;En el &lt;a href="http://geeks.ms/blogs/jlguerrero/archive/2012/10/21/windows-azure-hadoop-understanding-diving-amp-solving-issues-iv-sql-to-hadoop-sqoop-i.aspx"&gt;cap&amp;iacute;tulo anterior de Sqoop&lt;/a&gt;, ve&amp;iacute;amos como llevar a cabo una importaci&amp;oacute;n y exportaci&amp;oacute;n de datos desde SQL Azure hacia y desde Hadoop, concretamente desde y hacia su sistema de ficheros HDFS. Pues bien, en esta ocasi&amp;oacute;n, veremos como conseguir esta importaci&amp;oacute;n directamente hacia Hive.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1) Importaci&amp;oacute;n de datos desde SQL Azure hacia Hive&lt;/strong&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;1) Creamos una vez m&amp;aacute;s el alias para que Sqoop entienda la tabla, sin embargo, en este caso, no puede tener ning&amp;uacute;n &amp;ldquo;punto&amp;rdquo;, en cuyo caso Sqoop no ser&amp;aacute; capaz de crear la tabla en Hive.&lt;/p&gt;
&lt;div style="overflow:auto;cursor:text;font-size:8pt;height:43px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;text-align:left;margin:20px 0px 10px;line-height:12pt;max-height:200px;width:97.5%;background-color:#f4f4f4;border:silver 1px solid;padding:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;" id="codeSnippet"&gt;
&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#0000ff;"&gt;CREATE&lt;/span&gt; SYNONYM [hivecustomer] &lt;span style="color:#0000ff;"&gt;FOR&lt;/span&gt; SalesLT.Customer&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;2) Ejecutamos la siguiente instrucci&amp;oacute;n:&lt;/p&gt;
&lt;div style="overflow:auto;cursor:text;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;text-align:left;margin:20px 0px 10px;line-height:12pt;max-height:200px;width:97.5%;background-color:#f4f4f4;border:silver 1px solid;padding:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;" id="codeSnippet"&gt;
&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;sqoop import&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;--&lt;span style="color:#0000ff;"&gt;connect&lt;/span&gt; &amp;quot;jdbc:sqlserver:&lt;span style="color:#008000;"&gt;//&amp;lt;SQLZAURE-SERVERNAME&amp;gt;.database.windows.net;database=AdventureWorksLTAZ2008R2&amp;quot;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;--username  jlguerrero@&amp;lt;SQLZAURE-SERVERNAME&amp;gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;-P&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;--&lt;span style="color:#0000ff;"&gt;table&lt;/span&gt; hivecustomer&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;--hive-import&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;--hive-overwrite&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;-m 1&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Donde&lt;/strong&gt;: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;-&amp;ndash;hive-import&lt;/strong&gt;, permite la importaci&amp;oacute;n directamente hacia Hive. En caso de que la tabla &amp;ldquo;hivecustomer&amp;rdquo; no exista esta ser&amp;aacute; creada. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;--hive-overwrite&lt;/strong&gt;, sobreescribe la tabla &amp;ldquo;hivecustomer&amp;rdquo; si ya existe en&amp;nbsp; Hive. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_15062063.png"&gt;&lt;img height="609" width="917" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_49FB236F.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;3) Desde la consola de Hive podremos comprobar que se ha creado la tabla &amp;ldquo;hivecustomer&amp;rdquo; y se han cargado todo los datos: &amp;ldquo;&lt;strong&gt;&lt;em&gt;select * from hivecustomer;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nota&lt;/strong&gt;: Para m&amp;aacute;s detalle sobre Sqoop, siempre podemos consultar la gu&amp;iacute;a de usuario, &lt;a href="http://sqoop.apache.org/docs/1.4.0-incubating/SqoopUserGuide.html"&gt;http://sqoop.apache.org/docs/1.4.0-incubating/SqoopUserGuide.html&lt;/a&gt;, donde podremos profundizar todo cuanto queramos.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;En el &lt;a href="http://geeks.ms/blogs/jlguerrero/archive/2012/10/21/windows-azure-hadoop-understanding-diving-amp-solving-issues-iv-sql-to-hadoop-sqoop-i.aspx"&gt;post anterior&lt;/a&gt; comentaba que este nuevo cap&amp;iacute;tulo &amp;iacute;bamos a ver la exportaci&amp;oacute;n desde Hive hacia SQL Azure, no obstante, rectifico, puesto que en dicho sentido la exportaci&amp;oacute;n, a d&amp;iacute;a de hoy a&amp;uacute;n no es posible. Perdonad, actualizo el post debidamente.&lt;/p&gt;
&lt;p&gt;Hasta aqu&amp;iacute; y tras unos cuantos posts, ya tenemos toda la informaci&amp;oacute;n que necesitamos en Hive. Obtenida desde SQL Azure, de Azure Storage seg&amp;uacute;n comentamos &lt;a href="http://geeks.ms/blogs/jlguerrero/archive/2012/10/10/windows-azure-hadoop-understanding-diving-and-solving-issues-ii-hiveql.aspx"&gt;en este post (HiveQL)&lt;/a&gt;, y&amp;nbsp; desde HDFS, s&amp;oacute;lo nos queda comenzar a explotar la misma como si de un &amp;uacute;nico repositorio se tratara. Eso s&amp;iacute;, esto ser&amp;aacute; en un nuevo cap&amp;iacute;tulo, por el momento continuaremos conociendo otros componentes de Hadoop On Azure.&lt;/p&gt;
&lt;p&gt;Aunque este post ha sido algo m&amp;aacute;s corto que de costumbre, espero que no menos interesante.&lt;/p&gt;
&lt;p&gt;Saludos &lt;br /&gt;Juan Luis Guerrero&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=207205" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Hadoop/default.aspx">Hadoop</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Hive/default.aspx">Hive</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Sqoop/default.aspx">Sqoop</category></item><item><title>Windows Azure Hadoop. Understanding, Diving &amp; Solving issues IV. SQL To Hadoop (Sqoop) I</title><link>http://geeks.ms/blogs/jlguerrero/archive/2012/10/21/windows-azure-hadoop-understanding-diving-amp-solving-issues-iv-sql-to-hadoop-sqoop-i.aspx</link><pubDate>Sun, 21 Oct 2012 18:52:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:207182</guid><dc:creator>Juanlu,ElGuerre</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jlguerrero/rsscomments.aspx?PostID=207182</wfw:commentRss><comments>http://geeks.ms/blogs/jlguerrero/archive/2012/10/21/windows-azure-hadoop-understanding-diving-amp-solving-issues-iv-sql-to-hadoop-sqoop-i.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/hadoop_2D00_logo_5F00_021D4666.jpg"&gt;&lt;img height="61" width="244" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/hadoop_2D00_logo_5F00_thumb_5F00_16DF1919.jpg" alt="hadoop-logo" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="hadoop-logo" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/sqoop_2D00_logo_5F00_00C887BA.png"&gt;&lt;img height="49" width="151" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/sqoop_2D00_logo_5F00_thumb_5F00_60414807.png" alt="sqoop-logo" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="sqoop-logo" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;En esta ocasi&amp;oacute;n veremos como Hadoop adem&amp;aacute;s de trabajar con datos no estructurados, tambi&amp;eacute;n puede hacerlo con datos relacionales, para ello, Hadoop cuenta con otro componente, &lt;strong&gt;&lt;a href="http://sqoop.apache.org/"&gt;SQOOP&lt;/a&gt;,&lt;/strong&gt; es decir, &lt;strong&gt;&lt;a href="http://sqoop.apache.org/"&gt;SQL To Hadoop&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Lo que nos&amp;nbsp; va a permitir Scoop exactamente, es el &lt;strong&gt;&lt;em&gt;traspaso de datos entre SQL Azure y Hadoop (HDFS y Hive)&lt;/em&gt;&lt;/strong&gt; en ambos sentidos. &lt;/p&gt;
&lt;p&gt;Aunque como siempre, contamos con un &lt;a href="http://www.windowsazure.com/en-us/develop/net/tutorials/hadoop-and-data/#segment3"&gt;tutorial&lt;/a&gt; de Microsoft, iremos un poco m&amp;aacute;s all&amp;aacute;, concretamente resolveremos algunos problemas encontrados tanto en el tutorial de Microsoft como en otros que podemos encontrar en internet.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1) Como ya disponemos de este tutorial, resumamos como importar una tabla desde SQL Azure hacia Hadoop, hacia HDFS (Hadoop File System)&lt;/strong&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;1) Desde&amp;nbsp; &lt;strong&gt;SQL Server Management Studio&lt;/strong&gt;, y para cada tabla (ej.: AdventureWorksLTAZ2008R2) de SQL Azure con la que vayamos a trabajar, establecemos un alias o sin&amp;oacute;nimo. Esto es necesario para que &lt;strong&gt;sqoop&lt;/strong&gt; pueda identificar el nombre de la tabla:&lt;/p&gt;
&lt;div style="overflow:auto;cursor:text;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;text-align:left;margin:20px 0px 10px;line-height:12pt;max-height:200px;width:97.5%;background-color:#f4f4f4;border:silver 1px solid;padding:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;" id="codeSnippet"&gt;
&lt;pre style="overflow:visible;font-size:8pt;height:31px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#0000ff;"&gt;CREATE&lt;/span&gt; SYNONYM [SalesLT.Customer] &lt;span style="color:#0000ff;"&gt;FOR&lt;/span&gt; SalesLT.Customer&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="csharpcode"&gt;&lt;/div&gt;
&lt;p&gt;2) Accedemos mediante terminal server al cluster de Hadoop como ya hemos comentado entre otras cosas en &lt;a href="http://geeks.ms/blogs/jlguerrero/archive/2012/10/07/windows-azure-hadoop-understanding-diving-and-solving-issues.aspx"&gt;este post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;3) Desde la consola de comandos de Hadoop (Hadoop Command Shell) navegamos hasta la ruta concreta &amp;ldquo;c:\Apps\dist\sqoop\bin&amp;rdquo; y ejecutamos la siguiente instrucci&amp;oacute;n para realizar la importaci&amp;oacute;n de la tabla SalesLT.Customer al sistema de ficheros de Hadoop (HDFS) concretamente a la ruta /data/customer.&lt;/p&gt;
&lt;div style="overflow:auto;cursor:text;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;text-align:left;margin:20px 0px 10px;line-height:12pt;max-height:200px;width:97.5%;background-color:#f4f4f4;border:silver 1px solid;padding:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;" id="codeSnippet"&gt;
&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;sqoop import&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;--&lt;span style="color:#0000ff;"&gt;connect&lt;/span&gt; &amp;quot;jdbc:sqlserver:&lt;span style="color:#008000;"&gt;//&amp;lt;SQLAZURE-SERVERNAME&amp;gt;.database.windows.net;database=AdventureWorksLTAZ2008R2&amp;quot;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;--username jlguerrero@&amp;lt;SQLAZURE-SERVERNAME&amp;gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;-P&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;--&lt;span style="color:#0000ff;"&gt;table&lt;/span&gt; SalesLT.Customer&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;--target-dir /&lt;span style="color:#0000ff;"&gt;data&lt;/span&gt;/Customer&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;-m 1&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Donde: &lt;/strong&gt;El Par&amp;aacute;metro &amp;ldquo;&lt;strong&gt;-P&lt;/strong&gt;&amp;rdquo; va a permitirnos introducir por consola el password de conexi&amp;oacute;n a SQL Azure&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Importante: &lt;/strong&gt;La cadena de conexi&amp;oacute;n no esperar recibir el usuario y password, estos se pasan a trav&amp;eacute;s de otros par&amp;aacute;metros derivados eso s&amp;iacute;, de la conexi&amp;oacute;n.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nota&lt;/strong&gt;: La instrucci&amp;oacute;n se encuentra dividida en varias l&amp;iacute;neas pero recordemos que tendr&amp;aacute; que encontrase todo en una misma.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_7F83EEDA.png"&gt;&lt;img height="449" width="838" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_3F3DAF93.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;4) Desde la consola &lt;a href="https://www.hadooponazure.com/Dashboard.ashx?r=%2FCluster%2FInteractiveJS"&gt;interactiva de Javascript&lt;/a&gt; del portal de Hadoop ejeutamos:&lt;/p&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;&amp;ldquo;#lsr /data&amp;rdquo;&lt;/em&gt;&lt;/strong&gt;&amp;nbsp; para verificar que existe una carpeta &amp;ldquo;Customer&amp;rdquo; y donde encontraremos nuestro fichero de datos &amp;ldquo;&lt;span style="background-color:#ffffff;"&gt;part-m-00000&amp;rdquo;&lt;/span&gt;. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;ldquo;#tail /data/Customer/part-m-00000&amp;rdquo;&lt;/strong&gt; para corroborar que se han cargado datos. Tail nos permitir&amp;aacute; visualizar el primer KB del fichero sin necesidad de cargarlo por completo, en cuso caso, podr&amp;iacute;amos optar por &lt;strong&gt;#cat&lt;/strong&gt; en su lugar.
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nota:&lt;/strong&gt; La importaci&amp;oacute;n desde una tabla de SQL Server (&amp;ldquo;OnPremisse&amp;rdquo;) a&amp;uacute;n no es posible puesto que las VMs del Cluster de Hadoop adem&amp;aacute;s de no tener habilitado los permisos de visibilidad con m&amp;aacute;quinas On-Premisse, tienen restringidos los permisos para habilitar los mismos, as&amp;iacute; que por el momento s&amp;oacute;lo podremos importar datos desde SQL Azure.&lt;/p&gt;
&lt;/li&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;2) Veamos a continuaci&amp;oacute;n como exportar desde Hadoop (HDFS) hacia SQL Azure:&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;1) Creamos una nueva tabla &amp;ldquo;&lt;strong&gt;[SalesLT].[CustomerFromHadoop]&amp;rdquo;&lt;/strong&gt; en SQL Azure&lt;/p&gt;
&lt;div style="overflow:auto;cursor:text;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;text-align:left;margin:20px 0px 10px;line-height:12pt;max-height:200px;width:97.5%;background-color:#f4f4f4;border:silver 1px solid;padding:4px;" id="codeSnippetWrapper"&gt;
&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;" id="codeSnippet"&gt;&lt;span style="color:#0000ff;"&gt;USE&lt;/span&gt; [AdventureWorksLTAZ2008R2]&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;GO&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;CREATE&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;TABLE&lt;/span&gt; [SalesLT].[CustomerFromHadoop](&lt;br /&gt;    [CustomerID] [&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;]  &lt;span style="color:#0000ff;"&gt;NOT&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;NULL&lt;/span&gt;,&lt;br /&gt;    [NameStyle] [&lt;span style="color:#0000ff;"&gt;varchar&lt;/span&gt;] (5),&lt;br /&gt;    [Title] [&lt;span style="color:#0000ff;"&gt;varchar&lt;/span&gt;](25) &lt;span style="color:#0000ff;"&gt;NULL&lt;/span&gt;,&lt;br /&gt;    [FirstName] [&lt;span style="color:#0000ff;"&gt;varchar&lt;/span&gt;](50) &lt;span style="color:#0000ff;"&gt;NOT&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;NULL&lt;/span&gt;,&lt;br /&gt;    [MiddleName] [&lt;span style="color:#0000ff;"&gt;varchar&lt;/span&gt;](50) &lt;span style="color:#0000ff;"&gt;NULL&lt;/span&gt;,&lt;br /&gt;    [LastName] [&lt;span style="color:#0000ff;"&gt;varchar&lt;/span&gt;](50) &lt;span style="color:#0000ff;"&gt;NOT&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;NULL&lt;/span&gt;,&lt;br /&gt;    [Suffix] [&lt;span style="color:#0000ff;"&gt;varchar&lt;/span&gt;](25) &lt;span style="color:#0000ff;"&gt;NULL&lt;/span&gt;,&lt;br /&gt;    [CompanyName] [&lt;span style="color:#0000ff;"&gt;varchar&lt;/span&gt;](150) &lt;span style="color:#0000ff;"&gt;NULL&lt;/span&gt;,&lt;br /&gt;    [SalesPerson] [&lt;span style="color:#0000ff;"&gt;varchar&lt;/span&gt;](260) &lt;span style="color:#0000ff;"&gt;NULL&lt;/span&gt;,&lt;br /&gt;    [EmailAddress] [&lt;span style="color:#0000ff;"&gt;varchar&lt;/span&gt;](50) &lt;span style="color:#0000ff;"&gt;NULL&lt;/span&gt;,&lt;br /&gt;    [Phone] [&lt;span style="color:#0000ff;"&gt;varchar&lt;/span&gt;](50) &lt;span style="color:#0000ff;"&gt;NULL&lt;/span&gt;,&lt;br /&gt;    [PasswordHash] [&lt;span style="color:#0000ff;"&gt;varchar&lt;/span&gt;](150) &lt;span style="color:#0000ff;"&gt;NOT&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;NULL&lt;/span&gt;,&lt;br /&gt;    [PasswordSalt] [&lt;span style="color:#0000ff;"&gt;varchar&lt;/span&gt;](50) &lt;span style="color:#0000ff;"&gt;NOT&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;NULL&lt;/span&gt;,&lt;br /&gt;    [rowguid] [&lt;span style="color:#0000ff;"&gt;varchar&lt;/span&gt;] (50) &lt;span style="color:#0000ff;"&gt;NOT&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;NULL&lt;/span&gt;,&lt;br /&gt;    [ModifiedDate] [&lt;span style="color:#0000ff;"&gt;varchar&lt;/span&gt;](50) &lt;span style="color:#0000ff;"&gt;NOT&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;NULL&lt;/span&gt;    &lt;br /&gt; &lt;span style="color:#0000ff;"&gt;CONSTRAINT&lt;/span&gt; [PK_CustomerHadoop_CustomerID] &lt;span style="color:#0000ff;"&gt;PRIMARY&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;KEY&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;CLUSTERED&lt;/span&gt;  ([CustomerID] &lt;span style="color:#0000ff;"&gt;ASC&lt;/span&gt;&lt;br /&gt;))&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;GO&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;2) Establecemos su alias para que pueda ser reconocida desde Sqoop.&lt;/p&gt;
&lt;div style="overflow:auto;cursor:text;font-size:8pt;height:40px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;text-align:left;margin:20px 0px 10px;line-height:12pt;max-height:200px;width:97.5%;background-color:#f4f4f4;border:silver 1px solid;padding:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;" id="codeSnippet"&gt;
&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#0000ff;"&gt;CREATE&lt;/span&gt; SYNONYM [SalesLT.CustomerFromHadoop] &lt;span style="color:#0000ff;"&gt;FOR&lt;/span&gt; SalesLT.CustomerFromHadoop&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;3) Desde la consola de comandos de Hadoop (Hadoop Command Shell) navegamos hasta la ruta concreta &amp;ldquo;&lt;strong&gt;&lt;em&gt;c:\Apps\dist\sqoop\bin&lt;/em&gt;&lt;/strong&gt;&amp;rdquo; y ejecutamos la siguiente instrucci&amp;oacute;n:&lt;/p&gt;
&lt;div style="overflow:auto;cursor:text;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;text-align:left;margin:20px 0px 10px;line-height:12pt;max-height:200px;width:97.5%;background-color:#f4f4f4;border:silver 1px solid;padding:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;" id="codeSnippet"&gt;
&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;sqoop export&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;--&lt;span style="color:#0000ff;"&gt;connect&lt;/span&gt; &amp;quot;jdbc:sqlserver:&lt;span style="color:#008000;"&gt;//&amp;lt;SQLAZURE-SERVERNAME&amp;gt;.database.windows.net;database=AdventureWorksLTAZ2008R2&amp;quot;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;--username jlguerrero@&amp;lt;SQLAZURE-SERVERNAME&amp;gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;-P&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;--&lt;span style="color:#0000ff;"&gt;table&lt;/span&gt; SalesLT.CustomerFromHadoop&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;--export-dir /&lt;span style="color:#0000ff;"&gt;data&lt;/span&gt;/Customer&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;--&lt;span style="color:#0000ff;"&gt;input&lt;/span&gt;-fields-terminated-&lt;span style="color:#0000ff;"&gt;by&lt;/span&gt; &amp;quot;,&amp;quot; &lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_58958D00.png"&gt;&lt;img height="479" width="830" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_230CA50E.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;4) Si consultamos nuestra nueva tabla de SQL Azure,&amp;nbsp; &amp;ldquo;&lt;strong&gt;&lt;em&gt;SELECT * FROM[SalesLT].[CustomerFromHadoop]&lt;/em&gt;&lt;/strong&gt;&amp;rdquo;, podremos comprobar como se ha cargado correctamente con todos sus datos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nota&lt;/strong&gt;: En este caso de exportaci&amp;oacute;n desde Hadoop, el proceso podr&amp;iacute;a complicarse si pretendemos hacer transformaciones de campos, en tal caso, el camino ser&amp;aacute; m&amp;aacute;s f&amp;aacute;cil si estas transformaciones las llevamos a cabo en SQL directamente una vez realizada la exportaci&amp;oacute;n.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Espero haber aclarado un poco m&amp;aacute;s el camino hacia y desde Hadoop HDFS hacia SQL Azure. En el pr&amp;oacute;ximo capitulo de Sqoop, veremos como importar datos directamente hacia Hive.&lt;/p&gt;
&lt;p&gt;Saludos @Home &lt;br /&gt;Juanlu,ElGuerre&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=207182" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Hadoop/default.aspx">Hadoop</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Sqoop/default.aspx">Sqoop</category></item><item><title>Windows Azure Hadoop. Understanding, Diving &amp; Solving issues III (Consumiendo Hive desde Excel, Power Pivot y Power View)</title><link>http://geeks.ms/blogs/jlguerrero/archive/2012/10/17/windows-azure-hadoop-understanding-diving-amp-solving-issues-iii-consumiendo-hive-desde-excel-power-pivot-y-power-view.aspx</link><pubDate>Wed, 17 Oct 2012 19:11:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:207155</guid><dc:creator>Juanlu,ElGuerre</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jlguerrero/rsscomments.aspx?PostID=207155</wfw:commentRss><comments>http://geeks.ms/blogs/jlguerrero/archive/2012/10/17/windows-azure-hadoop-understanding-diving-amp-solving-issues-iii-consumiendo-hive-desde-excel-power-pivot-y-power-view.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/hive_5F00_logo_5F00_medium_5F00_2F4BED28.jpg"&gt;&lt;img height="174" width="148" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/hive_5F00_logo_5F00_medium_5F00_thumb_5F00_1915D1D6.jpg" align="left" alt="hive_logo_medium" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;float:left;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="hive_logo_medium" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Muy buenas,&lt;/p&gt;
&lt;p&gt;Continuado con Hadoop on Windows Azure y tras los dos post anteriores: &amp;ldquo;&lt;a href="http://geeks.ms/blogs/jlguerrero/archive/2012/10/07/windows-azure-hadoop-understanding-diving-and-solving-issues.aspx"&gt;Understanding, Diving And Solving issues&lt;/a&gt;&amp;rdquo; y &amp;ldquo;Understanding, Diving and Solving Issues II (HiveQL)&amp;rdquo;, seguiremos con el ejemplo a partir de la Tabla &amp;ldquo;iislog&amp;rdquo; creada en HiveQL.&lt;/p&gt;
&lt;p&gt;Una vez creada y cargada la tabla con la informaci&amp;oacute;n del fichero de texto almacenado previamente, veremos como podemos tratar la informaci&amp;oacute;n desde Excel, &lt;a href="http://www.microsoft.com/en-us/bi/powerpivot.aspx"&gt;Power Pivot&lt;/a&gt; y/o Power View, donde para ello seguiremos los siguientes pasos:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1) Habilitamos la comunicaci&amp;oacute;n desde Hadoop para poder conectarnos v&amp;iacute;a ODBC desde Excel.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_5F268EE9.png"&gt;&lt;img height="173" width="171" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_3E9F4F37.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_24CB1908.png"&gt;&lt;img height="217" width="324" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_03D7A661.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;2)Descargamos el &amp;ldquo;.msi&amp;rdquo; de instalaci&amp;oacute;n del ODBC desde el &lt;a href="https://www.hadooponazure.com/"&gt;portal de hadoop&lt;/a&gt; y lo instalamos. &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb10_5F00_42C926FC.png"&gt;&lt;img height="165" width="160" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb10_5F00_thumb_5F00_7B079E14.png" alt="image_thumb10" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;border-top-width:0px;" title="image_thumb10" /&gt;&lt;/a&gt;&amp;nbsp; &lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb9_5F00_6C5CF22F.png"&gt;&lt;img height="154" width="452" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb9_5F00_thumb_5F00_403FF53E.png" alt="image_thumb9" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;border-top-width:0px;" title="image_thumb9" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;3) Configuramos la conexi&amp;oacute;n del ODBC de Hive con Hadoop.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_6635A594.png"&gt;&lt;img height="264" width="337" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_23E28D51.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_6D25324C.png"&gt;&lt;img height="403" width="349" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_4108355B.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;4) Abrimos Excel 2010&amp;nbsp; o 2013 Preview y revisamos que nuestro nuevo Add-In se encuentra habilitado al igual que el de Power View. Para el caso de Excel 2010, descargaremos &amp;ldquo;Power Pivot&amp;rdquo; desde &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=29074"&gt;aqu&amp;iacute;&lt;/a&gt;. Para 2013 Preview, no es necesario, bastar&amp;aacute; simplemente con habilitarlo.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_2FD457B8.png"&gt;&lt;img height="203" width="433" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_75E514CB.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;5) Accedemos al men&amp;uacute; DATA y, concretamente, al ribbon &amp;ldquo;Hive Pane&amp;rdquo; el cual nos mostrar&amp;aacute; el Tool Box &amp;ldquo;&lt;strong&gt;Hive Query&lt;/strong&gt;&amp;rdquo; y donde seleccionaremos la conexi&amp;oacute;n creada en el paso 3.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_0C57B353.png"&gt;&lt;img height="167" width="129" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_2B9A5A26.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&amp;nbsp; &lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_1F9869F2.png"&gt;&lt;img height="264" width="193" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_22CA51DA.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb13_5F00_28A4F573.png"&gt;&lt;img height="168" width="244" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb13_5F00_thumb_5F00_5C6CEBC4.png" alt="image_thumb13" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;border-top-width:0px;" title="image_thumb13" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;span style="font-family:Verdana;"&gt;6) Seleccionamos la tabla &amp;ldquo;&lt;strong&gt;iislog&lt;/strong&gt;&amp;rdquo; &lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_066CE9ED.png"&gt;&lt;img height="400" width="217" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_1DB7EE5E.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt; &lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_69A34F0A.png"&gt;&lt;img height="138" width="427" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_5AF8A325.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style="font-family:Verdana;"&gt;7) Navegamos a POWER PIVOT  - &amp;ldquo;Manage&amp;rdquo; y a continuaci&amp;oacute;n elegimos &amp;ldquo;&lt;strong&gt;Existing Connections&amp;hellip;&amp;rdquo;&lt;/strong&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_00822087.png"&gt;&lt;span style="font-family:Verdana;"&gt;&lt;img height="115" width="390" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_788A7E24.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_2C527476.png"&gt;&lt;span style="font-family:Verdana;"&gt;&lt;img height="83" width="78" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_5DDDE20B.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style="font-family:Verdana;"&gt;7.a) En este punto obtendremos un error del tipo, &amp;ldquo;&lt;em&gt;SQL_ERROR Query preparation failed. Username/password is invalid: &amp;lt;jlguerrero&amp;gt;/&amp;lt;&amp;gt;&amp;rdquo;.&lt;/em&gt; Donde por alg&amp;uacute;n motivo el passord no se incluye en la conexi&amp;oacute;n ni tampoco hay posibilidad para ello.&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image101_5F00_7D2088DE.png"&gt;&lt;img height="464" width="417" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image101_5F00_thumb_5F00_23163935.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style="font-family:Verdana;"&gt;7.b) Optamos por &amp;ldquo;&lt;strong&gt;From Other Sources&amp;hellip; &amp;ndash; Others (OLEDB\ODBC)&lt;/strong&gt;&amp;rdquo; e introducimos el siguiente &amp;ldquo;Connection String&amp;rdquo;:&lt;/span&gt;&lt;/pre&gt;
&lt;div style="overflow:auto;cursor:text;font-size:8pt;height:55px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;text-align:left;margin:20px 0px 10px;line-height:12pt;max-height:200px;width:57.13%;background-color:#f4f4f4;border:silver 1px solid;padding:4px;" id="codeSnippetWrapper"&gt;
&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;" id="codeSnippet"&gt;&amp;ldquo;Provider=MSDASQL.1;Dsn=My &lt;span style="color:#0000ff;"&gt;First&lt;/span&gt; Hadoop;uid=jlguerrero;password=xxxxxx&amp;rdquo;&lt;br /&gt;&lt;/pre&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;8) Seguimos los pasos de Wizard y en esta ocasi&amp;oacute;n todo es correcto. &amp;iexcl;Esperemos que se trate de bug del Hive para Excel o incluso de Office 2013 Preview, como es mi caso!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_6E2933F7.png"&gt;&lt;img height="282" width="260" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_66319195.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;span style="font-family:Verdana;"&gt;8) A partir de aqu&amp;iacute;, &lt;/span&gt;&lt;a href="http://www.microsoft.com/en-us/bi/powerpivot.aspx"&gt;&lt;span style="font-family:Verdana;"&gt;Power Pivot&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:Verdana;"&gt; har&amp;aacute; el resto del trabajo. Para obtener el siguiente gr&amp;aacute;fico, en poco m&amp;aacute;s de 1minuto, echemos un vistazo a &lt;a href="http://www.microsoft.com/en-us/bi/featureVideoBIVideos.aspx?videoId=AJB4iB6wXgc"&gt;este v&amp;iacute;deo&lt;/a&gt;.&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_7735BF78.png"&gt;&lt;img height="408" width="599" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_7791CCA0.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style="font-family:Verdana;"&gt;Aunque la informaci&amp;oacute;n con la que hemos estado trabajando en el ejemplo, no es &amp;ldquo;mucha&amp;rdquo;, ni &amp;ldquo;grande&amp;rdquo;, es suficiente a modo de ejemplo para demostrar como trabajar con Hive.  &lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;Si extrapolamos todo este proceso para un conjunto mayor de informaci&amp;oacute;n, para informaci&amp;oacute;n de los m&amp;aacute;s variopinta y de distintos repositorios/fuentes y las juntamos todas en Hive, estaremos visualizando hasta donde puede llegar Hadoop.&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style="font-family:Verdana;"&gt;Power Pivot, tambi&amp;eacute;n permite la conexi&amp;oacute;n directa con SQL Azure  y otras muchas fuentes, as&amp;iacute; que con Hive lo haremos s&amp;oacute;lo cuando sea realmente necesario. &amp;iexcl;No todo tiene que ser ahora Hadoop!&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="background-color:#ffff00;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;Os dejo tambi&amp;eacute;n un enlace bastante interesante relacionado con el tema: &lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;&lt;a href="http://blogs.msdn.com/b/suren/archive/2012/06/25/processing-azure-storage-analytics-logs-with-hadoop-on-azure.aspx"&gt;Processing Azure Storage analytics logs with Hadoop on Azure&lt;/a&gt;.&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="background-color:#ffff00;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style="font-family:Verdana;"&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Saludos y nos vemos en el siguiente capitulo de Hadoop &lt;br /&gt;Juanlu, ElGuerre&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=207155" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Hadoop/default.aspx">Hadoop</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Hive/default.aspx">Hive</category></item><item><title>Windows Azure Hadoop. Understanding, Diving and Solving issues II (HiveQL)</title><link>http://geeks.ms/blogs/jlguerrero/archive/2012/10/10/windows-azure-hadoop-understanding-diving-and-solving-issues-ii-hiveql.aspx</link><pubDate>Wed, 10 Oct 2012 19:14:47 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:207090</guid><dc:creator>Juanlu,ElGuerre</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jlguerrero/rsscomments.aspx?PostID=207090</wfw:commentRss><comments>http://geeks.ms/blogs/jlguerrero/archive/2012/10/10/windows-azure-hadoop-understanding-diving-and-solving-issues-ii-hiveql.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/hive_5F00_logo_5F00_medium_5F00_652946BC.jpg"&gt;&lt;img title="hive_logo_medium" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;float:left;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="hive_logo_medium" align="left" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/hive_5F00_logo_5F00_medium_5F00_thumb_5F00_046BED90.jpg" width="167" height="154" /&gt;&lt;/a&gt;Muy buenas,&lt;/p&gt;  &lt;p&gt;Siguiendo con Hadoop, veamos que es HiveQL y cómo utilizarlo.&lt;/p&gt;  &lt;p&gt;Big Data y, como decíamos, “&lt;a href="https://www.hadooponazure.com/"&gt;Hadoop On Azure&lt;/a&gt;”, contiene muchos componentes, en el &lt;a href="http://geeks.ms/blogs/jlguerrero/archive/2012/10/07/windows-azure-hadoop-understanding-diving-and-solving-issues.aspx"&gt;post anterior&lt;/a&gt;, comentamos y trabajamos sobre uno de ellos, concretamente sobre “&lt;strong&gt;C# Streaming&lt;/strong&gt;”.&amp;#160; En este caso, otro de estos es Hive QL:&lt;/p&gt;  &lt;p&gt;¿Que nos dice Wikipedia?&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;Apache Hive&lt;/b&gt; es un &lt;a href="http://en.wikipedia.org/wiki/Data_warehouse"&gt;data warehouse&lt;/a&gt; construida en la base de &lt;a href="http://en.wikipedia.org/wiki/Hadoop"&gt;Hadoop&lt;/a&gt; a fin de proporcionar resumenes de datos, consultas y análisis. Aunque inicialmente desarrollado por Facebook, Apache Hive está utilizado y desarrollado por otras empresas como &lt;a href="http://en.wikipedia.org/wiki/Netflix"&gt;Netflix&lt;/a&gt;.&amp;#160; Hive también se incluye en “&lt;em&gt;Amazon Elastic MapReduce&lt;/em&gt;” en &lt;a href="http://en.wikipedia.org/wiki/Amazon_Web_Services"&gt;Amazon Web Services&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;Aunque está basado en SQL, HiveQL no sigue estrictamente el estandar &lt;a href="http://en.wikipedia.org/wiki/SQL-92"&gt;SQL-92&lt;/a&gt;. HiveQL ofrece extensiones que no están en SQL, incluyendo:&lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;Inserciones &lt;strong&gt;multitable&lt;/strong&gt; y “create table” como “select” &lt;/li&gt;      &lt;li&gt;Sólo ofrece soporte básico para índices. &lt;/li&gt;      &lt;li&gt;Carece de soporte para transacciones y “&lt;a href="http://en.wikipedia.org/wiki/Materialized_view"&gt;vistas materializadas&lt;/a&gt;”, y sólo soporta un conjuto limitado limitado queries. &lt;/li&gt;   &lt;/ol&gt;    &lt;p&gt;Internamente, un compilador traduce las instrucciones HiveQL en un &lt;a href="http://en.wikipedia.org/wiki/Directed_acyclic_graph"&gt;gráfico acíclico dirigido&lt;/a&gt; de jobs &lt;a href="http://en.wikipedia.org/wiki/MapReduce"&gt;MapReduce&lt;/a&gt;, que son enviados a Hadoop para su ejecución.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Entendido que es HiveQL y partiendo del ejemplo del &lt;a href="http://geeks.ms/blogs/jlguerrero/archive/2012/10/07/windows-azure-hadoop-understanding-diving-and-solving-issues.aspx"&gt;post anterior&lt;/a&gt;, nuestra intención, en este caso/ejemplo, es poder utilizar estas consultas SQL para explotar toda la información a nuestro antojo. Para ello, y como ya tenemos configurado Hadoop para trabajar con el Storage de Azure:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;1)&lt;/strong&gt; Accedemos a la consola de HiveQL a través del &lt;a href="https://www.hadooponazure.com/Dashboard"&gt;portal de Hadoop&lt;/a&gt;:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_05E2380A.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_5EA7EED4.png" width="168" height="168" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_76CB592F.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_6820AD4A.png" width="533" height="123" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;2)&lt;/strong&gt; Introducimos la siguiente “query” que nos va a permitir crear una tabla y cargar en ella el contenido de nuestro fichero.&lt;/p&gt;    &lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;height:120px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:71.63%;background-color:#f4f4f4;"&gt;     &lt;pre id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span style="color:#0000ff;"&gt;CREATE&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;EXTERNAL&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;TABLE&lt;/span&gt; iislog (num &lt;span style="color:#0000ff;"&gt;INT&lt;/span&gt;,  url STRING)&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;ROW&lt;/span&gt; FORMAT DELIMITED FIELDS TERMINATED &lt;span style="color:#0000ff;"&gt;by&lt;/span&gt; ‘32’ &lt;br /&gt;STORED &lt;span style="color:#0000ff;"&gt;AS&lt;/span&gt; TEXTFILE&lt;br /&gt;LOCATION &lt;span style="color:#006080;"&gt;&amp;#39;asv://fivetopuriresults/results.txt/part-00000&amp;#39;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;

    &lt;br /&gt;&lt;/div&gt;

  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_0763541E.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_5B46572C.png" width="478" height="327" /&gt;&lt;/a&gt;&lt;/p&gt;

  &lt;p&gt;&lt;em&gt;&lt;strong&gt;donde: &lt;/strong&gt;‘32’ es el carácter ASCII correspondiente al espacio. Indicando esto que el fichero de texto se cargará en la tabla separando los campos por este carácter.&lt;/em&gt;&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;3)&lt;/strong&gt; Comprobamos que nuestra tabla se ha creado correctamente; bien desde la &lt;strong&gt;consola de Hive&lt;/strong&gt; o, bien usando la query “&lt;em&gt;&lt;strong&gt;show tables;&lt;/strong&gt;&lt;/em&gt;”:&lt;/p&gt;

  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_6C4A850F.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_207EAE56.png" width="244" height="126" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_38A218B1.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_1167CF7C.png" width="136" height="122" /&gt;&lt;/a&gt;&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;4)&lt;/strong&gt; Comprobamos que los datos se han cargado correctamente usando la query “&lt;em&gt;&lt;strong&gt;select * from iislog;&lt;/strong&gt;&lt;/em&gt;”&lt;/p&gt;

  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_02BD2397.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_21FFCA6A.png" width="411" height="116" /&gt;&lt;/a&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;5)&lt;/strong&gt; Con la tabla ya cargada, sólo nos queda comenzar a realizar las queries, por ejemplo:&lt;/p&gt;

  &lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;height:55px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:69.9%;background-color:#f4f4f4;"&gt;
    &lt;pre id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span style="color:#0000ff;"&gt;SELECT&lt;/span&gt; url &lt;span style="color:#0000ff;"&gt;FROM&lt;/span&gt; iislog&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;WHERE&lt;/span&gt; num = &lt;span style="color:#006080;"&gt;&amp;#39;8&amp;#39;&lt;/span&gt;;&lt;/pre&gt;

    &lt;br /&gt;&lt;/div&gt;

  &lt;p&gt;Algunas otras instrucciones son:&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;&lt;em&gt;drop iislog;&lt;/em&gt;&lt;/strong&gt; para borrar &lt;/li&gt;

    &lt;li&gt;&lt;strong&gt;&lt;em&gt;--,&lt;/em&gt;&lt;/strong&gt; para comentarios&lt;strong&gt;&amp;#160;&lt;/strong&gt; &lt;/li&gt;
  &lt;/ul&gt;

  &lt;p&gt;&lt;strong&gt;Nota&lt;/strong&gt;: Es muy importante que la ruta del fichero de Azure Storae (“asv://” ) sea correcta puesto que en caso contrario la creación de la tabla no provocará un error. Debemos te tener en cuenta también que tanto esta ruta como cualquier otra (HDFS://) es “&lt;strong&gt;key sensitive&lt;/strong&gt;”.&lt;/p&gt;

  &lt;p&gt;Para más información sobre queries en HiveQL podemos ver &lt;a href="https://cwiki.apache.org/Hive/tutorial.html#Tutorial-HiveTutorial"&gt;este tutorial&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;En el siguiente post, veremos como consumir estos datos de una forma mucho más amigable, Excel, Power Pivot y Power View, nos ayudarán en esta labor.&lt;/p&gt;

&lt;p&gt;Saludos and happy HiveQL !! 
  &lt;br /&gt;Juanlu, ElGuerre&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=207090" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Hadoop/default.aspx">Hadoop</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Hive/default.aspx">Hive</category></item><item><title>Windows Azure Hadoop. Understanding, Diving and Solving issues</title><link>http://geeks.ms/blogs/jlguerrero/archive/2012/10/07/windows-azure-hadoop-understanding-diving-and-solving-issues.aspx</link><pubDate>Sun, 07 Oct 2012 19:58:39 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:207046</guid><dc:creator>Juanlu,ElGuerre</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jlguerrero/rsscomments.aspx?PostID=207046</wfw:commentRss><comments>http://geeks.ms/blogs/jlguerrero/archive/2012/10/07/windows-azure-hadoop-understanding-diving-and-solving-issues.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/hadoop_2D00_logo_5F00_2F12F9E5.jpg"&gt;&lt;img title="hadoop-logo" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;float:left;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="hadoop-logo" align="left" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/hadoop_2D00_logo_5F00_thumb_5F00_7BD6C07B.jpg" width="329" height="88" /&gt;&lt;/a&gt;Muy buenas,&lt;/p&gt;  &lt;p&gt;Esta semana he estado “pegándome” un poco con Hadoop, ¡se acercan bonitos tiempos! y, aunque aún tengo pendiente un par de post sobre HPC, tendrán que esperar por el momento. &lt;/p&gt;  &lt;p&gt;Cuando hablamos de Hadoop, también hablamos de Big Data, (¡si, efectivamente, muchos datos y muy grandes !), ambos términos están relacionados. Concretamente, &lt;strong&gt;&lt;u&gt;Big data,&lt;/u&gt;&lt;/strong&gt; se refiere a conjuntos de datos que crecen tan enormemente que son difíciles de capturar, almacenar, gestionar, analizar, visualizar y compartir con las herramientas de bases de datos más comunes de hoy día. Teniendo en cuenta esto, existe tres características que definen a Big Data muy bien:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;Volumen&lt;/strong&gt;: Terabytes y Petabytes de información &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Velocidad&lt;/strong&gt;: Clusters dedicados a la ejecución de tareas/jobs y, un algoritmo: &lt;strong&gt;MapReduce&lt;/strong&gt;, también muy utilizado en HPC. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Variedad&lt;/strong&gt;: Texto, BBDD, redes sociales, etc &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Por otro lado, &lt;a href="http://es.wikipedia.org/wiki/Hadoop"&gt;Wikepedia &lt;/a&gt;nos dice:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;&lt;b&gt;Apache Hadoop&lt;/b&gt; es un &lt;/em&gt;&lt;a href="http://es.wikipedia.org/wiki/Framework"&gt;&lt;em&gt;framework de software&lt;/em&gt;&lt;/a&gt;&lt;em&gt; que soporta &lt;/em&gt;&lt;a href="http://es.wikipedia.org/wiki/Computaci%C3%B3n_distribuida"&gt;&lt;em&gt;aplicaciones distribuidas&lt;/em&gt;&lt;/a&gt;&lt;em&gt; bajo una &lt;/em&gt;&lt;a href="http://es.wikipedia.org/wiki/Software_libre"&gt;&lt;em&gt;licencia libre&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. Permite a las aplicaciones trabajar con miles de nodos y &lt;/em&gt;&lt;a href="http://es.wikipedia.org/wiki/Petabyte"&gt;&lt;em&gt;petabytes&lt;/em&gt;&lt;/a&gt;&lt;em&gt; de datos. Hadoop se inspiró en los documentos &lt;/em&gt;&lt;a href="http://es.wikipedia.org/wiki/Google"&gt;&lt;em&gt;Google&lt;/em&gt;&lt;/a&gt;&lt;em&gt; para &lt;/em&gt;&lt;a href="http://es.wikipedia.org/wiki/MapReduce"&gt;&lt;em&gt;MapReduce&lt;/em&gt;&lt;/a&gt;&lt;em&gt; y &lt;/em&gt;&lt;a href="http://es.wikipedia.org/wiki/GoogleFS"&gt;&lt;em&gt;Google File System&lt;/em&gt;&lt;/a&gt;&lt;em&gt; (GFS).&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Hadoop es un proyecto de alto nivel &lt;/em&gt;&lt;a href="http://es.wikipedia.org/wiki/Apache_Software_Foundation"&gt;&lt;em&gt;Apache&lt;/em&gt;&lt;/a&gt;&lt;em&gt; que está siendo construido y usado por una comunidad global de contribuidores,&lt;sup&gt; &lt;/sup&gt;mediante el lenguaje de programación &lt;/em&gt;&lt;a href="http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n)"&gt;&lt;em&gt;Java&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. &lt;/em&gt;&lt;a href="http://es.wikipedia.org/wiki/Yahoo!"&gt;&lt;em&gt;Yahoo!&lt;/em&gt;&lt;/a&gt;&lt;em&gt; ha sido el mayor contribuidor al proyecto,&lt;sup&gt; &lt;/sup&gt;y usa Hadoop extensivamente en su negocio.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Y si queremos un poco más de detalle antes de ponernos manos a la obra, nuestro compañero Ibon Landa, nos cuenta más en este &lt;a href="http://www.estoyenlanube.com/big-data-hadoop-y-windows-azure-i/"&gt;post (Big Data, Hadoop y Windwos Azure)&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Para comenzar, una vez más contamos con los tutoriales de Microsoft y que por supuesto, no vamos a pasar por alto, si no que los aprovecharemos para profundizar, en concreto, pariremos de este (&lt;a href="http://www.windowsazure.com/en-us/develop/net/tutorials/hadoop-and-data/"&gt;Hadoop on Windows Azure - Working With Data&lt;/a&gt;), donde veremos como procesar un fichero de log de IIS pudiendo explotar toda la información del mismo muy fácilmente, utilizando además, el Storage de Azure. Para ello:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Podemos optar bien por crear un WebRole como nos dice el ejemplo para navegar y obtener el log o, simplemente partir de un fichero de logs IIS cualquiera ya existente. &lt;/li&gt;    &lt;li&gt;Creamos un programa de Consola en C#, que será la función “MAP” del algoritmo y cuya finalidad es:      &lt;ul&gt;       &lt;li&gt;Obtener las urls (que comiencen por “http://” o terminen por “.aspx” o “.html”). &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Creamos un programa de Consola en C#, función “REDUCE” y cuya finalidad será:      &lt;ul&gt;       &lt;li&gt;A partir de la información proporcionada por el MAP, obtener el número de veces que aparece cada url. &lt;/li&gt;        &lt;li&gt;Ordenar la lista descendentemente &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;Importante&lt;/strong&gt;: Cuando trabajamos con Hadoop On Azure con C# (Streaming), siempre tenemos que incluir la siguiente línea de código al comienzo de nuestra aplicación consola MAP y REDUCE:&lt;/p&gt;  &lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;   &lt;pre id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (args.Length &amp;gt; 0)&lt;br /&gt;{&lt;br /&gt;    Console.SetIn(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; StreamReader(args[0]));&lt;br /&gt;}&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;p&gt;Una vez tengamos nuestros ficheros “Map.exe” y “Reduce.exe” y un fichero de logs de IIS cualquiera procedemos a cargar los datos en Hadoop:&lt;/p&gt;

&lt;p&gt;1) Desde la consola Interactiva de Javascript subimos los ficheros a HDFS (Hadoop File System).&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;js&amp;gt; fs.put() &lt;/strong&gt;&lt;/p&gt;

  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_0CDAEE5F.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_39EFDB2D.png" width="418" height="206" /&gt;&lt;/a&gt;&lt;/p&gt;

  &lt;p&gt;Donde en, &lt;strong&gt;Destination&lt;/strong&gt;, introduciremos el valor&lt;strong&gt; “/example/apps/map.exe”.&lt;/strong&gt;&amp;#160; Es importante tener en cuenta el comienzo de este valor, puesto que no es lo mismo “/example/…” que “./example/…”. En este último caso, al acceder al fichero tendremos que indicar la ruta completa desde el root, es decir, “/users/juanluelguerre/examples/apps/map.exe”. &lt;/p&gt;

  &lt;p&gt;De la misma manera lo haremos para &lt;strong&gt;Reduce.exe&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;2) Utilizando “&lt;strong&gt;&lt;a href="http://azurestorageexplorer.codeplex.com/"&gt;Azure Storage Explorer&lt;/a&gt;&lt;/strong&gt;”, conectamos con el Storage de Azure y subir el fichero de log de IIS a un container denominado “fivetopuri”. Adicionlamente crear otro container para los resultados, denominado “fivetopuriresults”&lt;/p&gt;

&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_71C21F50.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_159AD0DE.png" width="376" height="221" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3) Configurar Hadoop para que pueda trabajar con el Storage de Azure.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_6C4388DF.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_3973826B.png" width="126" height="133" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_0AADC9C9.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_629B1AA9.png" width="305" height="132" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_56992A75.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_679D5858.png" width="325" height="127" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4) Creamos un Job con la siguiente información:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;JAR File. 
    &lt;ul&gt;
      &lt;li&gt;Descargar el “.jar” para Streaming (&lt;em&gt;&lt;strong&gt;&lt;a href="http://mvnrepository.com/artifact/org.apache.hadoop/hadoop-streaming/"&gt;hadoop-streaming.jar&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt;).&amp;#160; La release es la “v1.0.3”, aunque la “v2.0.1-alpha”, al menos para este ejemplo también funciona perfectamente. &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  &lt;li&gt;Parámetros 
    &lt;ul&gt;
      &lt;li&gt;Parametro 1: -files &amp;quot;hdfs:///example/apps/map.exe,hdfs:///example/apps/reduce.exe&amp;quot; &lt;/li&gt;

      &lt;li&gt;Parametro 2: -input &amp;quot;asv://fivetopuri/iislog.txt&amp;quot; -output &amp;quot;asv://fivetopuriresults/results.txt&amp;quot; &lt;/li&gt;

      &lt;li&gt;Parametro 3: -mapper &amp;quot;map.exe&amp;quot; -reducer &amp;quot;reduce.exe&amp;quot; &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  &lt;li&gt;El comando final queda como sigue: &lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;Hadoop jar hadoop-streaming-1.0.3.jar -files &amp;quot;hdfs:///example/apps/map.exe,hdfs:///example/apps/reduce.exe&amp;quot; -input &amp;quot;asv://fivetopuri/iislog.txt&amp;quot; -output &amp;quot;asv://fivetopuriresults/results.txt&amp;quot; -mapper &amp;quot;map.exe&amp;quot; -reducer &amp;quot;reduce.exe&amp;quot; 
      &lt;br /&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Nota&lt;/strong&gt;: ASV: indica una ruta del Storage de Azure.&lt;/p&gt;

&lt;p&gt;5) Ejecutamos el Job y esperamos.&lt;/p&gt;

&lt;p&gt;Si hemos seguido el ejemplo tal cual, probablemente encontraremos algunos errores:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Error “Failed Map Tasks exceed allowed limit. Failed Count: 1”&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;o incluso que &lt;strong&gt;el Job tarde en responder (que se haya quedado “colgado&lt;/strong&gt;”), en cuyo caso es posible que queramos “matarlo”. Para ello: &lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;p&gt;1) En primer lugar identificaremos el&amp;#160; JobId, que se encontrará “…in progress” o “RUNNING”:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_4DC92229.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_217C7578.png" width="637" height="376" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;ul&gt;
    &lt;li&gt;Una vez hemos el “&lt;strong&gt;JobId&lt;/strong&gt;”, nos conectamos al cluster mediante Remote Desktop y abrimos la consola de Hadoop (“Hadoop command Shell”): &lt;/li&gt;
  &lt;/ul&gt;

  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_3716AE15.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_55ED21F3.png" width="510" height="248" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_699A0B87.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_48A698E0.png" width="131" height="182" /&gt;&lt;/a&gt;&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;Ejecutamos la siguiente línea de comando, obteniendo un resultado indicando que el Job ha sido eliminado. &lt;/li&gt;
  &lt;/ul&gt;

  &lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
    &lt;pre id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;c:\apps\dist&amp;gt;hadoop job -kill job_201210061842_0019&lt;br /&gt;Killed job job_201210061842_0019&lt;/pre&gt;

    &lt;br /&gt;&lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;Después de muchos intentos continuaremos el problema hasta que lo resolvamos.&amp;#160; En nuestro ejemplo tendremos que hacer una modificación, es decir, cambiar el &lt;strong&gt;caracter “\t”&lt;/strong&gt; por cualquier otro,&amp;#160; por ejemplo “&lt;strong&gt;-&lt;/strong&gt;”, de manera que la función “Map” queda así:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;height:72px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:62.61%;background-color:#f4f4f4;"&gt;
  &lt;pre id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;char&lt;/span&gt; SEPARATOR = &lt;span style="color:#006080;"&gt;&amp;#39;-&amp;#39;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;Console.WriteLine(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#006080;"&gt;&amp;quot;{0}{1}{2}&amp;quot;&lt;/span&gt;, uri, SEPARATOR, counters[uri]));&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;p&gt;Y la función “Reduce” así:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;pre id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;private &lt;span style="color:#0000ff;"&gt;const&lt;/span&gt; char SEPARATOR = &amp;#39;-&amp;#39;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;string line&lt;span style="color:#008000;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;while ((line = Console.ReadLine()) != null)&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;    // parse the uri and the number of request&lt;br /&gt;    var values = line.Split(SEPARATOR)&lt;span style="color:#008000;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;    string uri = values[0];&lt;/span&gt;&lt;br /&gt;    int numOfRequests = int.Parse(values[1])&lt;span style="color:#008000;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;    // save the max number of requests for each uri in UriCounters&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (!UriCounters.ContainsKey(uri))&lt;br /&gt;        UriCounters.Add(uri, numOfRequests)&lt;span style="color:#008000;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;    else if (UriCounters[uri] &amp;lt; numOfRequests)&lt;/span&gt;&lt;br /&gt;        UriCounters[uri] = numOfRequests&lt;span style="color:#008000;"&gt;;&lt;/span&gt;&lt;br /&gt;}&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;p&gt;6) Volvemos al punto 1) y eliminamos el contenido del container “fivetopuriresult” del&amp;#160; storage de Azure.&lt;/p&gt;

&lt;p&gt;7) Ejecutamos nuevamente el Job. Y ahora sí:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;font size="1"&gt;12/10/07 17:16:18 INFO mapred.FileInputFormat: Total input paths to process : 1 
      &lt;br /&gt;12/10/07 17:16:19 INFO streaming.StreamJob: getLocalDirs(): [/hdfs/mapred/local] 

      &lt;br /&gt;12/10/07 17:16:19 INFO streaming.StreamJob: Running job: job_201210071446_0030 

      &lt;br /&gt;12/10/07 17:16:19 INFO streaming.StreamJob: To kill this job, run: 

      &lt;br /&gt;12/10/07 17:16:19 INFO streaming.StreamJob: c:\Apps\dist/bin/hadoop job -Dmapred.job.tracker=10.26.110.33:9010 -kill job_201210071446_0030 

      &lt;br /&gt;12/10/07 17:16:19 INFO streaming.StreamJob: Tracking URL: http://10.26.110.33:50030/jobdetails.jsp?jobid=job_201210071446_0030 

      &lt;br /&gt;12/10/07 17:16:20 INFO streaming.StreamJob: map 0% reduce 0% 

      &lt;br /&gt;12/10/07 17:16:47 INFO streaming.StreamJob: map 50% reduce 0% 

      &lt;br /&gt;12/10/07 17:16:50 INFO streaming.StreamJob: map 100% reduce 0% 

      &lt;br /&gt;12/10/07 17:16:56 INFO streaming.StreamJob: map 100% reduce 33% 

      &lt;br /&gt;12/10/07 17:17:08 INFO streaming.StreamJob: map 100% reduce 100% 

      &lt;br /&gt;12/10/07 17:17:21 INFO streaming.StreamJob: Job complete: job_201210071446_0030 

      &lt;br /&gt;12/10/07 17:17:21 INFO streaming.StreamJob: Output: &lt;strong&gt;asv://fivetopuriresults/results.txt&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_40AEF67E.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_1D9E850E.png" width="595" height="434" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A partir de aquí sólo nos queda complicar las funciones “Map” y “Reduce” tanto como queramos para explotar mucha más información.&lt;/p&gt;

&lt;p&gt;En los siguientes post veremos como manejar toda esta información con “Hive” (Datawarehouse de Hadoop) y “Exel”.&lt;/p&gt;

&lt;p&gt;Saludos @WorkingRoom 
  &lt;br /&gt;Juanlu, ElGuerre&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=207046" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Hadoop/default.aspx">Hadoop</category></item><item><title>Windows Azure MEDIA SERVICES. In action !!!</title><link>http://geeks.ms/blogs/jlguerrero/archive/2012/09/30/windows-azure-media-services-in-action.aspx</link><pubDate>Sun, 30 Sep 2012 14:10:03 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:206912</guid><dc:creator>Juanlu,ElGuerre</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jlguerrero/rsscomments.aspx?PostID=206912</wfw:commentRss><comments>http://geeks.ms/blogs/jlguerrero/archive/2012/09/30/windows-azure-media-services-in-action.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/MediaServicesArch_5F00_5FD6DAED.png"&gt;&lt;img title="MediaServicesArch" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;float:left;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="MediaServicesArch" align="left" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/MediaServicesArch_5F00_thumb_5F00_5E92420E.png" width="388" height="273" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;De la misma manera que el el &lt;a href="http://geeks.ms/blogs/jlguerrero/archive/2012/09/09/windows-azure-mobile-services-amp-windows-8.aspx"&gt;post anterior&lt;/a&gt; exprimíamos Windows Azure MOBILE SERVICES, en este caso le toca el turno a Windows Azure &lt;a href="http://www.windowsazure.com/es-es/home/features/media-services/"&gt;MEDIA SERVICES&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Pues bien, estos recientes servicios (PaaS), aun en Preview, tienen como finalidad, facilitar, crear y entregar contenido multimedia a los diferentes dispositivos: HTML5, Silverlight, Flash, Windows (Windows 8, etc.), Windows Phone, Xbox, MacOS, iPhone/iPad y Android, aportando gracias a Windows Azure, flexibilidad, escalabilidad y fiabilidad en la nube y, todo ello basado en “&lt;a title="Microsoft Media Platform" href="http://www.microsoft.com/en-us/mediaplatform/"&gt;Microsoft Media Platform&lt;/a&gt;”.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Me gustaría hacer referencia a este &lt;a href="http://weblogs.asp.net/scottgu/archive/2012/08/21/windows-azure-media-services-and-the-london-2012-olympics.aspx"&gt;enlace&lt;/a&gt;, donde Scott Guthrie, comenta brevemente el uso de estos servicios en las &lt;strong&gt;&lt;u&gt;olimpiadas de Londres 2012&lt;/u&gt;&lt;/strong&gt;, donde se estos han soportado unas 2.300h de vídeos en directo y contenido VOD (Video On demand)HD. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Y como siempre, Microsoft pone a nuestra disposición unos &lt;a href="http://www.windowsazure.com/en-us/develop/net/how-to-guides/media-services/"&gt;mágnificos tutoriales&lt;/a&gt;, donde poder seguir nuestros primeros pasos. Nosotros iremos un poco más allá hasta completar un ejemplo completo y funcional además de aclarar dudas y seguir algunas recomendaciones.&lt;font style="background-color:#ffff00;"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;MEDIA SERVICES soporta los siguientes escenarios:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Building end-to-end workflows&lt;/strong&gt;: Todo la aplicación en el Cloud. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Building hybrid workflows&lt;/strong&gt;:&amp;#160; Integración de aplicaciones y procesos.&amp;#160; Pudiendo codificar por ejemplo, contenido en “On-Premisse” subiendo el mismo a Media Services para su transcodificación y transformación en distintos formatos. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Providing cloud support for media players&lt;/strong&gt;: Crear, gestionar y distribuir/entregar contenido media a diferentes dispositivos y plataformas: iOS, Android, and Windows Devices. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Una vez ya conocemos las aspectos generales, veamos a continuación lo que necesitamos para llevar a cabo nuestro ejemplo: “MyFirstMedia Services” &lt;/p&gt;  &lt;p&gt;1. Activamos el servicio para usarlo con nuestra subscripción.&lt;/p&gt;  &lt;p&gt;2. Creamos un servicio desde la &lt;a href="https://manage.windowsazure.com"&gt;consola de administración (Portal)&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_37E3B5C1.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_597FDE92.png" width="540" height="252" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_78565270.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_5C651D78.png" width="334" height="250" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;3. Aseguramos la sincronización de “key” con nuestro storage:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_4224B454.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_79F6F877.png" width="348" height="249" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;4. Creamos, desde Visual Studio un proyecto de tipo Consola&lt;/p&gt;  &lt;p&gt;5. Añadimos las siguientes referencias.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;C:\Program Files\Microsoft SDKs\Windows Azure\.NET SDK\2012-06\bin\Microsoft.WindowsAzure.StorageClient.dll &lt;/li&gt;    &lt;li&gt;C:\Program Files (x86)\Microsoft WCF Data Services\5.0\bin\.NETFramework\ &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;ul&gt;     &lt;li&gt;       &lt;div align="left"&gt;Microsoft.Data.Edm.dll&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div align="left"&gt;Microsoft.Data.OData.dll&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div align="left"&gt;Microsoft.Data.Services.dll&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div align="left"&gt;Microsoft.Data.Services.Client.dll&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div align="left"&gt;System.Spatial.dll&lt;/div&gt;     &lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;C:\Program Files (x86)\Microsoft SDKs\Windows Azure Media Services\Services\v1.0\Microsoft.WindowsAzure.MediaServices.Client.dll &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;6.&amp;#160; Conectamos con Media Services obteniendo un Contexto.&amp;#160; En este punto podemos obtener el siguiente error: ”&lt;em&gt;Error 400 Bad Request when using CloudMediaContext with Azure Media Services&lt;/em&gt;” si no se introducen correctamente estos parámetros:&lt;/p&gt;  &lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;height:33px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:59.89%;background-color:#f4f4f4;"&gt;   &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;     &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum1" style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;._context = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; CloudMediaContext(accountName, accountKey);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Donde&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;accountName es el nombre del servicio, introducido al crear el mismo y según hemos señalado como “Account Name”. &lt;/li&gt;

  &lt;li&gt;accountKey es el “&lt;strong&gt;SECONDARY MEDIA SERVICE ACCESS KEY&lt;/strong&gt;”. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;7. Creamos y encriptamos nuestro activo y lo subimos al Storage de Windows Azure, obteniendo una referencia al container de dichos ficheros. Si el valor de encriptación es “None”, podremos ver el contenido de dichos ficheros una vez realizado el “Upload” utilizando por ejemplo, “&lt;a href="http://azurestorageexplorer.codeplex.com/"&gt;Azure Storage Explorer&lt;/a&gt;”.&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum1" style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; IAsset UpLoadFiles(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;[] files)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum2" style="color:#606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum3" style="color:#606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;// (2) Creamos un asset y añadimos los activos/ficheros para hacer el Upload del asset.            &lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum4" style="color:#606060;"&gt;   4:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;._context.Assets.Create(files, AssetCreationOptions.StorageEncrypted);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum5" style="color:#606060;"&gt;   5:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;En este punto podremos obtener el error: &lt;em&gt;“Could not load file or assembly &amp;#39;Microsoft.WindowsAzure.StorageClient, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&amp;#39; or one of its dependencies. The located assembly&amp;#39;s manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)”&lt;/em&gt; que podemos resolver (gracias al cable de &lt;a href="http://social.msdn.microsoft.com/Forums/nl-NL/MediaServices/thread/03a7f909-9edf-447a-af04-f73edcdc3113?prof=required"&gt;John&lt;/a&gt;) incluyendo en nuestro “&lt;strong&gt;.config&lt;/strong&gt;” el siguiente código:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum1" style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#800000;"&gt;xml&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;version&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;encoding&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt; ?&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum2" style="color:#606060;"&gt;   2:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;configuration&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum3" style="color:#606060;"&gt;   3:&lt;/span&gt;   &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;runtime&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum4" style="color:#606060;"&gt;   4:&lt;/span&gt;      &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;assemblyBinding&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;xmlns&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;urn:schemas-microsoft-com:asm.v1&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum5" style="color:#606060;"&gt;   5:&lt;/span&gt;        &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;dependentAssembly&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum6" style="color:#606060;"&gt;   6:&lt;/span&gt;          &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;assemblyIdentity&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Microsoft.WindowsAzure.StorageClient&amp;quot;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum7" style="color:#606060;"&gt;   7:&lt;/span&gt;                            &lt;span style="color:#ff0000;"&gt;publicKeyToken&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;31bf3856ad364e35&amp;quot;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum8" style="color:#606060;"&gt;   8:&lt;/span&gt;                            &lt;span style="color:#ff0000;"&gt;culture&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;neutral&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum9" style="color:#606060;"&gt;   9:&lt;/span&gt;          &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;bindingRedirect&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;oldVersion&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;1.1.0.0&amp;quot;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum10" style="color:#606060;"&gt;  10:&lt;/span&gt;                           &lt;span style="color:#ff0000;"&gt;newVersion&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;1.7.0.0&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum11" style="color:#606060;"&gt;  11:&lt;/span&gt;        &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;dependentAssembly&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum12" style="color:#606060;"&gt;  12:&lt;/span&gt;        &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;dependentAssembly&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum13" style="color:#606060;"&gt;  13:&lt;/span&gt;          &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;assemblyIdentity&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Microsoft.WindowsAzure.StorageClient&amp;quot;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum14" style="color:#606060;"&gt;  14:&lt;/span&gt;                            &lt;span style="color:#ff0000;"&gt;publicKeyToken&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;31bf3856ad364e35&amp;quot;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum15" style="color:#606060;"&gt;  15:&lt;/span&gt;                            &lt;span style="color:#ff0000;"&gt;culture&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;neutral&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum16" style="color:#606060;"&gt;  16:&lt;/span&gt;          &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;publisherPolicy&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;apply&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;no&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum17" style="color:#606060;"&gt;  17:&lt;/span&gt;        &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;dependentAssembly&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum18" style="color:#606060;"&gt;  18:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum19" style="color:#606060;"&gt;  19:&lt;/span&gt;      &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;assemblyBinding&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum20" style="color:#606060;"&gt;  20:&lt;/span&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;runtime&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;  &lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum21" style="color:#606060;"&gt;  21:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;configuration&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Una vez todo ya podemos hacer el Upload de nuestro asset, ahora ya estos listo para lanzar el Job con el Encoding adecuado:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum1" style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; IJob CreateEncodingJob(IAsset asset, EnumMediaProcessor enumProcesor)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum2" style="color:#606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum3" style="color:#606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;// Declarar un nuevo Job.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum4" style="color:#606060;"&gt;   4:&lt;/span&gt;     IJob job = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;._context.Jobs.Create(&lt;span style="color:#006080;"&gt;&amp;quot;My encoding job&amp;quot;&lt;/span&gt;);          &lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum5" style="color:#606060;"&gt;   5:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum6" style="color:#606060;"&gt;   6:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; configuration = GetConfiguration(enumProcesor);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum7" style="color:#606060;"&gt;   7:&lt;/span&gt;     IMediaProcessor processor = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.GetMediaProcessor(enumProcesor);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum8" style="color:#606060;"&gt;   8:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum9" style="color:#606060;"&gt;   9:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum10" style="color:#606060;"&gt;  10:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;// Crea un tarea con el detalle de codificacion(enconding) utilizando un string preestablecido.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum11" style="color:#606060;"&gt;  11:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;// Strings preestablecidos para Windows Azure Media Encoder: http://msdn.microsoft.com/en-us/library/jj129582.aspx&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum12" style="color:#606060;"&gt;  12:&lt;/span&gt;     ITask task = job.Tasks.AddNew(&lt;span style="color:#006080;"&gt;&amp;quot;My encoding task&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum13" style="color:#606060;"&gt;  13:&lt;/span&gt;         processor,&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum14" style="color:#606060;"&gt;  14:&lt;/span&gt;         configuration,&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum15" style="color:#606060;"&gt;  15:&lt;/span&gt;         TaskCreationOptions.None);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum16" style="color:#606060;"&gt;  16:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum17" style="color:#606060;"&gt;  17:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;// Especificar el Asset a codificar&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum18" style="color:#606060;"&gt;  18:&lt;/span&gt;     task.InputMediaAssets.Add(asset);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum19" style="color:#606060;"&gt;  19:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum20" style="color:#606060;"&gt;  20:&lt;/span&gt;     &lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum21" style="color:#606060;"&gt;  21:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;// Añade un asset de salida que contiene el resultado del job.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum22" style="color:#606060;"&gt;  22:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;// Este asset no es encriptado &amp;quot;AssetCreationOption.None&amp;quot;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum23" style="color:#606060;"&gt;  23:&lt;/span&gt;     task.OutputMediaAssets.AddNew(&lt;span style="color:#006080;"&gt;&amp;quot;Output asset&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum24" style="color:#606060;"&gt;  24:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum25" style="color:#606060;"&gt;  25:&lt;/span&gt;         AssetCreationOptions.None);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum26" style="color:#606060;"&gt;  26:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum27" style="color:#606060;"&gt;  27:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;// Ejecutar el Job. &lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum28" style="color:#606060;"&gt;  28:&lt;/span&gt;     job.Submit();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum29" style="color:#606060;"&gt;  29:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum30" style="color:#606060;"&gt;  30:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; job;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum31" style="color:#606060;"&gt;  31:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;En este punto, tenemos que tener claras varias cosas:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;El Tipo de “Media Processor” a utilizar dependerá&amp;#160; de lo que queramos hacer. Se trata de un string como puede verse en el siguiente snippet y, para conocer todos estos tipos preestablecidos accederemos a este enlace: “&lt;a href="http://msdn.microsoft.com/en-us/library/jj129582.aspx"&gt;Task Preset Strings for Windows Azure Media Encoder&lt;/a&gt;”. &lt;/li&gt;

  &lt;li&gt;Cada uno de estos “Media Processor” trata un tipo de ficheros/asset determinado y de la misma manera genera una salida diferente. Por tanto si estamos lanzado un Job para: 
    &lt;ul&gt;
      &lt;li&gt;una conversión de .MP4 a Smooth Streaming tendremos utilizar como “Media Processor”, “&lt;em&gt;MP4 to Smooth Streams Task&lt;/em&gt;”, que genera un asset de salida: .ism, .isma, .ismc, .ismv, necesarios para los visores de smooth streaming. &lt;/li&gt;

      &lt;li&gt;una conversión&amp;#160;&amp;#160; “Windows Azure Media Encoder” se genera una salida: .mp4, y “_metadata.xml”. &lt;/li&gt;

      &lt;li&gt;Etc. &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh973634.aspx"&gt;En este enlace&lt;/a&gt;, podemos ver todos los tipos de archivos soportados por Media Services. &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  &lt;li&gt;Cada Job, además de trabajar con un “Media Processor” espera una configuración para el mismo, de manera que por ejemplo, para: 
    &lt;ul&gt;
      &lt;li&gt;Windows Azure Media Encoder su configuración es:&amp;#160; “H.264 256k DSL CBR” &lt;/li&gt;

      &lt;li&gt;Para una conversión de MP4 a Smooth Streams:&amp;#160; &lt;a href="http://msdn.microsoft.com/en-us/library/hh973635.aspx"&gt;http://msdn.microsoft.com/en-us/library/hh973635.aspx&lt;/a&gt; &lt;/li&gt;

      &lt;li&gt;Para una generación de un “Thumbnails” a partir de un vídeo: &lt;a title="" href="http://msdn.microsoft.com/en-us/library/hh973624.aspx"&gt;http://msdn.microsoft.com/en-us/library/hh973624.aspx&lt;/a&gt; &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum1" style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#008000;"&gt;// http://www.windowsazure.com/en-us/develop/net/how-to-guides/media-services/&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum2" style="color:#606060;"&gt;   2:&lt;/span&gt; &lt;span style="color:#008000;"&gt;// Windows Azure Media Encoder:  Media Encoder. &lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum3" style="color:#606060;"&gt;   3:&lt;/span&gt; &lt;span style="color:#008000;"&gt;// PlayReady Protection Task:   PlayReady Protection. &lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum4" style="color:#606060;"&gt;   4:&lt;/span&gt; &lt;span style="color:#008000;"&gt;// MP4 to Smooth Streams Task:  Conversión de  .mp4 a formato smooth streaming. &lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum5" style="color:#606060;"&gt;   5:&lt;/span&gt; &lt;span style="color:#008000;"&gt;// Smooth Streams to HLS Task:  Conversión de smooth streaming a formato Apple HTTP Live Streaming (HLS). &lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum6" style="color:#606060;"&gt;   6:&lt;/span&gt; &lt;span style="color:#008000;"&gt;// Storage Decryption:          Desencripta los assets que has sindo encriptados usando Storage Encription. &lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum7" style="color:#606060;"&gt;   7:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; IMediaProcessor GetMediaProcessor(EnumMediaProcessor mediaProcessor)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum8" style="color:#606060;"&gt;   8:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum9" style="color:#606060;"&gt;   9:&lt;/span&gt;     var theProcessor =&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum10" style="color:#606060;"&gt;  10:&lt;/span&gt;         from p &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;._context.MediaProcessors&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum11" style="color:#606060;"&gt;  11:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;where&lt;/span&gt; p.Name == mediaProcessor.GetStringValue()&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum12" style="color:#606060;"&gt;  12:&lt;/span&gt;         select p;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum13" style="color:#606060;"&gt;  13:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum14" style="color:#606060;"&gt;  14:&lt;/span&gt;     IMediaProcessor processor = theProcessor.First();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum15" style="color:#606060;"&gt;  15:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum16" style="color:#606060;"&gt;  16:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (processor == &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum17" style="color:#606060;"&gt;  17:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum18" style="color:#606060;"&gt;  18:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; ArgumentException(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.Format(System.Globalization.CultureInfo.CurrentCulture,&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum19" style="color:#606060;"&gt;  19:&lt;/span&gt;             &lt;span style="color:#006080;"&gt;&amp;quot;Unknown processor&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum20" style="color:#606060;"&gt;  20:&lt;/span&gt;             mediaProcessor));&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum21" style="color:#606060;"&gt;  21:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum22" style="color:#606060;"&gt;  22:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; processor;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum23" style="color:#606060;"&gt;  23:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Si el Job ha terminado correctamente nuestra aplicación cliente podría acceder al asset y descargarlo. No obstante se puede producir erres durante la la codificación, donde para ello, haremos un chequeo del Job para corroborar su estado:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum1" style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; ReadOnlyCollection&amp;lt;ErrorDetail&amp;gt; CheckJobProgress(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; jobId)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum2" style="color:#606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum3" style="color:#606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; jobCompleted = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum4" style="color:#606060;"&gt;   4:&lt;/span&gt;     ReadOnlyCollection&amp;lt;ErrorDetail&amp;gt; jobErrors = &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum5" style="color:#606060;"&gt;   5:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum6" style="color:#606060;"&gt;   6:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;while&lt;/span&gt; (!jobCompleted &amp;amp;&amp;amp; (&lt;span style="color:#0000ff;"&gt;null&lt;/span&gt; == jobErrors))&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum7" style="color:#606060;"&gt;   7:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum8" style="color:#606060;"&gt;   8:&lt;/span&gt;         IJob theJob = _manager.GetJob(jobId);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum9" style="color:#606060;"&gt;   9:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;switch&lt;/span&gt; (theJob.State)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum10" style="color:#606060;"&gt;  10:&lt;/span&gt;         {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum11" style="color:#606060;"&gt;  11:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;case&lt;/span&gt; JobState.Finished:&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum12" style="color:#606060;"&gt;  12:&lt;/span&gt;                 jobCompleted = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum13" style="color:#606060;"&gt;  13:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;break&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum14" style="color:#606060;"&gt;  14:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;case&lt;/span&gt; JobState.Queued:&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum15" style="color:#606060;"&gt;  15:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;case&lt;/span&gt; JobState.Scheduled:&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum16" style="color:#606060;"&gt;  16:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;case&lt;/span&gt; JobState.Processing:&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum17" style="color:#606060;"&gt;  17:&lt;/span&gt;                 Thread.Sleep(5000);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum18" style="color:#606060;"&gt;  18:&lt;/span&gt;                 Console.Write(&lt;span style="color:#006080;"&gt;&amp;quot;.&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum19" style="color:#606060;"&gt;  19:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;break&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum20" style="color:#606060;"&gt;  20:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;case&lt;/span&gt; JobState.Error:&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum21" style="color:#606060;"&gt;  21:&lt;/span&gt;                 jobErrors = theJob.Tasks[0].ErrorDetails;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum22" style="color:#606060;"&gt;  22:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;break&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum23" style="color:#606060;"&gt;  23:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;default&lt;/span&gt;:&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum24" style="color:#606060;"&gt;  24:&lt;/span&gt;                 Console.WriteLine(&lt;span style="color:#006080;"&gt;&amp;quot;Unknown job state: {0}&amp;quot;&lt;/span&gt;, theJob.State.ToString());&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum25" style="color:#606060;"&gt;  25:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;break&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum26" style="color:#606060;"&gt;  26:&lt;/span&gt;         }&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum27" style="color:#606060;"&gt;  27:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum28" style="color:#606060;"&gt;  28:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; jobErrors;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum29" style="color:#606060;"&gt;  29:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;A pesar de tener en cuenta las recomendaciones anteriores, se pueden producir algunos errores durante el “Upload” o el “Endonding del Job”&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;“Cannot import a zero-lenght file”: &lt;/strong&gt;Se trata de error al subir un fichero de tipo imagen e intentar realizar su enconding distinto a “Storage Decryption”. &lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;“One or more errors occurred” : &lt;/strong&gt;Generalmente este se produce si intentamos subir ficheros a través de una conexión débil como por ejemplo desde una 3G con poca cobertura. El detalle de estos puede verse a continuación: &lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;&lt;strong&gt;InnerException&lt;/strong&gt;: System.Data.Services.Client.DataServiceClientException 

      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; HResult=-2146233079 

      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Message=&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&amp;lt;error xmlns=&amp;quot;&lt;/em&gt;&lt;a href="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata&amp;quot;"&gt;&lt;em&gt;http://schemas.microsoft.com/ado/2007/08/dataservices/metadata&amp;quot;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&amp;gt;&amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;message xml:lang=&amp;quot;en-US&amp;quot;&amp;gt;&lt;font style="background-color:#ffff00;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt;&lt;strong&gt;Asset has no files uploaded&lt;/strong&gt;&lt;font style="background-color:#ffff00;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt;.&amp;lt;/message&amp;gt;&amp;lt;/error&amp;gt; 

      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Source=Microsoft.Data.Services.Client 

      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; StatusCode=400 

      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; StackTrace: 

      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; at System.Data.Services.Client.QueryResult.ExecuteQuery(DataServiceContext context) 

      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; at System.Data.Services.Client.DataServiceRequest.Execute[TElement](DataServiceContext context, QueryComponents queryComponents)&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;Donde &lt;strong&gt;Fiddler&lt;/strong&gt; nos proporcional la siguiente información:&lt;/em&gt;&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;&lt;em&gt;&lt;strong&gt;500: &lt;/strong&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;lt;Error&amp;gt;&amp;lt;Code&amp;gt;OperationTimedOut&amp;lt;/Code&amp;gt;&amp;lt;Message&amp;gt;&lt;u&gt;Operation could not be completed within the specified time&lt;/u&gt;. 

        &lt;br /&gt;RequestId:fc8be06f-1801-4724-a549-14a5d327d48f 

        &lt;br /&gt;Time:2012-09-23T13:33:32.3638228Z&amp;lt;/Message&amp;gt;&amp;lt;/Error&amp;gt;&lt;/em&gt; &lt;/li&gt;

    &lt;li&gt;&lt;em&gt;&lt;strong&gt;504&lt;/strong&gt;:ReadResponse() failed: &lt;/em&gt;The server did not return a response for this request&lt;em&gt;. &lt;/em&gt;&lt;/li&gt;

    &lt;li&gt;&lt;strong&gt;&lt;/strong&gt;&lt;em&gt;&lt;strong&gt;502&lt;/strong&gt;: The socket connection to mediasvc5s9w447krcczl.blob.core.windows.net failed. &amp;lt;br /&amp;gt;ErrorCode: 10060. &amp;lt;br /&amp;gt;&lt;u&gt;A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 168.63.0.14:80&lt;/u&gt; &lt;/em&gt;&lt;/li&gt;

    &lt;li&gt;&lt;em&gt;DNS Lookup for &amp;quot;mediasvc5s9w447krcczl.blob.core.windows.net&amp;quot; failed. No such host is known.&lt;/em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;strong&gt;Otros recomendaciones&lt;/strong&gt; que deberíamos conocer son:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;En la preview actual, no es posible eliminar los “Assets” subidos de ninguna manera desde la consola.&amp;#160; Mediante código sería de la siguiente manera, teniendo en cuenta que antes de poder borrar un Asset, tenemos que revocar (“Revoke”) su Locator. No obstante y a pesar de todo, en mis pruebas no lo he conseguido.&amp;#160; Supongo que es debido a la versión “Preview”: &lt;/li&gt;
&lt;/ul&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum1" style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; (var a &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;._context.Assets)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum2" style="color:#606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum3" style="color:#606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; (var l &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; a.Locators)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum4" style="color:#606060;"&gt;   4:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;._context.Locators.Revoke(l);               &lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum5" style="color:#606060;"&gt;   5:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum6" style="color:#606060;"&gt;   6:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;._context.Assets.Delete(a); &lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum7" style="color:#606060;"&gt;   7:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;Incluyo a continuación un par de snippets que nos facilitarán los progresos de carga y descarga para así no desesperarnos: &lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;p&gt;Progreso de carga (“Upload”) de ficheros/assets:&lt;/p&gt;

  &lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
    &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum1" style="color:#606060;"&gt;   1:&lt;/span&gt; ...&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum2" style="color:#606060;"&gt;   2:&lt;/span&gt;        _manager.Assets.OnUploadProgress += Assets_OnUploadProgress;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum3" style="color:#606060;"&gt;   3:&lt;/span&gt; ..&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum4" style="color:#606060;"&gt;   4:&lt;/span&gt; rivate &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Assets_OnUploadProgress(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, UploadProgressEventArgs e)&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum5" style="color:#606060;"&gt;   5:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum6" style="color:#606060;"&gt;   6:&lt;/span&gt;    &lt;span style="color:#0000ff;"&gt;try&lt;/span&gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum7" style="color:#606060;"&gt;   7:&lt;/span&gt;    {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum8" style="color:#606060;"&gt;   8:&lt;/span&gt;        Console.WriteLine(&lt;span style="color:#006080;"&gt;&amp;quot;Assets_OnUploadProgress: {0:0.00} %, {1}/{2}, {3:0.00} MB/{4:0.00} MB&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum9" style="color:#606060;"&gt;   9:&lt;/span&gt;        e.Progress, e.CurrentFile, e.TotalFiles, e.BytesSent / 1024 ^ 2, e.TotalBytes / 1024 ^ 2);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum10" style="color:#606060;"&gt;  10:&lt;/span&gt;    }&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum11" style="color:#606060;"&gt;  11:&lt;/span&gt;    &lt;span style="color:#0000ff;"&gt;catch&lt;/span&gt; (Exception ex)&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum12" style="color:#606060;"&gt;  12:&lt;/span&gt;    {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum13" style="color:#606060;"&gt;  13:&lt;/span&gt;        Console.WriteLine(&lt;span style="color:#006080;"&gt;&amp;quot;OnUploadProgress event error: {0}{1}{2}&amp;quot;&lt;/span&gt;, ex.Message, Environment.NewLine, ex.StackTrace.ToString());&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum14" style="color:#606060;"&gt;  14:&lt;/span&gt;    }&lt;/pre&gt;
&lt;/div&gt;
  &lt;/div&gt;

  &lt;p&gt;Progreso de descarga (“Download”):&lt;/p&gt;

  &lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
    &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum1" style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; DownloadAssetToLocal(IAsset outputAsset, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; outputFolder)&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum2" style="color:#606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum3" style="color:#606060;"&gt;   3:&lt;/span&gt;     Console.WriteLine();&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum4" style="color:#606060;"&gt;   4:&lt;/span&gt;     Console.WriteLine(&lt;span style="color:#006080;"&gt;&amp;quot;Files are downloading...please wait.&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum5" style="color:#606060;"&gt;   5:&lt;/span&gt;     Console.WriteLine();&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum6" style="color:#606060;"&gt;   6:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum7" style="color:#606060;"&gt;   7:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; (IFileInfo outputFile &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; outputAsset.Files)&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum8" style="color:#606060;"&gt;   8:&lt;/span&gt;     {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum9" style="color:#606060;"&gt;   9:&lt;/span&gt;         outputFile.OnDownloadProgress += outputFile_OnDownloadProgress;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum10" style="color:#606060;"&gt;  10:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum11" style="color:#606060;"&gt;  11:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; localDownloadPath = Path.GetFullPath(outputFolder + &lt;span style="color:#006080;"&gt;@&amp;quot;\&amp;quot; + outputFile.Name);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum12" style="color:#606060;"&gt;  12:&lt;/span&gt;         Console.WriteLine(&amp;quot;&lt;/span&gt;File &lt;span style="color:#0000ff;"&gt;is&lt;/span&gt; downloading to:  &lt;span style="color:#006080;"&gt;&amp;quot; + localDownloadPath);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum13" style="color:#606060;"&gt;  13:&lt;/span&gt;         outputFile.DownloadToFile(Path.GetFullPath(outputFolder + @&amp;quot;&lt;/span&gt;\&lt;span style="color:#006080;"&gt;&amp;quot; + outputFile.Name));&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum14" style="color:#606060;"&gt;  14:&lt;/span&gt;         Console.WriteLine();&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum15" style="color:#606060;"&gt;  15:&lt;/span&gt;     }&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum16" style="color:#606060;"&gt;  16:&lt;/span&gt; }&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum17" style="color:#606060;"&gt;  17:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum18" style="color:#606060;"&gt;  18:&lt;/span&gt; static void outputFile_OnDownloadProgress(object sender, DownloadProgressEventArgs e)&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum19" style="color:#606060;"&gt;  19:&lt;/span&gt; {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum20" style="color:#606060;"&gt;  20:&lt;/span&gt;     Console.WriteLine(&amp;quot;&lt;/span&gt;    Bytes downloaded: &lt;span style="color:#006080;"&gt;&amp;quot; + e.BytesDownloaded);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span id="lnum21" style="color:#606060;"&gt;  21:&lt;/span&gt;     Console.WriteLine(&amp;quot;&lt;/span&gt;    Download progress %:  &amp;quot; + e.Progress);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span id="lnum22" style="color:#606060;"&gt;  22:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;Espero haber conseguido con este recorrido a través de Media Services acercarnos un poco más al mundo Cloud con Windows Azure.&lt;/p&gt;

&lt;p&gt;
  &lt;br /&gt;Saludos @Home 

  &lt;br /&gt;Juanlu, ElGuerre&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=206912" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Windows+Azure+Media+Services/default.aspx">Windows Azure Media Services</category></item><item><title>Windows Azure MOBILE SERVICES &amp; Windows 8</title><link>http://geeks.ms/blogs/jlguerrero/archive/2012/09/09/windows-azure-mobile-services-amp-windows-8.aspx</link><pubDate>Sun, 09 Sep 2012 14:28:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:206693</guid><dc:creator>Juanlu,ElGuerre</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jlguerrero/rsscomments.aspx?PostID=206693</wfw:commentRss><comments>http://geeks.ms/blogs/jlguerrero/archive/2012/09/09/windows-azure-mobile-services-amp-windows-8.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/mobile_2D00_service_5F00_54234296.png"&gt;&lt;img height="176" width="277" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/mobile_2D00_service_5F00_thumb_5F00_09D887F1.png" align="left" alt="mobile-service" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;float:left;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="mobile-service" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Muy buenas,&lt;/p&gt;
&lt;p&gt;Hoy, me dispon&amp;iacute;a a ver el funcionamiento de la reciente nueva caracter&amp;iacute;stica de Windows Azure (&amp;ldquo;MOBILE SERVICES&amp;rdquo;) y sinceramente, ha sido bastante f&amp;aacute;cil e intuitivo entender todo lo que a ello respecta. &amp;iexcl;La verdad es que los tutoriales que ha preparado Microsoft son geniales adem&amp;aacute;s de sencillos!. Podemos encontralos aqu&amp;iacute;, en &amp;ldquo;&lt;a href="http://www.windowsazure.com/en-us/develop/mobile/tutorials/get-started/"&gt;Get Started With Mobile Services&lt;/a&gt;&amp;rdquo;.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Scott Guthrie tambi&amp;eacute;n ha escrito un &lt;a href="http://weblogs.asp.net/scottgu/archive/2012/08/28/announcing-windows-azure-mobile-services.aspx"&gt;post&lt;/a&gt; al respecto, as&amp;iacute;, que la intenci&amp;oacute;n de este post ser&amp;aacute; profundizar un poco m&amp;aacute;s e indagar en algunos otros detalles.&lt;/p&gt;
&lt;p&gt;Veamos a continuaci&amp;oacute;n como funciona todo esto:&lt;/p&gt;
&lt;p&gt;1. Habilitar esta caracter&amp;iacute;stica. Para ello seguiremos &lt;a href="http://www.windowsazure.com/en-us/develop/mobile/tutorials/create-a-windows-azure-account/"&gt;estos pasos&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;2. Accedemos al nuevo &lt;a href="https://manage.windowsazure.com/"&gt;portal de Windows Azure&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;3. Seguimos los pasos del tutorial de Microsoft: &amp;ldquo;&lt;a href="http://www.windowsazure.com/en-us/develop/mobile/tutorials/get-started/"&gt;Get Started With Mobile Services&lt;/a&gt;&amp;rdquo; donde: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El primer paso es Instalar el &lt;a href="http://go.microsoft.com/fwlink/?LinkId=257545"&gt;SDK para Mobile Services&lt;/a&gt; adem&amp;aacute;s de tener instalado Visual Studio &lt;/li&gt;
&lt;li&gt;El segundo es Crear una aplicaci&amp;oacute;n nueva o conectarse a una ya existente. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;4. Finalizado el tutorial y, sin esfuerzo alguno, tendremos una aplicaci&amp;oacute;n Windows 8 conectada a Windows Azure. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nota&lt;/strong&gt;: Pero, &amp;iquest;C&amp;oacute;mo funciona todo por &amp;ldquo;debajo&amp;rdquo;? Pues bien, veamos los dos aspectos m&amp;aacute;s importantes: &lt;/p&gt;
&lt;p&gt;a. &lt;span style="text-decoration:underline;"&gt;Conexi&amp;oacute;n con&amp;nbsp; el servicio&lt;/span&gt;. En la clase &amp;ldquo;&lt;strong&gt;App.xaml.cs&lt;/strong&gt;&amp;rdquo;, encontraremos como crear dicha conexi&amp;oacute;n con Mobile Services: &lt;/p&gt;
&lt;blockquote&gt;
&lt;div style="overflow:auto;cursor:text;font-size:8pt;height:102px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;text-align:left;margin:20px 0px 10px;line-height:12pt;max-height:200px;width:64.46%;background-color:#f4f4f4;border:silver 1px solid;padding:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;" id="codeSnippet"&gt;
&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; MobileServiceClient MobileService = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; MobileServiceClient(&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt;     &lt;span style="color:#006080;"&gt;&amp;quot;https://myfirstmobileservice.azure-mobile.net/&amp;quot;&lt;/span&gt;,&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color:#006080;"&gt;&amp;quot;rbLHUGEnPzdeaXvftueqBnJyMXRuiD76&amp;quot;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt; );&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Donde:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La l&amp;iacute;nea 2 es la direcci&amp;oacute;n (URL) bajo la que se encuentra alojado el servicio en Windows Azure y que coincide, con el nombre que hemos introducido al crear nuestro nuevo Mobile Services &amp;ldquo;myfirstmobileservice&amp;rdquo;. El sufijo, &amp;ldquo;.azure-mobile.net&amp;rdquo; ser&amp;aacute; el mismo para todos nuestros mobile services. &lt;/li&gt;
&lt;li&gt;La linea 3, es nuestra &amp;ldquo;Application Key&amp;rdquo;, es decir, la clave que necesitamos para poder establecer la conexi&amp;oacute;n con el servicio.&amp;nbsp; La podemos obtener o cambiar siguiendo estos dos simples pasos: &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_368141CA.png"&gt;&lt;img height="230" width="394" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_37962AE9.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_3936D0F0.png"&gt;&lt;img height="230" width="329" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_14E1C6A1.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nota&lt;/strong&gt;: En caso de que esta key no se corresponda la que hemos indicado en el c&amp;oacute;digo , obtendremos un error: &amp;ldquo;&lt;em&gt;Unauthorized&amp;nbsp; (401 Unauthorized - Details: {&amp;quot;code&amp;quot;:401,&amp;quot;error&amp;quot;:&amp;quot;Unauthorized&amp;quot;})&lt;/em&gt;&amp;rdquo;. &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;b. &lt;span style="text-decoration:underline;"&gt;Conexi&amp;oacute;n con la BBDD&lt;/span&gt;: En el ejemplo y concretamente en el paso 2 del tutorial, podemos crear una tabla de ejemplo (&amp;ldquo;Create TodoItem Table&amp;rdquo;). Sin embargo, para profundizar m&amp;aacute;s, veamos como cambiar la misma y a&amp;ntilde;adir un par de campos nuevos: &amp;ldquo;StartDate&amp;rdquo; y &amp;ldquo;DueDate&amp;rdquo; para as&amp;iacute; poner en calendario nuestras tareas.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Lo primero es modificar la tabla &amp;ldquo;TodoItem&amp;rdquo;. Pero para esta acci&amp;oacute;n, necesitaremos acceder a la misma, (a SQL Azure), a trav&amp;eacute;s del portal de SQL Azure, o bien, a trav&amp;eacute;s de la conexi&amp;oacute;n desde Management Studio, o mejor a&amp;uacute;n, a trav&amp;eacute;s del Server Explorer de Visual Studio 2012, que ahora permite la edici&amp;oacute;n de las tablas de SQL Azure en modo dise&amp;ntilde;o:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_1ABC6A3A.png"&gt;&lt;img height="228" width="405" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_202ADADE.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_4548254A.png"&gt;&lt;img height="286" width="393" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_2208041A.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;En mi caso, y para este ejemplo, opt&amp;eacute; por crear la tabla &amp;ldquo;TodoItem&amp;rdquo;&amp;nbsp; en mi BBDD &amp;ldquo;Northwind&amp;rdquo; que ya tengo creada en SQL Azure. &lt;/p&gt;
&lt;p&gt;A continuaci&amp;oacute;n, lo siguiente es cambiar nuestro &amp;ldquo;Model&amp;rdquo;&amp;nbsp; C#, para incluir estas dos nuevas propiedades. Para el ejemplo en cuesti&amp;oacute;n,&amp;nbsp; nuestro modelo se encuentra en la clase &amp;ldquo;&lt;strong&gt;&lt;em&gt;MainPage.xaml.cs&lt;/em&gt;&amp;rdquo;:&lt;/strong&gt;&lt;/p&gt;
&lt;div style="overflow:auto;cursor:text;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;text-align:left;margin:20px 0px 10px;line-height:12pt;max-height:200px;width:97.5%;background-color:#f4f4f4;border:silver 1px solid;padding:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;" id="codeSnippet"&gt;
&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; TodoItem&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; Id { get; set; }&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;     [DataMember(Name = &lt;span style="color:#006080;"&gt;&amp;quot;text&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; Text { get; set; }&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;     [DataMember(Name = &lt;span style="color:#006080;"&gt;&amp;quot;complete&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; Complete { get; set; }&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;     [DataMember(Name =&lt;span style="color:#006080;"&gt;&amp;quot;StartDate&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; DateTime StartDate {get; set;}&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt;         &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt;     [DataMember(Name = &lt;span style="color:#006080;"&gt;&amp;quot;DueDate&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; DateTime DueDate {get; set;}&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum16"&gt;  16:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nota&lt;/strong&gt;: Recordemos que los nombres de los campos de la tabla deben coincidir con estas propiedades o con los indicados en la propiedad &lt;em&gt;Name &lt;/em&gt;de &amp;ldquo;&lt;em&gt;DataMember&lt;/em&gt;&amp;rdquo;. Recordad tambien que estos valores son &amp;ldquo;key sensitive&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Por ultimo, s&amp;oacute;lo tenemos que a&amp;ntilde;adir la introducci&amp;oacute;n de estos dos nuevos valores en el c&amp;oacute;digo, al hacer el guardado. Podr&amp;iacute;amos haber incluido dos &amp;ldquo;DatePicker&amp;rdquo; para ambas fechas, pero para el ejemplo, bastar&amp;aacute; con verlo en el c&amp;oacute;digo:&lt;/p&gt;
&lt;div style="overflow:auto;cursor:text;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;text-align:left;margin:20px 0px 10px;line-height:12pt;max-height:200px;width:97.5%;background-color:#f4f4f4;border:silver 1px solid;padding:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;" id="codeSnippet"&gt;
&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; ButtonSave_Click(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     var todoItem = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; TodoItem { Text = TextInput.Text, StartDate = DateTime.Now,  DueDate = DateTime.Now.AddDays(1) };&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;     InsertTodoItem(todoItem);&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Como vemos, simplemente se trata de pasar estos dos nuevos par&amp;aacute;metros al insertar la nueva tarea. Ahora incluimos en la vista dos nuevos TextBlock en el &amp;ldquo;DataTemplate&amp;rdquo; del &amp;ldquo;ListView&amp;rdquo; y listo:&lt;/p&gt;
&lt;div style="overflow:auto;cursor:text;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;text-align:left;margin:20px 0px 10px;line-height:12pt;max-height:200px;width:97.5%;background-color:#f4f4f4;border:silver 1px solid;padding:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;" id="codeSnippet"&gt;
&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;ListView&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;ListItems&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Margin&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;62,10,0,0&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Grid&lt;/span&gt;.&lt;span style="color:#ff0000;"&gt;Row&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;ListView.ItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;StackPanel&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Orientation&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Horizontal&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;CheckBox&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;CheckBoxComplete&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;IsChecked&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{Binding Complete, Mode=TwoWay}&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Checked&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;CheckBoxComplete_Checked&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Content&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{Binding Text}&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Margin&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;10,5&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Center&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;StartDate&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Text&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{Binding StartDate}&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Margin&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;10,5&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;                                                                    &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;DueDate&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Text&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{Binding DueDate}&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Margin&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;10,5&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;ListView.ItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;ListView&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Ejecutamos y ya tenemos nuestra aplicaci&amp;oacute;n Windows 8 conectada a Azure y con nuestros cambios realizados en la base de datos (BBDD) SQL Azure.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_2631DBDF.png"&gt;&lt;img height="146" width="458" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_5849065C.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;c. Adicionalmente existen otros dos puntos a tener en cuenta y que tambi&amp;eacute;n son incluidos en los tutoriales:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;&lt;a href="http://www.windowsazure.com/en-us/develop/mobile/tutorials/get-started-with-users-dotnet/"&gt;Authenticaci&amp;oacute;n&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;: Para lo que tendremos que descargarnos el &lt;a href="http://go.microsoft.com/fwlink/?LinkId=262253&amp;amp;clcid=0x409"&gt;SDK de Live para Windows&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=258415&amp;amp;clcid=0x409" title="Notificaciones Push"&gt;&lt;span style="text-decoration:underline;"&gt;Notificaciones Push&lt;/span&gt;&lt;/a&gt;: Permitir&amp;aacute; a nuestra aplicaci&amp;oacute;n Windows 8 recibir notificaciones. En el caso del ejemplo, tras cada inserci&amp;oacute;n. Para llevar a cabo esta tarea necesitaremos la actualizaci&amp;oacute;n de los scripts (JavaScript) de nuestros servicios. Esto podremos hacerlo accediendo a la pesta&amp;ntilde;a &amp;ldquo;Data&amp;rdquo; y, a continuaci&amp;oacute;n, y tras seleccionar una tabla, &amp;ldquo;TodoItem&amp;rdquo; para nuestro ejemplo, seleccionando la pesta&amp;ntilde;a &amp;ldquo;Script&amp;rdquo;.&amp;nbsp; Para m&amp;aacute;s detalle de estos scripts podemos echar un vistazo a: &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/jj554226.aspx" title="Mobile Services scripting"&gt;Mobile Services scripting&lt;/a&gt;.&amp;nbsp; Adicionalmente y gracias a &amp;ldquo;&lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/jj554226.aspx"&gt;Mobile Services Scripting&lt;/a&gt;&amp;rdquo;, podremos realizar validaciones en servidor.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Espero haber aclarado un poco m&amp;aacute;s lo f&amp;aacute;cil que es disponer de una aplicaci&amp;oacute;n Windows 8 conectada con &lt;a href="http://www.windowsazure.com/"&gt;Windows Azure&lt;/a&gt; gracias a &amp;ldquo;MOBILE SERVICES&amp;rdquo;.&amp;nbsp; Y, ahora que todos estamos tan contentos haciendo nuestros pinitos con Windows 8, no hay impedimentos para no tener nuestros datos en la nube, &lt;img src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/wlEmoticon_2D00_winkingsmile_5F00_7E3EB6B2.png" alt="Gui&amp;ntilde;o" style="border-top-style:none;border-left-style:none;border-bottom-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-winkingsmile" /&gt;.&lt;/p&gt;
&lt;p&gt;Este es el primer paso desde &amp;ldquo;Mobile Services&amp;rdquo; para hacernos tan f&amp;aacute;cil nuestro trabajo, pero, hay m&amp;aacute;s por venir: Integraci&amp;oacute;n con Windows Azure Storage, Servicios Rest, etc. En este punto surgen algunas dudas como, &amp;iquest;Tendremos integraci&amp;oacute;n de Mobile Services para iPone/iPad, Android, etc? &amp;iexcl;Habr&amp;aacute; que esperar!&lt;/p&gt;
&lt;p&gt;Saludos @Home &lt;br /&gt;Juanlu, ElGuerre (@JuanluElGuerre)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=206693" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Sql+Azure/default.aspx">Sql Azure</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Windows+8/default.aspx">Windows 8</category></item><item><title>How to: Windows Azure HPC Scheduler: Getting started &amp; “Parametric Sweep” model</title><link>http://geeks.ms/blogs/jlguerrero/archive/2012/08/08/how-to-windows-azure-hpc-scheduler-getting-started-amp-parametric-sweep-model.aspx</link><pubDate>Wed, 08 Aug 2012 20:46:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:206418</guid><dc:creator>Juanlu,ElGuerre</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jlguerrero/rsscomments.aspx?PostID=206418</wfw:commentRss><comments>http://geeks.ms/blogs/jlguerrero/archive/2012/08/08/how-to-windows-azure-hpc-scheduler-getting-started-amp-parametric-sweep-model.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/HPC_5F00_7FAF7EA1.jpg"&gt;&lt;img height="316" width="516" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/HPC_5F00_thumb_5F00_0DBE47D2.jpg" align="left" alt="HPC" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;float:left;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="HPC" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Muy buenas,&lt;/p&gt;
&lt;p&gt;Despu&amp;eacute;s de unos cuantos d&amp;iacute;as con este post el borrador, no quiero irme de vacaciones sin completarlo.&lt;/p&gt;
&lt;p&gt;Una de las ventajas que ofrece el Cloud Computing es el alto procesamiento/rendimento, es decir, aprovechar la elasticidad que este nos ofrece para sacarle gran partido. Ya he comentado ciertos de estos aspectos en posts anteriores: &lt;a href="http://geeks.ms/blogs/jlguerrero/archive/2012/06/03/sencillez-de-autoescalado-en-windows-azure-con-wasabi.aspx"&gt;Autoscalado&lt;/a&gt;, &lt;a href="http://geeks.ms/blogs/jlguerrero/archive/2012/06/28/windows-azure-caching-preview-i-introducci-243-n-y-an-225-lisis-de-la-cach-233-co-located.aspx"&gt;Caching I&lt;/a&gt; y &lt;a href="http://geeks.ms/blogs/jlguerrero/archive/2012/07/04/windows-azure-caching-preview-ii-cach-233-dedicada-o-distribuida-y-su-capacity-planning.aspx"&gt;Caching II&lt;/a&gt;, sin embargo, en este caso hablaremos de HPC (High Performance Computing). Microsoft ya dispone de esta tecnolog&amp;iacute;a en On-Premisse (&lt;a href="https://www.microsoft.com/hpc/en/us/default.aspx"&gt;Windows HPC Server 2008 R2&lt;/a&gt;) desde hace ya bastante tiempo, para Azure (a partir del SP1. La versi&amp;oacute;n m&amp;aacute;s reciente es la &lt;strong&gt;SP3&lt;/strong&gt;), relativamente poco, y menos a&amp;uacute;n, si hablamos de tener todo en la nube, incluso el &amp;ldquo;Head Node&amp;rdquo;. La diferencia entre ambos, radica principalmente en el despliegue. &lt;/p&gt;
&lt;p&gt;Antes de comenzar a trabajar con Windows Azure HPC, es necesario tener claros los conceptos en los que este se apoya (y que puede profundizar &lt;a href="http://download.microsoft.com/download/B/4/6/B46F065D-B682-464E-82D1-404B241EC86D/WindowsHPCBurstToAzureApps.docx"&gt;aqu&amp;iacute;&lt;/a&gt;):&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration:underline;"&gt;&lt;strong&gt;1) La ventaja de utilizar HPC&lt;/strong&gt;&lt;/span&gt; sobre Windows Azure nos permite pagar s&amp;oacute;lamente por lo que usamos &lt;span style="text-decoration:underline;"&gt;&lt;strong&gt;(&amp;ldquo;Pay as you go&amp;rdquo;) y&amp;nbsp; Elasticidad&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;2) &lt;/span&gt;&lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=28015"&gt;&lt;span style="text-decoration:underline;"&gt;Windows Azure HPC Scheduler&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt;: Cluster HPC completamente en Azure y cuya arquitectura es:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Head Node&lt;/strong&gt;: &lt;span style="text-decoration:underline;"&gt;Gesti&amp;oacute;n y scheduling de Jobs&lt;/span&gt; para el cluster HPC. Proporciona &amp;ldquo;Failover&amp;rdquo;, control y acceso a los recursos del Cluster. &lt;strong&gt;Compute Node&lt;/strong&gt;: &lt;span style="text-decoration:underline;"&gt;Realiza las tareas&lt;/span&gt; asignadas por el &amp;ldquo;Job Scheduler&amp;rdquo;. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Job Scheduler&lt;/strong&gt;: Colas de Jobs y tareas asociadas. &lt;span style="text-decoration:underline;"&gt;Asigna recursos&lt;/span&gt; a estos Jobs, &lt;span style="text-decoration:underline;"&gt;inicializa las tareas&lt;/span&gt; en los &amp;ldquo;Compute Nodes&amp;rdquo; y &lt;span style="text-decoration:underline;"&gt;monitoriza&lt;/span&gt; el estado de los Jobs, tareas y &amp;ldquo;Compute Nodes&amp;rdquo;. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Broker Node&lt;/strong&gt;: Act&amp;uacute;a como intermediario entre la aplicaci&amp;oacute;n y los servicios.&amp;nbsp; Balancea la carga de peticiones a servicios y finalmente retorna los resultados a la aplicaci&amp;oacute;n. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/Azure_2D00_HPC_5F00_5D47C35B.jpg"&gt;&lt;img height="255" width="430" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/Azure_2D00_HPC_5F00_thumb_5F00_50D9A032.jpg" alt="Azure-HPC" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="Azure-HPC" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_3699370E.png"&gt;&lt;img height="279" width="419" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_2CF0C8D8.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;3) Modelos de aplicaci&amp;oacute;n&lt;/span&gt;&lt;/strong&gt;:&amp;nbsp; Sabiendo que&amp;nbsp; Windows HPC SP3 soporta &lt;strong&gt;Jobs&lt;/strong&gt; que permiten la integraci&amp;oacute;n de diferentes escenarios, y donde cada Job tiene sus propiedades, herramientas y APIs (con sus modelos de desarrollo y despliegue), los modelos de aplicaci&amp;oacute;n soportados son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://technet.microsoft.com/en-us/library/ff919702%28WS.10%29.aspx"&gt;Parametric sweep&lt;/a&gt;:&amp;gt;&amp;nbsp; Tareas independientes y sin interacci&amp;oacute;n entre ellas. No se hace uso del &amp;ldquo;Broker Node&amp;rdquo;.&amp;nbsp; Basicamente, reciben datos de entrada, los procesa y retorna el resultado almacen&amp;aacute;ndolo en un &amp;ldquo;storage&amp;rdquo; accesible por los clientes. (Ej.: Windows Azure Storage o SQL Azure). &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=10966"&gt;MS-MPI (Microsoft Message Passing Interface)&lt;/a&gt;: Intercambio de mensajes usado en aplicaciones paralelas (ejecutables que corren en multiples cores o nodos y que tienen dependencia entre ellos y necesitan comunicarse). &lt;strong&gt;Usado principalmente para el intercambio de resultados intermedios&lt;/strong&gt;. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SOA Applications.&lt;/strong&gt; Orientaci&amp;oacute;n a servicios&amp;nbsp; basada en WCF. Aplicaciones candidatas para el escalado en un cluster.&amp;nbsp; La obtenci&amp;oacute;n de resultados puede producirse de manera: 
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;&lt;strong&gt;Interactiva&lt;/strong&gt;&amp;rdquo;: Intercambio de mensages request/response. &lt;/li&gt;
&lt;li&gt;&amp;ldquo;&lt;strong&gt;Durable&lt;/strong&gt;&amp;rdquo;: Para una petici&amp;oacute;n as&amp;iacute;ncrona, los resultados puedan ser consultados en cualquier momento incluso despu&amp;eacute;s de haber estado desconectado.&amp;nbsp; Para ello, el &amp;ldquo;Broker&amp;rdquo; hace uso de colas MSMQ. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Excel Offloading. 
&lt;ul&gt;
&lt;li&gt;UDF&amp;rsquo;s: (XLL) &lt;/li&gt;
&lt;li&gt;WCF Services Call: (VSTO) 
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;&lt;ol&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_70E48722.png"&gt;&lt;img height="333" width="430" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_76FBADF0.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_19FBF994.png"&gt;&lt;img height="322" width="406" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_3ADF466E.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;4) Prerrequisitos&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Para poder trabajar con Windows Azure HPC Scheduler son necesarios algunos prerrequisitos:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://www.windowsazure.com/en-us/develop/downloads/"&gt;Windows Azure SDK&lt;/a&gt; (v1.7) &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=28015"&gt;Windows Azure HPC Scheduler SDK&lt;/a&gt; (v1.7) &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=17017"&gt;HPC Pack 2008 R2 Client Utilities Redistributable Package with Service Pack 4&lt;/a&gt;. Necesario para interactuar con&amp;nbsp; el &amp;ldquo;Job Scheduler&amp;rdquo; &lt;/li&gt;
&lt;li&gt;[Opcional] &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=14737"&gt;HPC Pack 2008 R2 MS-MPI Redistributable Package with Service Pack 4&lt;/a&gt; Ejecuci&amp;oacute;n de aplicaciones MPI sin tener que crear un cluster HPC. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;IMPORTANTE:&lt;/span&gt;&lt;/strong&gt; Me gustar&amp;iacute;a aclarar en este punto, que Windows Azure HPC no dispone de un portal propio para la adminstraci&amp;oacute;n del cluster HPC. Sin embargo, este se genera autom&amp;aacute;ticamente durante el despliegue de la aplicaci&amp;oacute;n. Ser&amp;aacute; necesario incluir un &amp;ldquo;Web Role&amp;rdquo; e insertar la instrucci&amp;oacute;n &lt;em&gt;&amp;ldquo;&amp;lt;VirtualApplication name=&amp;rdquo;Portal&amp;rdquo;&amp;hellip;&lt;/em&gt; dentro de nuestro fichero &amp;ldquo;&lt;em&gt;ServiceDefinition.csdef&amp;rdquo;&lt;/em&gt;&amp;nbsp; tal y como indico a continuaci&amp;oacute;n:&lt;/p&gt;
&lt;div style="overflow:auto;cursor:text;font-size:8pt;height:159px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;text-align:left;margin:20px 0px 10px;line-height:12pt;max-height:200px;width:97.5%;background-color:#f4f4f4;border:silver 1px solid;padding:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;" id="codeSnippet"&gt;
&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;WebRole&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;FrontEnd&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;vmsize&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Small&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Sites&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;       &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Site&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Web&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;VirtualApplication&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Portal&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;physicalDirectory&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;C:\Program Files\Windows Azure HPC Scheduler SDK\v1.7\hpcportal&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Bindings&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;           &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Binding&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;HPCWebServiceHttps&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;endpointName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Microsoft.Hpc.Azure.Endpoint.HPCWebServiceHttps&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Bindings&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;       &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Site&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Sites&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Se trata simplememente de levantar el portal HPC que incluye el SDK HPC.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;5) Configuraci&amp;oacute;n y Deploy en Azure PARAMETRIC SWEEP&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;5.1) En primper lugar, y partiendo del ejemplo &lt;a href="http://msdn.microsoft.com/en-us/wazplatformtrainingcourse_hpcparametricsweep"&gt;Parametric Sweep&lt;/a&gt;, necesitaremos realizar algunos cambios para adaptarlo a las &amp;uacute;ltimas versiones (&amp;ldquo;v1.7&amp;rdquo; tanto de &amp;ldquo;&lt;em&gt;&lt;a href="http://www.windowsazure.com/en-us/develop/downloads/"&gt;Windows Azure SDK&lt;/a&gt;&lt;/em&gt;&amp;rdquo; como de &amp;ldquo;&lt;em&gt;&lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=28015"&gt;Windows Azure HPC Scheduler SDK&lt;/a&gt;&lt;/em&gt;&amp;rdquo;):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ServiceDefinition.csdef&lt;/strong&gt;: Cambiar la versi&amp;oacute;n &amp;ldquo;v1.6&amp;rdquo; por &amp;ldquo;v1.7&amp;rdquo;: &lt;em&gt;&amp;lt;VirtualApplication name=&amp;quot;Portal&amp;quot; physicalDirectory=&amp;quot;C:\Program Files\Windows Azure HPC Scheduler SDK\v1.7\hpcportal&amp;quot; /&amp;gt;&lt;/em&gt; &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AzureSampleService&lt;/strong&gt;: BuildEvents &amp;ndash; Pre-Build Event:&amp;nbsp; Cambiar la ruta del &amp;ldquo;cspack&amp;rdquo; para que pase a ser esta: &amp;quot;&lt;em&gt;C:\Program Files\Microsoft SDKs\Windows Azure\.NET SDK\2012-06\bin\cspack.exe&amp;hellip;&lt;/em&gt;&amp;quot; &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AppConfigure&lt;/strong&gt; &amp;ndash; BuildEvents &amp;ndash; Post-Build Event: Cambiar la versi&amp;oacute;n v1.6 por v1.7: &lt;em&gt;&amp;quot;HKLM\Software\Microsoft\Windows Azure HPC Scheduler\v1.7 &amp;hellip;&amp;rdquo;.&lt;/em&gt; &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AppConfigure.CreateCscfgFile(cs)&lt;/strong&gt;. Comentar la l&amp;iacute;nea&amp;nbsp; &amp;ldquo;&lt;em&gt;config.EnableL2H();&lt;/em&gt;&amp;rdquo;.&amp;nbsp; Al ser un elemento beta es posible que haya sido eliminado en la v1.7, como puede verse &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.hpc.azure.clusterconfig.clusterconfig.enablel2h(v=vs.85).aspx"&gt;aqu&amp;iacute;&lt;/a&gt;. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;5.2) El deploy de un entorno HPC requiere varios pasos y tener claros ciertos aspectos de preparaci&amp;oacute;n y configuraci&amp;oacute;n. Todos ellos podemos encontrarlos identificados &lt;a href="http://technet.microsoft.com/en-us/library/hh184318(WS.10).aspx#BKMK_Portal"&gt;aqu&amp;iacute;&lt;/a&gt;. Debido a todos estos pasos, como veremos en los ejemplos, no optaremos por la publicaci&amp;oacute;n estandar que ofrece Visual Studio.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Para &lt;a href="http://msdn.microsoft.com/en-us/wazplatformtrainingcourse_hpcparametricsweep"&gt;este ejemplo&lt;/a&gt;, o cualquier otro, los pasos a seguir para la configuraci&amp;oacute;n y despliegue del HPC en Azure son siempre los mismos. Es m&amp;aacute;s, cada una de nuestras nuevas aplicaciones que hagan uso de Windows Azure HPC podr&amp;iacute;an contener siempre un solution Folder llamado &amp;ldquo;Deployment&amp;rdquo; con los proyectos &amp;ldquo;&lt;em&gt;AppConfigure&lt;/em&gt;&amp;rdquo; y &amp;ldquo;&lt;em&gt;CertificateGenerator&lt;/em&gt;&amp;rdquo; encargados de la configuraci&amp;oacute;n y despliegue. Adicionalmente, tambi&amp;eacute;n contaremos con un &amp;ldquo;Web Role&amp;rdquo; destinado al Portal seg&amp;uacute;n he comentado anteriormente.&lt;/p&gt;
&lt;p&gt;Los pasos son los siguientes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Abrir el el proyecto desde Visual Studio 2010 &amp;oacute; 2012 RC &lt;/li&gt;
&lt;li&gt;Compilar la soluci&amp;oacute;n. &lt;/li&gt;
&lt;li&gt;Haber generado un &amp;ldquo;Hosted Service&amp;rdquo; desdel el &lt;a href="https://windows.azure.com/default.aspx"&gt;portal&lt;/a&gt; de azure. Para este ejemplo &amp;ldquo;elguerrehpc&amp;rdquo;. &lt;/li&gt;
&lt;li&gt;Ejecutar del Proyecto &amp;ldquo;AppConfigure&amp;rdquo; e introducir los par&amp;aacute;metros de configuraci&amp;oacute;n para la subscripci&amp;oacute;n de Azure a utilizar &lt;/li&gt;
&lt;li&gt;Configurar (&amp;ldquo;Configure&amp;rdquo;) y cuando esta haya finalizado, Publicar (&amp;ldquo;Publish&amp;rdquo;). Esta acci&amp;oacute;n crear&amp;aacute; un Storage y una BBDD SQL Azure, ambos con el mismo nombre del host, &amp;ldquo;elguerrehpc&amp;rdquo; en nuestro caso. &lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_6A4DB53A.png"&gt;&lt;img height="477" width="413" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_16F66F14.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;5.3) Durante la publicaci&amp;oacute;n, entre los mensajes asociados al &amp;ldquo;progress bar&amp;rdquo;, aparecer&amp;aacute;, &amp;ldquo;&lt;em&gt;Coping HPC package to blog storage...&lt;/em&gt;&amp;rdquo;, que nos har&amp;aacute; esperar unos cuantos minutos y, tras el, veremos este otro, &amp;ldquo;&lt;em&gt;Creating Azure Deployment&amp;hellip;&amp;rdquo;,&lt;/em&gt; lo que significa, que si vamos al portal de Azure veremos el progreso de creaci&amp;oacute;n de los tres nodos configurados: Head Node, Compute Node y Frontend.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_21671D67.png"&gt;&lt;img height="272" width="545" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_12503E8D.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;5.4) Tras varios minutos, tendremos nuestro despliegue listo para que comience autom&amp;aacute;ticamente la creaci&amp;oacute;n de los nodos y configuraci&amp;oacute;n del HPC en Azure.&lt;/p&gt;
&lt;p&gt;Finalizado el despligue, podremos acceder a la url: &lt;a href="https://elguerrehpc.cloudapp.net"&gt;https://elguerrehpc.cloudapp.net&lt;/a&gt;&lt;strong&gt;, donde accederemos a una pagina de bienvenida(nuestro Web Role) desde donde podremos realizar la conexi&amp;oacute;n remota con el Head Node o acceder al portal de HPC Scheduler. &lt;/strong&gt;Importante, siempre con &lt;strong&gt;HTTPS&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image211_5F00_011C60EA.png"&gt;&lt;img height="210" width="515" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image211_5F00_thumb_5F00_751A70B5.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Para este enlace al portal, en la p&amp;aacute;gina &amp;ldquo;Default.aspx&amp;rdquo; de nuestro &amp;ldquo;Web Role&amp;rdquo; se ha incluido una instrucci&amp;oacute;n similar a la siguiente y que se corresponde con la configuraci&amp;oacute;n indicada anteriormente en el punto (4):&lt;/p&gt;
&lt;div style="overflow:auto;cursor:text;font-size:8pt;height:32px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;text-align:left;margin:20px 0px 10px;line-height:12pt;max-height:200px;width:97.5%;background-color:#f4f4f4;border:silver 1px solid;padding:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;" id="codeSnippet"&gt;
&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;a&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;href&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;~/portal&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;runat&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;ID&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;PortalButton1&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;De la misma manera, el link &amp;ldquo;&lt;em&gt;remote desktop connection&lt;/em&gt;&amp;rdquo; habr&amp;aacute; que generarlo expl&amp;iacute;citamente en la p&amp;aacute;gina &amp;ldquo;Default.aspx&amp;rdquo; aunque requiere de un poco m&amp;aacute;s c&amp;oacute;digo que veremos en alguno de los ejemplos. No obstante, y como siempre, podremos acceder a trav&amp;eacute;s de Portal de Azure.&lt;/p&gt;
&lt;p&gt;5.5) Mediante esta &lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;conexi&amp;oacute;n remota&lt;/span&gt;&lt;/strong&gt;&amp;nbsp; podremos acceder directamente a la VM donde comprobaremos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Herramientas de HPC instaladas y Dlls y ejecutables desplegados seg&amp;uacute;n cada nodo/role. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_73D5D7D6.png"&gt;&lt;img height="275" width="493" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_588D5908.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;En el&lt;strong&gt; &amp;ldquo;Head Node&amp;rdquo;,&lt;/strong&gt; adicionalmente, podremos comprobar la ubicaci&amp;oacute;n f&amp;iacute;sica del Portal de HPC. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_3D085705.png"&gt;&lt;img height="331" width="488" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_0DF5F561.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Variables de entorno relacionadas con HPC y posiblemente necesarias para algunas de nuestras aplicaciones/procesos. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_15BDE803.png"&gt;&lt;img height="276" width="517" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_6DAB38E3.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HPC Job Manager: &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image37_5F00_514DD0F6.png"&gt;&lt;img height="314" width="514" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image37_5F00_thumb_5F00_0E8E85BE.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;6) Ejecuci&amp;oacute;n de un Job &lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Mediante el link &lt;a href="https://elguerrehpc.cloudapp.net/portal"&gt;https://elguerrehpc.cloudapp.net/portal&lt;/a&gt;, tendremos acceso directo al cluster que hemos configurado y desplegado sin tener que acceder a alguna de las maquinas virtuales en particular.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_3267374B.png"&gt;&lt;img height="229" width="658" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_3B2719CA.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A partir de aqu&amp;iacute;, seguiremos los siguientes pasos:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Importante&lt;/strong&gt;: Recuerda incluir un &amp;ldquo;&lt;strong&gt;*&lt;/strong&gt;&amp;rdquo; en el paso 2, en &amp;ldquo;Commmand Line&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6.1) Submission Pages&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_317EAB94.png"&gt;&lt;img height="236" width="344" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_3614B64E.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_1A8FB44B.png"&gt;&lt;img height="442" width="414" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_10E74615.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_06D2A4EA.png"&gt;&lt;img height="240" width="379" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_565C2073.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_68C47128.png"&gt;&lt;img height="230" width="385" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_384DECB2.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_4AB63D67.png"&gt;&lt;img height="237" width="216" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_295697CB.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6.2) New Job&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_333B8936.png"&gt;&lt;img height="167" width="260" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_39162CCF.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_29FF4DF5.png"&gt;&lt;img height="587" width="478" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_089FA859.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_5A65AC9E.png"&gt;&lt;img height="165" width="252" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_4B4ECDC4.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;7) Resultado de la ejecuci&amp;oacute;n del Job&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Una vez hemos realizado el &amp;ldquo;Submit&amp;rdquo; seg&amp;uacute;n el paso anterior, si accedemos al listado de &amp;ldquo;&lt;strong&gt;My Jobs&lt;/strong&gt;&amp;rdquo; y seleccionamos &amp;ldquo;CPUSpinner&amp;rdquo; veremos que:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Se han ejecutado las 1000 tareas correctamente en 18 minutos. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_1F31D0D3.png"&gt;&lt;img height="269" width="447" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_6C321A9E.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_621D7973.png"&gt;&lt;img height="196" width="439" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_6CFA5ABB.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_7C4DBCCA.png"&gt;&lt;img height="141" width="369" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_15691703.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_461C1EAE.png"&gt;&lt;img height="261" width="513" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_6F6340DF.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Si ahora dejamos s&amp;oacute;lo una instancia de Azure para el &amp;ldquo;Compute Node&amp;rdquo; la duraci&amp;oacute;n de ejecuci&amp;oacute;n del Job ser&amp;aacute; del doble (30min para ser exactos, es decir 12min m&amp;aacute;s), y a la inversa, es decir si subimos el n&amp;uacute;mero de instancias, el tiempo ser&amp;aacute; menor.&amp;nbsp; De esta manera y extrapolando estos resultados a aplicaciones/procesos en el mundo reaal y con altos requerimientos en cuanto a los tiempos de ejecuci&amp;oacute;n, obtendr&amp;iacute;amos una ganancia que de otra forma ser&amp;iacute;a casi imposible.&lt;/p&gt;
&lt;p&gt;Aunque esto podemos conseguirlo con HPC en un datacenter en &amp;ldquo;On-Premise&amp;rdquo;, si el numero de m&amp;aacute;quinas necesarias fuera elevado, podr&amp;iacute;amos no disponer del hardware adecuado&amp;nbsp; o incluso no disponer de espacio para m&amp;aacute;s m&amp;aacute;quinas virtuales en un entorno Virtual, teniendo en cuenta adem&amp;aacute;s, la configuraci&amp;oacute;n necesaria que ello conlleva. Por tanto, la escalabilidad se complicar&amp;iacute;a teniendo que esperar hasta recibir f&amp;iacute;sicamente la(s) nueva(s) m&amp;aacute;quina(s)/servidor(es). Es aqu&amp;iacute;, donde Windows Azure una vez m&amp;aacute;s aquiere gran importancia. Con Windows Azure este problema dejar&amp;iacute;a de existir y, si este Job se lanzara en determinados momentos (una vez al d&amp;iacute;a, o a la semana, o al m&amp;eacute;s), s&amp;oacute;lo pagar&amp;iacute;amos por el tiempo de uso, as&amp;iacute; que el ahorro de costes podr&amp;iacute;a llegar a ser enorme.&lt;/p&gt;
&lt;p&gt;Finalmente se ha alargado un poco el Post, pero creo que la situaci&amp;oacute;n lo ha requerido y ha merecido la pena. En posts sucesivos iremos viendo cada uno de los restantes modelos de aplicaci&amp;oacute;n que soporta &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=28015"&gt;Windows Azure HPC Scheduler&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Saludos @Home &amp;amp; Happy HPC Coding ! &lt;br /&gt;Juanlu, ElGuerre&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=206418" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/HPC/default.aspx">HPC</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/HOW+TO/default.aspx">HOW TO</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Windows+Azure+HPC+Scheduler/default.aspx">Windows Azure HPC Scheduler</category></item><item><title>“PINGing…” desde “On-Premisse” hacia máquinas virtuales de Windows Azure</title><link>http://geeks.ms/blogs/jlguerrero/archive/2012/08/01/pinging-desde-on-premisse-hacia-m-225-quinas-virtuales-de-windows-azure.aspx</link><pubDate>Wed, 01 Aug 2012 11:35:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:206346</guid><dc:creator>Juanlu,ElGuerre</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jlguerrero/rsscomments.aspx?PostID=206346</wfw:commentRss><comments>http://geeks.ms/blogs/jlguerrero/archive/2012/08/01/pinging-desde-on-premisse-hacia-m-225-quinas-virtuales-de-windows-azure.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_7423CEA1.png"&gt;&lt;img height="128" width="147" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_4CE9856C.png" align="left" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;float:left;padding-top:0px;padding-left:0px;margin:5px 13px 5px 5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;Muy buenas,&lt;/p&gt;
&lt;p&gt;Seguro que en m&amp;aacute;s de una ocasi&amp;oacute;n has intentado hacer un ping desde tu PC, o desde una m&amp;aacute;quina &amp;ldquo;On-Premisse&amp;rdquo; hacia una m&amp;aacute;quina concreta en Windows Azure. Para ello, y, aunque no es una buena practica en situaciones normales, es necesario habiltar una de las reglas de Firewall. Como puedes imaginar, ahora con las &lt;a href="http://www.windowsazure.com/en-us/home/scenarios/virtual-machines/"&gt;nuevas car&amp;aacute;cter&amp;iacute;scias de Azure&lt;/a&gt; y, concretamente, gracias a la persistencia de VM&amp;rsquo;s, bastar&amp;aacute; con hacerlo de manera manual. Claro est&amp;aacute;, esto ser&amp;aacute; v&amp;aacute;lido siempre que est&amp;eacute;s trabajando en un tipo de Cloud &amp;ldquo;IaaS&amp;rdquo;. &lt;/p&gt;
&lt;p&gt;Para hacerlo en un modelo de Cloud &amp;ldquo;PaaS&amp;rdquo;, seguiremos los siguientes pasos:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Crearemos nuestro proyecto&amp;nbsp; de tipo &amp;ldquo;Clolud&amp;rdquo; desde Visual Studio 2010 &amp;oacute; 2012. &lt;/li&gt;
&lt;li&gt;Haremos uso de las &amp;ldquo;Startup Tasks&amp;rdquo; tal y como ya comentaba en &lt;a href="http://geeks.ms/blogs/jlguerrero/archive/2012/02/10/windows-azure-startup-tasks-instalando-exe-msi-y-msu.aspx"&gt;este post anterior&lt;/a&gt;, con la diferencia en este caso, de que nuestro fichero &amp;ldquo;&lt;strong&gt;Startup.cmd&lt;/strong&gt;&amp;rdquo; tendr&amp;aacute; el siguiente contenido y que no necesitaremos ning&amp;uacute;n otro instalable adicional: &lt;/li&gt;
&lt;/ul&gt;
&lt;div style="overflow:auto;cursor:text;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;text-align:left;margin:20px 0px 10px;line-height:12pt;max-height:200px;width:97.5%;background-color:#f4f4f4;border:silver 1px solid;padding:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;" id="codeSnippet"&gt;
&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; Echo Enable ICMP&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; netsh advfirewall firewall add rule name=&lt;span style="color:#006080;"&gt;&amp;quot;ICMPv6&amp;quot;&lt;/span&gt; dir=in action=allow enable=yes protocol=icmpv6&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;exit&lt;/span&gt; /b 0&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Configurar &amp;ldquo;&lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/gg432997.aspx"&gt;Windows Azure Connect&amp;rdquo; (&amp;ldquo;Virtual Network&amp;rdquo;)&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;Listo. A partir de ahora, ya tendr&amp;aacute;s visibilidad directa con&amp;nbsp; tu m&amp;aacute;quina virtual de Azure. No s&amp;oacute;lo para hacer un Ping, si no para acceder a ella directamente, recueda, &amp;iexcl;ahora tienes una &amp;ldquo;VPN&amp;rdquo; ! &lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;IMPORTANTE: &lt;/strong&gt;La gran ventaja de hacer esta labor como &amp;ldquo;Startup Task&amp;rdquo; es el automatismo ante posibles &lt;a href="http://msdn.microsoft.com/en-us/library/gg433030.aspx"&gt;reciclados&lt;/a&gt; de las m&amp;aacute;quina de Azure. &lt;/p&gt;
&lt;p&gt;Y, adicionalmente como siempre, puedes encontrar m&amp;aacute;s detalle &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh127476.aspx"&gt;aqu&amp;iacute;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Saludos y a seguir esperando las vacaciones&amp;hellip; &lt;br /&gt;Juanlu&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=206346" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></item><item><title>Windows Azure Connect: Problemas de instalación en Windows 8 y Windows Server 2012</title><link>http://geeks.ms/blogs/jlguerrero/archive/2012/07/23/windows-azure-connect-problemas-de-instalaci-243-n-en-windows-8-y-windows-server-2012.aspx</link><pubDate>Mon, 23 Jul 2012 20:50:17 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:206217</guid><dc:creator>Juanlu,ElGuerre</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jlguerrero/rsscomments.aspx?PostID=206217</wfw:commentRss><comments>http://geeks.ms/blogs/jlguerrero/archive/2012/07/23/windows-azure-connect-problemas-de-instalaci-243-n-en-windows-8-y-windows-server-2012.aspx#comments</comments><description>&lt;p&gt;Muy buenas,&lt;/p&gt;  &lt;p&gt;Hoy me disponía a preparar una pequeña demo de &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/gg432997.aspx"&gt;Windows Azure Connect&lt;/a&gt; con objeto de tenerlo todo listo para mañana pero me encuentro con este error:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_05B765F9.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_6DD07ED2.png" width="244" height="193" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Error&lt;/strong&gt;: &amp;quot;&lt;em&gt;Windows azure connect installation cannot continue&lt;/em&gt;”.&amp;#160; ¡Si es que Murphy, siempre está entre nosotros! jeje…&lt;/p&gt;  &lt;p&gt;Este error se debe a que “&lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/gg432997.aspx"&gt;Windows Azure Connect&lt;/a&gt;” aún no está disponible para Windows 8 ni para Windows Server 2012, por tanto, para solucionar el problema seguiremos los siguientes pasos:&lt;/p&gt;  &lt;blockquote&gt;   &lt;ul&gt;     &lt;li&gt;Guardamos el fichero de instalación en local en lugar de ejecutarlo directamente &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_539015AE.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_52B7AFC4.png" width="368" height="51" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;Cambiamos las propiedades de dicho fichero/instalable para que mantenga compatibilidad con “Windows 7” &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_51DF49DA.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_7E8803B3.png" width="247" height="311" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;Finalmente, si volvemos a lanzar la instalación&amp;#160; conseguiremos instalarlo sin ningún otro problema &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_2D8A3F8B.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_3A17ECA7.png" width="244" height="192" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_58EE6085.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_10C0A4A9.png" width="244" height="192" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;Actualizamos nuestro Enpoint Group desde el portal de Windows Azure y ya tenemos nuestro PC conectado a “Windows Azure Connet”&amp;#160; para poder acceder desde cualquiera de las máquinas pertenecienes a esta red virtual. &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_4FB22544.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_07F09C5D.png" width="128" height="137" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Gracias a &lt;a href="http://blog.kloud.com.au/2012/06/17/windows-azure-connect-compatibility-on-windows-82012-release-preview/"&gt;esta referencia&lt;/a&gt;, ha sido todo más fácil.&amp;#160; Espero, al menos, haber resfrescado o aportado un granito de arena en nuestro día a día con Azure! &lt;/p&gt;  &lt;p&gt;Saludos @&amp;quot;Yo Azure&amp;quot; Demo    &lt;br /&gt;Juanlu&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=206217" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Windows+Azure+Connect/default.aspx">Windows Azure Connect</category></item><item><title>Windows Azure Caching (Preview) II: Caché dedicada o distribuida y su “Capacity Planning”</title><link>http://geeks.ms/blogs/jlguerrero/archive/2012/07/04/windows-azure-caching-preview-ii-cach-233-dedicada-o-distribuida-y-su-capacity-planning.aspx</link><pubDate>Wed, 04 Jul 2012 17:57:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205981</guid><dc:creator>Juanlu,ElGuerre</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jlguerrero/rsscomments.aspx?PostID=205981</wfw:commentRss><comments>http://geeks.ms/blogs/jlguerrero/archive/2012/07/04/windows-azure-caching-preview-ii-cach-233-dedicada-o-distribuida-y-su-capacity-planning.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image31_5F00_thumb3_5F00_530BE34F.png"&gt;&lt;img height="204" width="198" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image31_5F00_thumb3_5F00_thumb_5F00_40936CCD.png" alt="image31_thumb[3]" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image31_thumb[3]" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/AzureCachingPreview_5F00_Dedicated_5F00_66891D23.png"&gt;&lt;img height="209" width="313" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/AzureCachingPreview_5F00_Dedicated_5F00_thumb_5F00_334CE3BA.png" alt="AzureCachingPreview_Dedicated" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="AzureCachingPreview_Dedicated" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hace unos d&amp;iacute;as ve&amp;iacute;mamos en este art&amp;iacute;culo: &amp;ldquo;&lt;a href="http://geeks.ms/blogs/jlguerrero/archive/2012/06/28/windows-azure-caching-preview-i-introducci-243-n-y-an-225-lisis-de-la-cach-233-co-located.aspx"&gt;Windows Azure Caching (Preview) I: Introducci&amp;oacute;n y an&amp;aacute;lisis de la cach&amp;eacute;&amp;nbsp; &amp;ldquo;Co-Located&amp;rdquo;&lt;/a&gt;, una distinci&amp;oacute;n entre los distintos tipos de cach&amp;eacute; que presenta Windows Azure Caching (Preview) adem&amp;aacute;s de las diferencias con &amp;ldquo;Windows Azure Shared Caching&amp;rdquo;. En el ejemplo desarrollado vimos como hacer uso de la misma y como realizar su despliegue en la nube.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Nuevamente, hablaremos de la cach&amp;eacute;, pero en este caso, concretamente de la &lt;a href="http://msdn.microsoft.com/es-es/magazine/dd942840.aspx"&gt;cach&amp;eacute; dedicada o distribuida&lt;/a&gt; con Windows Azure.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Veamos cuales son los pasos y camino a seguir para tener una cach&amp;eacute; altamente escalable&lt;/span&gt;&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;Desde&amp;nbsp; Visual Studio 2012 RC, creamos un proyecto de tipo &amp;ldquo;Windows Azure Cloud Service&amp;rdquo; con el nombre &amp;ldquo;&amp;ldquo;&lt;em&gt;WindowsAzureDedicatedCache&lt;/em&gt;&amp;rdquo;&amp;nbsp; al que a&amp;ntilde;adimos dos Roles, uno de tipo &amp;ldquo;&lt;strong&gt;&lt;em&gt;ASP.NET MVC 4 Web Role&lt;/em&gt;&lt;/strong&gt;&amp;rdquo; y otro, de tipo &amp;ldquo;&lt;strong&gt;&lt;em&gt;Cache Worker Role&lt;/em&gt;&lt;/strong&gt;&amp;rdquo;. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_0B3A349B.png"&gt;&lt;img height="278" width="439" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_37E2EE74.png" alt="image" border="0" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Seguiremos los mismos pasos que el el &lt;a href="http://geeks.ms/blogs/jlguerrero/archive/2012/06/28/windows-azure-caching-preview-i-introducci-243-n-y-an-225-lisis-de-la-cach-233-co-located.aspx"&gt;post anterior&lt;/a&gt;: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A&amp;ntilde;adiremos las referencias al proyecto MVC con Nuget.&lt;/li&gt;
&lt;li&gt;Crearemos el nuevo Controller y las vistas para mostrarr el uso de esta nueva cach&amp;eacute; junto con el m&amp;iacute;smo c&amp;oacute;digo.&amp;nbsp; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para el Role de tipo ASP.NET MVC, al contrario que en el ejemplo anterior, desabilitamos el uso de Caching.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_597F1745.png"&gt;&lt;img height="161" width="244" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_2642DDDC.png" alt="image" border="0" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;border-left:0px;display:inline;padding-right:0px;" title="image" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_56F5E587.png"&gt;&lt;img height="240" width="461" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_32A0DB38.png" alt="image" border="0" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ahora habilitamos la cach&amp;eacute; para el Role de tipo &amp;ldquo;&lt;strong&gt;Cache Worker Role&lt;/strong&gt;&amp;rdquo;:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_413B6150.png"&gt;&lt;img height="182" width="244" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_002CE1EC.png" alt="image" border="0" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;border-left:0px;display:inline;padding-right:0px;" title="image" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_170BB368.png"&gt;&lt;img height="251" width="468" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_7CCB4A43.png" alt="image" border="0" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;De la misma manera que en ejemplo del &lt;a href="http://geeks.ms/blogs/jlguerrero/archive/2012/06/28/windows-azure-caching-preview-i-introducci-243-n-y-an-225-lisis-de-la-cach-233-co-located.aspx"&gt;post anterior&lt;/a&gt;, realizamos el despliegue habilitando la conexi&amp;oacute;n remota:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_4B7C5FE3.png"&gt;&lt;img height="225" width="330" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_313BF6BF.png" alt="image" border="0" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Finalizado el despliegue nuesta aplicaci&amp;oacute;n funcionar&amp;aacute; exactamente igual. La diferencia es que en este caso, se trata de una cach&amp;eacute; &lt;strong&gt;Dedicada o distribuida&lt;/strong&gt;, con lo que si para el Role Web (ASP.NET MVC), adem&amp;aacute;s de un reciclado de su Application Pool, o un &amp;ldquo;IISReset&amp;rdquo; o un reinicio del servicio &amp;ldquo;World Wide Web Publishing Service&amp;rdquo;,&amp;nbsp; &lt;span style="text-decoration:underline;"&gt;reiniciamos el Role de Azure&lt;/span&gt;, los valores almacenados en la cach&amp;eacute; permanecen, sin duda, puesto que se encuentra en otro Role. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Si ahora, nos conectamos remotamente a la VM correspondiente al &amp;ldquo;&lt;strong&gt;Cache Worker Role&amp;rdquo;, &lt;/strong&gt;podremos observar en este caso, que el tama&amp;ntilde;o usado por el servicio &amp;ldquo;&lt;em&gt;&lt;strong&gt;CacheServie.exe&lt;/strong&gt;&lt;/em&gt;&amp;rdquo; asciende a 1GB aproximadamente.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb111_5F00_76E080DD.png"&gt;&lt;img height="349" width="459" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb111_5F00_thumb_5F00_1399F5F3.png" alt="image_thumb111" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" title="image_thumb111" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;iquest;Por qu&amp;eacute; esto valor?&lt;/strong&gt; Pues bien, este valor o consumo de memoria, est&amp;aacute; relacionado directamente con las capacidades que ofrece Windows Azure de acuerdo a los tama&amp;ntilde;os de las VM&amp;rsquo;s y seg&amp;uacute;n puede verse en la siguiente tabla:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb13_5F00_5E40BDC0.png"&gt;&lt;img height="108" width="349" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb13_5F00_thumb_5F00_2F0ED229.png" alt="image_thumb13" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" title="image_thumb13" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;De ah&amp;iacute;, que en nuestro ejemplo, como estamos haciendo uso de una instancia &amp;ldquo;Small&amp;rdquo; este valor sea de 1GB.&lt;/p&gt;
&lt;p&gt;En base a estos tama&amp;ntilde;os, es recomendable que antes de comenzar&amp;nbsp; un proyecto tengamos claro&amp;nbsp; cual ser&amp;aacute; el tama&amp;ntilde;o de nuestra cach&amp;eacute;. Pare ello, Microsoft proporciona una hoja Exel (&amp;ldquo;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=254507" title="Capacity Planning Guide spreadsheet"&gt;Capacity Planning Guide spreadsheet&lt;/a&gt;&amp;rdquo;),donde podemos realizar los c&amp;aacute;lculos necesarios para la estimaci&amp;oacute;n oportuna y as&amp;iacute;, poder escalar&amp;nbsp; Horizontalmente o Verticalmente en funci&amp;oacute;n a dicha necesidad.&lt;/p&gt;
&lt;p&gt;En esta hoja, tambi&amp;eacute;n se realizan las estimaciones para el uso de cach&amp;eacute; &amp;ldquo;Co-Located&amp;rdquo; donde en lugar de estos tama&amp;ntilde;os se obtienen&amp;nbsp; porcentajes (&amp;rdquo;%&amp;rdquo;), puesto que se trata de compartir la memoria de un Role en concreto con el uso de cache. En el ejemplo del &lt;a href="http://geeks.ms/blogs/jlguerrero/archive/2012/06/28/windows-azure-caching-preview-i-introducci-243-n-y-an-225-lisis-de-la-cach-233-co-located.aspx"&gt;post anterior&lt;/a&gt; este valor se correspond&amp;iacute;a con un 30%, que es valor establecido por defecto para una instancia peque&amp;ntilde;a (&amp;ldquo;Small&amp;rdquo;) pero que depender&amp;aacute; igualmente seg&amp;uacute;n el tama&amp;ntilde;o de la instancia.,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Una vez m&amp;aacute;s, espero que haya sido de utilidad.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Saludos @Home &lt;br /&gt;Juanlu, ElGuerre&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205981" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Visual+Studio+2012+RC/default.aspx">Visual Studio 2012 RC</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Windows+Azure+Caching/default.aspx">Windows Azure Caching</category></item><item><title>Windows Azure Caching (Preview) I: Introducción y análisis de la caché “Co-located”</title><link>http://geeks.ms/blogs/jlguerrero/archive/2012/06/28/windows-azure-caching-preview-i-introducci-243-n-y-an-225-lisis-de-la-cach-233-co-located.aspx</link><pubDate>Thu, 28 Jun 2012 00:33:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205810</guid><dc:creator>Juanlu,ElGuerre</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jlguerrero/rsscomments.aspx?PostID=205810</wfw:commentRss><comments>http://geeks.ms/blogs/jlguerrero/archive/2012/06/28/windows-azure-caching-preview-i-introducci-243-n-y-an-225-lisis-de-la-cach-233-co-located.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image31_5F00_5A114DF8.png"&gt;&lt;img height="204" width="198" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image31_5F00_thumb_5F00_38B1A85C.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/AzureCachingPreview_5F00_Shared_5F00_3700DC88.png"&gt;&lt;img height="202" width="317" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/AzureCachingPreview_5F00_Shared_5F00_thumb_5F00_534E1EA8.png" alt="AzureCachingPreview_Shared" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="AzureCachingPreview_Shared" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Desde hace ya un tiempo Windows Azure cuenta con un sistema de Cache (o Caching) denominado &amp;ldquo;&lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/gg278356.aspx"&gt;Windows Shared Azure Cache&lt;/a&gt;&amp;rdquo;, sin embargo junto a las nuevas car&amp;aacute;cter&amp;iacute;sticas, ahora es posible conseguir hacer uso de Cach&amp;eacute; en nuestras arquitecturas de una manera mucho m&amp;aacute;s f&amp;aacute;cil e intuitiva.&amp;nbsp; Eso si, antes de continuar, es conveniente saber que, &amp;ldquo;&lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/hh914161"&gt;Windows Azure Caching (Preview)&lt;/a&gt;&lt;/strong&gt;&amp;rdquo; no esta soportado a&amp;uacute;n en entornos de Producci&amp;oacute;n, no obstante, lo estar&amp;aacute; en breve !&lt;/p&gt;
&lt;p&gt;Windows Azure Caching puede reducir el coste e incrementar la escalabilidad de otros almacenes tales como SQL Azure o Azure Storage.&lt;/p&gt;
&lt;p&gt;Pero, &amp;iquest;C&amp;uacute;al es la diferecia entre &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/gg278356.aspx"&gt;Windows Shared Azure Cache&lt;/a&gt; y &lt;a href="http://msdn.microsoft.com/en-us/library/hh914161"&gt;Windows Azure Caching (Preview)?&lt;/a&gt; Pues bien, la diferencia principal radique en que &lt;strong&gt;el primero&lt;/strong&gt; se trata de un Servicio de Cloud dedicado mientras que el &lt;strong&gt;segundo,&lt;/strong&gt; es configurado dentro de una m&amp;aacute;quina espec&amp;iacute;fica (asignando un porcentaje de recursos de la misma) o configurado dedicando una m&amp;aacute;quina virtual explicitamente para este prop&amp;oacute;sito. A estos dos tipos se le denomintan Cache &amp;ldquo;Co-located&amp;rdquo; y &amp;ldquo;Dedicated&amp;rdquo; respectivamente.&lt;/p&gt;
&lt;p&gt;Para el primer tipo (&lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/gg278356.aspx"&gt;Windows Shared Azure Cache&lt;/a&gt;) existen laboriatorios On-Line que ejemplifican claramente su uso:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Training Kit OnLine: &lt;a href="http://msdn.microsoft.com/en-us/wazplatformtrainingcourse_buildingappswithcacheservice"&gt;Construyendo aplicaciones Windows Azure con el &amp;ldquo;Caching Service&amp;rdquo;&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/wazplatformtrainingcourse_buildingappswithcacheservice_topic2"&gt;Introducci&amp;oacute;n: La provisi&amp;oacute;n del servicio&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/wazplatformtrainingcourse_buildingappswithcacheservice_topic3.aspx"&gt;Windows Azure Caching para Session State&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/wazplatformtrainingcourse_buildingappswithcacheservice_topic4"&gt;Cacheando datos con &amp;ldquo;Windows Azure Caching&lt;/a&gt;&amp;rdquo; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/wazplatformtrainingcourse_buildingappswithcacheservice_topic5"&gt;Creando una capa de cach&amp;eacute; reutilizable y extensible&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Vemos ahora un poco m&amp;aacute;s en detalle, cuales son los dos tipos de topolog&amp;iacute;as de Azure Caching Preview y las diferencias entre ellas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Modo Co-located&lt;/strong&gt;. La cach&amp;eacute; comparte los recursos de la VM de Azure: CPU, Memoria,&amp;nbsp; y ancho de banda junto a la aplicaci&amp;oacute;n hosteada. 
&lt;ul&gt;
&lt;li&gt;Cach&amp;eacute; basada en Memoria. &lt;/li&gt;
&lt;li&gt;No soporta &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh914137"&gt;Notificaciones&lt;/a&gt;. Eventos as&amp;iacute;ncronos producidos por operaciones que ocurren en el cluster de cach&amp;eacute;. &lt;/li&gt;
&lt;li&gt;No permite evitar la pol&amp;iacute;tica de &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh914130"&gt;desalojo o &amp;ldquo;Eviction&amp;rdquo;&lt;/a&gt; en caso de &amp;ldquo;&lt;em&gt;llenado&lt;/em&gt;&amp;rdquo; de la cach&amp;eacute;, y por tanto, siempre tendr&amp;aacute; el valor &lt;strong&gt;LRU&lt;/strong&gt;: &amp;ldquo;Least recently used&amp;rdquo; &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modo Dedicado&lt;/strong&gt;.&amp;nbsp; Instancias de un role dedicado explicitamente para cach&amp;eacute;. 
&lt;ul&gt;
&lt;li&gt;Orientado a &lt;span style="text-decoration:underline;"&gt;Cach&amp;eacute; Distribuido&lt;/span&gt; y basado en Microsoft AppFabric 1.1 &lt;/li&gt;
&lt;li&gt;Soporta &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh914137"&gt;Notificaciones&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Permite deshabilitar la pol&amp;iacute;tica de &amp;ldquo;&lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh914130"&gt;Eviction&lt;/a&gt;&amp;rdquo; &lt;/li&gt;
&lt;li&gt;Alta disponibilidad &lt;/li&gt;
&lt;li&gt;Soporta &lt;strong&gt;Regiones&lt;/strong&gt; (subgrupos de items de cache) y &lt;strong&gt;Tags&lt;/strong&gt; (anotaciones descriptivas sobre los items de cache), muy utilies para b&amp;uacute;squedas dentro de una region. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/gg278350"&gt;este enlace&lt;/a&gt; podemos encontrar m&amp;aacute;s detalle sobre las diferencias en cuanto al uso del API&amp;nbsp; de Caching (&lt;em&gt;&lt;strong&gt;Co-located Caching VS Role-based Caching (Preview)&lt;/strong&gt;&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A continuaci&amp;oacute;n, como configurar el tipo de Cach&amp;eacute; &amp;ldquo;Co-Located&amp;rdquo;:&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Creamos un proyecto de tipo &amp;ldquo;Windows Azure Cloud Service&amp;rdquo; desde Visual Studio con el nombre &amp;ldquo;WindowsAzureSharedCache&amp;rdquo; y elegimos un Role de tipo &amp;ldquo;&lt;strong&gt;Asp.Net MVC 4 Web Role&lt;/strong&gt;&amp;rdquo; (Razor) manteniendo el nombre, &amp;ldquo;&lt;em&gt;MvcWebRole1&lt;/em&gt;&amp;rdquo;: &lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_6A2CF024.png"&gt;&lt;img height="233" width="356" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_4141DB1B.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Creamos un Controller y las vistas adecuadas para el tratamiento de la Cach&amp;eacute; adem&amp;aacute;s de incluir una nueva opci&amp;oacute;n de men&amp;uacute; &amp;ldquo;Caching&amp;rdquo; en &amp;ldquo;&lt;em&gt;_Layout.cshtml&lt;/em&gt;&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_2B977CB1.png"&gt;&lt;img height="244" width="126" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_58AC697F.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Incluimos en el controller el siguiente c&amp;oacute;digo:&lt;/p&gt;
&lt;div style="overflow:auto;cursor:text;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;text-align:left;margin:20px 0px 10px;line-height:12pt;max-height:200px;width:97.5%;background-color:#f4f4f4;border:silver 1px solid;padding:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;" id="codeSnippet"&gt;
&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; [HttpPost]&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; ActionResult Save(CacheModels model, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; returnUrl)&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt; {&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (ModelState.IsValid)&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;     {&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;         DataCacheFactory cacheFactory = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; DataCacheFactory();&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;         DataCache cache = cacheFactory.GetDefaultCache();&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;// Save data in Azure Caching&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;         cache.Put(cacheKey1, model.DataToCache);&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (Url.IsLocalUrl(returnUrl))                &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; Redirect(returnUrl);                &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;                &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; RedirectToAction(&lt;span style="color:#006080;"&gt;&amp;quot;Load&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;Caching&amp;quot;&lt;/span&gt;);                &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum16"&gt;  16:&lt;/span&gt;     }            &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum17"&gt;  17:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; View(model);&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum18"&gt;  18:&lt;/span&gt; }&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum19"&gt;  19:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum20"&gt;  20:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; ActionResult Load()&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum21"&gt;  21:&lt;/span&gt; {&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum22"&gt;  22:&lt;/span&gt;     DataCacheFactory cacheFactory = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; DataCacheFactory();&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum23"&gt;  23:&lt;/span&gt;     DataCache cache = cacheFactory.GetDefaultCache();&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum24"&gt;  24:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum25"&gt;  25:&lt;/span&gt;     var result = cache.Get(cacheKey1) &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum26"&gt;  26:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum27"&gt;  27:&lt;/span&gt;     ViewBag.CacheValue = result;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum28"&gt;  28:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum29"&gt;  29:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; View();&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum30"&gt;  30:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Configuramos las opciones de cach&amp;eacute; desde las propiedades del proyecto : &lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_56FB9DAB.png"&gt;&lt;img height="201" width="373" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_60745C21.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Para el proyecto ASP.NET MVC, a&amp;ntilde;adir las referencias&amp;nbsp; a &amp;ldquo;Windows Azure Caching Preview&amp;rdquo; usando &amp;ldquo;&lt;strong&gt;Manager NuGet Packages&amp;hellip;&amp;rdquo;.&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_3E3C509B.png"&gt;&lt;img height="295" width="483" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_7A386C83.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;El paso anterior, nos facilitar&amp;aacute; el camino evitanto tener que a&amp;ntilde;adir manualmente las referencias siguiente: &lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_2B0AFE22.png"&gt;&lt;img height="221" width="351" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_62DD4245.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Adem&amp;aacute;s de la siguiente configuraci&amp;oacute;n del &amp;ldquo;web.config&amp;rdquo;: &lt;/p&gt;
&lt;div style="overflow:auto;cursor:text;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;text-align:left;margin:20px 0px 10px;line-height:12pt;max-height:200px;width:97.5%;background-color:#f4f4f4;border:silver 1px solid;padding:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;" id="codeSnippet"&gt;
&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &amp;lt;configSections&amp;gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt;    &amp;lt;section name=&lt;span style="color:#006080;"&gt;&amp;quot;dataCacheClients&amp;quot;&lt;/span&gt; type=&lt;span style="color:#006080;"&gt;&amp;quot;Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core&amp;quot;&lt;/span&gt; allowLocation=&lt;span style="color:#006080;"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; allowDefinition=&lt;span style="color:#006080;"&gt;&amp;quot;Everywhere&amp;quot;&lt;/span&gt; /&amp;gt;   &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;  &amp;lt;/configSections&amp;gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;  &amp;lt;connectionStrings&amp;gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt; &amp;lt;dataCacheClients&amp;gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;    &amp;lt;tracing sinkType=&lt;span style="color:#006080;"&gt;&amp;quot;DiagnosticSink&amp;quot;&lt;/span&gt; traceLevel=&lt;span style="color:#006080;"&gt;&amp;quot;Error&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;    &amp;lt;dataCacheClient name=&lt;span style="color:#006080;"&gt;&amp;quot;default&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;      &amp;lt;autoDiscover isEnabled=&lt;span style="color:#006080;"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; identifier=&lt;span style="color:#006080;"&gt;&amp;quot;MvcNewAzureStore&amp;quot;&lt;/span&gt; /&amp;gt;     &lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;      &amp;lt;!--&amp;lt;localCache isEnabled=&lt;span style="color:#006080;"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; sync=&lt;span style="color:#006080;"&gt;&amp;quot;TimeoutBased&amp;quot;&lt;/span&gt; objectCount=&lt;span style="color:#006080;"&gt;&amp;quot;100000&amp;quot;&lt;/span&gt; ttlValue=&lt;span style="color:#006080;"&gt;&amp;quot;300&amp;quot;&lt;/span&gt; /&amp;gt;--&amp;gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;    &amp;lt;/dataCacheClient&amp;gt;&lt;/pre&gt;

&lt;pre style="overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;color:black;direction:ltr;text-align:left;margin:0em;line-height:12pt;width:100%;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;  &amp;lt;/dataCacheClients&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Llegado este punto, unicamente es nesario tener en cuenta el par&amp;aacute;metro &amp;ldquo;&lt;strong&gt;identifier&lt;/strong&gt;&amp;rdquo; de la secci&amp;oacute;n &amp;lt;autoDiscover&amp;gt; anterior, que coincidir&amp;aacute; con el nombre del Role de Azure (&amp;ldquo;&lt;em&gt;&lt;strong&gt;MvcWebRole1&lt;/strong&gt;&lt;/em&gt;&amp;rdquo; seg&amp;uacute;n nuestro ejemplo):&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_18FEBA95.png"&gt;&lt;img height="167" width="281" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_780B47ED.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Para comprobar que estamos haciendo uso de Cache de tipo &amp;ldquo;Co-located&amp;rdquo;, hacemos un deploy en Azure habilitando la conexi&amp;oacute;n remota. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_4DDB9A05.png"&gt;&lt;img height="294" width="411" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_389D6E90.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Una vez hemos realizado el despligue en Azure, podemos observar que el tiempo de despligue es un poco superior, puesto que se lanzan una serie de tareas &amp;ldquo;&lt;a href="http://geeks.ms/blogs/jlguerrero/archive/2012/02/10/windows-azure-startup-tasks-instalando-exe-msi-y-msu.aspx"&gt;Startp tasks&lt;/a&gt;&amp;rdquo;. Puede observarse este mensaje en el ya, &amp;ldquo;casi&amp;rdquo; antiguo portal: &amp;ldquo;&lt;em&gt;System startup tasks are runing&amp;hellip;&lt;/em&gt;&amp;rdquo; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_68781051.png"&gt;&lt;img height="116" width="676" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_6E52B3EA.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Realizado el despligue, navegamos a la opci&amp;oacute;n de menu &amp;ldquo;Caching&amp;rdquo; que ofrece dos p&amp;aacute;ginas: &amp;ldquo;Save&amp;rdquo; y &amp;ldquo;Load&amp;rdquo;. En la primera, se almacena el dato en cache y en la segunda, se obtiene el dato almacenado se muestra:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_5FC791F8.png"&gt;&lt;img height="207" width="501" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_7E9E05D6.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Como hemos habilitado la conexi&amp;oacute;n remota durante el despliegue, accedemos mediante terminal server a la instancia de nuestro role &amp;ldquo;MvcWebRole1&amp;rdquo; y desde all&amp;iacute;: Realizamos un restart del site, o un reciclado del pool, o un &amp;ldquo;IISReset&amp;rdquo; o, incluso, un reinicio del servicio &amp;ldquo;World Wide Web Publishing Service&amp;rdquo;. Tras esta acci&amp;oacute;n, el valor de cache permanece y si navegamos a la p&amp;aacute;gina &amp;ldquo;Load&amp;rdquo; podemos comprobar que el valor permanece.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_0163BACA.png"&gt;&lt;img height="164" width="484" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_2E0C74A3.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Adcicionalmente, podemos comprobar la memoria dedicada a la Cach&amp;eacute; Co-located, cuyo valor ronda los 530MB&amp;nbsp; iniciales aproximadamente, valor indicado por el proceso &amp;ldquo;&lt;em&gt;CacheService.exe&lt;/em&gt;&amp;rdquo; y que se corresponde con el 30% establecido en las propiedades del proyecto de tipo Cloud.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_33E7183C.png"&gt;&lt;img height="314" width="402" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_3CF3A3BD.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hasta aqu&amp;iacute; el uso de Cach&amp;eacute;&amp;nbsp; &amp;ldquo;Co-Located&amp;rdquo; con Windows Azure Caching (Preview).&amp;nbsp; Veremos m&amp;aacute;s adelante, en posts sucesivos &lt;em&gt;&lt;strong&gt;el uso de la Cach&amp;eacute; Dedicada, diferentes opciones y configuraci&amp;oacute;n con Azure Caching Preview, uso de cache para Session y&amp;nbsp; Output Cache, capacity planning y&amp;nbsp; tama&amp;ntilde;os de cache seg&amp;uacute;n tama&amp;ntilde;os de VMs y mucho m&amp;aacute;s&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Otras referencias:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/avkashchauhan/archive/2012/06/18/difference-between-windows-azure-cache-preview-and-windows-azure-share-cache.aspx" title="http://blogs.msdn.com/b/avkashchauhan/archive/2012/06/18/difference-between-windows-azure-cache-preview-and-windows-azure-share-cache.aspx"&gt;http://blogs.msdn.com/b/avkashchauhan/archive/2012/06/18/difference-between-windows-azure-cache-preview-and-windows-azure-share-cache.aspx&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;iexcl;Ahora no hay motivos para no sacarle partido a nuestra/s instancia/s de Azure. Haz lo mismo con mejor performance y menor coste!&lt;/p&gt;
&lt;p&gt;Saludos &amp;quot;&lt;em&gt;and, happy Azure Caching&lt;/em&gt;&amp;quot; &lt;br /&gt;Juanlu&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205810" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Visual+Studio+2012+RC/default.aspx">Visual Studio 2012 RC</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Windows+Azure+Caching/default.aspx">Windows Azure Caching</category></item><item><title>Tip: ¡ Actualiza “Azure Storage Explorer 5 Preview” !</title><link>http://geeks.ms/blogs/jlguerrero/archive/2012/06/20/tip-161-actualiza-azure-storage-explorer-5-preview.aspx</link><pubDate>Wed, 20 Jun 2012 19:44:59 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205690</guid><dc:creator>Juanlu,ElGuerre</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jlguerrero/rsscomments.aspx?PostID=205690</wfw:commentRss><comments>http://geeks.ms/blogs/jlguerrero/archive/2012/06/20/tip-161-actualiza-azure-storage-explorer-5-preview.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/Windows_2D00_Azure_2D00_Big_5F00_5425A52C.png"&gt;&lt;img title="Windows Azure Big" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="Windows Azure Big" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/Windows_2D00_Azure_2D00_Big_5F00_thumb_5F00_74110229.png" width="240" height="48" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ya tenemos disponible la actualización de “&lt;a href="http://azurestorageexplorer.codeplex.com/"&gt;Azure Storage Explorer 5 Preview&lt;/a&gt;”,&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_082A1EB3.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_0A36F7AF.png" width="489" height="382" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Con las novedades:&lt;/p&gt;  &lt;blockquote&gt;   &lt;ul&gt;     &lt;li&gt;Nueva interfaz de usuario, similar a la del nuevo portal HTML 5 de Windows Azure &lt;/li&gt;      &lt;li&gt;Soporte para configuración y visualización logging &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_3EA7A42A.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_4BA1843B.png" width="244" height="222" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;Soporte para configuración y visualización de monitoring &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_3C8AA561.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_349302FF.png" width="244" height="211" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;Uso de las dlls de “Windows Azure SDK 1.7” &lt;/li&gt;      &lt;li&gt;Solución de fixes &lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt;Saludos noticieros    &lt;br /&gt;Juanlu&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205690" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/TIP/default.aspx">TIP</category></item><item><title>Windows Azure Web Sites: Integración continua con TFS Preview</title><link>http://geeks.ms/blogs/jlguerrero/archive/2012/06/13/windows-azure-web-sites-integraci-243-n-continua-con-tfs-preview.aspx</link><pubDate>Wed, 13 Jun 2012 19:49:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205592</guid><dc:creator>Juanlu,ElGuerre</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jlguerrero/rsscomments.aspx?PostID=205592</wfw:commentRss><comments>http://geeks.ms/blogs/jlguerrero/archive/2012/06/13/windows-azure-web-sites-integraci-243-n-continua-con-tfs-preview.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/WindowsAzurePreview_5F00_65A6DB9B.png"&gt;&lt;img height="39" width="644" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/WindowsAzurePreview_5F00_thumb_5F00_76AB097E.png" alt="WindowsAzurePreview" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="WindowsAzurePreview" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;En esta ocasi&amp;oacute;n, y continuando el &lt;a href="http://elguerre.wordpress.com/2012/06/11/windows-azure-web-sites-web-deploy-en-unos-cuantos-clicks/"&gt;post anterior&lt;/a&gt;,&amp;nbsp; veamos como tener el c&amp;oacute;digo del &amp;ldquo;Azure Web Site&amp;rdquo; en &amp;ldquo;TFS Service&amp;rdquo; y poder&amp;nbsp; acceder desde Visual Studio 2012 RC y lo mejor, veamos como funciona la integraci&amp;oacute;n continua tras cada &amp;ldquo;Check In&amp;rdquo; de c&amp;oacute;digo.&lt;/p&gt;
&lt;p&gt;Una vez creado nuestro &amp;ldquo;Azure Web Site&amp;rdquo;, realizado o no el despligue desde Visual Studio:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Accede al &lt;a href="https://manage.windowsazure.com/"&gt;nuevo portal de Azure&lt;/a&gt; y haz clic en la opci&amp;oacute;n &amp;ldquo;&lt;em&gt;&lt;strong&gt;Set Up TFS publishing&lt;/strong&gt;&lt;/em&gt;&amp;rdquo; de la secci&amp;oacute;n &amp;ldquo;quick glance&amp;rdquo; &lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_75D2A394.png"&gt;&lt;img height="227" width="239" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_09EBC01E.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Introduce el nombre del TFS &amp;ldquo;Service Preview&amp;rdquo;.&amp;nbsp;&amp;nbsp; &lt;strong&gt;Nota&lt;/strong&gt;: Para crear tu &amp;ldquo;TFS Service&amp;rdquo;, sigue &lt;a href="http://elguerre.wordpress.com/2012/03/07/tfs-service-preview-on-windows-azure/"&gt;estos pasos&lt;/a&gt;. &lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_2CCC81CE.png"&gt;&lt;img height="268" width="364" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_19AB5522.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Acepta la petici&amp;oacute;n de permisos &lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_2AAF8305.png"&gt;&lt;img height="256" width="364" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_106F19E1.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Selecciona el proyecto de TFS a asociar al &amp;ldquo;Azure Web Site&amp;rdquo; &lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_63E5E9FA.png"&gt;&lt;img height="267" width="365" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_46FCC525.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Valida la operaci&amp;oacute;n y, todo listo. &lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_21FF04AC.png"&gt;&lt;img height="296" width="434" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_77CF56C3.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Lanza el Visual Studio dese la opci&amp;oacute;n &amp;ldquo;VISUAL STUDIO&amp;rdquo; de la barra de comandos, conectando as&amp;iacute; directamente el VS con el TFS Service. &lt;/li&gt;
&lt;li&gt;Si lo prefieres, abre el Visual Studio y conectate al TFS normalmente intruduciendo como servidor: &amp;ldquo;&lt;strong&gt;&amp;lt;myTFSService&amp;gt;.tfspreview.com&lt;/strong&gt;&amp;rdquo;. &lt;/li&gt;
&lt;li&gt;Ahora que estas conectado, a&amp;ntilde;ade la solucion a TFS como lo haces normalmente. &lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_3D73E0E2.png"&gt;&lt;img height="244" width="242" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_0E41F54B.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Realiza el despliegue seg&amp;uacute;n coment&amp;eacute; en el &lt;a href="http://elguerre.wordpress.com/2012/06/11/windows-azure-web-sites-web-deploy-en-unos-cuantos-clicks/"&gt;post anterior&lt;/a&gt; si a&amp;uacute;n no lo has hecho, para que &amp;ldquo;Azure Web Site&amp;rdquo;&amp;nbsp; vincule el proyecto Web. &lt;/li&gt;
&lt;li&gt;Haz el Check-In correspondiente. &lt;/li&gt;
&lt;li&gt;Ahora, cada vez que hagas un cambio en el c&amp;oacute;digo y realizes el nuevo &amp;ldquo;Check-In&amp;rdquo;, se realizar&amp;aacute; el despliegue autom&amp;aacute;tico. &lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_33CB72AC.png"&gt;&lt;img height="125" width="413" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_24B493D2.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;La &amp;ldquo;Integraci&amp;oacute;n Continua&amp;rdquo; est&amp;aacute; lista. &lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_7CA1E4B2.png"&gt;&lt;img height="302" width="484" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_0AD037D6.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hasta aqu&amp;iacute;, una vez m&amp;aacute;s, Windows Azure haci&amp;eacute;ndonos m&amp;aacute;s f&amp;aacute;cil el desarrollo en la nube.&lt;/p&gt;
&lt;p&gt;Por el momento tenemos uso gratuito de&amp;nbsp; &amp;ldquo;TFS Service Preview&amp;rdquo;, &amp;iexcl;Aprovechemos para sacarle jugo y hacer pruebas!&lt;/p&gt;
&lt;p&gt;Saludos &lt;br /&gt;Juanlu, ElGuerre&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205592" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Visual+Studio+.NET/default.aspx">Visual Studio .NET</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Visual+Studio+2012+RC/default.aspx">Visual Studio 2012 RC</category></item><item><title>Windows Azure Web Sites: “Web Deploy” en unos cuantos clicks !!!</title><link>http://geeks.ms/blogs/jlguerrero/archive/2012/06/11/windows-azure-web-sites-web-deploy-en-unos-cuantos-clicks.aspx</link><pubDate>Mon, 11 Jun 2012 20:36:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205573</guid><dc:creator>Juanlu,ElGuerre</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jlguerrero/rsscomments.aspx?PostID=205573</wfw:commentRss><comments>http://geeks.ms/blogs/jlguerrero/archive/2012/06/11/windows-azure-web-sites-web-deploy-en-unos-cuantos-clicks.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/visual_5F00_studio_5F00_logo_5F00_76EC5E0B.png"&gt;&lt;img height="36" width="214" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/visual_5F00_studio_5F00_logo_5F00_thumb_5F00_5D1827DC.png" align="right" alt="visual_studio_logo" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;float:right;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" title="visual_studio_logo" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="right"&gt;&lt;span style="font-size:x-large;"&gt;&lt;strong&gt;&lt;span style="color:#000000;"&gt;&amp;amp;&lt;/span&gt;&amp;nbsp; &lt;/strong&gt;&lt;/span&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/WindowsAzurePreview_5F00_67694C3C.png"&gt;&lt;img height="39" width="644" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/WindowsAzurePreview_5F00_thumb_5F00_06ABF310.png" align="left" alt="WindowsAzurePreview" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;float:left;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" title="WindowsAzurePreview" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Windows Azure incluye muchas nuevas caracter&amp;iacute;sticas como ya coment&amp;eacute; en un &lt;a href="http://elguerre.wordpress.com/2012/06/10/el-camino-de-windows-azure-continua-integracin-con-visual-studio-2012-rc-y-windows-8-release-nuevo-portal-y-ms-features/"&gt;post anterior&lt;/a&gt;. Una de ellas es el &amp;ldquo;&lt;a href="https://www.windowsazure.com/en-us/home/scenarios/web-sites/"&gt;Web Sites&lt;/a&gt;&amp;rdquo;, objeto de este post. Con ella, es posible, con varios click de rat&amp;oacute;n, desplegar en Azure cualquiera de nuestras aplicaciones web, tanto nuevas como ya existentes. &amp;iexcl;Esto abre un nuevo camino a la migraci&amp;oacute;n de aplicaciones hacia la nube!.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Con esos pocos click conseguiremos:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Alta escalabilidad en entornos cloud. &lt;/li&gt;
&lt;li&gt;Despliegue inst&amp;aacute;ntaneo, y muy sencillo &lt;/li&gt;
&lt;li&gt;Integraci&amp;oacute;n continua con &amp;ldquo;TFS Service Preview&amp;rdquo; &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Y todo ello, desde Visual Studio 2012 RC.&lt;/p&gt;
&lt;p&gt;Veamos un &lt;strong&gt;step by step pr&amp;aacute;ctico&lt;/strong&gt;: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;
&lt;ul&gt;
&lt;li&gt;Crear un nuevo &amp;ldquo;&lt;strong&gt;Web Site&lt;/strong&gt;&amp;rdquo;&amp;nbsp; directamente desde el portal de Azure accediendo a la url&amp;nbsp; &amp;ldquo;&lt;a href="https://manage.windowsazure.com" title="https://manage.windowsazure.com"&gt;https://manage.windowsazure.com&lt;/a&gt;&amp;rdquo; &lt;/li&gt;
&lt;li&gt;Click en&amp;nbsp; &amp;ldquo;&lt;strong&gt;+ NEW&lt;/strong&gt;&amp;rdquo; &lt;/li&gt;
&lt;li&gt;Introducir la url que va a tener la nueva aplicaci&amp;oacute;n web, &amp;ldquo;&lt;strong&gt;&lt;em&gt;MyAzureWebSite&lt;/em&gt;&lt;/strong&gt;&amp;rdquo;. &lt;/li&gt;
&lt;li&gt;Click en &amp;ldquo;&lt;strong&gt;CREATE WEB SITE&lt;/strong&gt;&amp;rdquo; y &amp;hellip; &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_6CD7BCE0.png"&gt;&lt;img height="217" width="385" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_327C46FF.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px 13px 0px 0px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;
&lt;ul&gt;
&lt;li&gt;Tras unos pocos segudos el &amp;ldquo;Web Site&amp;rdquo; de Azure ha sido creado. &lt;/li&gt;
&lt;li&gt;Al clicar sobre el, accederemos al detalle del mismo con las siguientes opciones: 
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;DASHBOARD&amp;rdquo;. Adem&amp;aacute;s de como su propio nombre indica, tambien nos permite hacer algunas operaciones tals como, obtener informaci&amp;oacute;n para el despliegue, configuraci&amp;oacute;n de TFS, etc. &lt;/li&gt;
&lt;li&gt;&amp;ldquo;MONITOR&amp;rdquo;: Aqu&amp;iacute; no voy a dar detalle, ella misma habla por si s&amp;oacute;la. &lt;/li&gt;
&lt;li&gt;CONFIGURE: Configuraci&amp;oacute;n del framework (v2.0 &amp;oacute; v4.0), diagnosticos, claves de &amp;ldquo;app settings&amp;rdquo;, &amp;ldquo;connections strings&amp;rdquo;,&amp;nbsp; y &amp;ldquo;default documents&amp;rdquo;. &lt;/li&gt;
&lt;li&gt;SCALE: Esta es la opci&amp;oacute;n m&amp;aacute;s importante, donde podremos optar a hacer que nuestro Web Site sea &amp;ldquo;&lt;strong&gt;Shared&lt;/strong&gt;&amp;rdquo; o &amp;ldquo;&lt;strong&gt;Reservado&lt;/strong&gt;&amp;rdquo; (Multitenant o no), de manera que nuestro site compartir&amp;aacute; recursos con otros o no respectivamente. Al cambiar esta opci&amp;oacute;n, tenemos que tener cuidado de no sobrepasar los l&amp;iacute;mites de nuestra subscripci&amp;oacute;n, principalmente si estamos probando y no queremos pagar m&amp;aacute;s de lo necesario. En cualquier caso, siempe ser&amp;eacute;mos avisados con el pertinente mensaje&amp;nbsp; &amp;ldquo;SPENDING LIMIT WARNING&amp;rdquo;. Al sobrepasar dicho l&amp;iacute;mite podremos optar por dotar a nuestra aplicaci&amp;oacute;n de un escalado vertical (&amp;ldquo;Scale UP&amp;rdquo;) y en cualquier caso, tanto sobrepasando este l&amp;iacute;mite como si no, siempre podremos optar, adiconalmente, por un escalado horizontal (&amp;ldquo;Scale Out&amp;rdquo;) hasta un m&amp;aacute;ximo de tres instancias. &amp;iexcl;Parecen pocas por el momento, supongo que tendremos la opci&amp;oacute;n de poder incrementar m&amp;aacute;s este n&amp;uacute;mero en un fut&amp;uacute;ro no muy lejano! &lt;/li&gt;
&lt;/ul&gt;
&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_3856EA98.png"&gt;&lt;img height="174" width="244" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_572D5E76.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px 13px 0px 0px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;
&lt;ul&gt;
&lt;li&gt;LINKED RESOURDES: Conexi&amp;oacute;n y uso de un SQL Azure. En un futuro optaremos a una conexi&amp;oacute;n con Azure Storage. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hasta aqu&amp;iacute;, simplemente hemos creado y configurado nuestro &amp;ldquo;Web Site&amp;rdquo;, &lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;ahora vemos como hacer el despliegue&lt;/span&gt;&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;
&lt;ul&gt;
&lt;li&gt;Acceder a la opci&amp;oacute;n&amp;nbsp; &amp;ldquo;&lt;strong&gt;DASHBOARD&lt;/strong&gt;&amp;rdquo; antes comentada y, concretamente a la opci&amp;oacute;n &amp;ldquo;&lt;strong&gt;Download publish profile&lt;/strong&gt;&amp;rdquo; de la secci&amp;oacute;n &amp;ldquo;&lt;em&gt;quick glace&lt;/em&gt;&amp;rdquo;. Al hacer click obtendremos un fichero de configuraci&amp;oacute;n que descargaremos nuestro disco duro. &amp;iexcl;Lo dejamos ah&amp;iacute;, por el momento! &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Crear un proyecto Web&lt;/strong&gt; (ASP.NET, MVC 3, MVC 4, et )&amp;nbsp; desde visual studio. &lt;/li&gt;
&lt;li&gt;Click con el bot&amp;oacute;n derecho del raton sobre el proyecto y &amp;ldquo;&lt;strong&gt;Publish&amp;hellip;&lt;/strong&gt;&amp;rdquo; &lt;/li&gt;
&lt;li&gt;En la pesta&amp;ntilde;a de &amp;ldquo;Profile&amp;rdquo;, seleccionar el fichero antes descargado y seguidamente obtendremos una ventana con la configuraci&amp;oacute;n necesaria para nuestro despliegue: &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_75979F5F.png"&gt;&lt;img height="270" width="323" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_6680C085.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px 13px 0px 0px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;Next &amp;gt;&amp;rdquo;, &amp;ldquo;Next &amp;gt;&amp;rdquo; y, en la pesta&amp;ntilde;a de &amp;ldquo;Preview&amp;rdquo; podremos ver que es lo que se va a desplegar exactamente: &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_2C254AA4.png"&gt;&lt;img height="271" width="324" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_43DC820A.png" alt="image" border="0" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px 13px 0px 0px;display:inline;padding-right:0px;border-top-width:0px;" title="image" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;Publish&amp;rdquo; y todo listo. Tras un par de minutos nuestra aplicaci&amp;oacute;n estar ejectuandose en Azure. &lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Para no hacer m&amp;aacute;s largo el post, lo dejo aqu&amp;iacute; y, en un siguiente post veremos como integrar este desarrollo con &amp;ldquo;TFS Service Preview&amp;rdquo; en pocos clicks y con la misma sencilled que este depliegue despliegue.&lt;/p&gt;
&lt;p&gt;Saludos &lt;br /&gt;Juanlu, ElGuerre &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205573" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Visual+Studio+.NET/default.aspx">Visual Studio .NET</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Visual+Studio+2012+RC/default.aspx">Visual Studio 2012 RC</category></item><item><title>El camino de Windows Azure continua. Integración con Visual Studio 2012 RC y Windows 8 Release, Nuevo portal y más “features”</title><link>http://geeks.ms/blogs/jlguerrero/archive/2012/06/10/el-camino-de-windows-azure-continua-integraci-243-n-con-visual-studio-2012-rc-y-windows-8-release-nuevo-portal-y-m-225-s-features.aspx</link><pubDate>Sun, 10 Jun 2012 21:01:09 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205568</guid><dc:creator>Juanlu,ElGuerre</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jlguerrero/rsscomments.aspx?PostID=205568</wfw:commentRss><comments>http://geeks.ms/blogs/jlguerrero/archive/2012/06/10/el-camino-de-windows-azure-continua-integraci-243-n-con-visual-studio-2012-rc-y-windows-8-release-nuevo-portal-y-m-225-s-features.aspx#comments</comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/WindowsAzurePreview_5F00_31750339.png"&gt;&lt;img title="WindowsAzurePreview" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;float:left;padding-top:0px;padding-left:0px;margin:0px 13px 0px 0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="WindowsAzurePreview" align="left" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/WindowsAzurePreview_5F00_thumb_5F00_7EA4FCC4.png" width="644" height="39" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Después de unos cuantos días con problemas con el PC, al final he podido conseguir tener todo listo, &lt;a href="http://windows.microsoft.com/es-ES/windows-8/release-preview"&gt;Windows 8 Release Preview&lt;/a&gt;, &lt;a href="http://www.microsoft.com/visualstudio/11/en-us/downloads"&gt;Visual Studio 2012 RC&lt;/a&gt; y &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=29988"&gt;Windows Azure Tools June 2012&lt;/a&gt;. Todo parece que está muy estable y funciona bastante bien y rápido. El equeipo de Azure se ha dado prisa en con las Tools adecuadas para VS2012, pero creo que el equipo de Windows Phone no ha podido llegar a tiempo, ¡ahora que quería comenzar a pegarme con Windows Phone en el nuevo entorno!, En fin, cómo VS2010 y VS2012 pueden convivir,&amp;#160; habrá que esperar a esas Tools para tener un único entorno de trabajo.&amp;#160;&amp;#160; Existen algunas otras imcompatibilidad que pueden verse &lt;a href="http://msdn.microsoft.com/en-us/library/hh266747(v=vs.110).aspx"&gt;aquí&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Por cierto, si alguien intenta instalar &lt;a href="http://windows.microsoft.com/es-ES/windows-8/release-preview"&gt;Windows 8 Release Preview&lt;/a&gt;, que lo haga desde cero. La “actualización”/instalación desde la versión Preview, puede causar algún problema con el reconocimiento de Drivers !!! &lt;img class="wlEmoticon wlEmoticon-confusedsmile" style="border-top-style:none;border-left-style:none;border-bottom-style:none;border-right-style:none;" alt="Confused smile" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/wlEmoticon_2D00_confusedsmile_5F00_36E373DD.png" /&gt;&lt;/p&gt;  &lt;p&gt;Veamos ahora que nos trae de nuevo Windows Azure. Y lo mejor, como comentaba antes, &lt;strong&gt;&lt;u&gt;al fin incluido en &lt;/u&gt;&lt;/strong&gt;&lt;a href="http://www.microsoft.com/visualstudio/11/en-us/downloads"&gt;&lt;strong&gt;&lt;u&gt;Visual Studio 2012 RC&lt;/u&gt;&lt;/strong&gt;&lt;/a&gt;:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Nuevo proyecto, para .NET Framework 3.5 y .NET Framework 4.0. &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_686EE172.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_002618D9.png" width="338" height="214" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;ul&gt;     &lt;li&gt;Nuevos tipos de roles: “&lt;strong&gt;Cache Worker Role” y “Worker Role with Service Bus Queue”&lt;/strong&gt; &lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_0CB3C5F5.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_3D66CDA0.png" width="337" height="277" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Actualización/conversión de un proyecto existente &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_498847C7.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_217598A8.png" width="333" height="178" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Configuración para “&lt;strong&gt;Windows Azure Caching&lt;/strong&gt;” &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_17CD2A72.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_4475E44B.png" width="490" height="255" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Requerimiento de certificado “.pfx” en la carpeta “certificates” de cada “Hosted Services”. ¡Aquí ha habido un cambio, creo que debido al nuevo portal basado en HTML 5! Eso sí, bastante más intuitivo, aunque en el día a día, prueba tras prueba puede suponer un poco más trabajo. &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_014A661E.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_6709FCF9.png" width="448" height="189" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Nuevo portal basado en HTML 5&lt;/strong&gt;.&amp;#160; Ahora la administración desde el Portal de Windows Azure no es un impedimiento para algunos. Ahora es posible desde IPad, Windows Phone, etc. &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_2AFDBB44.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_18F177B7.png" width="362" height="241" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Despliegue directo desde &lt;a href="http://www.microsoft.com/visualstudio/11/en-us/downloads"&gt;Visual Studio 2012 RC&lt;/a&gt; para aplicaciones web con “&lt;strong&gt;Web Deploy&lt;/strong&gt;” sin necesidad de hacer despligues típicos de Windows Azure. ¡Ahora no es necesario conocer nada de Windows Azure para hacer este tipo de despliegues Web y además en tan solo varios clicks ! &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Integración continua&lt;/strong&gt; con Azure TFS Preview. &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_6C6847D0.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_5C0CD017.png" width="367" height="258" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Hasta aquí unas cuantas pinceladas de lo que tenemos encima de la mesa, a partir de aquí, a profundizar en sucesivos posts.&lt;/p&gt;  &lt;p&gt;Saludos @Nuvedosos    &lt;br /&gt;Juanlu, ElGuerre&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205568" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Visual+Studio+.NET/default.aspx">Visual Studio .NET</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Visual+Studio+2012+RC/default.aspx">Visual Studio 2012 RC</category></item><item><title>Sencillez de autoescalado en Windows Azure con “WASABi”</title><link>http://geeks.ms/blogs/jlguerrero/archive/2012/06/03/sencillez-de-autoescalado-en-windows-azure-con-wasabi.aspx</link><pubDate>Sun, 03 Jun 2012 20:21:32 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205458</guid><dc:creator>Juanlu,ElGuerre</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jlguerrero/rsscomments.aspx?PostID=205458</wfw:commentRss><comments>http://geeks.ms/blogs/jlguerrero/archive/2012/06/03/sencillez-de-autoescalado-en-windows-azure-con-wasabi.aspx#comments</comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/Windows_2D00_Azure_2D00_Big_5F00_6423088D.png"&gt;&lt;img title="Windows Azure Big" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;float:left;padding-top:0px;padding-left:0px;margin:5px 14px 5px 5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="Windows Azure Big" align="left" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/Windows_2D00_Azure_2D00_Big_5F00_thumb_5F00_69FDAC26.png" width="240" height="48" /&gt;&lt;/a&gt; Muy buenas,&lt;/p&gt;  &lt;p&gt;Desde hace algún tiempo quería realizar algunas pruebas en profundidad con&amp;#160; “WASABi” (MICROSOFT ENTERPRISE LIBRARY 5.0 INTEGRATION PACK FOR WINDOWS AZURE&amp;#160; AUTOSCALING APPLICATION BLOC). &lt;/p&gt;  &lt;p&gt;La semana pasada, nuestro compañero, &lt;a href="http://blogs.msdn.com/b/luispanzano/"&gt;Luis Panzano&lt;/a&gt; indico en en &lt;a href="http://blogs.msdn.com/b/luispanzano/archive/2012/05/28/auto-escalado-en-windows-azure-con-wasabi.aspx"&gt;este post&lt;/a&gt; los pasos más importantes para llevar a cabo una prueba/demo muy fácil y rápida, así que aprovecho &lt;a href="https://skydrive.live.com/?cid=f9e91171500e5d78&amp;amp;resid=F9E91171500E5D78!291&amp;amp;id=F9E91171500E5D78%21291"&gt;la misma&lt;/a&gt; para profundizar y resolver algunas dudas que se plantean por los foros de Azure.&lt;/p&gt;  &lt;p&gt;Antes de nada, me gustaría aclarar, que para el autoscalado, se utilizará un WorkerRole, quien será el encargado de analizar en todo momento la configuración y reglas de escalado a partir de ficheros de los configuración.&lt;/p&gt;  &lt;p&gt;Detalle de los pasos para trabajar con &lt;strong&gt;WASABi&lt;/strong&gt;:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Acceder y descargar los prerrequisitos necesarios desde &lt;a href="http://msdn.microsoft.com/en-us/library/hh680918(v=pandp.50).aspx"&gt;aquí&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;Role o nodo a escalar (ej.: Aplicación web):      &lt;ul&gt;       &lt;li&gt;Indicar en los ficheros de configuración de los proyectos&amp;#160; “&lt;strong&gt;ServiceDefinitios.csdef&lt;/strong&gt;” y “&lt;strong&gt;ServiceConfiguration.*.cscfg&lt;/strong&gt;”, el AccountName y AccountKey del “Azure Storage Account”. &lt;/li&gt;        &lt;li&gt;Añadir &lt;strong&gt;una nueva cadena de conexión (“ConfigurationSettings”)&lt;/strong&gt; en esta demo, para hacer uso de una cola de Azure, que será monitorizada por el “AutoScaler” en función de su número de elementos de la misma. Si no se utilizará el número de elemento de la cola, no sería necesario. &lt;/li&gt;        &lt;li&gt;Desplegar la aplicación en Azure. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Worker Role, AutoScaler (El autoescalador):      &lt;ul&gt;       &lt;li&gt;Indicar en los ficheros de configuración de los proyectos&amp;#160; “&lt;strong&gt;ServiceDefinitios.csdef&lt;/strong&gt;” y “&lt;strong&gt;ServiceConfiguration.*.cscfg&lt;/strong&gt;”, el AccountName y AccountKey del “Azure Storage Account”. &lt;/li&gt;        &lt;li&gt;Incluir el thumbprint de un certificado en los fichero “*.cscfg” en la sección &amp;lt;certificates&amp;gt;, teniendo como “Store Location”, LocalMachine o CurrentUser independientemente. &lt;/li&gt;        &lt;li&gt;Configurar el “app.config” con la información necesaria para WASABi. Puede hacerse desde la consola de EntLib que permite la configuración del autoscalado mas gráficamente: &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_502975F7.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:5px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_07FBBA1B.png" width="289" height="445" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;ul&gt;     &lt;li&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;Rules-store.xml&lt;/strong&gt;: &lt;/font&gt;Es el nombre del fichero donde se configuran las reglas de autoescalado. &lt;a href="http://msdn.microsoft.com/en-us/library/hh680916(v=pandp.50).aspx"&gt;Aquí&lt;/a&gt; puede obtenerse más detalle sobre todos sus atributos. Una de las cosas curiosas de este fichero es que el valor del “timespan” del&amp;#160; operando “queueLength” no puede ser inferior a “00:05:00”, en cuyo caso se producirán las excepciones:         &lt;ul&gt;         &lt;li&gt;&lt;em&gt;A first chance exception of type &amp;#39;System.ArgumentOutOfRangeException&amp;#39; occurred in Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.dll&lt;/em&gt; &lt;/li&gt;          &lt;li&gt;&lt;em&gt;A first chance exception of type &amp;#39;System.InvalidOperationException&amp;#39; occurred in Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.dll&lt;/em&gt; &lt;/li&gt;       &lt;/ul&gt;     &lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;div id="codeSnippetWrapper" style="cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;width:97.5%;border-bottom:silver 1px solid;overflow:auto;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;background-color:#f4f4f4;"&gt;   &lt;div id="codeSnippet" style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;     &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;operands&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;queueLength&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;alias&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;QueueLengthAvg&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;queue&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;cola-wasabi&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;aggregate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Last&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;timespan&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;00:05:00&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;operands&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;ul&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Services-information-store.xml&lt;/font&gt;&lt;/strong&gt;: Es el nombre del fichero donde se indica toda la información necesaria para que el AutoScaler pueda acceder a la subscripción de Azure y poder realizar el incremento o disminución de instancias: &lt;em&gt;SubscriptionId, información del certificado local y subido a Azure, y muy importante, para cada servicio, el “DNS Prefix” y el nombre del Role&lt;/em&gt;. &lt;/li&gt;

    &lt;li&gt;Al ejecutar el AutoScaler desde el Emulador de Azure, se podrán producir errores, que pueden verse en en el output: 
      &lt;ul&gt;
        &lt;li&gt;&lt;em&gt;A first chance exception of type &amp;#39;Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.Security.CertificateException&amp;#39; occurred in Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.dll&lt;/em&gt; &lt;/li&gt;

        &lt;li&gt;&lt;em&gt;A first chance exception of type &amp;#39;Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.Security.CertificateException&amp;#39; occurred in Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.dll&lt;/em&gt; &lt;/li&gt;

        &lt;li&gt;&lt;em&gt;A first chance exception of type &amp;#39;Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.ServiceManagement.ServiceManagementClientException&amp;#39; occurred in Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.dll&lt;/em&gt; &lt;/li&gt;
      &lt;/ul&gt;
    &lt;/li&gt;

    &lt;li&gt;Indicar el valor “&lt;strong&gt;&lt;em&gt;CurrentUser&lt;/em&gt;&lt;/strong&gt;”&amp;#160; para el attributo “&lt;strong&gt;&lt;em&gt;certificateStoreLocation&lt;/em&gt;&lt;/strong&gt;” además de corroborar en la consola de certificados que este existe y se corresponde con el valor del&amp;#160; “&lt;em&gt;&lt;strong&gt;certificateThumbprint&lt;/strong&gt;&lt;/em&gt;”. Esto es debido en muchos de los casos a &lt;strong&gt;Windows 8&lt;/strong&gt;, que como ya he comentado alguna vez, es bastante más exhaustivo con los permisos &lt;/li&gt;

    &lt;li&gt;Ambos ficheros de configuración (XML) tienen sus esquemas “&lt;em&gt;AutoscalingRules.xsd&lt;/em&gt;” y “&lt;em&gt;AutoscalingServiceModel.xsd&lt;/em&gt;” que se encuentran junto a la descarga de WASABi y que será recomendable incluir en el proyecto “AutoScaler” a fin de que la edición de la configuración sea más sencilla. &lt;/li&gt;

    &lt;li&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;WasabiStorageAccount&lt;/font&gt;&lt;/strong&gt;: Es el nombre del Connection String referente al “Storage Account de Azure” donde se encuentran los ficheros antes indicados. Es decir, los ficheros anteriores deberán almacenarse en dicha cuenta bajo el container “&lt;strong&gt;&lt;font color="#00a400"&gt;autoscaling&lt;/font&gt;&lt;/strong&gt;” que deberá generarse manualmente y que tendrá que coincidir con el valor de atributo “&lt;strong&gt;Blob Container Name&lt;/strong&gt;” (según puede verse indicado por la flecha en la figura anterior). &lt;/li&gt;

    &lt;li&gt;Si no se quiere hacer uso del Storage de Azure para almacenar los ficheros de recursos, bien, porque se está trabajando en una solución híbrida, bien porque se está probando en local, etc, puede optarse por cambiar el “Rules Store” y el “Service Information Store”, e indicar una ruta física. Adicionalmente siempre puede establecerse un almacenamiento “Custom”. &lt;/li&gt;
  &lt;/ul&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_24B52F30.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_159E5056.png" width="244" height="242" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Finalizada la fase de configuración, y sin necesidad de desplegar en Azure, el AutoScaler esta listo. Siguiendo con la Demo, cuando la cola tiene tres elementos, y una vez hayan transcurridos 5 minutos desde la inserción del último elementos, la nueva instancia comenzará a ponerse en marcha: &lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;
    &lt;br /&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_2806A10B.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_4B5395B0.png" width="445" height="107" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;IMPORTANTE&lt;/strong&gt;: Si el “AutoScaler”, necesita ser ejecutado en más de una instancia, debido al la gran carga de reglas de autoescalado o al alto número de roles que pueda tener la aplicación, es posible, que más de una de estas instancies evalué las reglas de autoescalado, lo que implicaría “un doble autoscalado” no deseado. Para evitar esto, el “AutoScaling Application Block” permite indicar un valor “true”, para la propiedad “&lt;strong&gt;&lt;em&gt;Use Blob Execution Lease&lt;/em&gt;&lt;/strong&gt;” como puede verse en la siguiene figura.&amp;#160; No obstante, si este no es el caso, es recomendable dejar este valor a “false” para&amp;#160; evitar “overhead”.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_31132C8C.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_6951A3A4.png" width="358" height="122" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;El “Service Management Request Tracker”, permitirá habilitar mensajes de log durante el escalado, tanto de éxito como de fallo. Para ello, el “AutoScaling Application Block” utiliza automáticamente una cola de Windows Azure “&lt;strong&gt;requesttracker&lt;/strong&gt;” donde recoge dichos mensajes.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_7CFE8D38.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_074FB199.png" width="355" height="148" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Es importante conocer, que el “AutoScaling Application Block”, utiliza el valor “&lt;strong&gt;utcOffset&lt;/strong&gt;” para convertir información de configuración de tiempo al formato UTC que es el que utiliza utiliza Windows Azure. “Michael S. Collier” comenta este tema y otros más en &lt;a href="http://www.codertakeout.com/v/4UNYN/Windows_Azure_and_Cloud_Computing_Posts_for_9212011.html"&gt;su blog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Y por último comentar que tras algunos intentos, y tras el error “&lt;em&gt;&amp;#39;Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.DataPointsCollection.DataPointsCollectionException&amp;#39; occurred in Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.dll&lt;/em&gt;”, el AutoScalado de una aplicación en local parece que por el momento no es posible, así que tendremos que “hilar fino” con las reglas. &lt;/p&gt;

&lt;p&gt;Y, como dirían en mi pueblo, ¡que ustedes lo escalen bien! 
  &lt;br /&gt;Juanlu, ElGuerre&lt;/p&gt;

&lt;p&gt;Si necesitas más detalle, siempre puedes echar un vistazo al “&lt;a href="https://www.windowsazure.com/en-us/develop/net/how-to-guides/autoscaling/"&gt;How to&lt;/a&gt;”.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205458" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/WASABi/default.aspx">WASABi</category></item><item><title>Windows 8 Preview &amp; Azure Emulator Problems. Hosted Web Core(HWC) es una solución !</title><link>http://geeks.ms/blogs/jlguerrero/archive/2012/05/26/windows-8-preview-amp-azure-emulator-problems-hosted-web-core-hwc-es-una-soluci-243-n.aspx</link><pubDate>Sat, 26 May 2012 12:58:07 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:205276</guid><dc:creator>Juanlu,ElGuerre</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jlguerrero/rsscomments.aspx?PostID=205276</wfw:commentRss><comments>http://geeks.ms/blogs/jlguerrero/archive/2012/05/26/windows-8-preview-amp-azure-emulator-problems-hosted-web-core-hwc-es-una-soluci-243-n.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/Windows_2D00_Azure_2D00_Big_5F00_284438E2.png"&gt;&lt;img title="Windows Azure Big" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;float:left;padding-top:0px;padding-left:0px;margin:0px 10px 2px 0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="Windows Azure Big" align="left" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/Windows_2D00_Azure_2D00_Big_5F00_thumb_5F00_471AACC0.png" width="240" height="45" /&gt;&lt;/a&gt;A partir de la versión 1.3 del SDK de&amp;#160; Windows Azure, el hosting de los Web Roles se hace sobre una cuenta con permisos limitados, y si a esto le sumas que “&lt;a href="http://windows.microsoft.com/en-US/windows-8/consumer-preview"&gt;Windows 8 Comsumer Preview&lt;/a&gt;” es bastante más restrictivo con ellos, es posible que te encuentres con esta problemática.&lt;/p&gt;  &lt;p&gt;Si has instalado Visual Studio 11, este, no soportada la integración con proyectos de tipo “Windows Azure Project”, así que por el momento, Visual Studio 2010 sigue siendo necesario para este tipo de desarrollos.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Reproducción del error&lt;/strong&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Antes de nada será necesario lanzar el Visual Studio como Administrador (Run as Administrator) para que el emulador pueda funcionar. ¡Curioso, pero al menos, por ahora es necesario!&lt;/p&gt;    &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_7F5923D8.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_0C5303EA.png" width="361" height="159" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Error&lt;/strong&gt;: “&lt;em&gt;There was an error attaching the debugger to the IIS worker process for ULR &amp;#39;&lt;/em&gt;&lt;a href="http://127.255.0.0:82/&amp;#39;"&gt;&lt;em&gt;http://127.255.0.0:82/&amp;#39;&lt;/em&gt;&lt;/a&gt;&lt;em&gt; for role instance &amp;#39;deployment16(70).&amp;lt;application_name&amp;gt;_IN_0&amp;#39;. Unable to start debugging on the web server. The underlying connection wass closed: An unexpected error occurred on a receive”&lt;/em&gt;.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_1637F555.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_6E254635.png" width="365" height="248" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Si accedemos a la url &lt;a href="http://127.0.0.82"&gt;http://127.0.0.82&lt;/a&gt; o ejecutamos con “Ctrl + F5”:&lt;/p&gt;    &lt;p&gt;HTTP Error 500.19 - Internal Server Error &lt;/p&gt;    &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_32190480.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jlguerrero/image_5F00_thumb_5F00_0A065561.png" width="570" height="183" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;El detalle del error en el “&lt;strong&gt;Event View&lt;/strong&gt;” es este:&lt;/p&gt;    &lt;p&gt;&lt;em&gt;An unhandled win32 exception occurred in w3wp.exe [2624]. Just-In-Time debugging this exception failed with the following error: The operation attempted is not supported. Check the documentation index for &amp;#39;Just-in-time debugging, errors&amp;#39; for more information.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;Adicionalmente, también se producen errores en el AppPool (generado dinámicamente):&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Application pool &amp;#39;03c09aa3-4317-4b51-bb1e-818250488df5&amp;#39; is being automatically disabled due to a series of failures in the process(es) serving that application pool.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;y un warning:&lt;/p&gt;    &lt;p&gt;&lt;em&gt;A process serving application pool &amp;#39;03c09aa3-4317-4b51-bb1e-818250488df5&amp;#39; suffered a fatal communication error with the Windows Process Activation Service. The process id was &amp;#39;2624&amp;#39;. The data field contains the error number.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Solución&lt;/strong&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Después de muchas vueltas, la solución es cambar la identidad del pool de “Networkservices” a “LocalSystem”.&amp;#160; El inconveniente de esta solución es que cada vez se ejecute el emulador tendremos que realizar esta modificación, lo que no resulta ”nada” productivo.&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;Una de las soluciones pasa por seguir los pasos que comenta Wade Wegner en este &lt;a href="http://www.wadewegner.com/2011/01/programmatically-changing-the-apppool-identity-in-a-windows-azure-web-role/"&gt;post&lt;/a&gt;, donde se incluye código en el “&lt;em&gt;OnStart()&lt;/em&gt;” de cada Role, a fin de otorgar permisos al pool. Esta acción es propia para un entorno de &lt;strong&gt;producción&lt;/strong&gt;, pero no para el emulador, donde, de hecho, no funciona. &lt;/li&gt;      &lt;li&gt;Así que la solución, finalmente se reduce a, &lt;strong&gt;comentar las Sección “&amp;lt;Sites&amp;gt;” del fichero de configuración&amp;#160; “ServiceDefinition.csdef”&lt;/strong&gt; . En cuyo caso, no se hace uso de IIS, sino del “Hosted Web Core” (HWC) donde el proceso pasa a ser “&lt;b&gt;WaIISHost.exe&lt;/b&gt;” en lugar del “w3wp.exe”.&amp;#160; &lt;/li&gt;   &lt;/ul&gt;    &lt;div id="codeSnippetWrapper" style="cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;width:97.5%;border-bottom:silver 1px solid;overflow:auto;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;background-color:#f4f4f4;"&gt;     &lt;div id="codeSnippet" style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;       &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum1" style="color:#606060;"&gt;   1:&lt;/span&gt; &amp;lt;?xml version=&lt;span style="color:#006080;"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; encoding=&lt;span style="color:#006080;"&gt;&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&amp;gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum2" style="color:#606060;"&gt;   2:&lt;/span&gt; &amp;lt;ServiceDefinition name=&lt;span style="color:#006080;"&gt;&amp;quot;WindowsAzureProject1&amp;quot;&lt;/span&gt; xmlns=&lt;span style="color:#006080;"&gt;&amp;quot;http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum3" style="color:#606060;"&gt;   3:&lt;/span&gt;   &amp;lt;WebRole name=&lt;span style="color:#006080;"&gt;&amp;quot;WebRole1&amp;quot;&lt;/span&gt; vmsize=&lt;span style="color:#006080;"&gt;&amp;quot;Small&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum4" style="color:#606060;"&gt;   4:&lt;/span&gt;     &amp;lt;!--&amp;lt;Sites&amp;gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum5" style="color:#606060;"&gt;   5:&lt;/span&gt;       &amp;lt;Site name=&lt;span style="color:#006080;"&gt;&amp;quot;Web&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum6" style="color:#606060;"&gt;   6:&lt;/span&gt;         &amp;lt;Bindings&amp;gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum7" style="color:#606060;"&gt;   7:&lt;/span&gt;           &amp;lt;Binding name=&lt;span style="color:#006080;"&gt;&amp;quot;Endpoint1&amp;quot;&lt;/span&gt; endpointName=&lt;span style="color:#006080;"&gt;&amp;quot;Endpoint1&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum8" style="color:#606060;"&gt;   8:&lt;/span&gt;         &amp;lt;/Bindings&amp;gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum9" style="color:#606060;"&gt;   9:&lt;/span&gt;       &amp;lt;/Site&amp;gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum10" style="color:#606060;"&gt;  10:&lt;/span&gt;     &amp;lt;/Sites&amp;gt;--&amp;gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum11" style="color:#606060;"&gt;  11:&lt;/span&gt;     &amp;lt;Endpoints&amp;gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum12" style="color:#606060;"&gt;  12:&lt;/span&gt;       &amp;lt;InputEndpoint name=&lt;span style="color:#006080;"&gt;&amp;quot;Endpoint1&amp;quot;&lt;/span&gt; protocol=&lt;span style="color:#006080;"&gt;&amp;quot;http&amp;quot;&lt;/span&gt; port=&lt;span style="color:#006080;"&gt;&amp;quot;80&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum13" style="color:#606060;"&gt;  13:&lt;/span&gt;     &amp;lt;/Endpoints&amp;gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum14" style="color:#606060;"&gt;  14:&lt;/span&gt;     &amp;lt;Imports&amp;gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum15" style="color:#606060;"&gt;  15:&lt;/span&gt;     &amp;lt;/Imports&amp;gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span id="lnum16" style="color:#606060;"&gt;  16:&lt;/span&gt;   &amp;lt;/WebRole&amp;gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;overflow:visible;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:white;"&gt;&lt;span id="lnum17" style="color:#606060;"&gt;  17:&lt;/span&gt; &amp;lt;/ServiceDefinition&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;Si ya conoces Full IIS, te habrás dado cuenta, que&amp;#160; estas capacidades no son soportadas por la solución aceptada, no obstante, espero haber evitado algún dolor de cabeza y conseguir continuación con una feliz depuración en el Emulador de Windows Azure.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Otras referencias&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Características y capacidades del&amp;#160; “Full IIS” frente a las de “Hosted Web Core” echa un vistazo a este &lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2010/12/02/new-full-iis-capabilities-differences-from-hosted-web-core.aspx"&gt;post&lt;/a&gt;. &lt;/li&gt;

  &lt;li&gt;&lt;a title="http://blogs.msdn.com/b/rickandy/archive/2011/11/23/debugging-http-500-internal-server-error-with-windows-azure-sdk.aspx" href="http://blogs.msdn.com/b/rickandy/archive/2011/11/23/debugging-http-500-internal-server-error-with-windows-azure-sdk.aspx"&gt;http://blogs.msdn.com/b/rickandy/archive/2011/11/23/debugging-http-500-internal-server-error-with-windows-azure-sdk.aspx&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a title="http://sachinsancheti.wordpress.com/2012/05/16/windows-azure-moving-from-1-4-to-1-6-sdk-the-application-invalid-apppoolid/" href="http://sachinsancheti.wordpress.com/2012/05/16/windows-azure-moving-from-1-4-to-1-6-sdk-the-application-invalid-apppoolid/"&gt;http://sachinsancheti.wordpress.com/2012/05/16/windows-azure-moving-from-1-4-to-1-6-sdk-the-application-invalid-apppoolid/&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;
Saludos @home 

&lt;br /&gt;Juanlu, elGuerre 


&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=205276" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Visual+Studio+.NET/default.aspx">Visual Studio .NET</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://geeks.ms/blogs/jlguerrero/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></item></channel></rss>