DataWorks Data Integration utiliza TSDB Writer para escribir puntos de datos en una instancia de Lindorm TSDB. Este tema describe el funcionamiento de TSDB Writer, los tipos de campo compatibles, los parámetros de configuración y las pruebas de rendimiento.
Versiones compatibles
TSDB Writer es compatible con todas las versiones de Lindorm TSDB y HiTSDB 2.4.x o posteriores. No se garantiza la compatibilidad con otras versiones.
Límites
TSDB Writer admite Serverless resource groups (Recommended) para la ejecución de tareas. También es compatible con exclusive resource groups for Data Integration.
TSDB Writer solo permite la configuración de tareas mediante el editor de código.
Funcionamiento
TSDB Writer se conecta a una instancia de TSDB mediante el cliente de TSDB (hitsdb-client) y escribe puntos de datos a través de la API HTTP. Para obtener más información sobre la API de escritura, consulte SDK reference.
Tipos de campo compatibles
El comportamiento de TSDB Writer depende del valor de sourceDbType:
TSDB: el origen es TSDB Reader u OpenTSDB Reader. TSDB Writer transmite los datos de origen directamente como una cadena JSON.RDB: el origen es una base de datos relacional. TSDB Writer analiza los datos como registros de base de datos relacional y asigna cada columna a un tipo de TSDB mediantecolumnType.
La siguiente tabla muestra los valores de columnType compatibles y los tipos de datos de TSDB correspondientes cuando sourceDbType se establece en RDB.
|
Modelo de datos |
**Valor de |
Tipo de dato |
|
Etiqueta de datos |
|
Cadena. Una etiqueta describe una característica del origen de datos y normalmente no cambia con el tiempo. |
|
Hora de generación de datos |
|
Marca de tiempo. Representa el momento en que se generaron los datos. Especifíquela durante la operación de escritura o permita que el sistema la genere automáticamente. |
|
Contenido de datos |
|
Cadena. Un campo describe una métrica medida del origen de datos y normalmente cambia con el tiempo. |
|
Contenido de datos |
|
Numérico. Un campo describe una métrica medida del origen de datos y normalmente cambia con el tiempo. |
|
Contenido de datos |
|
Booleano. Un campo describe una métrica medida del origen de datos y normalmente cambia con el tiempo. |
Configurar una tarea de sincronización por lotes
Configure las tareas de TSDB Writer exclusivamente mediante el editor de código. Para consultar el procedimiento general de configuración, vea Configure a task in the code editor.
El apéndice a continuación proporciona plantillas de script listas para usar y descripciones completas de los parámetros.
Apéndice: Plantillas de script y descripciones de parámetros
Plantillas de script
Las tres plantillas siguientes utilizan el formato de script unificado requerido por el editor de código. Reemplace los valores de marcador de posición antes de la ejecución. Para consultar el procedimiento general de configuración, vea Configure a task in the code editor.
De RDB a TSDB (recomendado)
Utilice esta plantilla cuando el origen sea una base de datos relacional como MySQL, Oracle, PostgreSQL o DRDS.
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "stream",
// Replace "stream" with the plugin name of your RDB source
// (e.g., mysql, oracle, postgresql, drds).
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "tsdb",
"parameter": {
"endpoint": "http://localhost:8242",
"username": "xxx",
"password": "xxx",
"sourceDbType": "RDB",
"batchSize": 256,
"columnType": [
"tag",
"tag",
"field_string",
"field_double",
"timestamp",
"field_bool"
],
"column": [
"tag1",
"tag2",
"field1",
"field2",
"timestamp",
"field3"
],
"multiField": "true",
"table": "testmetric",
"ignoreWriteError": "false",
"database": "default"
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"throttle": true,
// Set to false to disable throttling (mbps is ignored when false).
"concurrent": 1,
// Number of concurrent channels. See performance benchmarks
// to choose a value based on your throughput requirements.
"mbps": "12"
// Maximum transfer rate in MB/s. Only applies when throttle is true.
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
De OpenTSDB a TSDB
Utilice esta plantilla cuando el origen admita el protocolo OpenTSDB (por ejemplo, OpenTSDB Reader).
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "opentsdb",
"parameter": {
"endpoint": "http://localhost:4242",
"column": [
"m1",
"m2",
"m3",
"m4",
"m5",
"m6"
],
"startTime": "2019-01-01 00:00:00",
"endTime": "2019-01-01 03:00:00"
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "tsdb",
"parameter": {
"endpoint": "http://localhost:8242"
// Only the destination endpoint is required for TSDB-to-TSDB writes.
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"throttle": true,
"concurrent": 1,
"mbps": "12"
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
De RDB a TSDB mediante el protocolo de valor único de OpenTSDB (no recomendado)
Utilice esta plantilla solo cuando necesite escribir datos mediante el protocolo de valor único de OpenTSDB. Para nuevas cargas de trabajo, utilice en su lugar la plantilla de RDB a TSDB anterior.
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "stream",
// Replace "stream" with your RDB source plugin name.
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "tsdb",
"parameter": {
"endpoint": "http://localhost:8242",
"username": "xxx",
"password": "xxx",
"sourceDbType": "RDB",
"batchSize": 256,
"columnType": [
"tag",
"tag",
"field_string",
"field_double",
"timestamp",
"field_boolean"
],
"column": [
"tag1",
"tag2",
"field_metric_1",
"field_metric_2",
"timestamp",
"field_metric_3"
],
"ignoreWriteError": "false"
// multiField is omitted (defaults to false) for single-value mode.
// Each field column maps to a separate metric in TSDB.
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"throttle": true,
"concurrent": 1,
"mbps": "12"
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
En el modo de valor único, el nombre de la métrica de destino se deriva del nombre de la columna asignada a un campo. Según la configuración anterior, una fila de datos relacionales se escribe en tres métricas:field_metric_1,field_metric_2yfield_metric_3.
Parámetros de Writer
Los parámetros se agrupan según el tipo de origen al que aplican.
Parámetros comunes
Estos parámetros aplican a todos los valores de sourceDbType.
|
Parámetro |
Descripción |
Obligatorio |
Predeterminado |
Ejemplo |
|
|
El tipo de origen. |
No |
|
|
|
|
El endpoint HTTP de la instancia de TSDB. Obtenga este valor desde la consola del producto. Formato: |
Sí |
— |
|
|
|
La base de datos de TSDB de destino. Cree la base de datos en TSDB antes de ejecutar la tarea. |
No |
|
|
|
|
El nombre de usuario de la base de datos de TSDB. Obligatorio solo si la autenticación está habilitada. |
No |
— |
|
|
|
El número de entradas de datos que se escriben por lote. Los valores mayores aumentan el rendimiento, pero requieren más memoria. Debe ser mayor que 0. |
No |
|
|
Parámetros para orígenes TSDB (sourceDbType: TSDB)
|
Parámetro |
Descripción |
Obligatorio |
Predeterminado |
Ejemplo |
|
|
El número de reintentos tras un error de escritura. Debe ser mayor que 1. |
No |
|
|
|
|
Si es |
No |
|
|
Parámetros para orígenes RDB (sourceDbType: RDB)
|
Parámetro |
Descripción |
Obligatorio |
Predeterminado |
Ejemplo |
|
|
El nombre de la métrica de destino en TSDB. Obligatorio cuando |
Obligatorio si |
— |
|
|
|
Establezca este valor en |
Sí |
|
|
|
|
Los nombres de campo de la tabla de base de datos relacional de origen. El orden debe coincidir con el parámetro |
Sí |
— |
|
|
|
Los tipos de TSDB a los que se asignan las columnas de origen. Valores compatibles: |
Sí |
— |
|
|
|
El número de entradas de datos que se escriben por lote. Debe ser mayor que 0. |
No |
|
|
Errores de escritura y comportamiento de reintento
|
Escenario |
Comportamiento |
|
Escritura exitosa |
La tarea continúa con normalidad. |
|
Error de escritura, reintentos disponibles |
TSDB Writer reintenta hasta |
|
Error de escritura tras todos los reintentos |
La tarea se detiene, independientemente de la configuración de |
|
|
Se omiten los errores de escritura individuales y la tarea continúa, a menos que el fallo persista durante todos los reintentos. |
Pruebas de rendimiento
Los siguientes resultados de prueba muestran cómo escala el rendimiento según el número de canales simultáneos.
Conjunto de datos de prueba:
Métrica:
mCombinaciones de etiquetas: 10 zonas x 20 clústeres x 100 grupos x 100 aplicaciones = 2,000,000 series de tiempo, más una etiqueta IP con incremento automático en las 2,000,000 series de tiempo
Valor: entero aleatorio entre 1 y 100
Intervalo de recopilación: 10 segundos durante 3 horas
Total de puntos de datos: 3 x 3,600 / 10 x 2,000,000 = 2,160,000,000
Resultados de la prueba:
|
Canales |
Velocidad (registros/s) |
Tráfico (MB/s) |
|
1 |
129,753 |
15.45 |
|
2 |
284,953 |
33.70 |
|
3 |
385,868 |
45.71 |
Desglose de claves y valores de etiquetas utilizado en la prueba:
|
Clave de etiqueta |
Valores de etiqueta |
|
zone |
z1-z10 |
|
cluster |
c1-c20 |
|
group |
g1-g100 |
|
app |
a1-a100 |
|
ip |
ip1-ip2,000,000 |
Utilice estos resultados para calibrar las configuraciones de concurrent y batchSize según su carga de trabajo. Comience con batchSize establecido en 256 para obtener un mayor rendimiento y aumente los canales concurrent si un solo canal no logra saturar la tasa de transferencia objetivo. Aumentar batchSize por encima del valor predeterminado de 100 mejora el rendimiento, pero incrementa el uso de memoria por tarea.