Kettle集群环境搭建和部署
Kettle,俗称水壶,一个神奇的ETL利器!在数据仓库建设中扮演着重要角色。Kettle简单方便的界面化操作受到Java程序员的青睐。这次与大家一起来瞧瞧Kettle伪分布式和全分布式环境的搭建。
一、伪分布式
、环境准备
(1)Kettle安装文件
pdi-ce-7.1.0.0-12.zip
(2)一台Linux服务器
服务器规划如下:
通过在一台服务器上设置不同端口号来配置Kettle伪分布式集群,8080为Kettle主服务器端口号,8081和8082分别为Kettle的两个从服务器(或者称为子服务器)端口号。
(3)安装jdk
需要安装jdk环境(略)。
(4)搭建Hadoop伪分布集群
因测试时使用HDFS文件系统,所以我们需要搭建好Hadoop伪分布式集群(略)。
1、上传文件
将Kettle安装文件pdi-ce-7.1.0.0-12.zip上传到Linux系统/root/tools目录下,如图:
上传成功后,如图:
2、解压文件
执行如下zip压缩文件解压命令:
unzip -d ~/training/ pdi-ce-7.1.0.0-12.zip
将文件解压到/root/training目录下,成功解压后,如图:
3、配置环境变量
Kettle目录与Hadoop,Hbase等有所不同,在Kettle的安装目录下并没有bin目录,常用命令直接放在了安装目录下,所以Kettle环境变量如下配置即可:
保存退出,执行source ~/.bash_profile命令,生效配置文件。
4、修改集群配置文件
进入Kettle的data-integration/pwd目录下,如图:
在该目录下含有6个文件
一个主服务器配置文件carte-config-master-8080.xml,四个从服务器配置文件
carte-config-8081.xml
carte-config-8082.xml
carte-config-8083.xml
carte-config-8084.xml
,这里我们使用前两个文件来配置两个子服务器,分别是slave1和slave2,
还有一个集群账号密码文件kettle.pwd(密码可以修改)。
(1)主服务器配置
主服务器配置文件carte-config-master-8080.xml内容如下:
master1
localhost
8080
Y
其中name属性指定Kettle主服务器名称,hostname属性指定Kettle主服务器IP地址,port属性指定Kettle主服务器端口号,master属性指定是否是主服务器。伪分布式环境不需要配置该文件。
(2)子服务器配置
子服务器配置文件carte-config-8081.xml内容如下:
master1
localhost
8080
cluster
cluster
Y
Y
slave1-8081
localhost
8081
cluster
cluster
N
配置属性分为两块,第一块masters属性配置主服务器信息,必须与主服务器配置相同,slaveserver配置子服务器信息,注意slaveserver中的master属性值为N。伪分布式环境下,该文件也不需要做任何配置。
(3)plugin.properties
Kettle默认提供了4个Hadoop版本,分别为cdh、emr、hdp、mapr。我们使用cdh版本。进入data-integration/plugins/pentaho-big-data-plugin/目录,打开plugin.properties文件,增加使用的hadoop版本,如下:
(4)拷贝Hadoop配置文件
在data-integration/plugins/pentaho-big-data-plugin/hadoop-configurations/cdh510目录下,Kettle提供了Hadoop的cdh版本默认配置文件,我们将Hadoop的配置文件core-site.xml、mapred-site.xml、yarn-site.xml拷贝到该目录下,对文件进行覆盖。
5、添加jar包
需要将数据库连接驱动包拷贝到Kettle的安装目录data-integration/lib目录下,比如Oracle数据库连接驱动包ojdbc14.jar。
6、启动Kettle集群
在命令窗口执行
carte.sh 192.168.189.111 8080
命令,启动Kettle主服务器。启动成功后,如图:
重新打开两个Xshell连接,分别执行
carte.sh 192.168.189.111 8081
carte.sh 192.168.189.111 8082
命令,启动两个Kettle子服务器。启动成功后,如图:
slave1:
slave2:
我们分别登录Kettle集群管理页面(192.168.189.111:8080、192.168.189.111:8081、192.168.189.111:8082),如图:
填入配置文件中的账号和密码,登录成功后,如图:
至此,Kettle伪分布式集群环境已经搭建好。
7、测试
(1)创建转换
我们打开Windows本地的Kettle界面,创建一个转换,如图:
转换中,包含三个组件:
a、emp表输入组件
完成连接oracle数据库,并可以预览emp表数据,如图:
b、排序记录组件
完成所有记录排序,如图:
c、emp表Hadoop File输出组件
将排序后的记录输出到HDFS文件系统中,如图:
(2)提交执行转换
下面我们在Windows本地远程使用刚搭建好的Kettle集群执行该转换。也就是说,具体操作在本地完成,实际上整个转换在Linux系统Kettle集群中运行,如图:
选择转换执行方式,点击启动,转换将被提交到Kettle集群的master服务器上,master接收到请求后将转换任务分发给两个子服务器,各服务器日志如下:
master:
master服务器连接Oracle数据库,查询数据,查询成功后关闭数据库连接,然后将任务分发给slave从服务器,等待读取从服务器运行结果,当读取到从服务器上排序好的数据时写入HDFS文件系统。
slave1:
slave1服务器从主服务器上读取部分数据(这里是7条)进行排序操作,排序完成后写入主服务器。
slave2:
slave2服务器从主服务器上读取部分数据(这里也是7条)进行排序操作,排序完成后写入主服务器。
(3)查看PDI状态
登录管理页面,如图:
master:
slave1:
slave2:
页面记录了本次转换的名称,ID,运行状态等信息。
(4)查看运行结果
登录HDFS文件系统,如图:
在/kettle/oracle目录下生成了emp.txt文本文件,查看文本数据,如图:
数据已经被成功排序!
二、全分布式
、环境准备
(1)准备三台服务器
集群规划如下:
bigdata112作为Kettle主服务器,服务器端口号为8080,bigdata113和bigdata114作为两个子服务器,端口号分别为8081和8082。
(2)安装jdk
每台服务器需要安装jdk环境(略)。
(3)搭建Hadoop全分布式集群
因测试时使用HDFS文件系统,所以需要事先搭建好Hadoop全分布式集群,集群规划如下:
1、bigdata112环境配置
上传文件、解压文件、配置环境变量三个步骤与伪分布式环境下配置相同,配置好后,继续做如下配置:
(1)修改集群配置文件
a、主服务器配置文件carte-config-master-8080.xml,如下配置:
master1
192.168.189.112
8080
Y
b、子服务器配置文件carte-config-8081.xml,如下配置:
master1
192.168.189.112
8080
Y
Y
slave1-8081
192.168.189.113
8081
cluster
cluster
N
c、子服务器配置文件carte-config-8082.xml,如下配置:
master1
192.168.189.112
8080
Y
Y
slave1-8082
192.168.189.114
8082
cluster
cluster
N
(2)plugin.properties
与伪分布式环境相同。
(3)拷贝Hadoop配置文件
这里需要将全分布式Hadoop集群的配置文件core-site.xml、mapred-site.xml、yarn-site.xml拷贝到data-integration/plugins/pentaho-big-data-plugin/hadoop-configurations/cdh510目录下,对文件进行覆盖。
(4)添加jar包
与伪分布式环境相同。
2、bigdata113和bigdata114配置
(1)目录拷贝
将bigdata112上已经配置好的Kettle安装目录data-integration远程拷贝到bigdata113和bigdata114服务器上,远程拷贝命令如下:
(2)环境变量配置
同bigdata112相同,在bigdata113和bigdata114服务器上配置Kettle的环境变量,并使配置文件生效。
3、启动Kettle集群
分别在三台服务器上执行如下命令:
carte.sh 192.168.189.112 8080
carte.sh 192.168.189.113 8081
carte.sh 192.168.189.114 8082
命令,启动Kettle集群。
4、测试
(1)创建转换
与伪分布式环境类似,打开Windows本地的Kettle界面,创建一个转换,如图:
以Kettle全分布式集群方式执行该转换,转换将被提交到Linux系统的Kettle集群中,bigdata112接收到请求后,将任务分发给子服务器bigdata113和bigdata114执行。执行结束后,查看执行日志如下:
master:
slave1:
slave2:
查看执行结果,如下:
在Kettle全分布式集群环境下,emp表被成功排序!
领取专属 10元无门槛券
私享最新 技术干货