Как подключиться к hive server 2 через действие hive2 oozie? - PullRequest
0 голосов
/ 06 ноября 2019

Я не могу подключиться к Hive через Hive2 action of oozie. JdbcUrl - обнаружение службы zooKeeper включено. Моя платформа данных - Hortonworks 2.6.

Изначально я пытался подключиться к beelne через скрипт на python, и этот скрипт выполнялся с помощью действия оболочки oozie. Но не смог этого сделать. Поэтому я попытался использовать действие hive2 вместо этого. Но даже это не работает. У jdbcURL для билайна нет SSL. У него включено обнаружение службы zooKeeper.

<workflow-app xmlns="uri:oozie:workflow:0.3" name="hive2-wf">
<start to="hive2-node"/>
<action name="hive2-node">
    <hive2 xmlns="uri:oozie:hive2-action:0.2">
        <job-tracker>${jobTracker}</job-tracker>
        <name-node>${nameNode}</name-node>
        <configuration>
            <property>
                <name>mapred.job.queue.name</name>
                <value>${queueName}</value>
            </property>
        </configuration>
        <jdbc-url>${jdbcURL}</jdbc-url>
        <script>table_create.hql</script>
    </hive2>
    <ok to="end"/>
    <error to="fail"/>
</action>

<kill name="fail">
    <message>Hive2 (Beeline) action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="end"/>

Я сталкиваюсь с ошибкой «org.apache.hive.jdbc.HiveConnection: Ошибка открытия сеанса».

Я попробовал с ниже свойств. Но все равно это не работает: oozie.use.system.libpath = true oozie.libpath = hdfs: // хост: 8020 / user / oozie / share / lib / lib_20180801150051 oozie.wf.application.path = hdfs: // хост/ user / pid / hive2

ПУТЬ SHARELIB ДЛЯ ДЕЙСТВИЯ #

oozie.action.sharelib.for.hive = hive, hcatalog, sqoop jdbcURL = jdbc: hive2: // хост: 2181 (кворум zookeeper) /; serviceDiscoveryMode = zooKeeper; zooKeeperNamespace = hiveserver2 hive_query = table_creation.hql

Также я заметил одну вещь. Но не знаю, насколько это актуально. Используемый мной URL JDBC имеет три различных кворума для зоопарка: jdbcURL = jdbc: hive2: // host1: 2181, host2: 2181, host3: 2181 / ; serviceDiscoveryMode = zooKeeper; zooKeeperNamespace = hiveserver2

Но когда я запускаю рабочий процесс oozie, он использует другой порт: подключение к jdbc: hive2: // host1: 2181, host2: 2181, host3: 2181 /; serviceDiscoveryMode = zooKeeper; zooKeeperNamespace = hiveserver2 Ошибка: не удалось установить соединение с jdbc: hive2: // host1: 10001 /; serviceDiscoveryMode = zooKeeper; zooKeeperNamespace = hiveserver2: код ответа HTTP: 401 (состояние = 08S01, код = 0)

1 Ответ

0 голосов
/ 08 ноября 2019

Нам потребуется больше информации. Не могли бы вы поделиться файлом свойств oozie? Может быть, вам нужно определить oozie.action.sharelib.for.hive, что-то вроде oozie.action.sharelib.for.hive = hive, hcatalog. Вы пробовали это? Также убедитесь, что у вас есть файл hive-site.xml в соответствующем sharelib, или даже вы можете попытаться сохранить его в том же самом фордере, в котором вы разместили ваш рабочий процесс xml внутри местоположения hdfs. См. Пример ниже

nameNode=hdfs://sandbox.hortonworks.com:8020
jobTracker=sandbox.hortonworks.com:8050
queueName=defaultappPath=${nameNode}/<HDFS_path_where_workflow.xml_file>
oozie.use.system.libpath=true
oozie.libpath=${nameNode}/user/oozie/share/lib/lib_20161025075203/
oozie.wf.application.path=${appPath}
#SHARELIB PATH FOR ACTION#
oozie.action.sharelib.for.hive=hive,hcatalog,sqoop
...