Kettle 添加对应hadoop版本的支持

简介: 经高人指点认识了一款叫做Kettle的软件,经过这两天的试用,从直观感受上,Kettle更容易使用和上手,资料更多,界面更友好。
在hdp的官网上有一个ETL工具叫做Talend Open Studio,然后我就下了,并且在群里询问了一下,突然间冒出来一群ETL高手,经高人指点认识了一款叫做Kettle的软件,经过这两天的试用,从直观感受上,Kettle更容易使用和上手,资料更多,界面更友好。。。 优点很多,这里不一一列举了,关键是它对hadoop的支持我觉得是很全面的。
但是这里面有一个问题出现了,它不支持我现在用的版本,我用的是Hortonworks的HDP1.3,好吧,经过不懈的努力,终于被我搜索到了,哈哈,原来它可以支持的,并且官方已经提供了相应的包提供使用,只是不太好找罢了!下面把更新的过程和大家分享一下。
先提供文中所需内容的下载地址:
1.插件升级包
2.hdp1.3的支持包
我使用的是4.4版本的kettle,大数据插件升级到了1.3.3.1了,所以要更新一下。
1.删除plugins下的pentaho-big-data-plugin
2.删除libext/JDBC/pentaho-hadoop-hive-jdbc-shim-1.3.0.jar
3.把pentaho-big-data-shimtastic-1.3.3.1.zip解压到plugins目录下,可以删掉pentaho-big-data-plugin\hadoop-configurations 中不要的版本
4. 复制pentaho-hadoop-hive-jdbc-shim-1.3.3.jar 到libext/JDBC下
5.解压pentaho-instaview-templates-shimtastic-1.3.3.zip 到这个目录下,实际上没有这个目录,自己创建一下吧
plugins/spoon/agile-bi/platform/pentaho-solutions/system/instaview/templates/Big Data
更新完插件之后,我们要添加hdp1.3的支持,使用CDH4的童鞋比较幸福,不需要下载这个包,因为插件默认就带有cdh42的版本,支持最新的4.2-4.3
1.解压pentaho-hadoop-shims-hdp13-package-1.3.4.zip放到 plugins\pentaho-big-data-plugin\hadoop-configurations下面
2.编辑plugins/pentaho-big-data-plugin/plugin.properties文件,设置active.hadoop.configuration为该目录的名称
初始值是active.hadoop.configuration=hadoop-20,我的目录名称为hdp13,所以修改为active.hadoop.configuratio=hdp13
经过测试,目前Hadoop Copy Files和Oozie Job Executor能正常使用,Hadoop Job Executor不能使用,并且只支持旧的mapred的api,不支持最新的mapreduce的api,它自带的demo也运行不起来,报错了。
详细报错如下:
Error executing class org.pentaho.hadoop.sample.wordcount.WordCount.
 java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
     at org.pentaho.di.job.entries.hadoopjobexecutor.JobEntryHadoopJobExecutor$1.run(JobEntryHadoopJobExecutor.java:377)
     at java.lang.Thread.run(Thread.java:722)
 Caused by: java.lang.reflect.InvocationTargetException
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     at java.lang.reflect.Method.invoke(Method.java:601)
     at org.pentaho.di.job.entries.hadoopjobexecutor.JobEntryHadoopJobExecutor.executeMainMethod(JobEntryHadoopJobExecutor.java:660)
     at org.pentaho.di.job.entries.hadoopjobexecutor.JobEntryHadoopJobExecutor$1.run(JobEntryHadoopJobExecutor.java:360)
     ... 1 more
 Caused by: java.lang.RuntimeException: Error in configuring object
     at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:93)
     at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:64)
     at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:117)
     at org.apache.hadoop.mapred.JobConf.getInputFormat(JobConf.java:596)
     at org.apache.hadoop.mapred.JobClient.writeOldSplits(JobClient.java:1081)
     at org.apache.hadoop.mapred.JobClient.writeSplits(JobClient.java:1073)
     at org.apache.hadoop.mapred.JobClient.access$700(JobClient.java:179)
     at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:983)
     at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:936)
     at java.security.AccessController.doPrivileged(Native Method)
     at javax.security.auth.Subject.doAs(Subject.java:415)
     at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1232)
     at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:936)
     at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:910)
     at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1353)
     at org.pentaho.hadoop.sample.wordcount.WordCount.main(WordCount.java:79)
     ... 7 more
 Caused by: java.lang.reflect.InvocationTargetException
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     at java.lang.reflect.Method.invoke(Method.java:601)
     at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:88)
     ... 22 more
 Caused by: java.lang.IllegalArgumentException: Compression codec com.hadoop.compression.lzo.LzoCodec not found.
     at org.apache.hadoop.io.compress.CompressionCodecFactory.getCodecClasses(CompressionCodecFactory.java:116)
     at org.apache.hadoop.io.compress.CompressionCodecFactory.<init>(CompressionCodecFactory.java:156)
     at org.apache.hadoop.mapred.TextInputFormat.configure(TextInputFormat.java:38)
     ... 27 more
 Caused by: java.lang.ClassNotFoundException: com.hadoop.compression.lzo.LzoCodec
     at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
     at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
     at java.security.AccessController.doPrivileged(Native Method)
     at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
     at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
     at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
     at java.lang.Class.forName0(Native Method)
     at java.lang.Class.forName(Class.java:264)
     at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:810)
     at org.apache.hadoop.io.compress.CompressionCodecFactory.getCodecClasses(CompressionCodecFactory.java:109)
     ... 29 more
这个问题可能是运行旧的mapred的api导致的,kettle自身的大数据插件上本身就支持hadoop-0.20版本以及CHD4(也是基于0.20版本的),可能是为了兼容的问题,运行hdp的程序的时候也是使用的旧的api,然后就引发了这个错误,这个错误也是报得莫名其妙,源码里面里面都没有使用压缩,我的集群本身也是配置了lzo的,例子运行的时候都能看到加载lzo的类库成功的提示信息。。。 我在hadoop里面运行新版的wordcount例子也是没问题,但是在kettle上就不行,看来只能走改源码的方法了,正好oozie的插件也有不尽如人意的地方,顺便把oozie的插件也修改一下,加上重新启动流程的功能。
不过比较安慰的是Hadoop Copy Files和Oozie Job Executor都可以用,MapReduce我可以配置到oozie里面执行,不要它那个破玩意儿了,太让人闹心了。
如果有用CDH4的童鞋,帮忙试一下你们的能不能用,如果有知道怎么解决这个问题的更好,感激涕零!
最后发一下原始的地址,E文好的童鞋可以自己去看看,找到适合自己的版本!
目录
相关文章
|
3月前
|
分布式计算 Hadoop Java
Hadoop快速入门——第一章、认识Hadoop与创建伪分布式模式(Hadoop3.1.3版本配置)
Hadoop快速入门——第一章、认识Hadoop与创建伪分布式模式(Hadoop3.1.3版本配置)
68 0
|
SQL 消息中间件 分布式计算
如何查看spark与hadoop、kafka、Scala、flume、hive等兼容版本【适用于任何版本】
如何查看spark与hadoop、kafka、Scala、flume、hive等兼容版本【适用于任何版本】
675 0
如何查看spark与hadoop、kafka、Scala、flume、hive等兼容版本【适用于任何版本】
|
9月前
|
分布式计算 资源调度 Hadoop
【Flink】版本 1.13+ 集成 Hadoop 问题
【Flink】版本 1.13+ 集成 Hadoop 问题
259 0
|
存储 SQL 分布式计算
Hadoop 概述、Hadoop 发展历史、Hadoop 三大发行版本、Hadoop优势、Hadoop组成、Hadoop1.x、2.x、3.x区别、HDFS架构概述、大数据技术生态体系、推荐系统框架图
高可靠性、高扩展性、高效性、高容错性YARN架构概述、MapReduce架构概述、HDFS、YARN、MapReduce三者关系、1)NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等。 2)DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。 3)Secondary NameNode(2nn):每隔一段时间对NameNode元数据备份。MapReduce将计算过程分为两个阶段:
Hadoop 概述、Hadoop 发展历史、Hadoop 三大发行版本、Hadoop优势、Hadoop组成、Hadoop1.x、2.x、3.x区别、HDFS架构概述、大数据技术生态体系、推荐系统框架图
|
SQL 分布式计算 资源调度
spark 3.1.x支持(兼容)hive 1.2.x以及hadoop cdh版本的尝试
spark 3.1.x支持(兼容)hive 1.2.x以及hadoop cdh版本的尝试
873 0
|
分布式计算 自然语言处理 Hadoop
【云计算 Hadoop】Hadoop 版本 生态圈 MapReduce模型(二)
【云计算 Hadoop】Hadoop 版本 生态圈 MapReduce模型(二)
120 0
【云计算 Hadoop】Hadoop 版本 生态圈 MapReduce模型(二)
|
存储 分布式计算 资源调度
【云计算 Hadoop】Hadoop 版本 生态圈 MapReduce模型(一)
【云计算 Hadoop】Hadoop 版本 生态圈 MapReduce模型(一)
174 0
【云计算 Hadoop】Hadoop 版本 生态圈 MapReduce模型(一)
|
Java 大数据 测试技术
|
大数据 数据库 分布式计算
大数据(一) - hadoop生态系统及版本演化
大数据系列文章汇总链接 - 更新到15篇 HDFS:分布式存储系统(Hadoop Distributed File System):提供了高可靠性、高扩展性和高吞吐率的数据存储服务            HDFS源自于Google的GFS论文 (发表于2003年10月 ),是GFS克隆版YARN...
2144 0