- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我们有两个节点的 hadoop yarn 集群,它是 hadoop 2.2,在其上我们使用 oozie 在单个工作流中安排了两个操作,第一个操作是 python map-reduce 流操作,第二个是 sqoop export 作业,它实际上是将 map-reduce 流操作的输出传输到 mysql 数据库。
流式操作成功执行,导致 sqoop 作业启动,并一直运行。
stdout 结果如下。
Sqoop command arguments :
export
--connect
jdbc:mysql://localhost/database
--username
root
--password
root
--table
tableName
--direct
--export-dir
/user/hduser/oozieProject/workflow/output
=================================================================
Invoking Sqoop command line now >>>
2137 [main] WARN org.apache.sqoop.tool.SqoopTool - $SQOOP_CONF_DIR has not been set in the environment. Cannot check for additional configuration.
2158 [main] INFO org.apache.sqoop.Sqoop - Running Sqoop version: 1.4.4.2.0.6.1-102
2170 [main] WARN org.apache.sqoop.tool.BaseSqoopTool - Setting your password on the command-line is insecure. Consider using -P instead.
2178 [main] WARN org.apache.sqoop.ConnFactory - $SQOOP_CONF_DIR has not been set in the environment. Cannot check for additional configuration.
2197 [main] INFO org.apache.sqoop.manager.MySQLManager - Preparing to use a MySQL streaming resultset.
2197 [main] INFO org.apache.sqoop.tool.CodeGenTool - Beginning code generation
2464 [main] INFO org.apache.sqoop.manager.SqlManager - Executing SQL statement: SELECT t.* FROM `missedCalls` AS t LIMIT 1
2483 [main] INFO org.apache.sqoop.manager.SqlManager - Executing SQL statement: SELECT t.* FROM `missedCalls` AS t LIMIT 1
2485 [main] INFO org.apache.sqoop.orm.CompilationManager - HADOOP_MAPRED_HOME is /usr/local/hadoop
3838 [main] INFO org.apache.sqoop.orm.CompilationManager - Writing jar file: /tmp/sqoop-hduser/compile/21bd1d5fe13adeed4f46a09f8b3d38fe/missedCalls.jar
3847 [main] INFO org.apache.sqoop.mapreduce.ExportJobBase - Beginning export of missedCalls
Heart beat
Heart beat
Heart beat
Heart beat
Heart beat
Heart beat
Heart beat
Heart beat
作业属性如下
nameNode=hdfs://master:54310
jobTracker=master:8035
queueName=default
oozie.libpath=${nameNode}/user/hduser/share/lib
oozie.use.system.libpath=true
oozie.wf.rerun.failnodes=true
oozieProjectRoot=${nameNode}/user/hduser/oozieProject
appPath=${oozieProjectRoot}/workflow
oozie.wf.application.path=${appPath}
oozieLibPath=${oozie.libpath}
mapred.tasktracker.map.tasks.maximum=4
mapred.tasktracker.reduce.tasks.maximum=4
inputDir=${oozieProjectRoot}/data/*
outputDir=${appPath}/output
工作流xml如下
<!--Oozie workflow file: workflow.xml -->
<workflow-app name="WorkflowStreamingMRAction-Python" xmlns="uri:oozie:workflow:0.1">
<start to="streamingaAction"/>
<action name="streamingaAction">
<map-reduce>
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<prepare>
<delete path="${outputDir}"/>
</prepare>
<streaming>
<mapper>python mapper.py</mapper>
<reducer>python reducer.py</reducer>
</streaming>
<configuration>
<property>
<name>oozie.libpath</name>
<value>${oozieLibPath}/mapreduce-streaming</value>
</property>
<property>
<name>mapred.input.dir</name>
<value>${inputDir}</value>
</property>
<property>
<name>mapred.output.dir</name>
<value>${outputDir}</value>
</property>
<property>
<name>mapred.reduce.tasks</name>
<value>4</value>
</property>
</configuration>
<file>${appPath}/mapper.py#mapper.py</file>
<file>${appPath}/reducer.py#reducer.py</file>
</map-reduce>
<ok to="sqoopAction"/>
<error to="killJobAction"/>
</action>
<action name="sqoopAction">
<sqoop xmlns="uri:oozie:sqoop-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<command>export --connect jdbc:mysql://localhost/database --username root --password myPwd --table tableName --direct --export-dir /user/hduser/oozieProject/workflow/output</command>
</sqoop>
<ok to="end"/>
<error to="killJobAction"/>
</action>
<kill name="killJobAction">
<message>"Killed job due to error: ${wf:errorMessage(wf:lastErrorNode())}"</message>
</kill>
<end name="end" />
请指教哪里出了问题?
谢谢
最佳答案
它不会永远运行。你只需要等待。
首先,您在上面看到的 Sqoop 导出作业只是一个 Oozie 计划作业。和 Heart beat
意味着它现在正在运行。你只需要等待。其实你可以去 YARN 资源管理器页面(通常是 http://$namenode:8088/cluster),然后你可以找到“真正的”Sqoop 导出作业。 (我猜映射器的默认数量是 4。)
其次,Sqoop 使用 INSERT
进行“导出”语句,所以比较慢。当表很大时,我不建议使用 Sqoop 导出,例如,当它有超过 100 万个条目时。
第三,由于我注意到您尝试导出到 MySQL,您可以尝试批处理模式,它运行 INSERT
这样查询:INSERT INTO <TABLE> VALUES (<ROW1>), (<ROW2>), etc.
因此您可以将命令更改为: sqoop export -D sqoop.export.records.per.statement=1000 --connect jdbc:mysql://localhost/database --username root --password myPwd --table tableName --direct --export-dir /user/hduser/oozieProject/workflow/output --batch
关于mysql - 使用 Oozie 永远运行的 Sqoop 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26338281/
当我们使用以下设置时,Sqoop 导入会导致重复/部分记录 --query - 自定义查询 --split-by - 非整数列(字符) --num-mappers - 超过 2 Verified th
我安装了 Hadoop、Hive、HBase、Sqoop 并将它们添加到 PATH 中。 当我尝试执行 sqoop 命令时,出现此错误: Error: Could not find or load m
当我连接到一个集群 ( aaaaaa1 ) 上的 mysql 和不同服务器 ( aaaaaa2 ) 上的 sqooop 时,我收到以下错误,尽管在 mySql 中创建了一个表,并授予另一个集群的完全权
我发现以下命令对于查看我的源数据库的样子非常有用: sqoop-list-databases sqoop-list-tables 但是,似乎没有列出表中列的命令,这将是一个合乎逻辑的步骤。 我现在的问
我很困惑虽然导入库(com.cloudera.sqoop 和 org.apache.sqoop)并在 eclipse 中获取它(包含 jar sqoop-1.4.4-hadoop200.jar)- I
sqoop import命令中$conditions子句的意义是什么? select col1, col2 from test_table where \$CONDITIONS 最佳答案 Sqoop
sqoop import命令中$conditions子句的意义是什么? select col1, col2 from test_table where \$CONDITIONS 最佳答案 Sqoop
我正在使用共享节点集群 Hadoop 2.5.0-cdh5.3.2 请共享要加载的所有兼容版本的 MySql jar 文件的名称以及 HDFS 和 MySQL 之间成功导入和导出的所有路径文件夹。 我
我在Azkaban中使用shell命令,并将Sqoop命令放在shell脚本中。 今天 Sqoop 任务无缘无故卡住了,sqoop_task1。 几天前发生在另一个 sqoop 任务上,我们称它为 s
我已经在计算机上安装了sqoop (来自http://www.apache.org/dist/sqoop/1.4.4/的sqoop-1.4.4.bin__hadoop-1.0.0.tar.gz)。 当
我刚刚下载了Sqoop安装文件sqoop-1.99.3-bin-hadoop100.tar.gz。我无法在其中找到文件 addtowar.sh。我按照此处的安装说明进行操作 - https://sqo
我有一个 Oozie 工作流,它应该每 X 分钟运行一次。它从 HBase 表中读取一个值。在此之后,基于上一步从 HBase 读取的值运行(增量)Sqoop 操作。为了使工作流正常工作,我需要以某种
[cloudera@quickstart ~]$ **sqoop import-all-tables -m=4 --connect "jdbc:mysql://quickstart.cloudera:
我正在使用 hadoop 2.6.0,现在我正在尝试 sqoop-1.4.5.bin__hadoop-2.0.4-alpha.tar.gz。我正在使用 sqoop 版本 sqoop version 2
我发现在运行时覆盖 sqoop 作业属性时,我只能覆盖一个属性。 例子1:如果我提交 sqoop job --exec test123 -- --query "select * from test w
如何使用sqoop job自动化sqoop增量导入? 据我所知,sqoop job 会记住最后一个值。如果我们创建一个类似 的 sqoop 作业 sqoop job --create myjob --
我正在尝试使用 sqoop export 将记录从 S3 导出到 Mysql Aurora。 S3 中的数据类型之一是 clob,它的长文本和 XML 文件作为 string 存储在其中。 当我运行我
我正在对由计算量大的自定义查询生成的大型记录集进行原型(prototype)迁移。此查询大约需要 1-2 小时才能在 SQL Developer 中返回结果集 我正在尝试将此查询传递给一个简单的 Sq
谁能告诉我这个命令的输出是什么:这里的 departments 表有默认的 6 行(从 dept_id 2 到 7),然后我向 Mysql db 'retail_db.departments' 表(d
根据 sqoop.apache.org 的说法,Sqoop 2 的功能并不完整,不应该用于生产系统。很公平,有些人可能想在他们的测试环境中测试 Sqoop 2 的新功能。 Cloudera 对 Sqo
我是一名优秀的程序员,十分优秀!