Ошибка oozie: доступ к локальной файловой системе не разрешен - PullRequest
0 голосов
/ 29 мая 2019

Действие импорта Sqoop выдает ошибку при выполнении задания oozie.

Я использую псевдораспределенный кластер hadoop. Я выполнил следующие шаги.

1. Запущенный сервер oozie

2.edited файлы job.properties и workflow.xml

3. скопированный файл workflow.xml в hdfs

4.ran oozie job

файл my job.properties

NameNode = HDFS: // локальный: 8020

JobTracker = локальный: 8021

ИмяОчереди = по умолчанию

examplesRoot = примеры * +1021 *

oozie.use.system.libpath = истина

oozie.wf.application.path = $ {NameNode} / пользователь / hduser / $ {examplesRoot} / приложений / sqoop

файл workflow.xml

<action name="sqoop-node">
    <sqoop xmlns="uri:oozie:sqoop-action:0.2">
        <job-tracker>${jobTracker}</job-tracker>
        <name-node>${nameNode}</name-node>
        <prepare>
            <delete path="${nameNode}/user/hduser/${examplesRoot}/output-data/sqoop"/>
            <!--<mkdir path="${nameNode}/user/hduser/${examplesRoot}/output-data"/>-->
        </prepare>
        <configuration>
            <property>
                <name>mapred.job.queue.name</name>
                <value>${queueName}</value>
            </property>
        </configuration>
        <command>import --connect "jdbc:mysql://localhost/db" --username user --password pass --table "table" --where "Conditions" --driver com.mysql.jdbc.Driver --target-dir ${nameNode}/user/hduser/${examplesRoot}/output-data/sqoop -m 1</command>
        <!--<file>db.hsqldb.properties#db.hsqldb.properties</file>
        <file>db.hsqldb.script#db.hsqldb.script</file>-->
    </sqoop>
    <ok to="end"/>
    <error to="fail"/>
</action>

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

Я ожидал, что задание будет выполнено без ошибок. Но работа была убита, и это дало следующую ошибку.

UnsupportedOperationException: Доступ к локальной файловой системе не разрешен.

Я не понимаю, где я ошибаюсь и почему это не позволяет завершить работу? Может ли кто-нибудь помочь мне решить проблему.

1 Ответ

1 голос
/ 04 июня 2019

Oozie sharelib (с зависимостями действия Sqoop) хранится в HDFS, и сервер должен знать, как взаимодействовать с кластером Hadoop.Доступ к ресурсу sharelib, хранящемуся в локальной файловой системе, запрещен, см. CVE-2017-15712 .

Пожалуйста, просмотрите conf/hadoop-conf/core-site.xml и убедитесь, что он не использует локальную файловую систему.Например, если ваш наменод HDFS прослушивает порт 9000 на локальном хосте, настройте fs.defaultFS соответственно.

  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
  </property>
...
</configuration>

В качестве альтернативы вы можете удалить класс RawLocalFileSystem (фиктивная реализация) и перезапустить сервер, но это не так.t рекомендуется (т. е. сервер становится уязвимым для CVE-2017-15712 ).

Надеюсь, это поможет.Также см. этот ответ .

...