Kettle_Linux下安装使用_调优


四、 Linux下安装使用

1、单机

  • jdk安装

  • 安装包上传到服务器,并解压

    注意:

    1. 把mysql驱动拷贝到lib目录下

    2. 将windows本地用户家目录下的隐藏目录C:\Users\自己用户名\.kettle 目录,

      整个上传到linux的用户的家目录下,root用户的家目录为/root/

  • 运行数据库资源库中的转换:

    cd /usr/local/soft/data-integration
    ./pan.sh -rep=my_repo -user=admin -pass=admin -trans=tran1
    

    参数说明:

    ? -rep 资源库名称

    ? -user 资源库用户名

    ? -pass 资源库密码

    ? -trans 要启动的转换名称

    ? -dir 目录(不要忘了前缀 /)(如果是以ktr文件运行时,需要指定ktr文件的路径)

  • 运行资源库里的作业:

    记得把作业里的转换变成资源库中的资源

    记得把作业也变成资源库中的资源

    cd /usr/local/soft/data-integration
    ./kitchen.sh -rep=my_repo -user=admin -pass=admin -job=job1 -logfile=./logs/log.txt
    

    参数说明:
    -rep - 资源库名
    -user - 资源库用户名
    -pass – 资源库密码
    -job – job名
    -dir – job路径(当直接运行kjb文件的时候需要指定)
    -logfile – 日志目录

2、 集群模式

  • 准备三台服务器

    master作为Kettle主服务器,服务器端口号为8080,

    node1和node2作为两个子服务器,端口号分别为8081和8082。

  • 安装部署jdk

  • hadoop完全分布式环境搭建

  • 上传并解压kettle的安装包至/usr/local/soft/目录下

  • 进到/usr/local/soft/data-integration/pwd目录,修改配置文件

    • 修改主服务器配置文件carte-config-master-8080.xml

      
          master
          master
          8080
          Y
          cluster
          cluster
      
      
    • 修改从服务器配置文件carte-config-8081.xml

      
          
            master
            master
            8080
            cluster
            cluster
            Y
          
      
      Y
      
          slave1
          node1
          8081
          cluster
          cluster
          N
      
      
    • 修改从配置文件carte-config-8082.xml

      
          
            master
            master
            8080
            cluster
            cluster
            Y
          
      
      Y
      
          slave2
          node2
          8082
          cluster
          cluster
          N
      
      
  • 分发整个kettle的安装目录,通过scp命令

  • 启动相关进程,在master,node1,node2上分别执行

[root@master]# ./carte.sh master 8080
[root@node1]# ./carte.sh node1 8081
[root@node2]# ./carte.sh node2 8082
  • 访问web页面

http://master:8080


案例:读取hive中的emp表,根据id进行排序,并将结果输出到hdfs上

注意:因为涉及到hive和hbase的读写,需要修改相关配置文件。

修改解压目录下的data-integration\plugins\pentaho-big-data-plugin下的plugin.properties,设置active.hadoop.configuration=hdp26,并将如下配置文件拷贝到data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\hdp26下

  • 创建转换,编辑步骤,填好相关配置

    直接使用trans1

  • 创建子服务器,填写相关配置,跟集群上的配置相同

  • 创建集群schema,选中上一步的几个服务器

  • 对于要在集群上执行的步骤,右键选择集群,选中上一步创建的集群schema

  • 创建Run Configuration,选择集群模式

  • 直接运行,选择集群模式运行

    参数参考:

    -Xmx2048m:设置JVM最大可用内存为2048M。

    -Xms1024m:设置JVM促使内存为1024m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。

    -Xmn2g:设置年轻代大小为2G。整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。

    -Xss128k:设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。

    2、 调整提交(Commit)记录数大小进行优化,Kettle默认Commit数量为:1000,可以根据数据量大小来设置Commitsize:1000~50000

    3、尽量使用数据库连接池;

    4、尽量提高批处理的commit size;

    5、尽量使用缓存,缓存尽量大一些(主要是文本文件和数据流);

    6、Kettle是Java做的,尽量用大一点的内存参数启动Kettle;

    7、可以使用sql来做的一些操作尽量用sql;

    Group , merge , stream lookup,split field这些操作都是比较慢的,想办法避免他们.,能用sql就用sql;

    8、插入大量数据的时候尽量把索引删掉;

    9、尽量避免使用update , delete操作,尤其是update,如果可以把update变成先delete, 后insert;

    10、能使用truncate table的时候,就不要使用deleteall row这种类似sql合理的分区,如果删除操作是基于某一个分区的,就不要使用delete row这种方式(不管是deletesql还是delete步骤),直接把分区drop掉,再重新创建;

    11、尽量缩小输入的数据集的大小(增量更新也是为了这个目的);

    12、尽量使用数据库原生的方式装载文本文件(Oracle的sqlloader, mysql的bulk loader步骤)。