🗒️MapReduce提取一条日志文件中的IP,并计算出访问的次数
2018-5-2
| 2024-2-6
0  |  Read Time 0 min
type
status
date
slug
summary
tags
category
icon
password
这个和我 上篇博客中的代码差不多的,都是用的一个框架,因为原理都是差不多,所以稍微改一下算法就好了。 部分源数据如下:
我去研究了一下日志文件,其实是有特定格式的:
字段
说明
date
发出请求时候的日期
time
发出请求时候的时间,注意:默认情况下这个时间是格林威治时间,比我们的北京时间晚8个小时,下面有说明
c-ip
客户端IP地址
cs-username
用户名,访问服务器的已经过验证用户的名称,匿名用户用连接符-表示
s-sitename
服务名,记录当记录事件运行于客户端上的Internet服务的名称和实例的编号
s-computername
服务器的名称
s-ip
服务器的IP地址
s-port
为服务配置的服务器端口号
cs-method
请求中使用的HTTP方法,GET/POST
cs-uri-stem
URI资源,记录做为操作目标的统一资源标识符(URI),即访问的页面文件
cs-uri-query
URI查询,记录客户尝试执行的查询,只有动态页面需要URI查询,如果有则记录,没有则以连接符-表示,即访问网址的附带参数
sc-status
协议状态,记录HTTP状态代码,200表示成功,403表示没有权限,404表示找不到该页面,具体说明在下面
sc-substatus
协议子状态,记录HTTP子状态代码
sc-win32-status
Win32状态,记录Windows状态代码
sc-bytes
服务器发送的字节数
cs-bytes
服务器接受的字节数
time-taken
记录操作所花费的时间,单位是毫秒
cs-version
记录客户端使用的协议版本,HTTP或者FTP
cs-host
记录主机头名称,没有的话以连接符-表示。提醒大家注意:为网站配置的主机名可能会以不同的方式出现在日志文件中,原因是HTTP.sys使用Punycode编码格式来记录主机名
cs(User-Agent)
用户代理,客户端浏览器、操作系统等情况。
cs(Cookie)
记录发送或者接受的Cookies内容,没有的话则以连接符-表示。
cs(Referer)
引用站点,即访问来源
所以我就是想把他们切分为一个字段一个字段的,然后想要哪个字段就提取哪个就行了。 直接用框架就好了,然后修改一下,我的想法是,修改mapper的传递的值就好了。 首先是建立三个class 先来job
然后是mapper的class
我的mapper类是用正则提取出来,IP的位置是1,所以我就输出1,同理可以提取其他信息。 接下来reducer类,这个就是直接用,没有修改地方的
然后打包成jar包
notion image
把需要计算的文件上传至hdfs文件系统
notion image
然后就可以开始计算了 然后出现如下信息则是成功了
notion image
注意:输出路径不能重复,还有job所在jar包在的位置都不能出错
成功后输出的文件的位置,输出文件就放在part-r-00000里面
notion image
notion image
因为我的总数据有点大
notion image
嗯就是这样计算出来了 建议把文件下载下来然后做一个数据可视化,那就非常好看的了
  • 大数据
  • MapReduce处理通过采集的气象数据分析每年的最高温度CentOS7部署Hadoop2.7.5全分布式群集
    Loading...
    Catalog