/mymr

分布式URL分析计算框架

Primary LanguageJava

分布式URL分析计算框架

本项目是一个分布式计算框架,用于分析网站的URL访问频率,并根据配置文件启动master和slave进程,提供Thrift服务以计算URL访问频率的Top N。以下是项目的详细信息和使用指南。

重要提醒

启动脚本:要进入到bin目录,再一键启动startMR.sh脚本,否则会报错 。找不到输出和输出目录。

作业考核点完成情况

以下是作业考核点的完成情况总结(4、11、12填写具体值,其他都填是或否):

序号 考核点 完成情况
1 本机一键启动服务
2 分布式环境下的一键启动
3 根据配置参数输出正确计算结果
4 实现的 FileFormat 接口类 UnsplitFileFormat
5 FileFormat 实现类中的 isSplitable 返回 true
6 正确输出 shuffle 文件及其路径
7 shuffle 文件格式
8 Map 任务是否流式读取文件
9 Reduce 任务是否流式读取 shuffle 文件
10 资源不足时,调度是否正常阻塞等待
11 执行的 map 任务数量 2
12 执行的 reduce 任务数量 2
13 Master/Driver 是否参与实际计算
14 结果文件是否采用 avro 格式存储
15 是否提供了 Thrift 服务功能
16 Thrift 服务接口是否实现完整并能返回正确结果

背景

随着互联网的发展,网站和应用的流量呈指数级增长,对于企业和各类平台来说,了解用户的访问习惯和常访问的URL变得至关重要。传统的单机计算方法已无法处理如此庞大的访问日志数据,因此需要一个分布式计算框架来解决这个问题。

功能

本框架实现了以下功能:

  1. 启动服务:根据配置文件启动master进程和一定数量的slave进程。
  2. 计算URL访问频率TOP N:根据配置进行URL访问频率的计算,输出Top N的结果。
  3. Thrift服务:提供Thrift服务接口,允许外部调用计算URL访问频率TOP N的功能。
  4. Shuffle数据处理:实现了Shuffle数据的读写功能,用于在Map和Reduce任务之间传递数据。

启动指南

  1. 将配置文件(master.conf、slave.conf、urltopn.conf)放置在bin目录下。
  2. 执行startMR.sh脚本,启动分布式计算框架及其相关服务。

打包规范

使用mvn clean package命令打包,输出文件为mymr-1.0.jar,包含所有项目依赖。

配置文件

配置文件放置在bin目录下,包括:

  • master.conf:配置master进程的相关参数。
  • slave.conf:配置slave进程的相关参数。
  • urltopn.conf:配置URL访问频率计算的相关参数。

Thrift服务

基于提供的Thrift IDL文件,实现了以下Thrift服务接口:

  • submitApp:提交计算任务。
  • getAppStatus:获取计算任务的状态。
  • getTopNAppResult:获取计算结果的Top N。

输入样例

示例的输入日志文件包含了不同的URL访问记录,IP地址、时间戳、方法、URL和状态。如:

192.168.0.1 - [10/Aug/2023:13:55:36 +0000] GET http://example.com/page1 200
192.168.0.2 - [10/Aug/2023:13:56:37 +0000] GET http://example.com/page2 200
...

输出结果样例

根据输入样例,框架会计算URL的访问频率,并输出Top N的结果。如:

http://example.com/page4    4 
http://example.com/page3    2
http://example.com/page2    2

加分项和扣分项

在实现框架功能的基础上,加分项包括分布式部署启动、文件切分、Kyro序列化、流式文件读取等。而Shuffle数据处理是一个扣分项。

注意事项

本项目在Demo代码中标记了需要补充的实现,但考核的重点是Top N的计算而不是Demo中的Word Count,希望同学们能够理解并正确实现Top N计算逻辑。

作业提交

请将作业提交到以自己邮箱前缀命名的仓库中,例如学生张三的提交地址为:

http://120.92.88.48/zhangsan/mymr.git

请根据项目要求和描述,完成作业并按要求提交。