这个问题,搞了整整三天。
都想骂娘了。
由于是尼玛oozie调用mapreduce调用sqoop然后调用hive,关系比较复杂。
所以错误定位搞了好久。
症状描述:
用oozie调用sqoop,将数据表从mysql直接导入到hive的过程中。
全部过程都能执行完毕,数据也导进去了。
但是,那个oozie的job的结果显示是killed的。当然咯,那个action节点的结果也显示是failed的。
问题定位:
最后问题找到了,应该是sqoop的一个bug。
sqoop的org.apache.sqoop.hive.HiveImport类中,
引用了一个com.cloudera.sqoop.util.ExitSecurityException这个类。
而在HiveImport.java的305行:Throwable cause = ite.getCause();
cause返回的是org.apache.sqoop.util.ExitSecurityException这个类。
所以导致306行if判断返回false,实际上应该返回true。
305 Throwable cause = ite.getCause();
306 if (cause instanceof ExitSecurityException) {
307 ExitSecurityException ese = (ExitSecurityException) cause;
308 int status = ese.getExitStatus();
309 if (status != 0) {
310 throw new IOException("Hive CliDriver exited with status=" + status);
311 }
312 } else {
313 throw new IOException("Exception thrown in Hive", ite);
314 }
解决方法:
找到HiveImport.java的import部分,
把原来的:com.cloudera.sqoop.util.ExitSecurityException
换成:import org.apache.sqoop.util.ExitSecurityException
即可。
另外,这个修改后的sqoop的jar包,是应该放在workflow执行时指定的hdfs中的lib里的。
使用的版本:
hadoop:1.0.3
oozie:3.1.3
sqoop:1.4.1
hive:0.8.1
分享到:
相关推荐
2. **Sqoop2 API**:oozie-sqoop2通过调用Sqoop2的Java API来创建和执行导入导出任务。这些API允许你指定SQL查询、分块大小、并行度以及其他高级选项,以优化数据迁移性能。 3. **Oozie Action定义**:在Oozie的...
在大数据处理领域,Oozie和Hive是两个重要的组件。Oozie是Apache Hadoop的一个工作流调度系统,用于管理Hadoop作业的生命周期,而Hive则是一种基于Hadoop的数据仓库工具,允许用户使用SQL(称为HQL)对大规模数据...
7. **分块导入**:对于大型数据集,Sqoop 可以将导入过程划分为多个小任务,每个任务处理一部分数据。这有助于充分利用集群资源,加速数据导入。 8. **数据类型转换**:Sqoop 自动处理 RDBMS 数据类型到 Hadoop 的 ...
Oozie支持多种类型的Hadoop任务,包括MapReduce、Pig、Hive、Sqoop等,同时也支持通过Java Action执行自定义的Java程序。 **JavaAction**是Oozie提供的一个特殊功能,允许用户编写Java程序来实现自定义逻辑,这些...
3. **ShareLib**:Oozie 的共享库,包含了预装的 Hadoop 生态系统动作(如 Hive, Pig, Sqoop 等),使得用户可以直接在工作流中使用这些工具,无需额外配置。 4. **Web UI**:提供了用户界面,方便管理员和用户监控...
例如,从数据库 `hotcloud` 导入表 `tmainarea`。 - **创建分区表**:为了提高查询效率,可以创建分区表。例如,按天对热源数据进行分区。 - **新增分区并导入数据**:在导入数据之前,需要先创建分区元数据,并建立...
在大数据处理领域,Apache Oozie 是一个非常重要的工作流管理系统,它被广泛用于协调 Hadoop 生态系统中的各种任务,如 MapReduce、Pig、Hive、Sqoop 等。"subwf_fork.zip" 文件是针对 Oozie 的特定工作流设计,包含...
- **数据交换和工作流管理系统**:如Chukwa、Flume、Sqoop(数据导入导出工具)以及Oozie(工作流调度器)等。 #### 三、环境准备 为了搭建Hadoop集群,需要先准备好必要的软件环境。 - **安装虚拟机软件**:...
- **Hive:**一种数据仓库基础设施,用于查询和管理大规模数据集。 - **Pig:**用于数据分析的高级语言。 - **Oozie:**用于工作流调度的任务协调服务。 - **Zookeeper:**分布式应用协调服务。 - **Mahout:**支持...
- Avro:是一个数据序列化系统,它提供了丰富的数据结构类型、快速的压缩以及远程过程调用(RPC)功能。 - Hive:是一个数据仓库基础架构,用于提供数据摘要、查询和分析。 - Pig:是一个高级数据流语言和执行框架...
7. **Oozie** - 工作流调度系统,用于管理Hadoop作业,包括Hadoop MapReduce、Pig、Hive和Sqoop等。 8. **ZooKeeper** - 高可用性协调服务,用于分布式应用程序,管理配置信息、命名、提供分布式同步和组服务。 9....
- **Hive**:构建在Hadoop之上的数据仓库工具,支持通过SQL-like查询语言(HiveQL)进行数据检索。 - **HBase**:基于Hadoop的分布式、面向列的存储系统,类似于Google BigTable。 - **Pig**:为Hadoop提供了一种更...