sqoop导入操作在作为oozie作业运行时出错。
我使用的是pesudo分布式hadoop集群。我遵循以下步骤。
1.启动oozie服务器
2.编辑的job.properties和workflow.xml文件
3.将workflow.xml复制到hdfs中
4.2.2工作
我的job.properties文件
名称节点=hdfs://localhost:8020
工作追踪者=localhost: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"/>
我原以为这项工作能顺利进行。但这项工作失败了,它出现了以下错误。
不支持操作异常:不允许访问本地文件系统。
我不明白我错在哪里,为什么它不允许我完成这项工作?有人能帮我解决这个问题吗。
1条答案
按热度按时间xeufq47z1#
oozie sharelib(带有sqoop操作的依赖项)存储在hdfs上,服务器需要知道如何与hadoop集群通信。不允许访问存储在本地文件系统上的sharelib,请参阅cve-2017-15712。
请复习
conf/hadoop-conf/core-site.xml
,并确保它不使用本地文件系统。例如,如果hdfs namenode侦听localhost上的端口9000,请配置fs.defaultFS
相应地。或者,您可以删除rawlocalfilesystem类(虚拟实现)并重新启动服务器,但不建议这样做(即服务器易受cve-2017-15712攻击)。
希望这有帮助。也可以看到这个答案。