Habilitación del acceso entre clústeres de Hive Metastore a través de un esquema externo
DWS 3.0 (con almacenamiento y cómputo desacoplados) permite a los usuarios acceder a los datos almacenados en Hive de MRS (incluido cuando Hive está conectado a HDFS u OBS) simplemente creando un esquema externo. Esta sección describe cómo habilitar el acceso entre clústeres de los datos almacenados en un Hive metastore.
Preparación del entorno
- Ha creado un clúster de DWS 3.0. Los clústeres de MRS y DWS están en la misma región, AZ y subred de VPC, y pueden comunicarse entre sí.
- Ha obtenido las AK y SK para su cuenta de Huawei Cloud.
Restricciones
- Actualmente, solo se pueden realizar las operaciones SELECT, INSERT e INSERT OVERWRITE en las tablas de la base de datos Hive a través de esquemas externos.
- MRS admite dos tipos de fuentes de datos. Para obtener más información, consulte Tabla 1.
Tabla 1 Operaciones admitidas por los dos tipos de fuentes de datos de MRS Fuente de datos
Tipo de tabla
Operación
TEXT
CSV
PARQUET
ORC
HDFS
Tabla no particionada
SELECT
√
√
√
√
INSERT/INSERT OVERWRITE
x
x
x
√
Tabla particionada
SELECT
√
√
√
√
INSERT/INSERT OVERWRITE
x
x
x
√
OBS
Tabla no particionada
SELECT
√
√
√
√
INSERT/INSERT OVERWRITE
x
x
x
√
Tabla particionada
SELECT
x
x
√
√
INSERT/INSERT OVERWRITE
x
x
x
x
- La atomicidad de las transacciones ya no está garantizada. Si una transacción falla, no se puede garantizar la consistencia de los datos. No se admite la reversión.
- Las operaciones GRANT y REVOKE no se pueden realizar en las tablas creadas en Hive mediante esquemas externos.
- Soporte de concurrencia: Las operaciones de lectura y escritura concurrentes en DWS, Hive y Spark pueden causar lecturas sucias. Las operaciones concurrentes, incluida INSERT OVERWRITE en la misma tabla no particionada o en la misma partición de la misma tabla particionada, pueden no garantizar el resultado esperado. Por lo tanto, evite tales operaciones.
- Los metastores de Hive no admiten el mecanismo de federación.
Procedimiento
Esta práctica toma aproximadamente 1 hora. El procedimiento básico es el siguiente:
- Cree un clúster de análisis de MRS. (Se debe seleccionar el componente Hive).
- Cree una tabla en Hive.
- Inserte datos en Hive o cargue un archivo TXT local en un bucket de OBS, luego importe el archivo a Hive desde el bucket de OBS e importe el archivo desde la tabla de almacenamiento TXT a la tabla de almacenamiento ORC.
- Cree una conexión con el origen de datos de MRS.
- Cree un servidor externo.
- Cree un esquema externo.
- Utilice el esquema externo para importar datos a las tablas de Hive o leer datos de ellas.
Creación de un clúster de MRS
- Inicie sesión en la consola de MRS.
- Haga clic en Buy Cluster y seleccione Custom Config.
- Configure los parámetros de software y haga clic en Next.
Tabla 2 Configuración de software Parámetro
Valor
Region
CN-Hong Kong
Cluster Name
mrs_01
Version
Normal
Cluster Version
MRS 3.1.3 (recomendada)
NOTA:Los clústeres de MRS admiten las versiones 3.0.*, 3.1.* y posteriores (* indica un número).
Cluster Type
Clúster de análisis
Metadata
Local
- Configure los parámetros de hardware y haga clic en Next.
Tabla 3 Configuración de hardware Parámetro
Valor
Billing Mode
Pay-per-use
AZ
AZ2
VPC
vpc-01
Subnet
subnet-01
Security Group
Auto create
EIP
10.x.x.x
Enterprise Project
default
Master
2
Analysis Core
3
Analysis Task
0
- Configure los ajustes avanzados según la siguiente tabla y haga clic en Buy Now. La creación del clúster tarda aproximadamente 15 minutos.
Tabla 4 Configuración avanzada Parámetro
Valor
Tag
test01
Hostname Prefix
(Opcional) Prefijo para los nombres de los ECS o BMS del clúster.
Auto Scaling
Conserve el valor predeterminado.
Bootstrap Action
Conserve el valor predeterminado. MRS 3.x no admite este parámetro.
Agency
Conserve el valor predeterminado.
Data Disk Encryption
Esta función está deshabilitada de forma predeterminada. Conserve el valor predeterminado.
Alarm
Conserve el valor predeterminado.
Rule Name
Conserve el valor predeterminado.
Topic Name
Seleccione un tema.
Kerberos Authentication
Esta función está habilitada de forma predeterminada.
User Name
admin
Password
Esta contraseña se utiliza para iniciar sesión en la página de gestión del clúster.
Confirm Password
Ingrese la contraseña del usuario admin de nuevo.
Login Mode
Password
User Name
root
Password
Esta contraseña se utiliza para iniciar sesión de forma remota en un ECS.
Confirm Password
Ingrese la contraseña del usuario root de nuevo.
Agency
En Advanced Settings, configure Agency como la delegación preestablecida MRS_ECS_DEFAULT_AGENCY de MRS en IAM.
Secure Communications
Seleccione Enable.
Preparación de una tabla ORC
- Cree un archivo product_info.txt en la PC local, copie los siguientes datos en el archivo y guárdelo en la PC local.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
100,XHDK-A-1293-#fJ3,2017-09-01,A,2017 Autumn New Shirt Women,red,M,328,2017-09-04,715,good 205,KDKE-B-9947-#kL5,2017-09-01,A,2017 Autumn New Knitwear Women,pink,L,584,2017-09-05,406,very good! 300,JODL-X-1937-#pV7,2017-09-01,A,2017 autumn new T-shirt men,red,XL,1245,2017-09-03,502,Bad. 310,QQPX-R-3956-#aD8,2017-09-02,B,2017 autumn new jacket women,red,L,411,2017-09-05,436,It's really super nice 150,ABEF-C-1820-#mC6,2017-09-03,B,2017 Autumn New Jeans Women,blue,M,1223,2017-09-06,1200,The seller's packaging is exquisite 200,BCQP-E-2365-#qE4,2017-09-04,B,2017 autumn new casual pants men,black,L,997,2017-09-10,301,The clothes are of good quality. 250,EABE-D-1476-#oB1,2017-09-10,A,2017 autumn new dress women,black,S,841,2017-09-15,299,Follow the store for a long time. 108,CDXK-F-1527-#pL2,2017-09-11,A,2017 autumn new dress women,red,M,85,2017-09-14,22,It's really amazing to buy 450,MMCE-H-4728-#nP9,2017-09-11,A,2017 autumn new jacket women,white,M,114,2017-09-14,22,Open the package and the clothes have no odor 260,OCDA-G-2817-#bD3,2017-09-12,B,2017 autumn new woolen coat women,red,L,2004,2017-09-15,826,Very favorite clothes 980,ZKDS-J-5490-#cW4,2017-09-13,B,2017 Autumn New Women's Cotton Clothing,red,M,112,2017-09-16,219,The clothes are small 98,FKQB-I-2564-#dA5,2017-09-15,B,2017 autumn new shoes men,green,M,4345,2017-09-18,5473,The clothes are thick and it's better this winter. 150,DMQY-K-6579-#eS6,2017-09-21,A,2017 autumn new underwear men,yellow,37,2840,2017-09-25,5831,This price is very cost effective 200,GKLW-l-2897-#wQ7,2017-09-22,A,2017 Autumn New Jeans Men,blue,39,5879,2017-09-25,7200,The clothes are very comfortable to wear 300,HWEC-L-2531-#xP8,2017-09-23,A,2017 autumn new shoes women,brown,M,403,2017-09-26,607,good 100,IQPD-M-3214-#yQ1,2017-09-24,B,2017 Autumn New Wide Leg Pants Women,black,M,3045,2017-09-27,5021,very good. 350,LPEC-N-4572-#zX2,2017-09-25,B,2017 Autumn New Underwear Women,red,M,239,2017-09-28,407,The seller's service is very good 110,NQAB-O-3768-#sM3,2017-09-26,B,2017 autumn new underwear women,red,S,6089,2017-09-29,7021,The color is very good 210,HWNB-P-7879-#tN4,2017-09-27,B,2017 autumn new underwear women,red,L,3201,2017-09-30,4059,I like it very much and the quality is good. 230,JKHU-Q-8865-#uO5,2017-09-29,C,2017 Autumn New Clothes with Chiffon Shirt,black,M,2056,2017-10-02,3842,very good
- Inicie sesión en la consola de OBS, haga clic en Create Parallel File System, configure los siguientes parámetros y haga clic en Create Now.
Tabla 5 Parámetros de bucket Parámetro
Valor
Region
CN-Hong Kong
Data Redundancy Policy
Single-AZ Storage
Bucket Name
mrs-datasource
Default Storage Class
Standard
Bucket Policy
Private
Default Encryption
Disable
Direct Reading
Disable
Enterprise Project
default
Tag
-
- Después de la creación exitosa del bucket, vuelva a la consola de MRS y haga clic en el nombre del clúster de MRS creado. En la página Dashboard, haga clic en el botón Synchronize que se encuentra al lado de IAM User Sync. La sincronización tarda alrededor de 5 minutos.
- Haga clic en Nodes y haga clic en un nodo principal. En la página que se muestra, cambie a la pestaña EIPs, haga clic en Bind EIP, seleccione una EIP existente y haga clic en OK. Si no hay ninguna EIP disponible, cree una. Registre la EIP.
- (Opcional) Conecte Hive a OBS.
Realice este paso cuando Hive se interconecte con OBS. Omita este paso cuando Hive se interconecte con HDFS.
- Vuelva a la página del clúster de MRS. Haga clic en el nombre del clúster. En la pestaña Dashboard de la página de detalles del clúster, haga clic en Access Manager. Si aparece un mensaje que indica que se debe vincular una EIP, vincule una EIP primero.
- En el cuadro de diálogo Access MRS Manager, haga clic en OK. Será redirigido a la página de inicio de sesión de MRS Manager. Ingrese el nombre de usuario admin y su contraseña para iniciar sesión en MRS Manager. La contraseña es la que ingresó al crear el clúster de MRS.
- Interconecte Hive con OBS consultando Interconexión de Hive con OBS.
- Descargue el cliente.
- Vuelva a la página del clúster de MRS. Haga clic en el nombre del clúster. En la pestaña Dashboard de la página de detalles del clúster, haga clic en Access Manager. Si aparece un mensaje que indica que se debe vincular una EIP, vincule una EIP primero.
- En el cuadro de diálogo Access MRS Manager, haga clic en OK. Será redirigido a la página de inicio de sesión de MRS Manager. Ingrese el nombre de usuario admin y su contraseña para iniciar sesión en MRS Manager. La contraseña es la que ingresó al crear el clúster de MRS.
- Elija Services > Download Client. Configure Client Type como Only configuration files y Download To como Server. Haga clic en OK.

- Inicie sesión en el nodo principal activo como usuario root y actualice la configuración del cliente del nodo de gestión activo.
cd /opt/client
sh refreshConfig.sh /opt/client Full_path_of_client_configuration_file_package
En este ejemplo, ejecute el siguiente comando:
sh refreshConfig.sh /opt/client /tmp/MRS-client/MRS_Services_Client.tar
- Cambie al usuario omm y vaya al directorio donde se encuentra el cliente Hive.
su - omm
cd /opt/client
- Cree la tabla product_info cuyo formato de almacenamiento es TEXTFILE en Hive.
- Importe las variables de entorno al directorio /opt/client.
source bigdata_env
Si se muestra find: 'opt/client/Hudi': Permission denied, ignore el mensaje. Esto no afecta las operaciones posteriores.
- Inicie sesión en el cliente Hive.
- Si la autenticación Kerberos está habilitada para el clúster actual, ejecute el siguiente comando para autenticar al usuario actual. El usuario actual debe tener el permiso para crear tablas Hive. Para obtener más información, consulte Creación de un rol en la Guía del usuario de MapReduce Service. Configure un rol con los permisos requeridos. Para obtener más información, consulte Creación de un usuario en la Guía del usuario de MapReduce Service. Vincule un rol al usuario. Si la autenticación Kerberos no está habilitada para el clúster actual, no es necesario ejecutar el siguiente comando:
kinit MRS cluster user
- Ejecute el siguiente comando para iniciar el cliente Hive:
- Si la autenticación Kerberos está habilitada para el clúster actual, ejecute el siguiente comando para autenticar al usuario actual. El usuario actual debe tener el permiso para crear tablas Hive. Para obtener más información, consulte Creación de un rol en la Guía del usuario de MapReduce Service. Configure un rol con los permisos requeridos. Para obtener más información, consulte Creación de un usuario en la Guía del usuario de MapReduce Service. Vincule un rol al usuario. Si la autenticación Kerberos no está habilitada para el clúster actual, no es necesario ejecutar el siguiente comando:
- Ejecute los siguientes comandos SQL en secuencia para crear una base de datos de demostración y la tabla product_info:
1CREATE DATABASE demo;
1USE demo;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
DROP TABLE product_info; CREATE TABLE product_info ( product_price int , product_id char(30) , product_time date , product_level char(10) , product_name varchar(200) , product_type1 varchar(20) , product_type2 char(10) , product_monthly_sales_cnt int , product_comment_time date , product_comment_num int , product_comment_content varchar(200) ) row format delimited fields terminated by ',' stored as TEXTFILE;
- Importe las variables de entorno al directorio /opt/client.
- Importe el archivo product_info.txt a Hive.
- Hive está interconectado con OBS: Vuelva a la consola de OBS, haga clic en el nombre del bucket, elija Objects > Upload Object y cargue el archivo product_info.txt en la ruta del product_info table en el bucket de OBS.
- Cuando Hive está interconectado con HDFS, importe el archivo product_info.txt al /user/hive/warehouse/demo.db/product_info/. Para obtener más información sobre cómo importar datos al clúster MRS, consulte Carga de datos de aplicación a un clúster MRS de Guía del usuario de MapReduce Service.
- Cree una tabla ORC e importe datos a la tabla.
- Ejecute los siguientes comandos SQL para crear una tabla ORC:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
DROP TABLE product_info_orc; CREATE TABLE product_info_orc ( product_price int , product_id char(30) , product_time date , product_level char(10) , product_name varchar(200) , product_type1 varchar(20) , product_type2 char(10) , product_monthly_sales_cnt int , product_comment_time date , product_comment_num int , product_comment_content varchar(200) ) row format delimited fields terminated by ',' stored as orc;
- Inserte datos en la tabla product_info en la tabla Hive ORC product_info_orc.
1INSERT INTO product_info_orc SELECT * FROM product_info;
- Consulte si la importación de datos se realizó correctamente.
1SELECT * FROM product_info_orc;
- Ejecute los siguientes comandos SQL para crear una tabla ORC:
Creación de una conexión de clúster de MRS
- Inicie sesión en la consola de DWS y haga clic en el clúster de DWS creado. Asegúrese de que el clúster de DWS y MRS estén en la misma región, AZ y subred de VPC.
- Haga clic en la pestaña MRS Data Source y haga clic en Create MRS Cluster Connection.
- Configure los siguientes parámetros y haga clic en OK.
- Data Source: mrs_server
- Configuration Mode: MRS Account
- MRS Data Source: Seleccione el clúster de mrs_01 creado.
- MRS Account: admin
- Password: Ingrese la contraseña del usuario admin creado para el origen de datos de MRS.

Creación de un servidor foráneo
Realice este paso solo cuando Hive esté conectado a OBS. Omita este paso si Hive está conectado a HDFS.
- Conéctese al clúster de DWS creado.
- Ejecute la siguiente sentencia para crear un servidor foráneo. {valor de AK} y {valor de SK} se obtienen de Preparación del entorno.
El uso de AK y SK codificadas de forma rígida (hard-coded) o en texto plano representa un riesgo de seguridad. Por seguridad, encripte su AK/SK y guárdelas en el archivo de configuración o en las variables de entorno.
1 2 3 4 5 6 7 8 9
CREATE SERVER obs_server FOREIGN DATA WRAPPER DFS_FDW OPTIONS ( address 'obs.example.com:5443', //Address for accessing OBS encrypt 'on', access_key '{AK value}', secret_access_key '{SK value}', type 'obs' );
- Vea el servidor foráneo.
1SELECT * FROM pg_foreign_server WHERE srvname='obs_server';
El servidor se crea correctamente si se muestra información similar a la siguiente:
1 2 3 4
srvname | srvowner | srvfdw | srvtype | srvversion | srvacl | srvoptions --------------------------------------------------+----------+--------+---------+------------+--------+--------------------------------------------------------------------------------------------------------------------- obs_server | 16476 | 14337 | | | | {address=obs.example.com:5443,type=obs,encrypt=on,access_key=***,secret_access_key=***} (1 row)
Creación de un esquema externo
- Obtenga la dirección IP interna y el número de puerto del servicio de metastore de Hive y el nombre de la base de datos de Hive a la que se accederá.
- Inicie sesión en la consola de MRS.
- Elija Cluster > Active Cluster y haga clic en el nombre del clúster que se consultará para acceder a la página que muestra la información básica del clúster.
- Haga clic en Go to manager en la página de gestión de O&M e ingrese el nombre de usuario y la contraseña para iniciar sesión en la página de gestión de FusionInsight.
- Haga clic en Cluster, Hive, Configuration, All Configurations, MetaStore y Port en secuencia y registre el valor de hive.metastore.port.
- Haga clic en Cluster, Hive e Instance en secuencia y registre la dirección IP de gestión de MetaStore del host cuyo nombre contiene master1.
- Cree un esquema externo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
//When interconnecting Hive with OBS: Set Server to the name of the external server created in , DATABASE to the database created on Hive, METAADDRESS to the IP address and port number of the Hive metastore service recorded in , and CONFIGURATION to the default configuration path of the MRS data source. DROP SCHEMA IF EXISTS ex1; CREATE EXTERNAL SCHEMA ex1 WITH SOURCE hive DATABASE 'demo' SERVER obs_server METAADDRESS '***.***.***.***:***' CONFIGURATION '/MRS/gaussdb/mrs_server' //When interconnecting Hive with HDFS: Set Server to mrs_server (name of the data source created in ), METAADDRESS to the IP address and port number of the Hive metastore service recorded in , and CONFIGURATION to the default configuration path of the MRS data source. DROP SCHEMA IF EXISTS ex1; CREATE EXTERNAL SCHEMA ex1 WITH SOURCE hive DATABASE 'demo' SERVER mrs_server METAADDRESS '***.***.***.***:***' CONFIGURATION '/MRS/gaussdb/mrs_server'
- Verifique el esquema externo creado.
1 2 3 4 5 6 7
SELECT * FROM pg_namespace WHERE nspname='ex1'; SELECT * FROM pg_external_namespace WHERE nspid = (SELECT oid FROM pg_namespace WHERE nspname = 'ex1'); nspid | srvname | source | address | database | confpath | ensoptions | catalog --------------------------------------------------+----------+--------+---------+------------+--------+--------------------------------------------------------------------------------------------------------------------- 16393 | obs_server | hive | ***.***.***.***:*** | demo | *** | | (1 row)
Importación de datos
- Cree una tabla local para la importación de datos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
DROP TABLE IF EXISTS product_info; CREATE TABLE product_info ( product_price integer , product_id char(30) , product_time date , product_level char(10) , product_name varchar(200) , product_type1 varchar(20) , product_type2 char(10) , product_monthly_sales_cnt integer , product_comment_time date , product_comment_num integer , product_comment_content varchar(200) ) ;
- Importe la tabla de destino desde la tabla Hive.
1INSERT INTO product_info SELECT * FROM ex1.product_info_orc;
- Consulte el resultado de la importación.
1SELECT * FROM product_info;
Exportación de datos
- Cree una tabla de origen local.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
DROP TABLE IF EXISTS product_info_export; CREATE TABLE product_info_export ( product_price integer , product_id char(30) , product_time date , product_level char(10) , product_name varchar(200) , product_type1 varchar(20) , product_type2 char(10) , product_monthly_sales_cnt integer , product_comment_time date , product_comment_num integer , product_comment_content varchar(200) ) ; INSERT INTO product_info_export SELECT * FROM product_info;
- Cree una tabla de destino en Hive.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
DROP TABLE product_info_orc_export; CREATE TABLE product_info_orc_export ( product_price int , product_id char(30) , product_time date , product_level char(10) , product_name varchar(200) , product_type1 varchar(20) , product_type2 char(10) , product_monthly_sales_cnt int , product_comment_time date , product_comment_num int , product_comment_content varchar(200) ) row format delimited fields terminated by ',' stored as orc;
- Importe datos de la tabla de origen local a la tabla Hive.
1INSERT INTO ex1.product_info_orc_export SELECT * FROM product_info_export;
- Consulte el resultado de la importación de datos en Hive.
1SELECT * FROM product_info_orc_export;