Oozie sqoop 任务错误:无法运行程序“hive”:错误=2 没有这样的文件或目录

Posted

技术标签:

【中文标题】Oozie sqoop 任务错误:无法运行程序“hive”:错误=2 没有这样的文件或目录【英文标题】:Oozie sqoop task error: Cannot run program "hive": error=2 no such file or directory 【发布时间】:2017-08-11 05:01:09 【问题描述】:

我创建了一个 oozie sqoop 任务来将数据从 mysql 导入 hive。我有一个 namenode 和 3 个 datanodes,在 namenode 上还安装了 hive、oozie 和 sqoop。

sqoop 导入命令已经在 namenode 上测试了 var CLI,但是每次我创建一个 oozie sqoop 任务时,它也失败了。以下是详细错误。

2017-08-11 11:27:40,787 [uber-SubtaskRunner] INFO org.apache.hadoop.mapreduce.Job - map 0% reduce 0% 2017-08-11 11:27:40,787 [uber-SubtaskRunner] INFO org.apache.hadoop.mapreduce.Job - map 0% reduce 0% 2017-08-11 11:27:44,833 [uber-SubtaskRunner] INFO org.apache.hadoop.mapreduce.Job - map 25% reduce 0% 2017-08-11 11:27:44,833 [uber-SubtaskRunner] INFO org.apache.hadoop.mapreduce.Job - map 25% reduce 0% 2017-08-11 11:27:45,837 [uber-SubtaskRunner] INFO org.apache.hadoop.mapreduce.Job - map 75% reduce 0% 2017-08-11 11:27:45,837 [uber-SubtaskRunner] INFO org.apache.hadoop.mapreduce.Job - map 75% reduce 0% 2017-08-11 11:27:46,844 [uber-SubtaskRunner] INFO org.apache.hadoop.mapreduce.Job - map 100% reduce 0% 2017-08-11 11:27:46,844 [uber-SubtaskRunner] INFO org.apache.hadoop.mapreduce.Job - map 100% reduce 0% 2017-08-11 11:27:46,856 [uber-SubtaskRunner] INFO org.apache.hadoop.mapreduce.Job - Job job_1502360348741_0041 completed successfully 2017-08-11 11:27:46,856 [uber-SubtaskRunner] INFO org.apache.hadoop.mapreduce.Job - Job job_1502360348741_0041 completed successfully ... 2017-08-11 11:27:46,932 [uber-SubtaskRunner] INFO org.apache.sqoop.mapreduce.ImportJobBase - Transferred 625 bytes in 12.0595 seconds (51.8263 bytes/sec) 2017-08-11 11:27:46,936 [uber-SubtaskRunner] INFO org.apache.sqoop.mapreduce.ImportJobBase - Retrieved 14 records. 2017-08-11 11:27:46,951 [uber-SubtaskRunner] INFO org.apache.sqoop.manager.SqlManager - Executing SQL statement: SELECT t.* FROM UserRole AS t WHERE 1=0 2017-08-11 11:27:46,952 [uber-SubtaskRunner] INFO org.apache.sqoop.manager.SqlManager - Executing SQL statement: SELECT t.* FROM UserRole AS t WHERE 1=0 2017-08-11 11:27:46,953 [uber-SubtaskRunner] WARN org.apache.sqoop.hive.TableDefWriter - Column updatedDate had to be cast to a less precise type in Hive 2017-08-11 11:27:46,960 [uber-SubtaskRunner] INFO org.apache.sqoop.hive.HiveImport - Loading uploaded data into Hive 2017-08-11 11:27:46,963 [uber-SubtaskRunner] ERROR org.apache.sqoop.tool.ImportTool - Encountered IOException running import job: java.io.IOException: Cannot run program "hive": error=2,

这是我的想法

    映射器作业已生成,因此应提交此脚本并在名称节点上运行。这是正确的吗? 我所有的环境变量配置都很好,所以应该在一个数据节点上启动错误阶段,将数据导入配置单元表的导入工具。

那么我应该在集群的每个数据节点上安装 hive 吗?或者有什么配置可以解决这个问题?

【问题讨论】:

将集群的 hive-site 复制到 oozie lib 文件夹 你能把你的 oozie 发给 workflow.xml 【参考方案1】:
    确保 hive-site.xml 位于 hdfs 中。 将所有 hive libs 共享文件夹复制到 sqoop libs 共享文件夹。

【讨论】:

以上是关于Oozie sqoop 任务错误:无法运行程序“hive”:错误=2 没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章

Oozie Sqoop 作业 - 无法恢复作业

Oozie Sqoop 工作

oozie怎么找到sqoop在哪个节点上

oozie sqoop 动作具有 --map-column-java

包安装期间不应该配置 Oozie/Sqoop jar 位置吗?

使用 Oozie 永久运行 Sqoop 作业