博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Kettle5.4利用mapreduce格式化日志(预处理)
阅读量:4149 次
发布时间:2019-05-25

本文共 4635 字,大约阅读时间需要 15 分钟。

Kettle5.4格式化日志(预处理)

实验环境及配置


  • 版本:hadoop-2.7.3
  • 模式:伪分布式
  • 网络模式:NAT
  • 虚拟机ip:192.168.215.135(读者根据自己得实际情况修改)
  • 虚拟机主机名称:hadoop001
  • 虚拟机内存:4G
  • kettle版本5.4(由于虚拟机内存有限,尽量使用低版本的)
  • kettle环境安装及配置(参考之前的博客)

一、任务说明


  • 测试数据:
  • 要求:将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_ipfull_request_datedaymonthyearhourminutesecondtimezonehttp_verburihttp_status_codebytes_returnedreferreruser_agentfirefox_gecko_versionfirefox_gecko_version_majorfirefox_gecko_version_minorfirefox_gecko_version_afirefox_gecko_version_b
    • 最终需要目标字段,如下:
      client_ipfull_request_datedaymonthmonth_numyearhourminutesecondtimezonehttp_verburihttp_status_codebytes_returnedreferreruser_agent

二、设计转换和作业


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

三、配置转换和作业


  1. 配置mapper转换

    1. 上图所示中的 "Input"指的是左边菜单栏中Big Data菜单下的MapReduce Input 组件,双击进行编辑:

      在这里插入图片描述

    2. 上图所示中的【正则表达式】 指的是左边菜单栏中【脚本】菜单下的【正则表达式】组件,双击进行编辑:注意: 其中的"步骤名称":可以任意取名的,按照如图进行配置

      在这里插入图片描述
      上图中的【正则表达式】部分的内容如下:

      ^([^\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_ipfull_request_datedaymonthyearhourminutesecondtimezonehttp_verburihttp_status_codebytes_returnedreferreruser_agentfirefox_gecko_versionfirefox_gecko_version_majorfirefox_gecko_version_minorfirefox_gecko_version_afirefox_gecko_version_b

      部分截图如下:

      在这里插入图片描述
      切换到【正则表达式】的【内容】部分,按照如下截图进行配置,勾选【在表达式中允许有空格和注释】
      在这里插入图片描述

    3. 设计图中所示的【过滤记录】组件属于【流程】中的组件,根据条件进行过滤,如判断从前面步骤传递过来的字段是否存在或者不为空或者字段数量和类型是符合要求的则走【值映射】,否则走【空操作】,具体配置如下图:

      在这里插入图片描述

    4. 【值映射】组件配置,是将前面步骤传递过来的月份(month)字段做映射,将其数字化,如下所示:

      在这里插入图片描述

    5. 【空操作】组件,无需做任何配置,只需将组件图标拖拽至对应的位置即可;

    6. 上图所示中的"利用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
    7. 上图所示中的【MapReduce Output】组件配置如下:

      在这里插入图片描述

  2. 配置Job作业

    1. 上图所示中的"START" 指的是左边菜单栏中"通用"菜单下的START组件,如下所示:
      在这里插入图片描述
    2. 上图所示中的"Pentaho MapReduce" 指的是左边菜单栏中Big Data菜单下的Pentaho MapReduce组件,双击进行编辑:
      1. 【A】配置Hadoop Cluster:

        在这里插入图片描述

        特别注意: 如下配置,如果在Windows上(C:\Windows\System32\drivers\etc\hosts)配置了虚拟机主机名称和虚拟机的IP映射关系,则如下配置写IP地址或者主机名称都可以

        在这里插入图片描述

      2. 【B】配置Mapper,把之前新建的mapper的转换放进来

        在这里插入图片描述

      3. 【C】配置Job Setup

        在这里插入图片描述
        其中InputFormat类为:org.apache.hadoop.mapred.TextInputFormat
        其中OutputFormat类为:org.apache.hadoop.mapred.TextOutputFormat

      4. 【D】配置Cluster,选择自己新建的Hadoop Cluster,设置Reduce Task为0,勾选【Enable Blocking】

        在这里插入图片描述

四、运行转换和作业


  1. 前提: 运行前,务必确保hadoop集群已经启动,并且已经下载好将【测试数据】并上传至HDFS上/user/root/raw目录下
  2. 选择job任务,切换到job视图后,点击kettle工作区顶部的启动按钮,在弹窗中,点击执行按钮
  3. 运行
    在这里插入图片描述

五、查看结果


  1. 在kettle控制台查看结果:

    在这里插入图片描述

    在这里插入图片描述

  2. 在Hadoop上查看结果,即查看Yarn容器上是否接收到该任务:

    在这里插入图片描述

    等待执行结束!

  3. 成功后的查看结果: 如成功,则可以查看下HDFS上的结果:

    执行: hdfs dfs -cat /user/root/mr/log/part-00000|head
    在这里插入图片描述

    如不成功,请查看报错日志,解决错误后,请在继续上述步骤

    我的成功了,可以喝杯咖啡去咯祝大家好运!!!!!

转载地址:http://wupti.baihongyu.com/

你可能感兴趣的文章
2009年33所高校被暂停或被限制招生
查看>>
GlassFish 部署及应用入门
查看>>
X-code7 beta error: warning: Is a directory
查看>>
Error: An App ID with identifier "*****" is not avaliable. Please enter a different string.
查看>>
3.5 YOLO9000: Better,Faster,Stronger(YOLO9000:更好,更快,更强)
查看>>
iOS菜鸟学习--如何避免两个按钮同时响应
查看>>
iOS菜鸟学习—— NSSortDescriptor的使用
查看>>
CORBA links
查看>>
如何使用BBC英语学习频道
查看>>
初识xsd
查看>>
java 设计模式-职责型模式
查看>>
构造型模式
查看>>
svn out of date 无法更新到最新版本
查看>>
java杂记
查看>>
RunTime.getRuntime().exec()
查看>>
Oracle 分组排序函数
查看>>
删除weblogic 域
查看>>
VMware Workstation 14中文破解版下载(附密钥)(笔记)
查看>>
日志框架学习
查看>>
日志框架学习2
查看>>