为什么写这系列博客的原因就是真的遇到的坑太多了,所以需要写下来,防止以后忘记,话不多说吗,直接进入主题
一、环境
- kettle7.0,kettle是开源的etl工具(kettle7.0需要java8),其优势在于可以使用图形化界面开发,开发完成后可以部署在linux或者windows平台
- window7.0
- 大数据平台采用的是CDH,其余版本的haoop应该也是类似的
二、修改配置文件
- 将集群中的haoop配置文件拷贝到kettle的安装文件夹下,例如D:\kettle\pdi-ce-7.0.0.0-25\data-integration(安装路径)\plugins\pentaho-big-data-plugin\hadoop-configurations\cdh58(haddop版本),需要拷贝的配置文件如下:
- 因为hdfs存储文件有所有者和组的概念,提交MR作业的时候会先从环境变量读取HADOOP_USER_NAME参数来识别文件的所有者,如果没有,则读取系统用户,一般操作hadoop集群都会新建用户,所以建议设置环境变量HADOOP_USER_NAME=hdfs(hadoop专用用户名,根据自己定义的名字修改),环境变量如下:
因为涉及到跨平台提交MR作业,需要在mapred-site.xml文件里加上如下参数(注意:不是所有的hadoop版本都有,好像是hadoop2.×之后,低版本的得自己改一下源码,主要是因为不同系统环境变量的表示方法不一样,windows是%AA%,Linux是$AA),如果不加,会报错,具体错误我没记录,和appMaster有关,改动的地方如下:
<property>
<name>mapreduce.app-submission.cross-platform</name>
<value&g