Uso de disco de datos en el cluster desequilibrado FusionInsight

63 0 0 0

En la siguiente publicación se describen los pasos a seguir cuando el uso de disco de datos no se encuentra equilibrado en el cluster revisando el estado de la base de datos MPPDB.


Descripción del problema

El uso de cada disco de datos en un clúster está desequilibrado.

 

 Análisis del problema

Revise la tabla con sesgo de datos.

 

1) Cambie al usuario omm: su –omm

2) Habilitar la variable de entorno: fuente $ {BIGDATA_HOME} /mppdb/.mppdbgs_profile.

3) Consulta el estado del cluster. cm_ctl query–cvd. Encuentra el nodo CN.

 

 download?uuid=64412be97505429aa9923f3f6a

 

4) Vaya a cualquier directorio de nodo CN cd /srv/BigData/mppdb/data1/coordinator.

 

Verifique el número de puerto: cat postgresql.conf |grep port.

 

5) Consulta las bases de datos actualmente disponibles.

 

Los métodos para consultar las bases de datos disponibles actualmente son los siguientes:

 

(1) Conéctese a la base de datos de CN a través del puerto obtenido en el Paso 4: gsql -p 25308 -d postgres.

 

 download?uuid=f3f6a43d0e2848f79753000da2

 

 

(2) Ingrese \l para consultar todas las bases de datos, como se muestra en la siguiente figura.

 

 download?uuid=88fcef520e8e4c92a217a38eac

 

 

6) Después de obtener las bases de datos en el clúster, consulte las tablas con sesgo de datos en cada base de datos.

 

El comando es gsql -d testdb -p 25308 -f /opt/check_redis.sql> /home/omm/testdb.txt,

 

En el comando anterior,

 

testdb: indica el nombre de la base de datos a consultar. Se recomienda asignar un nombre al archivo de salida después del nombre de la base de datos a consultar para que los archivos sean fáciles de distinguir.

 

25308: indica el número de puerto obtenido en el Paso 4.

 

/opt/check_redis.sql: compruebe la ubicación del script. Para más detalles sobre el script, vea el adjunto.

 

/home/omm/testdb.txt: indica la ruta que almacena el archivo de salida.

 

Descripción del resultado

 

 download?uuid=6726519066fe474e865f61ed6d

 

 Causa principal

1. Las columnas de distribución no se establecen cuando se crea una tabla. Como resultado, el sistema usa las columnas de distribución predeterminadas para distribuir los datos, lo que resulta en un sesgo de datos.

2. Las columnas de distribución no son discretas cuando se crea la tabla. Como resultado, se produce sesgo de datos.

 

 

 

 Solución

1. Copia de seguridad de la tabla con sesgo de datos.

2. Elimine la tabla con sesgo de datos (puede cambiar el nombre de la tabla para la copia de seguridad).

3. Reconstruir la tabla con sesgo de datos (redefinir columnas de distribución).

4. Importar datos.

 

Realice las siguientes operaciones para importar datos:

 

1. Compruebe si el puerto 8888 está ocupado ejecutando netstat -nap | grep 8888 comando. Si no es así, vaya al siguiente paso. De lo contrario, reemplace el puerto.

2. Inicie el servicio gds (cambie la dirección IP y el directorio según los requisitos del sitio).

 

/opt/huawei/Bigdata/mppdb/core/bin/gds -d/opt/gds_test/ -p 62.168.0.50:8888 -H 62.168.0.50/24 -l /opt/gds_test/log/gds_test_log.log –D

 

/opt/huawei/Bigdata/mppdb/core/bin/gds: indica la ruta del archivo gds. Puede ejecutar el comando find / -name gds en el directorio raíz como usuario root para buscar la ruta donde se almacena el archivo gds.

 

/ops/gds_test/: indica el directorio del archivo de datos.

 

62.168.0.50:8888: indica la dirección IP y el número de puerto de inicio del servicio gds.

 

62.168.0.50/24: indica los hosts que tienen permiso para conectarse a gds (24 es la máscara de subred 255.255.255.0).

 

3. Cree el directorio de datos y registro de los gds y asigne permisos de usuario en los directorios. El directorio es el mismo que el directorio anterior /opt/gds_test/ en el Paso 2, y los archivos de datos se almacenan en este directorio (tanto para la importación como para la exportación de datos).

 

mkdir -p /opt/gds_test/log

 

chmod 777 -R /opt/gds_test/

 

4. Inicie sesión en la base de datos (gsql -p 25308 -d postgres) y cree una tabla externa para la exportación de datos.

 

create foreign table foreign_tablename_out (id int)SERVER gsmpp_server OPTIONS (location 'gsfs:// 62.168.0.50:8888/',format 'CSV',encoding 'utf8', delimiter E'\x06', quote E'\x07', null '') WRITE ONLY;

Location: especifica la ubicación del origen de datos de la tabla externa (el nombre del archivo debe especificarse cuando se importan los datos).

 

Format: especifica el formato del archivo de origen de datos para la tabla externa.

 

Encoding: especifica el nombre del formato de codificación de un archivo de datos.

 

Delimiter: especifica para separar campos de datos en un archivo.

 

Quote: Especifica el carácter de cita para un archivo CSV.

 

Null: especifica el valor en blanco en un archivo de datos.

 

5. Exportar datos (verifique si la exportación es exitosa y verifique el nombre del archivo exportado, que generalmente es foreign table name .dat.0).

 

Insert to foreign_tablename_out select * from table_name;

 

table_name_foreign: nombre de tabla externa. La estructura debe ser consistente con la estructura de la tabla a ser ajustada.

 

table_name: Tablas a ajustar.

 

6. Eliminar o renombrar tablas antiguas.

 

Eliminar: Drop table table_name.

 

Cambiar nombre: ALTER TABLE table_name RENAME TO table_name_old.

 

7. Reconstruya la tabla antigua según la estructura de la tabla anterior (vuelva a especificar la columna de distribución)

 

Cuando se redefine la columna de distribución, seleccione una columna con menos valores duplicados.

 

Create table table_name_new (id int)DISTRIBUTE BY hash(id);


8. Cree una tabla externa para la importación de datos:

create foreign table foreign_tablename_into (id int) SERVER gsmpp_server OPTIONS (location 'gsfs://62.168.0.50:8888/ foreign_tablename_out.dat.0',format 'CSV',mode 'normal', encoding 'utf8', delimiter E'\x06', quote E'\x07',null '',fill_missing_fields 'on')LOG INTO err_tablename PER NODE REJECT LIMIT 'unlimited';

Fill_missing_fields: cuando se cargan datos y falta el último campo de una fila en el archivo de origen de datos, maneje la excepción de la siguiente manera:

 

Si el valor de este parámetro es true/on, establezca el valor del último campo en NULL. Entonces no se reporta ningún mensaje de error.

 

Si el valor de este parámetro es false/off, se informa de un mensaje de error de falta de datos en la columna "tt".

 

PER NODE REJECT LIMIT 'value': especifica el número de errores de formato de datos permitidos en la importación de datos. El valor unlimited indica que el número de errores de formato de datos no está limitado.

 

LOG INTO err_tablename: especifica que la información de error se importa a err_tablename.

 

9. Importar datos.

 

Insert into table_name_new desde foreign_tablename_into;

 

 Sugerencias

Impacto:

 

Actualmente, el impacto en los servicios es pequeño y solo el rendimiento se ve parcialmente afectado. Sin embargo, a medida que los datos aumentan, cada vez más datos serán sesgados. Lo peor es que después de que un nodo DN alcance el umbral de advertencia del disco, el clúster completo no estará disponible. (En este caso, solo se permite la consulta de datos y no se puede realizar la escritura de datos).

 

Requisitos previos:

 

1. El servicio debe ser desactivado temporalmente. Se recomienda que desactive el servicio desde el principio. De lo contrario, se puede perder una pequeña cantidad de datos.

 

2. El número de tablas que hay que ajustar es grande. Asegúrese de que el espacio de tamaño del directorio del archivo de datos gds sea suficiente.

 

3. Se recomienda que los caracteres invisibles se usen como separadores en tablas externas para evitar la memoria insuficiente cuando los datos y los separadores son consistentes en algunos casos.

 

Riesgos y Precauciones:

 

 

1. Se recomienda que extraiga los datos nuevamente después de corregir cualquier falla.

 

2. Si se informa de un error durante la importación de datos, borre la tabla e impórtela de nuevo. Los gds se envían por fase y los datos pueden haberse enviado antes de que se informe un error. Por lo tanto, si los datos se importan de nuevo, los datos se duplicarán.

 

3. Antes de importar y exportar datos por completo, no elimine la tabla original ni habilite los servicios.

 

Otros:

 

1. Durante la importación y exportación de datos, si no sabe si gds todavía se está ejecutando, abra una nueva ventana para iniciar sesión en la base de datos y seleccione pg_table_size ('table_name'); para comprobar si el tamaño de la tabla está aumentando. (Esta función también se puede usar para verificar el volumen de datos después de que se hayan completado la importación y exportación).

 

2. El gds admite múltiples hilos (se pueden importar y exportar varias tablas al mismo tiempo). Sin embargo, se recomienda operar una tabla a la vez para garantizar la seguridad de los datos.

 

3. Copie el archivo gds (solo el archivo) al servidor fuera del clúster e inícielo en la red 10GE para reducir las cargas de presión del clúster y mejorar la eficiencia de gds.

 

Sugerencias sobre la mejora del rendimiento: la estructura de la tabla diseñada es conveniente para corresponder a la tabla de dimensiones. Por ejemplo, se puede crear una tabla constante como una tabla de replicación, es decir, cada DN tiene datos completos, lo que acelera el rendimiento de las consultas y el análisis.

 

Nota:

 

Después de que se maneje la excepción y los datos sean correctos, elimine la tabla original. De lo contrario, el disco de datos puede estar desequilibrado.


  • x
  • convención:

Responder

Responder
Debe iniciar sesión para responder la publicación Inicio de sesi | Registrarse

Aviso: Para garantizar sus legítimos derechos e intereses, la comunidad y los terceros no publicarán contenido que pueda generar riesgos legales a las partes, por ejemplo, pornografía, contenido político, contenido sobre juego, consumo y tráfico de drogas, así como contenido que viole los derechos de propiedad intelectual de terceros, por ejemplo, secretos comerciales, marcas, derechos de autor, patentes y privacidad personal. No comparta su cuenta ni su contraseña con terceros. Todas las operaciones realizadas usando su cuenta se considerarán como sus acciones y todas las consecuencias que estas acciones generen serán responsabilidad suya. Para obtener información detallada, consulte la “ Política de privacidad.”
Si el botón para adjuntar no está disponible, actualice Adobe Flash Player con la versión más reciente

¡Ingresa y disfruta de todos los beneficios para los miembros!

Aterrizaje
Respuesta rápida Desplácese hasta arriba