Anteriormente hemos conectado con la herramienta cliente (CLI) a HDInsight Developer Preview; en esta ocasión vamos a hacerlo directamente en la distribución disponible de HDInsight en Azure. Para crear un cluster de HDInsight en Windows Azure debes seguir los pasos descritos en este enlace. Esta publicación asume que has creado correctamente tu cluster HDInsight en Windows Azure.
En este post, vamos a hacer lo siguiente:
- Conectar con la herramienta cliente Hive para consultar el Datawarehouse.
- Crear una base de datos Hive y ver sus propiedades
- Conocer las rutas donde se almacena la información
Conectar con la herramienta cliente Hive
Para abrir la herramienta de línea de comando, haz doble-click sobre el .bat de hadoop:
Un error que hay en la distribución actual es que en el Path del cluster desplegado no está incluida la ruta a Hive y Scoop, cosa que si está en la HDInsight Developer Preview:
No le demos demasiada importancia; lo dejamos como está en el cluster en Azure, pero recuerda que tendrás que acceder al path de Hive de forma manual; en la distribución que tenemos ahora, sería en la ruta: c:appsdisthive-0.11.0.1.3.1.0-06bin.
Una vez en la ruta, ejecuta Hive y se lanzará la aplicación de hive para consultar el catálogo (BBDD) de Hive; ejecuta el comando:
show databases;
y aparecerá algo como lo siguiente, que muestra las BBDDs que tienes en la tu instalación de Hive:
Considera las siguientes notas, que creo son importantes:
- Por defecto, siempre te conectas a la base de datos default
- El driver JDBC de momento sólo soporta conexiones contra la BBDD default; extraido de aqui:
“For embedded mode, uri is just “jdbc:hive://”. For standalone server, uri is “jdbc:hive://host:port/dbname” where host and port are determined by where the hive server is run. For example, “jdbc:hive://localhost:10000/default”. Currently, the only dbname supported is “default”.”
La evolución es rapidísima por lo que soporte para BBDDs de otro contexto estará disponible pronto.
- Este problema no afecta al driver ODBC; de hecho en este post, vemos como conectar desde Excel 2013 a HDInsight-DeveloperPreview sin problemas.
Crear una BBDD Hive
la sentencia de creación de BBDD es la siguiente:
CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_name=property_value, ...)];
Como curiosidad puedes ver aquí la motivación de las propiedades extendidas.
- database_name es el nombre de la base de datos, que debe ser único.
- location es la ruta donde se creará la BBDD.
Diferencias entre HDInsight en Windows Azure y HDInsight Developer Preview:
- la ruta – Location – en HDInsight en Windows Azure, SIEMPRE será una ruta al Windows Blob Storage (WASB) asociado al la cuenta.
- la ruta – Location – en HDInsight Developer Preview, será una ruta HDFS (hadoop). Este tipo de rutas también se utilizan en la distribución de HortonWorks.
Puede parecer que HDInsight en Windows Azure ROMPE con la filosofía de Hadoop con el almacenamiento HDFS, quizás es cierto, pero piénsalo de otra forma: delegas en Windows Azure Blob Storage (WASB) todos los aspectos relativos a redundancia, alta-disponibilidad, tamaños de fragmentos, etc. en definitiva, lo que ofrece Microsoft es abstraernos de la capa de almacenamiento. Más aún, el hecho de almacenar la información en WASB, nos permite que podamos crear y destruir el cluster de HDInsight en Windows Azure sin perder los datos que tienes almacenados. Si quieres que el comportamiento sea ese, en el momento de la creación del cluster de HDInsight en Azure deberás indicar donde persiste esa información; accediendo a la cuenta de gestión de Azure deberás especificarlo aqui (resulta desafortunada la traducción de Store por tienda):
No he probado este funcionamiento, pero como indicamos aquí, debería cambiarse la información de configuración de Hive en estos valores:
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:sqlserver://XXX.database.windows.net:1433;database=XXXvemetastore; encrypt=true;trustServerCertificate=true;create=false</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value> <description>Driver class name for a JDBC metastore</description> </property>
Para crear una BBDD en una ruta concreta podemos ejecutar la siguiente instrucción:
CREATE DATABASE Ejemplo_WASB location 'mi_storage.db'
teniendo el siguiente resultado:
Fíjese que “automáticamente” la BBDD la ha creado en la ruta:
wasb://<contenedor>@<micuenta>.blob.core.windows.net/mi_storage.db
Que coincide con la ruta de mi Windows Azure Blob Storage
Más aún, si intentamos indicar que la ruta sea HDFS, tendremos el siguiente error:
Microsoft ha modificado el código de esta distribución de Hive para que la creación de las bases de datos sólo se pueda realizar contra almacenamiento Windows Azure Blob Storage (WASB), aspecto que tiene sentido considerando que Microsoft ofrece WASB como el sistema de almacenamiento para HDInsight.