大数据实战项目 -- 论坛日志分析

一、建议实验平台

操作系统:Ubuntu18.04(或Ubuntu16.04)。

Hadoop版本:3.1.3。

Hive版本:3.1.2。

JDK版本:1.8。

HBase版本:2.2。

建议使用的其他相关组件和工具: Kettle和IDEA编程工具,注意组件版本之间的兼容性,不建议用Sqoop,因为其不支持新版的Hadoop和Hive。

二、实验内容

本综合实验考查题目是论坛日志分析,主要涉及的技术有大数据处理架构Hadoop的关键技术及其基本原理、分布式数据库系统概念及其原理、关系型数据库概念与原理、Hive数据库的原理等;本实验考查综合运用大数据课程知识以及各种工具软件,实现数据全流程操作。

(一)实验背景介绍

采集用户上网的操作日志信息,包括登录时间、用户编号、IP地址、登录区域等信息,使用爬虫的技术,爬取网易的访问日志数据,统计网页的浏览量,访问的用户数,访问的IP数量,跳出用户数等业务指标。

本次要实践的数据日志来源于国内某技术学习论坛,该论坛由某培训机构主办,汇聚了众多技术学习者,每天都有人发帖、回帖、评论等信息,如图所示:

图1-1

(二)实验数据说明

本实验包含了一个大规模数据集log_2021-05-01.txt和一个小数据集example_data.log(只包含10条记录)等。小数据集example_data.log是从大规模数据集log_2021-05-01.txt中抽取的一小部分数据。实验数据集和相关参考文档请参考附件。日志的例子数据example_data.log,一共是10条数据,作为测试使用(访问者IP、访问时间、访问资源、访问状态(HTTP状态码)、本次访问流量(Byte))

图1-2 日志记录数据格式

备注:数据是用”|”隔开

日志的真实数据log_2021-05-01.txt,作为正式环境使用。

(三)实验项目架构

(四)实验内容分解

论坛日志分析综合实验项目完成需要以下8个步骤:

第1步:本地数据集上传到HDFS

第2步:使用MapReduce进行数据清洗

第3步:在Linux上执行MR数据清洗

第4步:使用Hive访问HDFS的例子数据

第5步:使用Hive访问HDFS的真实数据

第6步:使用Kettle把数据存储到HBase

第7步:使用sqoop把Hive数据导出到mysql

第8步:使用EChart进行可视化

三、实验要求

1.实验完成度。 按要求独立完成实验准备、程序调试、实验报告撰写。

2.实验内容。代码功能完善、可正常运行,测试数据正确,分析正确,结论正确。

3.实验报告。内容齐全,步骤详细,符合要求。

4.总结。对实验过程遇到的问题能初步独立分析,解决后能总结问题原因及解决方法,有心得体会。

四、实验过程、内容

论坛日志分析综合实验项目完成需要以下8个步骤:

第1步:本地数据集上传到HDFS

进入 Hadoop 安装目录,启动 hadoop

新建HDFS目录input_log(若input_log存在,则先删除)

上传本地的真实数据文件到HDFS目录

hadoop fs -put ~/下载/数据/log_2021-05-01.txt /input_log

上传本地的真实数据文件到HDFS目录

查看input_log目录,确认数据文件存在

第2步:使用MapReduce进行数据清洗

步骤01 新建Maven工程。打开IntellijIDEA工具,选择new → Project → Maven,单击Next按钮。

步骤02 设置工程名称为BBS_log,输入GroupId、ArtifactId,单击Finish按钮。

步骤03 设置文件属性。进入项目BBS_log目录中,删除test文件夹,修改main文件夹的名字为BBS_log,再进入File→Project Structure→Modules,修改文件夹src属性为resources。

结果如下图:

步骤04 编写Java代码。在src下新建Java程序(执行new→Java class),编写 数据清洗的Java代码LogClean.java。

结果如下图:

步骤05 修改pom.xml文件,并执行Import Changes,把对应的组件下载到项目工程内。                                                                                                     

步骤06 添加Artifact包。进入File→Project Structure→Artifacts,找到对应的Main的Class文件,把不要的包remove掉。

结果如下:

步骤07 生成Artifact包。单击Build→Build Artifact→BBS_log:jar→Build,表示生成指定的jar包文件。

结果如下:

第3步:在Linux上执行MR数据清洗

步骤01 使用SFTP工具上传文件,在“文件→管理器→新站点”中输入IP地址等信息,单击连接按钮,传输jar包到ubuntu的目录下。

结果如下:

步骤02 进入到远程环境,使用XShell工具,进入到Hadoop开发环境,确保HDFS 是正常状态。

步骤03 执行MR程序,确保Hadoop是正常状态后,执行下面命令。

(1)创建HDFS目录/BBS_log/cleaned。

(2)执行MR程序

(3)运行结果

第4步:使用Hive访问HDFS的例子数据

步骤说明:此步骤是用example数据把整个流程跑通,以便进行真实的数据处理。

步骤01 建立一张Hive表,将HDFS目录inout_log中的数据存入Hive。

(1)进入 Hadoop 目录,启动 Hadoop。

(2)切换到 Hive 目录下,启动 MySQL 和 Hive。

(3)创建并使用Hive数据库log。

(4)创建表t_log_example,指定HDFS数据存放路径。

步骤02 使用hive的统计语言,统计URL浏览数量,简称URL_NUM。统计访问url的数量

步骤03 使用hive的统计语言,统计用户对网页浏览量PageViews,简称PV。PV指的是所有用户浏览页面的总和,1个用户每次打开1个页面就会被记录1次。运行的hive脚本如下:

步骤4:使用hive统计语言,注册用户数RegisteredUsers,简称RU。表示用户访问注册的页面的个数。脚本如下:

步骤5:使用Hive统计语言,统计访问的IP数量。IP数量表示某个时间段,访问页面的不同的IP 个数的总和。其中同1个IP无论访问几个页面,独立IP 数均算作1个。所以,只需要统计日志中处理的不同的IP个数,执行的hive命令如下:

步骤6:将所有的统计指标存放到1张汇总的表里里面。借助1张汇总表将统计到的结果整合起来,Hive的脚本如下:

第5步:使用Hive访问HDFS的真实数据

步骤1:建立1张hive表,需要将数据存入HIVE里面,新建一张表。

(1)创建表t_log,指定HDFS数据存放路径。

(2)查看表数据。

步骤2:使用hive的统计语言,统计URL浏览数量,简称URL_NUM。统计访问url的数量,Hive的代码如下:

步骤3:使用hive的统计语言,统计用户对网页浏览量PageViews,简称PV。PV指的是所有用户浏览页面的总和,1个用户每次打开1个页面就会被记录1次。运行的hive脚本如下:

步骤4:使用hive统计语言,注册用户数RegisteredUsers,简称RU。表示用户访 问注册的页面的个数。脚本如下:

步骤5:使用Hive统计语言,统计访问的IP数量。IP数量表示某个时间段,访问页面的不同的IP 个数的总和。其中同1个IP无论访问几个页面,独立IP 数均算作1个。所以,只需要统计日志中处理的不同的IP个数,执行的hive命令如下:

步骤6:将所有的统计指标存放到1张汇总的表里里面。借助1张汇总表将统计到的结果整合起来,Hive的脚本如下

6步:使用Kettle把数据存储到HBase

步骤1 进入Hbase Shell 创建t_log_detail表,并设置CF列族,执行的命令如下:

步骤2:打开kettle这个ETL数据处理工具,新建1个空白的转换,如图1-23所示。kettle是由转换和作业组成,转换表示实际数据处理的过程,比如数据过滤、数据组合、增加、修改等功能;作业大部分是为了定时调度转换的所用。

步骤3:从“Big Data”菜单里面拉1个“Hadoop File Input”组件到设计区域,并进行编辑,各个属性的设置。

文件输入设置内容如下:

步骤4:从“Big Data”菜单里面拉一个“Hbase Output”组件到设计区域里面,再进行属性设置。

Hadoop集群配置:

映射配置:

步骤5:点击运行的案例,点击“”,运行此转换.

步骤6:查看运行结果。

步骤7:查看结果数据是否是正确的,运行下面的命令.

第8步:使用sqoop把Hive数据导出到mysql

步骤1 登录到MySQL数据库的命令界面。

步骤2:创建1张数据汇总表,执行命令。

步骤3:把用hive产生的表,导出到mysql里面,导出的执行脚本如下。(这里的--export-dir是指定的hive目录下的表所在位置)

步骤4 查看到运行结果后的数据。

任务七使用ECharts实现可视化

步骤1 使用IDEA工具新建1个Maven工程。

步骤2 新建一个application.yml文件,并写入代码。

步骤3 修改pom.xml文件,写入代码后,单击Maven→Download Sources。

步骤4 新建几个程序包,并分别编写controller、dao、entity、service等层的程序。

步骤5 新建一个index.html,在/resources/static/js目录下增加二charts。Js和jquery-3.5.1.min.js的包。

步骤6 右击启动代码。

步骤7 输入http://localhost:8080/t_log_all/list后台服务器

步骤8 打开index.html查看可视化界面。

五、实验结果(运行结果截图)

实验结果如上!

  • 实验心得和总结(列出遇到的问题和解决办法,列出没有解决的问题,可以是个人相关知识点总结,要求300字以上)

总结:项目涵盖了Linux、Mysql、Hadoop、Map Reduce、Hbase、Hive、Sqoop、Kettle、IDEA、ECharts等系统和软件安装和使用方法。遇到报错,要先查看报错内容,再针对性的调整环境、配置。

问题一:启动hive时(./bin/hive)

解决方案:

一般是Hadoop中的guava的相关jar包与hive中的不适配,将hive中的删除,然后Hadoop中的guava-27.0-jre.jar,复制到hive里面就可以了,操作如下:

$cd   /usr/local/hadoop/share/hadoop/common/lib

$rm  guava-40.jar

$cd   /usr/local/hadoop/share/hadoop/common/lib

$ cp -r guava-27.0-jre.jar /usr/local/hive/lib

问题二:在hive中在确保命令语句正确的前提下,创建数据库报错

决办法:手动初始化元数据库

$cd /usr/local/hadoop/share/hadoop/common/lib

$bin/schematool -dbType mysql -initSchema

问题三:kettle连接Hbase显示无法连接

决办法:Hbase是通过zookeeper驱动连接,所有在kellter的配置目录plusgins配置

问题四:进入hbase shell命令出现下述错误。

解决方案:关闭终端重新启动hadoop\hbase

  • 11
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值