Kettle5.4实现MapReduce入门程序WordCount

本文详述了如何在Kettle5.4中配置和运行MapReduce的WordCount程序。首先介绍了实验环境,包括Hadoop的伪分布式配置和Kettle的安装。接着,重点讲述了Kettle的配置,包括Hadoop配置文件的修改和Kettle插件的相关设置。然后,设计并配置了mapper和reducer转换,以及Job作业。最后,详细说明了运行转换和作业的步骤,以及如何查看和解析结果。
摘要由CSDN通过智能技术生成

实验环境及配置


1. Hadoop环境

  • 版本:hadoop-2.7.3
  • 模式:伪分布式
  • 网络模式:NAT
  • 虚拟机ip:192.168.215.135(读者根据自己得实际情况修改)
  • 虚拟机主机名称:hadoop001
  • 虚拟机内存:4G

2. kettle环境安装及配置(重要

  1. 下载Kettle,本文实验用的版本为pdi-ce-5.4.0.1-130
    1、可以从http://kettle.pentaho.org下载pdi-ce-5.4.0.1-130版本的Kettle软件

  2. 解压到Windows某个目录下,如E:\Tools\data-integration

  3. 将Hadoop伪分布式四个配置文件复制到Kettle指导目录下,如D:\data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\cdh53,如下所示:
    在这里插入图片描述

  4. 修改 mapred-site.xml,修改成如下内容:其中mapreduce.app-submission.cross-platform属性必须添加,否则kettle无法从Windows平台提交Job到虚拟机中的Hadoop集群。(只需在kettle端修改即可,虚拟机Hadoop集群不需要修改)

    <configuration>
    	<property>
    		<name>mapreduce.framework.name</name>
    		<value>yarn</value>
    	</property>
    	<!-- 如果在windows上提交任务需要增加mapreduce.app-submission.cross-platform配置 -->
    	<property>
    		<name>mapreduce.app-submission.cross-platform</name>
    		<value>true</value>
    	</property>
    	    <!-- 历史服务器端地址 -->
        <property>
            <name>mapreduce.jobhistory.address</name>
            <value>hadoop001:10020</value>
        </property>
        <!-- 历史服务器 web 端地址 -->
        <property>
            <name>mapreduce.jobhistory.webapp.address</name>
            <value>hadoop001:19888</value>
        </property>
    </configuration>
    
  5. 修改 yarn-site.xml,修改成如下内容:(只需在kettle端修改即可,虚拟机Hadoop集群不需要修改)

    <configuration>
     <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>hadoop001</value>
        </property>
         <property>
            <name>yarn.nodemanager.hostname</name>
            <value>hadoop001</value>
        </property>
         <property>
            <name>yarn.resourcemanager.address</name>
            <value>hadoop001:8032</value>
        </property>
    	<!-- 由于虚拟机内存有限,需要设置NodeManager内存为2G或者更小些,但不要小于1G -->
         <property>
            <name>yarn.nodemanager.resource.memory-mb</name>
            <value>2048</value>
        </property>
    	<!-- 由于Hadoop默认该配置为1024M,由于虚拟机内存有限,故设置最小分配内存为256M -->
        <property>
            <name>yarn.scheduler.minimum-allocation-mb</name>
            <value>256</value>
        </property>
    	<!--该属性为容器设置内存限制时,虚拟内存与物理内存之间的比率。
    		容器分配以物理内存表示,允许虚拟内存使用以这个比例超过这个分配。
    		Ratio between virtual memory to physical memory when setting memory limits for containers. Container allocations are expressed in terms of physical memory, and virtual memory usage is allowed to exceed this allocation by this ratio.
    		默认是2.1
    	-->
        <property>
           <name>yarn.nodemanager.vmem-pmem-ratio</name>
           <value>6</value>
        </property>
        <!-- mapreduce_shuffle -->
         <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>    
        <!-- 日志聚集功能使能 -->
        <property>
            <name>yarn.log-aggregation-enable</name>
            <value>true</value>
        </property>
        <!-- 日志保留时间设置7天 -->
        <property>
            <name>yarn.log-aggregation.retain-seconds</name>
            <value>604800</value>
        </property>
    
    </configuration>
    

    注意在当前的虚拟机配置环境下,其中【yarn.scheduler.minimum-allocation-mb】属性的值必须设置成小于其默认的值,而【yarn.nodemanager.vmem-pmem-ratio】属性的值可以设置成大于其默认的值(2.1)。 如果不设置,则会出现如下的问题:

    Diagnostics: Container [pid=23552,containerID=container_1623207121577_0010_02_000001] is running beyond virtual memory limits. Current usagecal memory used; 2.8 GB of 2.1 GB virtual memory used. Killing container.
    

    在这里插入图片描述

  6. 配置config.properties(在如D:\data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\cdh53路径下),在文件末尾添加如下信息,表示无需授权:

    # add by user
    authentication.superuser.provider=NO_AUTH
    
  7. 配置plugin.properties(在如D:\data-integration\plugins\pentaho-big-data-plugin路径下),修改内容所下所示:

    active.hadoop.configuration=cdh53
    

    其中cdh53对应hadoop-configurations目录下中子目录名称,即
    在这里插入图片描述

  8. 配置修改Spoon.bat,添加如下信息,让当前的window具备hadoop环境的管理员权限(我使用root用户安装hadoop),在末尾添加:

    REM ***************
    REM ** Let window User Become root for hadoop...    **
    REM ***************
    set HADOOP_USER_NAME=root
    

    至此,已经完成了Kettle配置!

一、任务说明


  • 利用Kettle设计实现WordCount的MapReduce程序,完成对文本词频的统计。
  • 测试数据:
    I love Guiyang
    I love Guizhou
    Guiyang is the capital of Guizhu
    

二、设计转换和作业


  1. 设计mapper的转换
    在这里插入图片描述
  2. 设计reducer转换
    在这里插入图片描述
  3. 设计Job作业
    在这里插入图片描述

三、配置转换和作业


  1. 配置mapper转换

    1. 上图所示中的 "Input"指的是左边菜单栏中Big Data菜单下的MapReduce Input 组件,双击进行编辑:
      在这里插入图片描述

    2. 上图所示中的"按照空格进行分词" 指的是左边菜单栏中“转换”菜单下的“列拆分为多行”组件,双击进行编辑:注意: 其中的"字段名称":可以任意取名的,按照如图进行配置
      在这里插入图片描述

    3. 上图所示中的"给每个单词计数为1" 指的是左边菜单栏中"转换"菜单下的“增加常量” 组件,双击进行编辑:
      在这里插入图片描述

    4. 上图所示中的"ouput" 指的是左边菜单栏中Big Data菜单下的MapReduce Output 组件,双击进行编辑:
      在这里插入图片描述

  2. 配置reducer转换

    1. 根据设计图,图中的 "Input"指的是左边菜单栏中Big Data菜单下的MapReduce Input 组件,双击进行编辑:
      在这里插入图片描述

    2. 上图所示中的"在内存进行分组" 指的是左边菜单栏中"统计"菜单下的“在内存进行分组” 组件,双击进行编辑:
      在这里插入图片描述

    3. 上图所示中的"ouput" 指的是左边菜单栏中Big Data菜单下的MapReduce Output 组件,双击进行编辑:
      在这里插入图片描述

  3. 配置Job作业

    1. 上图所示中的"START" 指的是左边菜单栏中"通用"菜单下的START组件,如下所示:
      在这里插入图片描述
    2. 上图所示中的"Pentaho MapReduce" 指的是左边菜单栏中Big Data菜单下的Pentaho MapReduce组件,双击进行编辑:
      【A】配置Hadoop Cluster:
      在这里插入图片描述
      特别注意: 如下配置,如果在Windows上(C:\Windows\System32\drivers\etc\hosts)配置了虚拟机主机名称和虚拟机的IP映射关系,则如下配置写IP地址或者主机名称都可以
      在这里插入图片描述

【B】配置Mapper,把之前新建的mapper的转换放进来
在这里插入图片描述
【C】配置reducer,把之前新建的reducer的转换放进来
在这里插入图片描述
【D】配置Job Setup
在这里插入图片描述
【E】配置Cluster,选择自己新建的Hadoop Cluster即可
在这里插入图片描述

四、运行转换和作业


  1. 前提: 运行前,务必确保hadoop集群已经启动,并且HDFS上input目录下有文件,我的文件是testData.txt,文件内容就是前文所述的【测试数据】
  2. 选择job任务,切换到job视图后,点击kettle工作区顶部的启动按钮,在弹窗中,点击执行按钮
  3. 运行
    在这里插入图片描述

五、查看结果


  1. 在kettle控制台查看结果:
    在这里插入图片描述
  2. 在Hadoop上查看结果,即查看Yarn容器上是否接收到该任务:
    在这里插入图片描述
    等待执行结束!
  3. 成功后的查看结果:
    在这里插入图片描述
    如成功,则可以查看下HDFS上的结果:
    执行: hdfs dfs -cat /kettle/wc/part-00000
    在这里插入图片描述
    如不成功,请查看报错日志,解决错误后,请在继续上述步骤
    我的成功了,可以喝杯咖啡去咯祝大家好运!!!!!
### 回答1: Kettle 5.4是一种基于Java的开源ETL工具,用于数据集成、转换和加载。SQL驱动是指该版本的Kettle支持的数据库访问驱动程序。在Kettle中,SQL驱动程序是用于在ETL过程中与各种关系型数据库进行交互的组件。 Kettle 5.4支持多种SQL驱动程序,包括MySQL、Oracle、DB2等。不同的数据库需要使用相应的驱动程序来连接和操作。这些驱动程序可以通过Kettle的图形界面进行配置和管理。 通过配置SQL驱动程序,我们可以在Kettle中创建数据库连接,执行SQL语句,从数据库中读取数据,或者将数据写入数据库中。SQL驱动程序还提供了一些额外的功能,如连接池管理、事务控制等,以提高数据库的性能和可靠性。 Kettle 5.4的SQL驱动程序是基于Java的,因此在配置之前,我们需要确保已经安装了适当版本的Java运行时环境。在配置驱动程序时,我们需要提供数据库的连接字符串、用户名、密码等信息,以便Kettle能够正确连接到数据库并执行相应的操作。 总而言之,Kettle 5.4的SQL驱动程序是支持不同关系型数据库的组件,它允许我们在ETL过程中与数据库进行交互,并执行各种操作,如读取、写入数据、执行SQL语句等。通过配置适当的SQL驱动程序,我们可以实现灵活、高效的数据集成和处理。 ### 回答2: kettle 5.4 是一种流行的开源ETL(Extract, Transform, Load)工具,用于数据集成和数据处理。它提供了丰富的功能和工具,帮助用户在不同的数据库之间实现数据的抽取、转换和加载。 在 kettle 5.4 中,SQL 驱动是指用于连接和操作数据库的驱动程序。SQL 驱动程序允许 kettle 5.4 与不同类型的数据库进行通信和交互,执行 SQL 语句并获取数据。SQL 驱动程序提供了与数据库的连接和数据操作的功能,是 kettle 5.4 能够实现数据抽取、转换和加载的重要组成部分。 SQL 驱动程序kettle 5.4 中被用于连接不同类型的数据库,例如 MySQL、Oracle、SQL Server 等。用户需要根据所需连接的数据库类型选择相应的 SQL 驱动程序,并在 kettle 5.4 中进行配置。配置完成后,kettle 5.4 就可以通过 SQL 驱动程序与指定数据库进行通信,并执行相应的数据操作。 总之,kettle 5.4 SQL 驱动是 kettle 5.4 中的一个关键组件,它使得 kettle 5.4 能够连接和操作不同类型的数据库,实现数据的抽取、转换和加载。通过选择合适的 SQL 驱动程序并进行配置,用户可以轻松地使用 kettle 5.4 进行数据处理和集成。 ### 回答3: Kettle5.4是一个开源的ETL工具,用于进行数据集成和数据转换。SQL驱动是指Kettle5.4中用于连接和操作数据库的驱动程序Kettle使用SQL驱动来支持与各种关系型数据库的连接和数据操作。SQL驱动是通过Java提供的JDBC(Java Database Connectivity)技术实现的。JDBC是一种通用的数据库访问技术,它允许Java应用程序与不同的数据库进行交互和操作。 Kettle5.4中的SQL驱动具有以下功能和特点: 1. 数据库连接:SQL驱动提供了与各种关系型数据库(如MySQL、Oracle、SQL Server等)建立连接的功能。可以使用驱动来指定数据库的连接地址、用户名、密码等信息进行连接。 2. 数据抽取与加载:SQL驱动支持从数据库中抽取数据,并将数据加载到指定的目标数据库中。可以执行各种SQL语句(如SELECT、INSERT、UPDATE等)来实现数据的读取和写入。 3. 数据转换与转换:SQL驱动可以通过执行数据库的查询语句来对数据进行转换和操作。可以编写自定义的SQL查询,利用数据库的聚合函数、表连接等操作来实现数据的转换和整合。 4. 批量处理:SQL驱动支持批量处理数据,可以提高数据操作的效率。通过批量提交多条SQL语句,可以减少与数据库的通信次数,提升数据处理的性能。 5. 事务管理:SQL驱动通过支持事务管理来确保数据操作的一致性和完整性。可以通过设置事务的提交和回滚,来保证一组数据操作的原子性。 总的来说,Kettle5.4中的SQL驱动提供了与关系型数据库的连接和操作的功能,通过它可以实现数据的抽取、加载、转换和整合等操作,同时也支持事务管理和批量处理,为数据集成和转换提供了强大的支持。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

若兰幽竹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值