(1)采集数据。
①进入终端,执行下列shell命令,创建修改flume启动的配置文件flume-filehdfs.conf。
sudo vim/usr/local/flume/flume-file-hdfs.conf
②在flume-file-hdfs.conf配置文件添加如下内容,保存后退出。
其中,用户行为日志文件behavior_log.txt存放在本地/home/simple/data目录下,flume将生成的日志文件behavior_log.txt,上传到HDFS系统中的/user/source文件夹下,文件名保持不变。
③启动hadoop。
④执行下列shell命令,启动flume收集数据,将生成txt的日志文件实时上传到HDFS系统中的/user/source文件夹下。结果如图7-38所示。
1.cd/usr/local/flume/
2.bin/flume-ng agent-c conf/-f job/flume-file-hdfs.con-n a1
图7-38 终端输出结果
⑤进入hdfs的web管理页面,查看是否上传成功,图7-39表明上传成功。
图7-39 hdfs web管理页面
(2)创建项目。
1)在eclipse左侧项目栏空白处,右键点击出现菜单栏,点击new,选择Dynamic Web Project,以创建Dynamic web project项目。如图7-40所示。
图7-40 创建Dynamic web project
2)创建Dynamic web project项目信息,选择项目运行服务器,点击next按钮。如图7-41所示。
图7-41 选择项目运行服务器
3)创建web.xml文件,输入项目名之后,一直默认next,看到下图,勾选选项,创建项目web.xml文件。如图7-42所示。
图7-42 创建web.xml文件
4)创建jsp文件,默认创建在项目的WebContent目录下。如图7-43所示。
图7-43 创建jsp文件
5)输入jsp文件名称,点击按钮Finish,完成文件创建。如图7-44所示。
图7-44 创建jsp文件名称
6)Java文件创建,选中项目Src目录,点击右键,选择new,点击Class。如图7-45所示。
图7-45 创建Class
7)创建类,选择class存放的包,输入Class类名,点击Finish按钮,生成该类对应的java文件,即可在该文件中编码实现类。如图7-46所示。
图7-46 创建Class类名
在该项目中,创建了register.jsp、index.jsp、login.jsp、head.jsp、chars.jsp、filemanage.jsp和dataclear.jsp四个jsp文件。register.jsp实现用户注册页面;login.jsp实现用户登录页面;index.jsp功能主页操作页面;head.jsp引用css和js,以增强代码的重用率;chars.jsp显示数据分析的图表;filemanage.jsp对文件的上下载和删除的操作;dataclear.jsp实现对指定格式的文件数据清洗功能。
8)导入jar包。
为了访问HDFS文件,需要将配置的hadoop中share文件中所有jar包到系统环境中。即Hadoop安装根目录文件下的share文件下所有jar包。
9)项目整体框架。
项目整体框架及解释说明如图7-47所示。
图7-47 项目整体框架
(3)系统Web.XML文件。
(4)用户管理模块。
用户管理模块包括用户注册和用户登录两部分,其具体实现原理与过程参见5.5.3节用户注册与登录实现,此处不再赘述。
(5)文件操作模块。
登录成功后,进入文件操作主界面,如图7-48所示。包括删除、下载和数据清洗三个功能。数据清洗模块将日志中记录产生的时间转换为hive支持的时间格式yyyy-MM-dd HH:mm:ss。图7-37清洗结果如图7-49所示。
图7-48 文件操作主页面
图7-49 格式转换后的数据
1)系统界面主框架Index.jsp,实现系统界面的框架,Index.jsp具体实现代码如下。
2)文件操作页面filemanage.jsp,用户删除文件、下载文件和清洗数据的操作页面。并将文件路径和文件名称等参数传递给DeleteServlet、downloadServlet和dataclearServlet实现相应的功能。
3)类DeleteServlet,调用HdfsDAO类中deleteFromHdfs操作,实现文件删除操作。其具体实现代码如下。
(www.xing528.com)
4)类downloadServlet,调用HdfsDAO类中getDirectoryFromHdfs操作,实现文件下载操作。其具体实现代码如下。
其中,HdfsDAO类具体实现代码如下。
5)dataclearServlet,调用HdfsDAO类中gomap操作,实现数据格式转换操作,转换后的文件存放在hdfs中“/data/clear”目录下。转换后的数据格式如图7-所示。并调用HdfsDAO类中getDirectoryFromHdfs和getClearDirectoryFromHdfs获取日志文件列表和已清洗过的文件列表,并发送给文件清洗查看页面dataclear.jsp。HdfsDAO其具体实现代码如下。
其中,mapReduceDao类的具体实现代码如下。
(6)清洗文件查看页面。
清洗文件查看页面dataclear.jsp,列出已处理的文件列表,如图7-50所示。dataclear.jsp具体实现代码如下。
图7-50 已清洗的文件列表
(7)数据导入和统计分析。
将清理后的数据导入hive中,并统计出商品的退货比,用户浏览、购买趋势,成交商品不同地区销售量占比情况等。ConnDB.java建立与mysql连接;类HiveConn实现与hive建立连接,导入数据,统计分析保存结果等功能。
1)类ConnDB,建立与mysql连接,具体实现代码如下。
2)类HiveConn,实现与hive建立连接,导入数据,统计分析和保存结果等,具体实现代码如下。
(8)结果可视化模块。
前端chars.jsp页面使用Echars框架,把数据统计的结果以柱状图、饼状图、折线图的形式展示出来;类charsDao获取页面展示图表的数据源;类charsServlet接收chars.jsp页面所发送的请求,调用类charsDao获取数据源,进行数据重组,存储在chars.jsp的request作用域中返回到前端jsp页面,进行结果可视化。
1)chars.jsp,使用Echars框架,把数据统计的结果以柱状图、饼状图、折线图的形式展示出来,如图7-51至图7-56所示。
图7-51 2014年销量排名前十的省份统计
图7-52 2014年河南销量、退货和浏览量比例统计
图7-53 2014年全国上半年浏览量统计
图7-54 2014年北京购买、浏览和退货比例统计
图7-55 2014年上海春季各月销量统计
图7-56 2014年北上广销量比例统计
具体实现代码如下。
2)类charsDao,获取页面展示图表的数据源,即统计分析的结果。具体实现代码如下。
3)类charsServlet,具体实现代码如下:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。