基于Hadoop实现电商日志分析实战

本文介绍了一个使用Hadoop及其组件实现的电商日志分析项目,包括虚拟机环境搭建、MySQL与Nginx安装、电商系统部署、AB压测、Hadoop配置、Flume日志采集、MapReduce数据处理、SQOOP数据导入到MySQL,以及前后端源码。整个流程覆盖了数据采集、存储、分析和可视化。
摘要由CSDN通过智能技术生成

一、项目总体介绍


1. 项目介绍

本项目要求使用Hadoop及其生态圈相关的组件来实现企业级大数据开发的整套流程,即数据的采集、数据的存储、数据的分析处理及数据的可视化。其中数据的采集部分会介绍两种方式,一种介绍网络爬虫及其Java代码实现步骤,另外一种是基于学习成本及侧重点考虑可利用Spring MVC技术来构建一个简易的电商平台,采取AB压测的方式模拟海量日志的产生,通过使用Nginx和Tomcat实现动静资源分开部署的方式,采取flume日志采集组件来实现日志的采集;数据的存储部分,将采用MySQL和HDFS来分别存储关系型数据和非关系型数据,其中将会使用到sqoop组件作为MySQL和HDFS之间数据的转换桥梁和通道;数据分析处理部分,采用MapReduce程序实现数据的清洗和分析;数据可视化部分,采用echarts图表来展现。最终的效果是通过压测产生电商系统日志、flume采集日志、MapReduce分析处理日志、sqoop将分析后的结果导入到MySQL中、spring mvc项目前端对分析结果进行可视化,即展现商品的topN信息。

2. 项目数据流程

在这里插入图片描述

二、项目准备工作


1. 虚拟机的安装

虚拟机版本:
VMware-workstation-full-15.5.1-15018445.exe网上自行找资源下载

安装步骤,请参考:

https://blog.csdn.net/sujiangming/article/details/87991536

2. 虚拟机的创建及CentOS7安装

操作系统及版本:CentOS-7-x86_64-DVD-1511.iso
安装步骤,请参考我另外一篇博文:

https://blog.csdn.net/sujiangming/article/details/87992373

三、项目实施过程


1、CentOS7下MySQL-5.7使用yum方式安装


1、安装MySQL YUM源到本地

yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

2、检查 mysql 源是否安装成功

 yum repolist enabled | grep "mysql.*-community.*"
安装成功后会看到如下:
!mysql-connectors-community/x86_64       MySQL Connectors Community          153
!mysql-tools-community/x86_64            MySQL Tools Community               110
!mysql57-community/x86_64                MySQL 5.7 Community Server          424

3、使用 yum install 命令安装

yum -y install mysql-community-server

4、安装完毕后,启动MySQL数据库

systemctl start mysqld

5、查看MySQL的启动状态

systemctl status mysqld

6、设置开机自启动

systemctl enable mysqld

7、重载所有修改过的配置文件

systemctl daemon-reload

8、修改root账户默认密码
mysql 安装完成之后,生成的默认密码在 /var/log/mysqld.log 文件中。使用 grep 命令找到日志中的密码。
执行:

grep 'temporary password' /var/log/mysqld.log
比如:
A temporary password is generated for root@localhost: WMYu.#o8o#30

9、修改密码
使用mysql -uroot -p 回车, 注意密码改为:Sjm@!_123456 输入:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Sjm@!_123456'; 

10、配置root用户远程登录及添加远程登录用户
默认只允许root帐户在本地登录,如果要在其它机器上连接mysql,两种方式:
1)设置root用户允许远程登录:
执行:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Sjm@!_123456' WITH GRANT OPTION;   
flush privileges;
2)可以添加一个允许远程连接的普通帐户 
	执行:
GRANT ALL PRIVILEGES ON *.* TO 'suben'@'%' IDENTIFIED BY 'Sjm@!_123456' WITH GRANT OPTION;   
flush privileges;

12、设置默认编码为 utf8

mysql 安装后默认不支持中文,需要修改编码。
修改 /etc/my.cnf 配置文件,在相关节点(没有则自行添加)下添加编码配置,如下:
执行:vi /etc/my.cnf
在文件的末尾添加如下信息:

[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

补充:CentOS7下MySQL-5.7使用yum方式卸载:

1、 停止MySQL

systemctl stop mysqld 

2、查看已安装的mysql:

rpm -qa |grep -i mysql 

3、卸载mysql,依次卸载第2步骤所列出的有关MySQL的安装包后进行删除,执行删除命令:

yum remove -y mysql-community-server-5.6.36-2.el7.x86_64 4

4、删除mysql相关目录

  • 使用命令查看mysql相关的文件目录:
    find / -name mysql 	
    
  • 依次删除所查到的目录,执行命令:
    rm -rf /xxx/xxx/mysql
    

2、CentOS7下Nginx的安装


1、编写安装脚本:nginx_install.sh,添加如下内容:

#!/bin/bash
yum install -y gcc
#install pcre
yum install -y pcre-static.x86_64
#install nginx
tar -zvxf  /tools/nginx-1.15.12.tar.gz -C /training/
cd /training/nginx-1.15.12
./configure --prefix=/training/nginx --without-http_gzip_module
make && make install
#set .bash_profile
echo '#nginx' >> ~/.bash_profile
echo 'export PATH=$PATH:/training/nginx/sbin' >> ~/.bash_profile
# source .bash_profile
source ~/.bash_profile

2、赋予nginx_intall.sh执行权限:

chmod +x nginx_install.sh

3、安装nginx,进入到nginx_intall.sh脚本所在目录,执行:

./nginx_intall.sh

4、编写启动nginx的脚本nginx_start.sh,执行 vi nginx_start.sh添加如下内容:

#!/bin/bash
cd /training/nginx/sbin
./nginx

5、启动nginx,执行

./nginx_start.sh

6、验证nginx是否启动成功:

netstat -anop|grep nginx 或者 netstat -anop|grep 80

成功信息:

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      59717/nginx: master  off (0.00/0/0)

7、编写停止nginx脚本,执行vi nginx_stop.sh ,添加如下内容:

#!/bin/bash
cd /training/nginx/sbin
./nginx -s stop

8、停止nginx,执行

./nginx_stop.sh

9、编写热加载nginx脚本,执行vi nginx_reload.sh ,添加如下内容:

#!/bin/bash
cd /training/nginx/sbin
./nginx -s reload

10、重新加载nginx,执行:

./nginx_reload.sh

3、部署前端网站到nginx下


1、上传电商网站OnlineShop文件夹到/training/nginx/html/目录下,
将OnlineShop文件夹重命名为shop

mv OnlineShop shop

2、修改nginx配置文件nginx.conf,执行:

vi /training/nginx/conf/nginx.conf
添加如下内容:
# add shop
​location /shop/ {
   
​	root   html;
​	index  index.html index.htm;}

在这里插入图片描述
3、重新记载nginx,执行:

./nginx_reload.sh

4、验证:在浏览器中验证下是否可以访问到网站,输入:

http://虚拟机ip地址/shop/

5、效果如下:
在这里插入图片描述

4、Tomcat的安装


0、前提条件:JDK1.8的安装

  • 上传jdk-8u171-linux-x64.tar.gz到tools目录下,然后执行下面的命令进行解压安装
    tar -zvxf jdk-8u171-linux-x64.tar.gz  -C /training/
    
  • 配置环境变量:
     vi ~/.bash_profile
    
    在.bash_profile文件中添加如下信息:
      export JAVA_HOME=/training/jdk1.8.0_171
      export JRE_HOME=$JAVA_HOME/jre
      export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
      export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin;
    
  • 让环境变量生效
    source ~/.bash_profile
    
  • 验证jdk是否安装成功
     java -version
    

1、下载tomcat-8.5.40,到官网上下
2、安装tomcat

  • 上传tomcat到/tools目录下

  • 解压安装:

    tar -zvxf apache-tomcat-8.5.61.tar.gz -C /training/
    
  • 配置环境变量 vi ~/.bash_profile

    #tomcat
    export PATH=$PATH:/training/apache-tomcat-8.5.61/bin
    
  • 生效:

    source ~/.bash_profile
    
  • 启动

    startup.sh
    
  • 验证,在浏览器输入: http://192.168.215.131:8080/或者在命令行里面输入:netstat -anop|grep 8080
    在这里插入图片描述

5、电商后台系统部署到Linux服务器上


  1. 将代码导入到eclipse或者idea中

  2. 将代码中的接口地址、数据库链接地址等修改成服务器地址,具体需要修改的代码如下:
    GoodsController.java:

     -  修改上传图片地址为服务器地址
     -  将代码中的localhost或者IP地址改成服务器IP地址
    

    RemoteExecuteCommand.java,将如下改成你自己虚拟机的相关信息

    private RemoteExecuteCommand() {
         
    	this.ip = "192.168.112.128"; // 需要修改
    	this.userName = "root"; // 如不是这个用户名,则需要修改
    	this.userPwd = "123456"; // 需要修改
    }
    

    UploadUtils.java:

     - 将代码中的localhost或者IP地址改成服务器IP地址
    

    hibernate.properties:

     -  修改数据库名及地址为服务器的数据库名及地址
     -  修改数据库用户明、密码为服务器的用户密码
    

    修改webapp目录下的所有html及jsp页面

     - 将代码中的localhost或者IP地址改成服务器IP地址
    
  3. 选择export->war

  4. 上传war至Linux服务器的Tomcat安装目录下

  5. 启动或重启Tomcat

  6. 配置Tomcat支持UTF-8字符集
    由于后台项目页面部分采用了html和jsp结合嵌套的方式,即在jsp中嵌套了html代码段,会存在html代码段显示中文乱码的问题,故需要做配置
    1)修改tomcat/conf目录下的server.xml,添加URIEncoding=“UTF-8”配置项,配置位置如下:

     <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8" />
     <Connector protocol="AJP/1.3"
               address="::1"
               port="8009"
               redirectPort="8443" URIEncoding="UTF-8" />
    

    2)修改tomcat/conf/web.xml,在 节点中添加如下内容:

     	<init-param>
                <param-name
Hadoop是一个开源的分布式计算框架,用于存储和处理大规模数据集。Hadoop项目实战主要涉及到使用Hadoop来解决实际的大数据问题。以下是一些Hadoop项目实战的示例: 1. 日志分析:使用Hadoop处理和分析大量的日志数据,例如网络日志、服务器日志等。可以使用Hadoop的分布式计算能力来加速日志处理和分析过程。 2. 推荐系统:利用Hadoop来构建大规模的推荐系统。通过处理和分析用户行为数据,使用Hadoop的分布式计算能力来生成个性化的推荐结果。 3. 数据挖掘:使用Hadoop来进行大规模数据挖掘任务,例如聚类、分类、关联规则挖掘等。由于Hadoop可以并行处理大量的数据,能够加速数据挖掘任务的执行速度。 4. 图计算:使用Hadoop来进行大规模图计算任务,例如社交网络分析、路径查找等。Hadoop提供了一些图计算框架,如Apache Giraph和Apache Flink,可以用来处理大规模的图数据。 5. 实时数据处理:利用Hadoop的实时处理框架,如Apache Storm和Apache Kafka,来构建实时数据处理系统。通过将数据流式传输到Hadoop集群并进行实时处理,可以实现实时数据分析和决策。 这些只是Hadoop项目实战的一些示例,实际上还有很多其他领域可以应用Hadoop来解决大数据问题。在实际项目中,常常需要结合其他技术和工具,如Hive、Pig、Spark等,来完成更复杂的任务。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

若兰幽竹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值