Existen diversos métodos para ejecutar consultas a Apache Hive. El método más popular – y más arcaico – es utilizar la herramienta cliente tipo línea de comando que se incluye en la distribución de Apache Hive.Para abrir la herramienta debes conectar al name-node (nodo central) y ejecutar el acceso directo de Hadoop; una vez abierta la aplicación de línea de comando, debes ejecutar Hive para que se lance la aplicación.

Conectar a Apache Hive, herramientas y servicios HiveServer en HDInsight

En algunas distribuciones se indica que Hive no existe porque no está establecido en las variables de entorno de Windows; en ese caso, acceder al directorio donde está la distribución de Hive – normalmente es un directorio que se llama Hive.X.XX.XX dentro del directorio Hadoop.XX.XX.XX

La aplicación tiene diferentes argumentos de entrada como podéis ver:

usage: hive

 -c,--credentials <user:password>   credentials for HTTP/HTTPS connection
 -d,--define <key=value>            Variable subsitution to apply to hive
                                    commands. e.g. -d A=B or --define A=B
 -e <quoted-query-string>           SQL from command line
 -f <filename>                      SQL from files
 -H,--help                          Print help information
 -h <hostname>                      connecting to Hive Server on remote
                                    host
    --hiveconf <property=value>     Use value for given property
    --hivevar <key=value>           Variable subsitution to apply to hive
                                    commands. e.g. --hivevar A=B
 -i <filename>                      Initialization SQL file
 -m,--servermode <servermode>       server mode
                                    (tcp,http,https,https-unsafe)
 -p <port>                          connecting to Hive Server on port
                                    number
 -path <path>                       URI path component for HTTP/HTTPS
                                    connection
 -S,--silent                        Silent mode in interactive shell
 -v,--verbose                       Verbose mode (echo executed SQL to the
                                    console)

 

Una vez en la aplicación puedes ejecutar los diferentes comandos HiveQL que veremos más adelante; de momento ejecuta:

show databases;

que dará como resultado algo como lo siguiente:

hive> show databases;
OK
default
emails
w3c
Time taken: 0.452 seconds

 

Hemos conseguido conectar y ejecutar una consulta HiveQL, más adelante veremos más cosas. Comentar que cuando conectas a Hive por defecto conectas en la base de datos por defecto – que se llama default.

Conectar con herramientas que usan Drivers ODBC u JDBC

 

Conectar a Apache Hive, herramientas y servicios HiveServer en HDInsight

Otros métodos de conexión y ejecución de consultas se pueden realizar mediante herramientas que utilicen drivers ODBC o JDBC. Anteriormente vimos cómo conectar a Apache Hive desde Excel 2013; otros métodos para conectar es mediante SQL Developer de Oracle (utilizando driver JDBC), o mediante SQuirreL SQL Client – que se puede descargar de aquí. NOTA: Estoy teniendo problemas para conectar con estas dos herramientas y próximamente indicaré cómo hacerlo – si consigo arreglarlo 🙂

 

El Repositorio de datos (MetaStore)

Apache Hive se apoya en dos componentes:

  1. HDFS (o WASB) para almacenar los datos (archivos)
  2. BBDD de contenido (almacenada en HDFS)
  3. Metastore, que contiene la definición de tablas y objetos

El punto 3, no está almacenado en HDFS; de hecho Apache Hive proporciona varios métodos de almacenar esa información: en MySQL, el PostGres, o en Derby SQL Server. Qué método de almacenamiento utiliza podrás verlo en la siguiente ruta:

C:Hadoophive-0.9.0confhive-site.xml; en concreto en las entradas:

<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>

jdbc:derby://localhost:1527/metastore_db;create=true

</value>
  <description>JDBC connect string for a JDBC metastore</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>org.apache.derby.jdbc.ClientDriver</value>
  <description>Driver class name for a JDBC metastore</description>
</property>

 

En el caso de la distribución HDI-Dev-Preview, la BBDD derby estará almacenada en la ruta local de Apache Hive. Esto puede resultar un problema si pierdes esa unidad de datos porque podrás comprometer la definición de todos los objetos que tiene tu DW; en el caso de HDInsight en Azure, la ubicación obviamente es una base de datos SQL Server (WASD); concretamente en mi HDInsight está en esta ubicación:

<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>

 

Qué beneficio tenemos? nos proporciona redundancia geográfica la BBDD de SQL Server. En caso de perdida del name-node de HDInsight, no se si se reutilizará la BBDD del metastore; es algo que debemos validar por si acaso…

 

Los Servicios de Apache Hive

En la distribución de HDI-Dev-Preview se puede ver que además de los servicios HiveServer y HiveServer2, hay un servicio llamado DerbyServer que corresponde con el servicio de base de datos para el metastore (aparte hay otro servicio que se llama metastore). Si este servicio se para, las peticiones HiveSQL no podrán procesarse. Los servicios HiveServer y HiveServer2 se utilizan para las peticiones que vienen desde los drivers JDBC / ODBC; si paras el servicio HiveServer2 por ejemplo, las peticiones que hagas desde Excel 2013, no podrán procesarse. Sin embargo la herramienta cliente (CLI) que hemos visto al principio del artículo si seguirá funcionando porque no hace uso esos servicios. Fíjate en el diagrama 2, como ha herramienta Cliente (en naranja) no pasa por el servicio Thrift Server (que es lo sostiene los servicios HiveServer y HiveServer2).

del servicio

Conectar a Apache Hive, herramientas y servicios HiveServer en HDInsight

 

0 Shares:
Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

You May Also Like