oozie错误:不允许访问本地文件系统

时间:2019-05-29 10:35:48

标签: hdfs sqoop oozie

作为oozie作业运行时,Sqoop导入操作给出错误。

我正在使用一个伪分布式的hadoop集群。 我已按照以下步骤操作。

1。启动oozie服务器

2.edited job.properties和workflow.xml文件

3。将workflow.xml复制到hdfs中

4.oozie工作

我的job.properties文件

nameNode = hdfs:// localhost:8020

jobTracker =本地主机:8021

queueName =默认

examplesRoot =示例

oozie.use.system.libpath = true

oozie.wf.application.path = $ {nameNode} / user / hduser / $ {examplesRoot} / apps / 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 个答案:

答案 0 :(得分:1)

Oozie sharelib(具有Sqoop操作的依赖项)存储在HDFS上,服务器需要知道如何与Hadoop集群通信。不允许访问存储在本地文件系统上的sharelib,请参见CVE-2017-15712

请检查conf/hadoop-conf/core-site.xml,并确保它不使用本地文件系统。例如,如果您的HDFS名称节点侦听localhost上的端口9000,则相应地配置fs.defaultFS

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

或者,您可以删除RawLocalFileSystem类(虚拟实现)并重新启动服务器,但是不建议这样做(即服务器容易受到CVE-2017-15712的攻击)。

希望这会有所帮助。另请参见this answer