Перейти к основному содержимому

Broker Load

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

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

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

И целевая таблица Selena, и задача Broker Load компилируются при создании для использования часового пояса China Standard Time (CST) (указывается с помощью параметра timezone). Однако сервер настроен на работу в часовом поясе Coordinated Universal Time (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"?

Время, затраченное на запись данных, превышает верхний лимит, что вызывает ошибку тайм-аута. Чтобы решить эту проблему, измените настройки переменной сессии 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.

ВНИМАНИЕ

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

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

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

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

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

  • dfs.nameservices: имя кластера HDFS, например, "dfs.nameservices" = "my_ha".

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

  • dfs.namenode.rpc-address.xxx.nn: RPC-адрес NameNode в кластере HDFS. 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, работающему в режиме 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 в файл hdfs-site.xml. Таким образом, вам нужно будет указать только путь к файлу и информацию для аутентификации при использовании брокеров для загрузки данных из кластера HDFS.

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

Скопируйте файлы конфигурации ViewFs core-site.xml и hdfs-site.xml в каталог broker/conf.

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

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

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

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