Instalación Apache Hive
Después de un poco de teoría sobre el funcionamiento de Apache Hive, proseguiremos a la instalación de este componente, ya que la mayoría de la gente quiere práctica.
tar -xzvf apache-hive-1.2.2.tar.gz

Debemos modificar el archivo hive-site.xml, por default no lo trae los binarios de hive, para esto copiaremos el archivo hive-default.xml.template ó podemos crear un archivo vació llamado hive-site.xml, en caso de que lo copiemos del
hive-default.xml.template lo re-nombramos como hive-site.xml, las propiedades necesarias para que Hive use Apache Derby y HDFS son las siguientes.
A partir de aquí se muestra como configurar Apache Derby con Apache Hive, si se utiliza alguna otra base de datos diferente, los siguientes pasos deben omitirse y la instalación quedaría completa hasta el paso anterior.
Para eso modificaremos el archivo start-dfs.sh que se encuentra en /usr/local/hadoop/sbin/ el archivo luce algo como la siguiente imagen.
Para poder Instalar Apache Hive de una manera óptima necesitamos Apache Hadoop instalado, ya que como vimos en la sección de teoría sobre Apache Hive necesita HDFS para el almacenamiento Físico y MapReduce ó TEZ para el procesamiento de las consultas que se le realicen al cliente dependiendo la versión.
A continuación podemos descargar el binario de Apache Hive en la siguiente url: http://www.apache.org/dyn/closer.cgi/hive/ es la versión más nueva, si gustan pueden descargar una versión anterior.
Entonces trabajaremos con la versión apache-hive-1.2.2-bin.tar.gz para este tutorial, Apache Hive se monta sobre un clúster de Hadoop así que no es necesario distribuir los paquetes a menos que quieras tener un cliente en cada nodo del clúster de hadoop.
Procederemos a descomprimir el binario apache-hive-1.2.2.tar.gz con el siguiente comando:
tar -xzvf apache-hive-1.2.2.tar.gz
Una vez descomprimido el binario la carpeta resultante la movemos a /usr/local/hive con los siguiente comandos.
- su
- mv apache-hive-1.2.2-bin /usr/local/hive
Si tienes un clúster de hadoop debes decidir en cuál de tus nodos se instalará el metastore de Apache Hive usualmente dependiendo del número de nodos que se recomienda que sea de 2k+1 con k=1,2,3,... deberíamos tener el metastore en un nodo diferente al que tenemos el ResourcerManager y el Namenode.
Una vez que movamos los archivos a la ruta pasada, procederemos a configurar los archivos de Apache Hive, pero antes de comenzar con esta labor, cabe mencionar que como en el apartado de teoría vimos Apache Hive necesita de una RDBMS para funcionar, por default Apache Hive tiene una embebida propia de Apache conocida como Derby, puede utilizarse la que trae embebida Apache Hive que será la primera parte de esta Instalación y en la segunda parte utilizaré igualmente Apache Derby, pero ya con los binarios correspondientes a esta base sin que estén embebidos en los mismos binarios de hive.
Configuramos las variables de ambiente de hive como el HIVE_HOME y exportamos las librerías de Hive al CLASSPATH en nuestro archivo principal de usuario con el siguiente comando.
- nano ~/.bashrc
Terminando de dar de alta esta variable de ambiente y las librerías de hive aplicamos los cambios con el comando source que sirve para ejecutar los comandos en un archivo plano.
Actualizamos nuestras variables con el siguiente comando.
- source ~/.bashrc
Inmediatamente después de actualizar este archivo podemos entrar a hive con el comando hive en consola, como vemos en la siguiente imagen.
Una vez dentro y con la configuración por default Apache Hive cuando empieza a levantar su instancia nos crea dos archivos desde el lugar en que escribimos el comando hive, una carpeta llamada metastore_db/ y un archivo llamado derby.log, esto es para la base de datos embebida de derby que contiene hive por default.
En la carpeta metastore_db/ se guardará todos los metadatos correspondientes a las tablas, bases de datos u objetos que vivan en hive o todo el esquema lógico para aquellos que manejen RDBMS.
Para fines de prueba crearé una Base de Datos en Hive de prueba llamada DB_PRUEBA como en la siguiente imagen.
Cuando creamos algún objeto en Apache Hive por default nos crea la siguiente estructura de carpetas en HDFS /user/hive/warehouse/objetos.
Y como en la imagen siguiente vemos, en el recuadro verde podemos ver la ruta en la que me encuentro en el browse the file system y dentro de ella tiene el objeto que hace referencia a una base de datos en hive llamada db_prueba.db
Como podemos ver ya tenemos una Base de Datos Hive y que en nuestro lugar donde corrimos la instancia guarde los metadatos, esta instalación tiene muchas desventajas que solucionaremos instalando y configurando algunas propiedades, las principales características serían:
- Se crearán esquemas diferentes si levantamos el cliente de hive en diferentes rutas
- La configuración de Hive esta por default
- La Base de Datos para el metadato de hive es una embebida.
Y así podría haber más deficiencias pero solo cite las importantes, por eso tunearemos nuestra instalación de Apache Hive para eso necesitamos lo siguiente:
- Haber seguido los pasos anteriores.
- Tener Instalada alguna RDBMS (MySQL, Oracle, SQL Server, Derby, etc).
Yo utilizaré Apache Derby para mejorar esta instalación, y dejar a un lado la Base de Datos Derby embebida que trae Hive por default. A continuación explicaré como instalar esta Base de Datos en nuestra máquina.
A continuación les dejo la url para la descarga de Apache Derby, si alguno instala otra Base de Datos Relacional no es necesario continuar con este link:https://db.apache.org/derby/derby_downloads.html
Yo utilizaré la version db-derby-10.10.2.0-bin.tar.gz ya que contaba con esta en mis pertenencias y aparte es la última soportada para esta versión de hive del tutorial.
Descomprimiremos el archivo db-derby-10.10.2.0-bin.tar.gz con el siguiente comando y después lo moveremos a /usr/local/derby
- tar -xzvf db-derby-10.10.2.0-bin.tar.gz
- su
- mv db-derby-10.10.2.0-bin/ /usr/local/derby
Como podemos observar en la siguiente imagen.
Una vez que contamos con los archivos en la ruta mostrada previamente, lo siguiente sería crear la ruta donde la información de nuestra Base de Datos de Apache Derby prevalecerá, para eso creamos una carpeta dentro de nuestra carpeta /usr/local/derby que se llame data/ como podemos ver en la siguientes imágenes.
En esta primera imagen podemos ver que no contamos con la carpeta data.

En esta siguiente imagen, ya contamos con la carpeta data/

En la carpeta data es donde toda la información de Apache Derby vivirá, procedemos a modificar nuestro shell script para agregar las variables de ambiente necesarias para Apache Derby con el siguiente comando.
En esta primera imagen podemos ver que no contamos con la carpeta data.

En esta siguiente imagen, ya contamos con la carpeta data/

En la carpeta data es donde toda la información de Apache Derby vivirá, procedemos a modificar nuestro shell script para agregar las variables de ambiente necesarias para Apache Derby con el siguiente comando.
- nano ~/.bashrc
- modificamos archivo
- source ~/.bashrc
Y agregamos las variables de ambiente dentro del recuadro verde, después de modificar el archivo aplicamos los cambios con el comando source.
Llegando hasta este punto ya tenemos configurado lo necesario para tener una base de datos Apache Derby productiva, ahora configuraremos algunos archivos de nuestra instalación pasada, para tunear nuestro Hive.
Ahora nos dirigimos a /usr/local/hive/conf/ y tendremos los siguientes archivos.

A continuación explicaré cada una de las propiedades pasadas.
hive.metastore.local: Bandera que sirve para saber si el metastore esta en la máquina local o es remoto.
javax.jdo.option.ConnectionURL: Aquí se define la url del jdbc a la Base de Datos que utilizaremos para guardar la metadata en Apache Hive.
javax.jdo.option.ConnectionDriverName: Aquí se define la clase del driver para realizar la conexión a la Base de Datos para guardar la metadata en Apache Hive.
hive.metastore.warehouse.dir: La dirección en la que se guardará todo lo lógico o la información en browse the file system
hive.server2.thrift.min.worker.threads: Mínimo de hilos para poder tener clientes habilitados para Apache Hive.
hive.server2.thrift.max.worker.threads: Máximo de hilos para poder tener clientes habilitados para Apache Hive.
hive.server2.thrift.port: Puerto para que este escuchando las conexiones entrantes en Apache Hive.
hive.server2.thrift.bind.host: Host donde escuchará el server de Hive.
Para esta instalación estas características son necesarias y suficientes para una instalación de Apache Hive de manera decente, así mismo hay propiedades para montar seguridad.
A partir de aquí se muestra como configurar Apache Derby con Apache Hive, si se utiliza alguna otra base de datos diferente, los siguientes pasos deben omitirse y la instalación quedaría completa hasta el paso anterior.
Una vez terminado de configurar esto, nos gustaría que conforme levantamos hadoop, levantará Apache Derby, que la Base de Datos siempre se levante en el mismo lugar y este disponible siempre que Hadoop este arriba.
Para eso modificaremos el archivo start-dfs.sh que se encuentra en /usr/local/hadoop/sbin/ el archivo luce algo como la siguiente imagen.
Al final de este archivo agregamos las siguientes lineas:
El primer fragmento en el recuadro verde chillante, nos sirve para dirigirnos a esa ubicación, lugar donde todo la información de la Base de Datos Derby vivirá y donde principalmente el metadato de Apache Hive estará.

En el recuadro verde, es la sentencia para levantar el servidor en todos los puertos de Apache Derby.
Para poder terminar esta instalación de Apache Hive necesitamos copiar los jars de los clientes de Derby en la carpeta de lib/ de Apache Hive, como a continuación mostramos.
En /usr/local/derby/lib/ en esta dirección encontramos los siguientes dos jars
y los movemos a /usr/local/hive/lib a continuación unas imágenes para representar lo anterior.
Antes de realizar la copia de los jars a la carpeta /usr/local/hive/lib/ encontramos que cuenta con los siguientes jars con la inicial d tenemos las siguientes coincidencias.

Después de verificar que estos jars nos hacen falta, los copiamos con el siguiente comando.

Y una vez más vemos las librerías de java que contiene la carpeta anterior después de copiar los jars a esta carpeta, como podemos ver ya contamos con los dos jars en las librerías del hive.

Con esto concluimos la configuración de nuestra estancia de Apache Hive.
Y ahora procederemos a reiniciar todos los servicios, Hadoop y Yarn con estas nuevas modificaciones.
Y reiniciamos uno por uno en el siguiente orden.
El primer fragmento en el recuadro verde chillante, nos sirve para dirigirnos a esa ubicación, lugar donde todo la información de la Base de Datos Derby vivirá y donde principalmente el metadato de Apache Hive estará.

En el recuadro verde, es la sentencia para levantar el servidor en todos los puertos de Apache Derby.
Para poder terminar esta instalación de Apache Hive necesitamos copiar los jars de los clientes de Derby en la carpeta de lib/ de Apache Hive, como a continuación mostramos.
En /usr/local/derby/lib/ en esta dirección encontramos los siguientes dos jars
- derbyclient.jar
- derbytools.jar
y los movemos a /usr/local/hive/lib a continuación unas imágenes para representar lo anterior.
Antes de realizar la copia de los jars a la carpeta /usr/local/hive/lib/ encontramos que cuenta con los siguientes jars con la inicial d tenemos las siguientes coincidencias.

Después de verificar que estos jars nos hacen falta, los copiamos con el siguiente comando.

Y una vez más vemos las librerías de java que contiene la carpeta anterior después de copiar los jars a esta carpeta, como podemos ver ya contamos con los dos jars en las librerías del hive.

Con esto concluimos la configuración de nuestra estancia de Apache Hive.
Y ahora procederemos a reiniciar todos los servicios, Hadoop y Yarn con estas nuevas modificaciones.
Y reiniciamos uno por uno en el siguiente orden.
- Hadoop
- Yarn
- Hive
Y verificamos que cuando iniciamos hadoop, la base de datos derby, levanta con los servicios de hadoop.

Como podemos observar cuando Iniciamos Hadoop se Inicia Apache Derby, en el puerto 60000.
Ahora iniciamos la instancia del cliente de hive, con el comando hive.

Después de Iniciar la instancia del cliente, en la estructura de carpetas en /usr/local/derby/data/ encontraremos los siguientes archivos.

Ya hemos notado el cambio de configurar apropiadamente una instancia de Apache Hive sin usar la Base de Datos Derby embebida e instalando una Base de Derby Decente, como hacer para que no cree varias carpetas de metadatos de acuerdo donde la mandemos a consumir y personalizar nuestro Apache Hive, por último podemos notar que en Browse the File System, ahora existe una estructura de carpetas llamada /usr/hive/warehouse/ donde vivirá toda nuestra información en nuestro clúster, cuando tenemos un Apache Hive por default, la ruta donde guarda la información es /user/hive/warehouse/.

A continuación crearé una Base de Datos llamada prueba_db en Apache Hive para notar la nueva estructura en Browse the File System.

Y como podemos notar en nuestro Visor de Archivos Distribuidos de Hadoop tenemos la siguiente estructura e información dentro de ella.

Apache Hive fue el primer intento de una Base de Datos distribuida, utilizando como su almacenamiento principal HDFS y su medio principal de procesamiento el MapReduce, aunque hoy en día pueda convivir con TEZ, gracias a esta Base de Datos es que hay mucho avance en el procesamiento de información en el termino de Big Data. Y como siempre he creído para poder avanzar en cualquier punto de la vida, debemos de tener bien claras las Bases, por eso es que entender este modelo es tan primordial para poder sacar un mejor desempeño a las Bases de Datos NoSQL.

Como podemos observar cuando Iniciamos Hadoop se Inicia Apache Derby, en el puerto 60000.
Ahora iniciamos la instancia del cliente de hive, con el comando hive.

Después de Iniciar la instancia del cliente, en la estructura de carpetas en /usr/local/derby/data/ encontraremos los siguientes archivos.

Ya hemos notado el cambio de configurar apropiadamente una instancia de Apache Hive sin usar la Base de Datos Derby embebida e instalando una Base de Derby Decente, como hacer para que no cree varias carpetas de metadatos de acuerdo donde la mandemos a consumir y personalizar nuestro Apache Hive, por último podemos notar que en Browse the File System, ahora existe una estructura de carpetas llamada /usr/hive/warehouse/ donde vivirá toda nuestra información en nuestro clúster, cuando tenemos un Apache Hive por default, la ruta donde guarda la información es /user/hive/warehouse/.

A continuación crearé una Base de Datos llamada prueba_db en Apache Hive para notar la nueva estructura en Browse the File System.

Y como podemos notar en nuestro Visor de Archivos Distribuidos de Hadoop tenemos la siguiente estructura e información dentro de ella.

Apache Hive fue el primer intento de una Base de Datos distribuida, utilizando como su almacenamiento principal HDFS y su medio principal de procesamiento el MapReduce, aunque hoy en día pueda convivir con TEZ, gracias a esta Base de Datos es que hay mucho avance en el procesamiento de información en el termino de Big Data. Y como siempre he creído para poder avanzar en cualquier punto de la vida, debemos de tener bien claras las Bases, por eso es que entender este modelo es tan primordial para poder sacar un mejor desempeño a las Bases de Datos NoSQL.
Comentarios
Publicar un comentario