Kettle5.4实现MapReduce入门程序WordCount

实验环境及配置


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
    在这里插入图片描述
    如不成功,请查看报错日志,解决错误后,请在继续上述步骤
    我的成功了,可以喝杯咖啡去咯祝大家好运!!!!!
  • 21
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

若兰幽竹

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

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

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

打赏作者

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

抵扣说明:

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

余额充值