Перейти к основному содержимому
Версия: 2.0.x

Broker Load

1. Поддерживает ли Broker Load повторный запуск успешно выполненных заданий загрузки, находящихся в состоянии FINISHED?

Broker Load не поддерживает повторный запуск успешно выполненных заданий загрузки, находящихся в состоянии FINISHED. Также, чтобы предотвратить потерю и дублирование данных, Broker Load не позволяет повторно использовать метки успешно выполненных заданий загрузки. Вы можете использовать SHOW LOAD для просмотра истории заданий загрузки и поиска задания, которое хотите повторить. Затем вы можете скопировать информацию об этом задании и использовать её, за исключением метки, для создания другого задания загрузки.

2. При загрузке данных из HDFS с помощью Broker Load, что делать, если значения даты и времени, загруженные в целевую таблицу Selena, на 8 часов позже значений из исходного файла данных?

И целевая таблица Selena, и задание Broker Load при создании компилируются для использования часового пояса китайского стандартного времени (CST) (указывается с помощью параметра timezone). Однако сервер настроен на работу по координированному всемирному времени (UTC). В результате к значениям даты и времени из исходного файла данных добавляются 8 дополнительных часов при загрузке данных. Чтобы предотвратить эту проблему, не указывайте параметр timezone при создании целевой таблицы Selena.

3. При загрузке данных в формате ORC с помощью Broker Load, что делать, если возникает ошибка ErrorMsg: type:ETL_RUN_FAIL; msg:Cannot cast '<slot 6>' from VARCHAR to ARRAY<VARCHAR(30)>?

Исходный файл данных имеет другие имена столбцов, чем целевая таблица Selena. В этой ситуации вы должны использовать раздел SET в операторе загрузки для указания соответствия столбцов между файлом и таблицей. При выполнении раздела SET Selena должна выполнить вывод типа, но не может вызвать функцию cast для преобразования исходных данных в типы данных назначения. Чтобы решить эту проблему, убедитесь, что исходный файл данных имеет те же имена столбцов, что и целевая таблица Selena. В таком случае раздел SET не нужен, и поэтому Selena не нужно вызывать функцию cast для выполнения преобразований типов данных. Тогда задание Broker Load может быть успешно выполнено.

4. Задание Broker Load не сообщает об ошибках, но почему я не могу запросить загруженные данные?

Broker Load — это асинхронный метод загрузки. Задание загрузки может всё равно завершиться неудачей, даже если оператор загрузки не возвращает ошибок. После запуска задания Broker Load вы можете использовать SHOW LOAD для просмотра результата и errmsg задания загрузки. Затем вы можете изменить конфигурацию задания и повторить попытку.

5. Что делать, если возникает ошибка "failed to send batch" или "TabletWriter add batch with unknown id"?

Время, затраченное на запись данных, превышает верхний лимит, что приводит к ошибке таймаута. Чтобы решить эту проблему, измените настройки session variable query_timeout и параметра конфигурации BE streaming_load_rpc_max_alive_time_sec в соответствии с вашими бизнес-требованиями.

6. Что делать, если возникает ошибка "LOAD-RUN-FAIL; msg:OrcScannerAdapter::init_include_columns. col name = xxx not found"?

Если вы загружаете данные в формате Parquet или ORC, проверьте, совпадают ли имена столбцов в первой строке исходного файла данных с именами столбцов целевой таблицы Selena.

(tmp_c1,tmp_c2)
SET
(
id=tmp_c2,
name=tmp_c1
)

Предыдущий пример сопоставляет столбцы tmp_c1 и tmp_c2 исходного файла данных со столбцами name и id целевой таблицы Selena соответственно. Если вы не указываете раздел SET, имена столбцов, указанные в параметре column_list, используются для объявления соответствия столбцов. Для получения дополнительной информации см. BROKER LOAD.

NOTICE

Если исходный файл данных является ORC-файлом, созданным Apache Hive™, и первая строка файла содержит (_col0, _col1, _col2, ...), может возникнуть ошибка "Invalid Column Name". Если эта ошибка возникает, вам нужно использовать раздел SET для указания соответствия столбцов.

7. Как обрабатывать ошибки, такие как ошибка, которая приводит к слишком долгому выполнению задания Broker Load?

Просмотрите файл лога FE fe.log и найдите ID задания загрузки на основе метки задания. Затем просмотрите файл лога BE be.INFO и извлеките записи логов задания загрузки на основе ID задания, чтобы найти основную причину ошибки.

8. Как настроить Apache HDFS cluster, работающий в режиме HA?

Если HDFS cluster работает в режиме высокой доступности (HA), настройте его следующим образом:

  • dfs.nameservices: имя HDFS cluster, например, "dfs.nameservices" = "my_ha".

  • dfs.ha.namenodes.xxx: имя NameNode в HDFS cluster. Если вы указываете несколько имён NameNode, разделите их запятыми (,). xxx — это имя HDFS cluster, которое вы указали в dfs.nameservices, например, "dfs.ha.namenodes.my_ha" = "my_nn".

  • dfs.namenode.rpc-address.xxx.nn: RPC-адрес NameNode в HDFS cluster. nn — это имя NameNode, которое вы указали в dfs.ha.namenodes.xxx, например, "dfs.namenode.rpc-address.my_ha.my_nn" = "host:port".

  • dfs.client.failover.proxy.provider: провайдер NameNode, к которому будет подключаться клиент. Значение по умолчанию: org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider.

Пример:

(
"dfs.nameservices" = "my-ha",
"dfs.ha.namenodes.my-ha" = "my-namenode1, my-namenode2",
"dfs.namenode.rpc-address.my-ha.my-namenode1" = "nn1-host:rpc_port",
"dfs.namenode.rpc-address.my-ha.my-namenode2" = "nn2-host:rpc_port",
"dfs.client.failover.proxy.provider" = "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"
)

Режим HA может использоваться с простой аутентификацией или аутентификацией Kerberos. Например, чтобы использовать простую аутентификацию для доступа к HDFS cluster, работающему в режиме HA, вам нужно указать следующие конфигурации:

(
"username"="user",
"password"="passwd",
"dfs.nameservices" = "my-ha",
"dfs.ha.namenodes.my-ha" = "my_namenode1, my_namenode2",
"dfs.namenode.rpc-address.my-ha.my-namenode1" = "nn1-host:rpc_port",
"dfs.namenode.rpc-address.my-ha.my-namenode2" = "nn2-host:rpc_port",
"dfs.client.failover.proxy.provider" = "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"
)

Вы можете добавить конфигурации HDFS cluster в файл hdfs-site.xml. Таким образом, вам нужно будет указывать только путь к файлу и информацию об аутентификации при использовании brokers для загрузки данных из HDFS cluster.

9. Как настроить Hadoop ViewFS Federation?

Скопируйте файлы конфигурации, связанные с ViewFS, core-site.xml и hdfs-site.xml, в директорию broker/conf.

Если у вас есть пользовательская файловая система, вам также необходимо скопировать файлы .jar, связанные с файловой системой, в директорию broker/lib.

10. При доступе к HDFS cluster, который требует аутентификации Kerberos, что делать, если возникает ошибка "Can't get Kerberos realm"?

Проверьте, что файл /etc/krb5.conf настроен на всех хостах, на которых развёрнуты brokers.

Если ошибка сохраняется, добавьте -Djava.security.krb5.conf:/etc/krb5.conf в конец переменной JAVA_OPTS в скрипте запуска broker.

11. Завершится ли Broker Load неудачей, если исходная таблица Hive пуста?

По умолчанию пустая транзакция возвращает ошибку "all partitions have no load data". Вы можете установить параметр конфигурации FE empty_load_as_error в false, чтобы пустые транзакции возвращали успех.