Kettle5.4利用mapreduce格式化日志(预处理)
Kettle5.4格式化日志(预处理)实验环境及配置一、任务说明二、设计转换和作业三、配置转换和作业四、运行转换和作业五、查看结果实验环境及配置版本:hadoop-2.7.3模式:伪分布式网络模式:NAT虚拟机ip:192.168.215.135(读者根据自己得实际情况修改)虚拟机主机名称:hadoop001虚拟机内存:4Gkettle版本5.4(由于虚拟机内存有限,尽量使用低版本的)kettle
实验环境及配置
- 版本:hadoop-2.7.3
- 模式:伪分布式
- 网络模式:NAT
- 虚拟机ip:192.168.215.135(读者根据自己得实际情况修改)
- 虚拟机主机名称:hadoop001
- 虚拟机内存:4G
kettle版本5.4
(由于虚拟机内存有限,尽量使用低版本的)- kettle环境安装及配置(参考之前的博客)
一、任务说明
- 测试数据:电商日志weblogs_rebuild
- 要求:将weblogs_rebuild中的数据进行格式化,格式化成如下内容:
- 原始格式:
323.81.303.680 - - [25/Oct/2011:01:41:00 -0500] "GET /download/download6.zip HTTP/1.1" 200 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.19) Gecko/2010031422 Firefox/3.0.19"
- 格式化(预处理)格式:
323.81.303.680 25/Oct/2011:01:41:00 -0500 25 Oct 10 2011 01 41 00 -0500 GET /download/download6.zip 200 0 - Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.19) Gecko/2010031422 Firefox/3.0.19
- 格式化(预处理)格式对应的字段:
client_ip full_request_date day month year hour minute second timezone http_verb uri http_status_code bytes_returned referrer user_agent firefox_gecko_version firefox_gecko_version_major firefox_gecko_version_minor firefox_gecko_version_a firefox_gecko_version_b
- 最终需要目标字段,如下:
client_ip full_request_date day month month_num year hour minute second timezone http_verb uri http_status_code bytes_returned referrer user_agent
- 原始格式:
二、设计转换和作业
- 设计mapper的转换
- 设计Job作业
三、配置转换和作业
-
配置mapper转换
-
上图所示中的 "Input"指的是左边菜单栏中Big Data菜单下的MapReduce Input 组件,双击进行编辑:
-
上图所示中的【正则表达式】 指的是左边菜单栏中【脚本】菜单下的【正则表达式】组件,双击进行编辑:注意: 其中的"步骤名称":可以任意取名的,按照如图进行配置
上图中的【正则表达式】部分的内容如下:^([^\s]{7,15})\s # client_ip -\s # unused IDENT field -\s # unused USER field \[((\d{2})/(\w{3})/(\d{4}) # request date dd/MMM/yyyy :(\d{2}):(\d{2}):(\d{2})\s([-+ ]\d{4}))\] # request time :HH:mm:ss -0800 \s"(GET|POST)\s # HTTP verb ([^\s]*) # HTTP URI \sHTTP/1\.[01]"\s # HTTP version (\d{3})\s # HTTP status code (\d+)\s # bytes returned "([^"]+)"\s # referrer field " # User agent parsing, always quoted. "? # Sometimes if the user spoofs the user_agent, they incorrectly quote it. ( # The UA string [^"]*? # Uninteresting bits (?: (?: rv: # Beginning of the gecko engine version token (?=[^;)]{3,15}[;)]) # ensure version string size ( # Whole gecko version (\d{1,2}) # version_component_major \.(\d{1,2}[^.;)]{0,8}) # version_component_minor (?:\.(\d{1,2}[^.;)]{0,8}))? # version_component_a (?:\.(\d{1,2}[^.;)]{0,8}))? # version_component_b ) [^"]* # More uninteresting bits ) | [^"]* # More uninteresting bits ) ) # End of UA string "? "
为上图中的【捕获组(Capture Group)】字段新增新的【字段】,字段类型都为【String】类型,具体字段如下所示:
client_ip full_request_date day month year hour minute second timezone http_verb uri http_status_code bytes_returned referrer user_agent firefox_gecko_version firefox_gecko_version_major firefox_gecko_version_minor firefox_gecko_version_a firefox_gecko_version_b
部分截图如下:
切换到【正则表达式】的【内容】部分,按照如下截图进行配置,勾选【在表达式中允许有空格和注释】
-
设计图中所示的【过滤记录】组件属于【流程】中的组件,根据条件进行过滤,如判断从前面步骤传递过来的字段是否存在或者不为空或者字段数量和类型是符合要求的则走【值映射】,否则走【空操作】,具体配置如下图:
-
【值映射】组件配置,是将前面步骤传递过来的月份(month)字段做映射,将其数字化,如下所示:
-
【空操作】组件,无需做任何配置,只需将组件图标拖拽至对应的位置即可;
-
上图所示中的"利用Janino计算Java表达式" 指的是左边菜单栏中"脚本"菜单下的“利用Janino计算Java表达式” 组件,双击进行编辑:
其中【Java expression】中的内容为最终需要输出格式,具体内容如下:client_ip + '\t' + full_request_date + '\t' + day + '\t' + month + '\t' + month_num + '\t' + year + '\t' + hour + '\t' + minute + '\t' + second + '\t' + timezone + '\t' + http_verb + '\t' + uri + '\t' + http_status_code + '\t' + bytes_returned + '\t' + referrer + '\t' + user_agent
-
上图所示中的【MapReduce Output】组件配置如下:
-
-
配置Job作业
- 上图所示中的"START" 指的是左边菜单栏中"通用"菜单下的START组件,如下所示:
- 上图所示中的"Pentaho MapReduce" 指的是左边菜单栏中Big Data菜单下的Pentaho MapReduce组件,双击进行编辑:
-
【A】配置Hadoop Cluster:
特别注意: 如下配置,如果在Windows上(C:\Windows\System32\drivers\etc\hosts)配置了虚拟机主机名称和虚拟机的IP映射关系,则如下配置写IP地址或者主机名称都可以
-
【B】配置Mapper,把之前新建的mapper的转换放进来
-
【C】配置Job Setup
其中InputFormat类为:org.apache.hadoop.mapred.TextInputFormat
其中OutputFormat类为:org.apache.hadoop.mapred.TextOutputFormat
-
【D】配置Cluster,选择自己新建的Hadoop Cluster,设置Reduce Task为0,勾选【Enable Blocking】
-
- 上图所示中的"START" 指的是左边菜单栏中"通用"菜单下的START组件,如下所示:
四、运行转换和作业
- 前提: 运行前,务必确保hadoop集群已经启动,并且已经下载好将【测试数据】并上传至HDFS上/user/root/raw目录下
- 选择job任务,切换到job视图后,点击kettle工作区顶部的启动按钮,在弹窗中,点击执行按钮
- 运行
五、查看结果
-
在kettle控制台查看结果:
-
在Hadoop上查看结果,即查看Yarn容器上是否接收到该任务:
等待执行结束!
-
成功后的查看结果: 如成功,则可以查看下HDFS上的结果:
执行:hdfs dfs -cat /user/root/mr/log/part-00000|head
如不成功,请查看报错日志,解决错误后,请在继续上述步骤
我的成功了,可以喝杯咖啡去咯祝大家好运!!!!!
更多推荐
所有评论(0)