Kettle5.4实现MapReduce入门程序WordCount
实验环境及配置
1. Hadoop环境
- 版本:hadoop-2.7.3
- 模式:伪分布式
- 网络模式:NAT
- 虚拟机ip:192.168.215.135(读者根据自己得实际情况修改)
- 虚拟机主机名称:hadoop001
- 虚拟机内存:4G
2. kettle环境安装及配置(重要
)
-
下载Kettle,本文实验用的版本为
pdi-ce-5.4.0.1-130
1、可以从http://kettle.pentaho.org下载pdi-ce-5.4.0.1-130版本的Kettle软件 -
解压到Windows某个目录下,如E:\Tools\data-integration
-
将Hadoop伪分布式四个配置文件复制到Kettle指导目录下,如D:\data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\cdh53,如下所示:
-
修改
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>
-
修改
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.
-
配置config.properties(在如D:\data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\cdh53路径下),在文件末尾添加如下信息,表示无需授权:
# add by user authentication.superuser.provider=NO_AUTH
-
配置plugin.properties(在如D:\data-integration\plugins\pentaho-big-data-plugin路径下),修改内容所下所示:
active.hadoop.configuration=cdh53
其中cdh53对应hadoop-configurations目录下中子目录名称,即
-
配置修改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
二、设计转换和作业
- 设计mapper的转换
- 设计reducer转换
- 设计Job作业
三、配置转换和作业
-
配置mapper转换
-
上图所示中的 "Input"指的是左边菜单栏中Big Data菜单下的MapReduce Input 组件,双击进行编辑:
-
上图所示中的"按照空格进行分词" 指的是左边菜单栏中“转换”菜单下的“列拆分为多行”组件,双击进行编辑:注意: 其中的"字段名称":可以任意取名的,按照如图进行配置
-
上图所示中的"给每个单词计数为1" 指的是左边菜单栏中"转换"菜单下的“增加常量” 组件,双击进行编辑:
-
上图所示中的"ouput" 指的是左边菜单栏中Big Data菜单下的MapReduce Output 组件,双击进行编辑:
-
-
配置reducer转换
-
根据设计图,图中的 "Input"指的是左边菜单栏中Big Data菜单下的MapReduce Input 组件,双击进行编辑:
-
上图所示中的"在内存进行分组" 指的是左边菜单栏中"统计"菜单下的“在内存进行分组” 组件,双击进行编辑:
-
上图所示中的"ouput" 指的是左边菜单栏中Big Data菜单下的MapReduce Output 组件,双击进行编辑:
-
-
配置Job作业
- 上图所示中的"START" 指的是左边菜单栏中"通用"菜单下的START组件,如下所示:
- 上图所示中的"Pentaho MapReduce" 指的是左边菜单栏中Big Data菜单下的Pentaho MapReduce组件,双击进行编辑:
【A】配置Hadoop Cluster:
特别注意: 如下配置,如果在Windows上(C:\Windows\System32\drivers\etc\hosts)配置了虚拟机主机名称和虚拟机的IP映射关系,则如下配置写IP地址或者主机名称都可以
- 上图所示中的"START" 指的是左边菜单栏中"通用"菜单下的START组件,如下所示:
【B】配置Mapper,把之前新建的mapper的转换放进来
【C】配置reducer,把之前新建的reducer的转换放进来
【D】配置Job Setup
【E】配置Cluster,选择自己新建的Hadoop Cluster即可
四、运行转换和作业
- 前提: 运行前,务必确保hadoop集群已经启动,并且HDFS上input目录下有文件,我的文件是testData.txt,文件内容就是前文所述的【测试数据】
- 选择job任务,切换到job视图后,点击kettle工作区顶部的启动按钮,在弹窗中,点击执行按钮
- 运行
五、查看结果
- 在kettle控制台查看结果:
- 在Hadoop上查看结果,即查看Yarn容器上是否接收到该任务:
等待执行结束! - 成功后的查看结果:
如成功,则可以查看下HDFS上的结果:
执行: hdfs dfs -cat /kettle/wc/part-00000
如不成功,请查看报错日志,解决错误后,请在继续上述步骤
我的成功了,可以喝杯咖啡去咯祝大家好运!!!!!