Linux环境下对浏览器用户搜索记录进行大数据处理(自己的大数据大作业附数据集和代码)

这是在linux下运行,先展示结果吧!
Linux环境下对浏览器用户搜索记录进行大数据处理(自己的大数据大作业附数据集和代码)
文件打开如下:
Linux环境下对浏览器用户搜索记录进行大数据处理(自己的大数据大作业附数据集和代码)
可视化如下:
Linux环境下对浏览器用户搜索记录进行大数据处理(自己的大数据大作业附数据集和代码)

摘 要

基于Hadoop下的Map Reduce编程框架数据处理技术,将某浏览器某时段用户的搜索记录通过Map Reduce进行数据处理并提取用户搜索词频的数据。在该方案下,对Map Reduce的工作流程进行一个详细了解,调整好数据处理的环境,再结合HDFS分布集群知识,在Hadoop虚拟操作系统下对构想进行实验,并成功运行得出数据。

引言

大数据时代除了需要解决大规模数据的高效存储问题,还需要解决大规模数据的搞笑处理问题。分布式编程可以大幅度提高程序性能,实现高效的批量数据处理。Map Reduce是一种并行编程模型,用于大规模数据集(大于1TB)的并行运算,它将复杂的、运行与大规模集群上的并行计算过程高度抽象到两个函数:Map函数和Reduce函数。Map Reduce极大地方便了分布式编程工作,编程人员在不会分布式并行编程的情况下,也可以很容易将自己的程序运行在分布式系统上,完成海量数据集的计算。
MapReduce采用“分而治之”策略,一个存储在分布式文件系统中的大规模数据集,会被切分成许多独立的分片(split),这些分片可以被多个Map任务并行处理,MapReduce设计的一个理念就是“计算向数据靠拢”,而不是“数据向计算靠拢”,因为,移动数据需要大量的网络传输开销MapReduce框架采用了Master/Slave架构,包括一个Master和若干个Slave。Master上运行Job Tracker,Slave上运行Task Tracker, Hadoop框架是用Java实现的,但是,MapReduce应用程序则不一定要用Java来写
为了充分展现出MapReduce的数据处理能力,下面将介绍对浏览器用户搜索数据进行词频的统计的过程,在词频的基础上可以进行用户的一个喜好推荐或者浏览器面对广大用户的搜索,给出更切合用户的推荐。

1.MapReduce的工作流程[1]

1.1 Map Reduce的体系结构

MapReduce体系结构主要由四个部分组成,分别是:Client、Job Tracker、Task Tracker以及Task
Linux环境下对浏览器用户搜索记录进行大数据处理(自己的大数据大作业附数据集和代码)

1)Client

用户编写的MapReduce程序通过Client提交到Job Tracker端
用户可通过Client提供的一些接口查看作业运行状态

2)Job Tracker

Job Tracker负责资源监控和作业调度
Job Tracker 监控所有Task Tracker与Job的健康状况,一旦发现失败,就将相应的任务转移到其他节点
Job Tracker 会跟踪任务的执行进度、资源使用量等信息,并将这些信息告诉任务调度器(Task Scheduler),而调度器会在资源出现空闲时,选择合适的任务去使用这些资源

3)Task Tracker

Task Tracker 会周期性地通过“心跳”将本节点上资源的使用情况和任务的运行进度汇报给Job Tracker,同时接收Job Tracker 发送过来的命令并执行相应的操作(如启动新任务、杀死任务等)
Task Tracker 使用“slot”等量划分本节点上的资源量(CPU、内存等)。一个Task 获取到一个slot 后才有机会运行,而Hadoop调度器的作用就是将Task Tracker上的空闲slot分配给Task使用。slot 分为Map slot 和Reduce slot 两种,分别供Map Task 和Reduce Task 使用

4)Task

Task 分为Map Task 和Reduce Task 两种,均由Task Tracker 启动
1.2 Map Reduce工作流程
Linux环境下对浏览器用户搜索记录进行大数据处理(自己的大数据大作业附数据集和代码)
不同的Map任务之间不会进行通信;不同的Reduce任务之间也不会发生任何信息交换,用户不能显式地从一台机器向另一台机器发送消息;所有的数据交换都是通过MapReduce框架自身去实现的。
Linux环境下对浏览器用户搜索记录进行大数据处理(自己的大数据大作业附数据集和代码)
HDFS 以固定大小的block 为基本单位存储数据,而对于MapReduce 而言,其处理单位是split。split 是一个逻辑概念,它只包含一些元数据信息,比如数据起始位置、数据长度、数据所在节点等。它的划分方法完全由用户自己决定。
Linux环境下对浏览器用户搜索记录进行大数据处理(自己的大数据大作业附数据集和代码)

2.实验实施过程

2.1 准备数据

数据源为某浏览器的用户某一时段的搜索记录。以下时部分数据截图:
Linux环境下对浏览器用户搜索记录进行大数据处理(自己的大数据大作业附数据集和代码)
数据说明:浏览器数据,是经过处理后的浏览器搜索引擎生产数据,具有真实性,大数据性,能够较好的满足分布式计算应用开发课程设计的数据要求。
数据的格式: 访问时间\t用户ID\t[查询词]\t该URL在返回结果中的排名\t用户点击的顺序号\t用户点击的URL。
其中,用户ID是根据用户使浏览器访问搜索引擎时的Cookie信息自动赋值,即同一次使用浏览器输入的不同查询对应一个用户ID。

2.2 程序任务和设计思路

Linux环境下对浏览器用户搜索记录进行大数据处理(自己的大数据大作业附数据集和代码)

3.实验结果展示

3.1 将原始数据加载到HDFS平台

采用hdfs命令将数据上传,并用HDFS的Web界面查看
Linux环境下对浏览器用户搜索记录进行大数据处理(自己的大数据大作业附数据集和代码)
HDFS的Web界面查看结果
Linux环境下对浏览器用户搜索记录进行大数据处理(自己的大数据大作业附数据集和代码)

3.2 对加载完成的数据进行MapReduce阶段处理

编译打包代码以及运行程序
Linux环境下对浏览器用户搜索记录进行大数据处理(自己的大数据大作业附数据集和代码)
界面显示运行成功使用两个界面查看结果如下:
Linux环境下对浏览器用户搜索记录进行大数据处理(自己的大数据大作业附数据集和代码)
文件打开如下:
Linux环境下对浏览器用户搜索记录进行大数据处理(自己的大数据大作业附数据集和代码)
可视化如下:
Linux环境下对浏览器用户搜索记录进行大数据处理(自己的大数据大作业附数据集和代码)

4.结论

本文给出了处理浏览器用户某一时段的用户搜索记录的设计方案并实施。该实施结果可以用于很多的应用,比如:对于用户而言,根据用户的搜索喜好,自动推荐商品或者推荐所感兴趣的东西;对于平台而言,拥有的用户的搜索爱好,给网站推出大多数用户感兴趣的东西。总而言之,Map Reduce大数据处理是可操作性的,它可以很好的应用与各种计算问题,也适合初学者挖掘数据。
参考文献
[1]林子雨.大数据技术原理与应用.2版[M]. 北京: 人民邮电出版社, 2007.

附:
数据集sogou.500w.utf8.flt
运行完整代码SougoCount.java

上一篇:JavaScript(JS) array.reduce(callback[, initialValue])


下一篇:16.JavaScript filter、map、reduce高级函数