问问题
1563 次
3 回答
1
我sqoop job --exec JOB1
对命令提示符下的工作方式感到困惑。执行作业的正确语法(从命令提示符)是
sqoop job --exec JOB1 --meta-connect jdbc:hsqldb:hsql://ip-address:16000/sqoop
也许您从运行您的 sqoop 元存储的同一台机器上执行了该作业
请确保您已完成以下操作
- 在 ip=ip-address 的机器上启动 sqoop Metastore
- 在 sqoop-site.xml 中进行了必要的配置更改(点击此链接)
至于 oozie 工作流,试试下面的 workflow.xml
<workflow-app xmlns=”uri:oozie:workflow:0.4″ name=”oozie-wf”>
<start to=”sqoop-wf”/>
<action name=”sqoop-wf”>
<sqoop xmlns=”uri:oozie:sqoop-action:0.2″>
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>fs.hdfs.impl.disable.cache</name>
<value>true</value>
</property>
</configuration>
<arg>job</arg>
<arg>--exec</arg>
<arg>JOB1</arg>
<arg>--meta-connect jdbc:hsqldb:hsql://ip-address:16000/sqoop</arg>
</sqoop>
<ok to=”end”/>
<error to=”fail”/>
</action>
<kill name=”fail”>
<message>Failed, Error Message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name=”end”/>
</workflow-app>
于 2015-09-23T06:21:30.780 回答
1
请确保您在 sqoop-site.xml 中指定了您的元存储,并且您在您的 oozie 工作流文件夹中传递了站点 xml。您可以使用 xml 标签传递它。
于 2015-09-03T06:07:36.060 回答
0
在我们的集群中,通过 Hue UI 创建作业而不指定元存储(使用--meta-connect
参数)导致作业有时仅由sqoop job --list
命令返回。在命令提示符下,在同一台机器上创建和列出工作;但是,机器 B 找不到在机器 A 上创建的工作。
如果您也无法访问作业可以访问在不同节点上创建的作业,那么您的 sqoop 元存储似乎没有运行。要解决它:
- 使用命令在其中一个节点上启动元存储
sqoop-metastore
, - 检查元存储是否正在运行:
$ ps aux | grep sqoop
应该将结果之一作为 Sqoop 元存储返回, - 指定文件中的元存储路径
sqoop-site.xml
。在我们的例子中,我们无法使 ot 工作,所以我们使用下一步进行, - 如有必要,在 shell 和 Hue UI 中,将每个 sqoop 作业命令(创建、列出、显示、执行、删除)中的元存储路径指定为
$ sqoop job --exec my_job --meta-connect jdbc:hsqldb:hsql://node-running-metastore:16000/sqoop
.
注意:要启动 Metastore,请考虑使用&
andnohup
在后台运行 Metastore 进程并将日志捕获到文件中:
$ nohup sqoop-metastore &>> /tmp/nohup-sqoop-metastore.out &
于 2019-04-15T20:01:59.467 回答