Construcción de entornos de colmena (tutorial de nivel de niñera)

1. Introducción a la colmena

Hive es una herramienta de estadísticas de datos de código abierto de Facebook para resolver registros estructurados masivos.
Hive es una herramienta de almacenamiento de datos basada en Hadoop, que puede mapear archivos de datos estructurados en una tabla de base de datos y proporciona funciones de consulta similares a SQL, que pueden convertir instrucciones SQL en tareas de MapReduce para su ejecución.

Por supuesto, las declaraciones SQL también se pueden convertir a Tez o Spark.

Colmena

¿Por qué necesitas Hive?

  • Reduzca el costo de aprendizaje de MapReduce, para que los DBA y el personal de operación y mantenimiento puedan implementarlo a través de SQL.
  • Código abierto, puede ahorrar costos
  • Puede manejar grandes datos

Sistema de arquitectura Hive

Diagrama de arquitectura de colmena

  • componente del controlador

    • Parser (SQL Parser): convierte cadenas SQL en árbol de sintaxis abstracta AST, este paso generalmente se realiza con bibliotecas de herramientas de terceros, como antlr; AST se analiza sintácticamente, como si existen tablas, campos y semántica SQL incorrecta.

    • Compilador (Plan Físico): Compile el AST para generar un plan de ejecución lógico.

    • Optimizer (Query Optimizer): Optimiza el plan de ejecución lógica.

    • Ejecución: Convierte un plan de ejecución lógica en un plan físico ejecutable. para colmena

      Digamos que es MR/Spark/Tez.

  • Componente MetaStore

    • El componente MetaStore almacena la información de metadatos de Hive y almacena sus propios metadatos en la base de datos relacional. Las bases de datos admitidas incluyen principalmente: Mysql, Derby y admite el almacén de metadatos independiente en el clúster remoto, lo que hace que Hive sea más robusto.
    • Los metadatos incluyen principalmente el nombre de la tabla, la base de datos a la que pertenece la tabla (el valor predeterminado es predeterminado), el propietario de la tabla, las columnas de la tabla, las particiones y sus atributos, los atributos de la tabla (si es un tabla, etc.), y la ubicación de los datos de la tabla, directorio, etc.
  • interfaz de usuario

    • CLI, la interfaz de línea de comandos, la herramienta de interacción de comandos. De esta forma, podemos operar Hive con comandos.
    • HiveServer2, cuando se inicia este servicio, podemos operar Hive desarrollando programas. Por ejemplo, a través de un programa Java, llamar al controlador Hive JDBC para agregar, eliminar, modificar y consultar la base de datos es tan conveniente como operar una base de datos relacional.
    • Interfaz web de Hive, esta es una versión web de la interfaz de operación. Pero está obsoleto en la nueva versión. En su lugar, se puede utilizar HUE.

2. Instalación de ambiente de colmena

Los tres modos de implementación de Hive se distinguen principalmente por el modo de operación de Metastore.

Modo de implementación de colmena

Este artículo demuestra principalmente en modo Local, y la base de datos relacional usará MariaDB, una versión de rama de Mysql.

1. Preparativos

1) Instalar Hadoop

Este artículo toma Hadoop2.7.7 como ejemplo, puede consultar el tutorial: https://blog.csdn.net/tangyi2008/article/details/121908766

Después de instalar Hadoop, debe agregar la configuración del proxy del usuario:

vi $HADOOP_HOME/etc/hadoop/core-site.xml

Agregue los siguientes elementos de configuración

<property>
    <name>hadoop.proxyuser.xiaobai.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.xiaobai.groups</name>
    <value>*</value>
</property>

2) Instalar MariaDB

La base de datos MariaDB es una bifurcación de MySQL desarrollada por el fundador de MySQL, Michael Widenius. Una de las razones para desarrollar esta rama es: después de que Oracle adquirió MySQL, existe un riesgo potencial de cerrar MySQL, por lo que la comunidad adopta el método de bifurcación para evitar este riesgo.

El nombre MariaDB proviene del nombre de la hija de Michael Widenius, María.

(1) Verifique la instalación de MariaDB

Use el siguiente comando para verificar la instalación de MariaDB

sudo dpkg -l | grep maria

Si no se imprime nada, significa que no está instalado, de lo contrario, puede decidir si necesita desinstalar y volver a instalar según sus necesidades.

(2) Desinstalar MariaDB/MySQL

Si desea desinstalar el mariadb o mysql instalado anteriormente, puede usar el siguiente comando

sudo apt autoremove mysql-\*

Si está seguro de que maria está instalado, puede usar el siguiente comando para desinstalarlo

sudo apt autoremove mariadb-*

(3) Instalar MariaDB

Se puede realizar una instalación conveniente con el siguiente comando, se instalará en su fuente predeterminada

sudo apt update
sudo apt install mariadb-server

Nota : puede https://downloads.mariadb.org/mariadb/repositories/configurar su propio sistema operativo y versión, la versión de MariaDB que necesita instalar y el repositorio que coincida con la región de su propio país, para que pueda instalar la versión requerida de manera más rápida y precisa.

Cuando se configuran el sistema operativo (18.04LTS), la versión de MariaDB (10.6) y el almacén (Alibaba Cloud), el comando para agregar el almacén y el comando para instalar se darán en la página web.

Selección de versión de MariaDB

Comandos para agregar Repositorio

sudo apt-get install software-properties-common dirmngr apt-transport-https
sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] https://mirrors.aliyun.com/mariadb/repo/10.6/ubuntu bionic main'

Comandos para actualizar fuentes e instalar MariaDB

sudo apt update
sudo apt install mariadb-server

Una vez completada la instalación, verifique el estado del servicio MariaDB usando el siguiente comando

sudo systemctl status mariadb

Cuando vea la siguiente interfaz, ¡felicidades, la instalación se ha realizado correctamente! ! !

Vista de estado de MariaDB

(4) Configuración sencilla de MariaDB

Use los siguientes comandos para la configuración básica:

sudo mysql_secure_installation

Después de ejecutar el comando, el terminal tendrá los siguientes problemas que deben configurarse:

1.Enter current password for root (enter for none): 
(预设的MariaDB没有密码,直接Enter即可)

2.Switch to unix_socket authentication [Y/n] n
(是否切换unix_socket安全认证,这里输入的n,即不切换)

3.Change the root password? [Y/n] y
(是否修改root账户的密码,输入的y,即会修改root密码
注意:
- root密码最好是复杂密码,否则可能会每次连接MariaDB时需要加sudo
- 在设置密码时,输入密码时是不会跳光标的
- 本文将密码设置成abc@@123
)

4.Remove anonymous users? [Y/n] y
(是否删除匿名用户,这里输入的是y,即删除匿名用户
默认情况下,MariaDB安装有匿名用户,允许任何人登录MariaDB而无需为其创建帐户,在生产环境中一定要删除
)

5.Disallow root login remotely? [Y/n] y
(是否允许远程登录root账户,否则只能在localhost上登录root账户,这里输入的y,即不允许远程登录root账户)

6.Remove test database and access to it? [Y/n] y
(是否删除test数据库,这里输入的y,即删除test数据库
默认情况下,MariaDB有一个test数据库,允许任何用户获取
)

7.Reload privilege tables now? [Y/n] y
(是否重新加载权限表,这里输入的y,即立即重新加载)

(5) Problemas comunes y soluciones

  • La conexión a MariaDB requiere sudo (mysql tiene problemas similares)

Descripción del problema: después de instalar MariaDB en Ubuntu 18.04, debe agregar sudo para acceder a MariaDB cada vez.

Motivo: la seguridad de la contraseña del usuario raíz en MariaDB no es del tipo seguro.

Solución: Cambie la contraseña de la cuenta raíz a un tipo seguro, como al menos 8 dígitos que contengan letras mayúsculas y minúsculas, números y símbolos. Por ejemplo, el siguiente comando cambiará la contraseña aabc@@123

SET PASSWORD = PASSWORD('abc@@123');
  • acceso remoto

Descripción del problema: no se puede usar la dirección IP del servidor para conectarse a la base de datos

Motivo: La ip está vinculada a la predeterminada por defecto 127.0.0.1, por lo que solo se puede usar 127.0.0.1o localhostconectar

Solución: Modificar el archivo de configuración/etc/mysql/mariadb.conf.d/50-server.cnf

sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf

[mysqld]parámetros modificadosbind-address = 127.0.0.1 => bind-address = 0.0.0.0

modificación de la dirección de enlace

Luego reinicie el servicio MariaDB

sudo service mariadb restart

El orden en que la base de datos MariaDB/MySQL lee los archivos de configuración es el siguiente:

  1. “/etc/mysql/my.cnf” enlaza a este archivo, por lo que se lee todo el resto.

  2. “/etc/mysql/mariadb.cnf” (este archivo) para establecer valores predeterminados globales,

  3. “/etc/mysql/conf.d/*.cnf” para establecer opciones globales.i

  4. “/etc/mysql/mariadb.conf.d/*.cnf” para configurar las opciones exclusivas de MariaDB.

  5. “~/.my.cnf” para establecer opciones específicas del usuario.

2. Instalación de colmena

1) Descargue el paquete de instalación de Hive

Dirección de descarga: https://dlcdn.apache.org/hive/, la versión de descarga de este artículo es: apache-hive-2.3.9

La grabación también puede descargarse en Windows a través de un software de aceleración como Thunder y luego cargarse en el directorio correspondiente utilizando la herramienta sftp.

cd ~/soft
wget https://dlcdn.apache.org/hive/hive-2.3.9/apache-hive-2.3.9-bin.tar.gz

2) Instalar colmena

tar -xvf apache-hive-2.3.9-bin.tar.gz -C ~/opt
cd ~/opt
ln -s apache-hive-2.3.9-bin/ hive

Configurar variables de entorno

vi ~/.bashrc

Añade lo siguiente al final:

export HIVE_HOME=/home/xiaobai/opt/hive
export PATH=$HIVE_HOME/bin:$PATH

hacer que la configuración surta efecto

source ~/.bashrc

3) Cargue el controlador MySQL

Página de descarga del controlador de conexión MySQL: https://downloads.mysql.com/archives/cj/

Aquí use wget para descargar la versión 5.1.49 del conector:

cd ~/soft
wget https://cdn.mysql.com/archives/mysql-connector-java-5.1/mysql-connector-java-5.1.49.tar.gz
tar -xvf mysql-connector-java-5.1.49.tar.gz
cp mysql-connector-java-5.1.49/mysql-connector-java-5.1.49.jar   ~/opt/hive/lib

$HIVE_HOME/libPor supuesto, también puede descargar el conector correspondiente en Windows y luego pasarlo al directorio.

4) Modificar el archivo de configuración

Archivo de configuración: colmena-sitio.xml

Introducción a los parámetros de configuración comunes:

nombre de la propiedad tipo valores predeterminados describir
colmena.metastore.warehouse.dir URI /usuario/colmena/almacén En relación con el directorio de fs.defaultFS, la tabla administrada se almacena aquí
colmena.metastore.uris URI separados por comas no establecido Si no se establece (predeterminado), se usa el metastore actual; de lo contrario, se conecta al servidor de metastore remoto para conectarse según lo especificado por la lista de URI. Si hay varios servidores remotos, los clientes se conectan por turnos
javax.jdo.option.ConnectionURL URI jdbc:derby:;databaseName=metastore_db;create=true URL de JDBC, mysql示例: jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true
javax.jdo.option.ConnectionDriverName Cuerda org.apache.derby.jdbc.EmbeddedDriver Ejemplo de nombre de clase mysql para controlador JDBC: com.mysql.jdbc.Driver
javax.jdo.option.ConnectionUserName Cuerda APLICACIÓN nombre de usuario JDBC
javax.jdo.option.ConnectionPassword Cuerda mía Contraseña JDBC

Abra colmena-sitio.xml

vi ~/opt/hive/conf/hive-site.xml

Agrega lo siguiente

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://node1:3306/hive?useSSL=false&amp;createDatabaseIfNotExist=true</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>hive</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>hive_pwd</value>
    </property>
    <property> 
        <name>hive.server2.thrift.port</name> 
        <value>10000</value> 
    </property>
    <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>node1</value>
    </property>
</configuration>

Nota especial: el host de la base de datos establecido aquí es el nodo 1, y el problema de la base de datos ** inaccesibilidad remota ** debe resolverse

5) Inicialización de metadatos

(1) La base de datos autoriza la cuenta

mysql -uroot -pabc@@123
grant all privileges on hive.* to 'hive'@'%' identified by 'hive_pwd';

(2) Inicializar metadatos

schematool -dbType mysql -initSchema

3. Entorno de prueba

1) Iniciar hdfs e hilo

#确保启动hdfs和yarn
start-dfs.sh
start-yarn.sh

2) ventana de comandos CLI

#进入hive的CLI命令窗口,hive命令后不跟参数时,默认启动cli,即下面命令等价于hive
hive --service cli 

colmena cli

3) cliente directo

(1) Iniciar el servicio HS2

Para usar el cliente beeline, debe iniciar el servicio hiveserver2 (HS2)

nohup hive --service hiveserver2 &

Al iniciar algunos demonios en segundo plano, a menudo se usa en combinación nohupcon &:nohup <程序名> &

  • Ejecuta el programa con nohup

    • Use Ctrl+C para enviar una señal SIGINT y el programa se cierra
    • Cierra la sesión y envía la señal SIGHUP, el programa es inmune
  • Usar y ejecutar en segundo plano

    • Use Ctrl+C para enviar la señal SIGINT, inmunidad del programa
    • Cierra la sesión y envía la señal SIGHUP, el programa se cierra

(2) Comience en línea recta

#启动beeline
beeline

#在交互界面输入连接信息:
!connect  jdbc:hive2://node1:10000

#输入用户名和密码

#查看所有数据库
show databases;

línea recta

También puede especificar los parámetros de conexión correspondientes cuando se inicia beeline.

beeline -u jdbc:hive2://node1:10000 -n xiaobai -p 123456
  • -u: URL de JDBC para conectarse
  • -n: nombre de usuario para conectarse
  • -p: contraseña para la conexión

¡Hasta ahora, has terminado! ! !

Supongo que te gusta

Origin blog.csdn.net/tangyi2008/article/details/123368215
Recomendado
Clasificación