草庐IT

基于Hadoop的电商广告点击数的分析与可视化(Shell脚本执行与大屏可视化设计)

王小王-123 2024-07-04 原文

目录

摘要

本项目需要部署的可以私信博主!!!!!!!!!

本文介绍了基于Hadoop的电商广告点击数的分析与可视化,以及相应的Shell脚本执行和大屏可视化设计。首先,我们介绍了Hadoop的基本原理和使用方法,包括如何安装和配置Hadoop集群。

然后,我们介绍了如何使用Hadoop MapReduce框架对电商广告点击数据进行分析和处理,包括数据的清洗、转换和统计。接下来,我们使用Hadoop集成的可视化工具对数据进行可视化分析,展示了广告点击数量的趋势和分布等信息。

最后,我们通过编写Shell脚本将分析结果定时自动执行,并将结果在大屏上进行展示,方便业务人员实时监控广告点击情况。

本文的研究成果为电商广告点击的精细化管理提供了可靠的数据支持和决策依据,同时也为Hadoop在数据分析和可视化方面的应用提供了一种实践思路和操作方法。

大屏可视化预览

本次大屏可视化采用HTML与CSS进行搭建,调用Hadoop后台分析的数据指标,结合前端进行可视化展示,最终达到比较好的可视化效果

这个炫酷可视化可以采用大屏模板,如果有需要的可以私信博主,提供上百种大屏可视化模板,通过前后端的接口调用数据,展现出不同的可视化效果

文末可以扫码联系博主

如何安装Hadoop集群

Hadoop集群需要以下主要组件:

  1. Hadoop分布式文件系统(HDFS):这是Hadoop的核心组件,它负责数据的存储和管理。

  2. Yet Another Resource Negotiator (YARN):这是Hadoop的集群资源管理器,它负责在集群上协调和管理计算资源。

  3. MapReduce:这是Hadoop的分布式计算框架,用于并行处理大规模数据集。

  4. Hadoop Common:这是Hadoop的共享库,其中包括Hadoop的通用工具和库。

  5. Hadoop Oozie:这是一个工作流引擎,用于协调和管理Hadoop作业的执行。

  6. Hadoop Hive:这是一个数据仓库工具,可将结构化数据存储在Hadoop中,并提供SQL查询功能。

  7. Hadoop Pig:这是一个脚本语言,用于对大规模数据进行转换、过滤和整合。

  8. Hadoop Spark:这是一种快速、通用的计算引擎,用于大规模数据处理。

  9. flume、hbase、sqoop等

目前,常用的Hadoop安装类型包括以下几种:

全分布式Hadoop集群,所有组件都已经部署OK!解压即可使用

数据集介绍

我们选取了12月1日-18号的数据,进行简单的模拟大数据分析(6万多条,实际项目一般是上亿,文件大小都是TB级,一般的软件无法分析处理,只可以借助Hadoop大数据分析)

实验数据是选取的:12月份的数据

点击此处下载


简单解释一下,为什么做大数据分析一般都是选取淘宝作为数据

做大数据分析选取淘宝的电商数据集可能有以下原因:

  • 数据规模大:淘宝作为中国最大的电商平台之一,拥有大量的用户和商品数据,这些数据的规模和多样性使得淘宝的数据集成为一个非常适合大数据分析的数据源。

  • 数据丰富:淘宝平台上的商品和用户信息非常丰富,包括商品类别、销售量、价格、品牌、评价、地域、性别、年龄等,这些数据可以提供丰富的维度,帮助分析人员深入了解用户的需求和行为,以及商品的市场趋势和表现。

  • 数据真实性高:淘宝的数据集来自于真实的用户和交易,这些数据经过了平台的审核和处理,其真实性和可靠性得到了保障。这对于分析人员来说非常重要,因为可靠的数据可以为分析提供更加准确和客观的基础。

  • 淘宝开放平台:淘宝还提供了开放平台,允许开发者和分析人员获取和使用淘宝的数据,这大大方便了分析人员的工作。

项目部署流程

本项目通过选取淘宝12月的大数据集(模拟大数据),和传统的项目不同,本次的执行速度和效率较高,对一些较为频繁的语句,通过编写shell脚本进行,这样就解决了频繁的进行编码

全套项目的源码——shell脚本命令点击下载

一键化配置环境和参数

开启集群,准备好环境

并且修改hive-site配置文件,这里也是摒弃传统的插入,通过shell命令达到一键化的效果

然后利用该脚本一键化添加和配置,并创建了自动加载数据的文件夹,配置好前期所需的这些环境,便于后续的项目开发

效果如下:

一键化建立hive数据表

在加载数据之前,首先需要进行对hive表中的数据进行建立,其中包括数据原表的建立,也就是通过flume进行自动导入的表格,其次就是结果表,因为我们在hive中进行大数据分析之后需要采用数据导出,所以需要建立这些临时表格,最终达到高效的管理。

创建好表格之后,用于后续的分析准备

Flume配置及自动加载数据到hive中

使用vi命令,新建一个file_hive.properties文件,把下面的数据插入到里面,这里在前面的脚本资源中也存在,这里就不多赘述了,有需要的可以下载

这里简单的介绍一下flume是什么:

Flume是一个分布式、可靠和高可用的大数据采集系统。它可以帮助用户从各种数据源(如web服务器日志、消息队列等)中采集数据,并将数据传输到数据存储和处理系统(如Hadoop、HBase等)中。

Flume的架构是基于事件(Event)的流水线(Pipeline)模型,其中每个流水线由三个主要组件组成:

  • Source:数据源,用于从不同的数据源中采集数据,如HTTP、日志文件、JDBC等。

  • Channel:用于在Source和Sink之间缓存数据的队列,确保数据传输的可靠性和高效性。

  • Sink:数据接收端,用于将数据传输到目标存储系统中,如HDFS、HBase、Kafka等。

Flume支持多种数据传输方式,如RPC、HTTP、Avro等,并且可以对数据进行压缩、格式化和加密等操作,以保证数据的完整性和安全性。同时,Flume还支持多种拓扑结构和数据流转方式,以满足不同场景下的数据采集和传输需求。

总之,Flume是一个非常强大和灵活的数据采集系统,可以帮助用户高效、可靠地采集、传输和处理大数据。

hive --service metastore -p

这个命令是启动Hive的元数据存储服务,使用端口号9083,并运行在后台。

在Hadoop中,Hive是一个数据仓库工具,它提供了一个SQL-like语言(HiveQL),用于查询和分析存储在Hadoop分布式文件系统(HDFS)上的大数据。Hive通过将HiveQL查询转换为MapReduce任务来实现查询和分析。

Hive的元数据存储服务是用来存储Hive元数据的,包括表的结构信息、表的位置信息、分区信息等。这些元数据的存储和管理对于Hive的查询和分析操作非常重要。在Hive中,可以使用不同的元数据存储方式,如本地文件系统、关系型数据库等,而启动Hive元数据存储服务则是将元数据存储在一个专门的元数据仓库中。

通过运行上述命令,可以启动Hive的元数据存储服务,并将其绑定到9083端口,使得Hive可以通过这个端口来访问和管理元数据。这对于使用Hive进行大数据查询和分析的用户来说非常重要,因为元数据存储服务的可用性和可靠性会直接影响到查询和分析的效率和准确性。

flume-ng agent --conf conf --conf-file file_hive.properties -name agent3 -Dflume.hadoop.logger=INFO,console

这个命令是启动Flume的agent进程,使用指定的配置文件,并将日志输出级别设置为INFO,并输出到控制台。具体的解释如下:

  • flume-ng:Flume的命令行工具,用于启动和管理Flume的各种组件和进程。

  • agent:Flume的一个组件,用于收集和传输数据。

  • –conf conf:指定Flume的配置文件路径,该路径为相对路径,相对于当前目录。

  • –conf-file file_hive.properties:指定Flume的配置文件名,即file_hive.properties。

  • -name agent3:指定Flume的agent进程名称,即agent3。

  • -Dflume.hadoop.logger=INFO,console:设置Flume的日志输出级别为INFO,并将日志输出到控制台。

总之,该命令的作用是启动一个Flume的agent进程,使用指定的配置文件,将收集到的数据传输到指定的目标存储系统中,并将日志输出级别设置为INFO,并输出到控制台,以方便调试和排查问题。在Hadoop中,Flume是一个重要的数据采集和传输工具,常用于采集和传输各种数据,包括日志、事件、消息等,以满足不同的大数据分析和处理需求。

然后将数据源直接移动到目标文件下,就可以实现自动的导入数据了,这就是flume的优势之处,我们可以编写自动化脚本以及爬虫程序给数据实时的添加,这样不仅高效而且比较简单

mv /home/hadoop/12yue.csv /home/hadoop/taobao/data/

整体的效果如下:

数据分析

数据集导入OK之后,就开始进行分析了,同样的我们可以执行写好的源码:

mysql接收数据表格

接下来进入mysql中建立好接收表格

sqoop将hive表导入到MySQL中

  • 确认在Hadoop集群和MySQL服务器之间已经建立了连接。

  • 确认Sqoop已经安装在Hadoop集群中,并且MySQL JDBC驱动已经下载。

  • 在MySQL中创建表格,以匹配将要从Hive中导入的表格的结构。

  • 运行以下Sqoop命令,将数据从Hive中导入到MySQL中:

sqoop export --connect jdbc:mysql://<mysql_server>/<database> --username <mysql_username> --password <mysql_password> --table <mysql_table> --export-dir <hive_table_directory> --input-fields-terminated-by '\t'
  • <mysql_server>是MySQL服务器的主机名或IP地址。
  • 是MySQL中要导入数据的数据库名称。
  • <mysql_username>和<mysql_password>是登录MySQL所需的用户名和密码。
  • <mysql_table>是MySQL中要导入数据的表格名称。
  • <hive_table_directory>是Hive表格数据存储在HDFS上的目录路径。该目录中应该只包含要导出的表格数据文件。

请注意,Sqoop命令的参数可能需要根据实际情况进行修改。例如,如果要导出的表格使用不同的分隔符,需要相应地修改–input-fields-terminated-by参数。

等待Sqoop命令完成导出,检查MySQL中的表格是否包含了从Hive中导入的数据。

查询是否导入成功!
OK!



项目所需文件

可视化效果

通过将结果表导入到mysql之后,可以通过可视化工具,比如Python或者其他的远程连接虚拟机的IP地址,前提是IP地址需要稳定,不能变动太多。


可视化源码下载


分析可得用户喜欢在活动前后大幅度浏览网站,同时大部分人喜欢在6点(下班之后)浏览网页,到了晚上9点和10点带到高峰,建议在这段时间加强对网站的维护和广告的投入,达到相关的作用







大屏可视化

总结

本次实验可以作为大数据分析模板案例,通过了解hadoop的全套的分析流程,实现自动化的大数据分析,很大程度解决了在编码上遇到的问题。

本项目基于Hadoop技术对电商广告点击数进行了分析与可视化,通过编写Shell脚本实现数据清洗、转化与存储,并使用Hive进行数据查询和处理,最终通过可视化工具实现了大屏展示。

本项目的创新点主要包括以下几个方面:

  • 使用Hadoop生态系统进行数据处理和存储。Hadoop生态系统包括HDFS、MapReduce、Hive等组件,可以处理大规模的数据,适合本项目的需求。与传统的关系型数据库相比,Hadoop的分布式存储和计算能力更强,可以支持更大规模的数据处理。

  • 使用Hive进行数据查询和处理。Hive是一种基于Hadoop的数据仓库工具,可以将结构化数据映射为一张数据库表,支持SQL语句查询和数据分析。在本项目中,使用Hive进行数据查询和处理,可以快速获得需要的数据,并进行分析和可视化。

  • 实现大屏可视化展示。本项目使用可视化工具实现了大屏展示,可以直观地展示广告点击数的情况,便于决策者进行数据分析和决策。大屏可视化展示在商业决策中越来越受到重视,可以帮助企业快速了解市场情况和产品销售情况。

总之,本项目通过使用Hadoop生态系统进行数据处理和存储,结合Shell脚本进行数据清洗和转化,使用Hive进行数据查询和处理,并实现了大屏可视化展示,为电商广告点击数的分析和决策提供了一种新的思路和方法。

每文一语

不是害怕拥有而是害怕结束

有关基于Hadoop的电商广告点击数的分析与可视化(Shell脚本执行与大屏可视化设计)的更多相关文章

  1. ruby-on-rails - 如何在 ruby​​ 交互式 shell 中有多行? - 2

    这可能是个愚蠢的问题。但是,我是一个新手......你怎么能在交互式ruby​​shell中有多行代码?好像你只能有一条长线。按回车键运行代码。无论如何我可以在不运行代码的情况下跳到下一行吗?再次抱歉,如果这是一个愚蠢的问题。谢谢。 最佳答案 这是一个例子:2.1.2:053>a=1=>12.1.2:054>b=2=>22.1.2:055>a+b=>32.1.2:056>ifa>b#Thecode‘if..."startsthedefinitionoftheconditionalstatement.2.1.2:057?>puts"f

  2. ruby - Ruby 中的波形可视化 - 2

    我即将开始一个将录制和编辑音频文件的项目,我正在寻找一个好的库(最好是Ruby,但会考虑Java或.NET以外的任何库)以进行实时可视化波形。有人知道我应该从哪里开始搜索吗? 最佳答案 要流入浏览器的数据量很大。Flash或Flex图表可能是唯一能提高内存效率的解决方案。Javascript图表往往会因大型数据集而崩溃。 关于ruby-Ruby中的波形可视化,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c

  3. 叮咚买菜基于 Apache Doris 统一 OLAP 引擎的应用实践 - 2

    导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵

  4. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

  5. ruby-on-rails - rbenv:从 RVM 移动到 rbenv 后,在 Jenkins 执行 shell 中找不到命令 - 2

    我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions

  6. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

    需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

  7. hadoop安装之保姆级教程(二)之YARN的配置 - 2

    1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模

  8. ruby - 从 Ruby : capturing the output while displaying the output? 运行 shell 命令 - 2

    我有一个问题。我想从另一个ruby​​脚本运行一个ruby​​脚本并捕获它的输出信息,同时让它也输出到屏幕。亚军#!/usr/bin/envrubyprint"Enteryourpassword:"password=gets.chompputs"Hereisyourpassword:#{password}"我运行的脚本文件:开始.rboutput=`runner`putsoutput.match(/Hereisyour(password:.*)/).captures[0].to_s正如您在此处看到的那样,存在问题。在start.rb的第一行,屏幕是空的。我在运行程序中看不到“输入您的密

  9. ruby - 可以正常中断的来自 Rake 的长时间运行的 shell 命令? - 2

    在几个项目中,我希望有一个类似rakeserver的rake任务,它将通过任何需要的方式开始为该应用程序提供服务。这是一个示例:task:serverdo%x{bundleexecrackup-p1234}end这行得通,但是当我准备停止它时,按Ctrl+c并没有正常关闭;它中断了Rake任务本身,它说rakeaborted!并给出堆栈跟踪。在某些情况下,我必须执行Ctrl+c两次。我可能可以用Signal.trap写一些东西来更优雅地中断它。有没有更简单的方法? 最佳答案 trap('SIGINT'){puts"Yourmessa

  10. ruby-on-rails - (Ruby,Rails) 基于角色的身份验证和用户管理...? - 2

    我正在寻找用于Rails的优质管理插件。似乎大多数现有的插件/gem(例如“restful_authentication”、“acts_as_authenticated”)都围绕着self注册等展开。但是,我正在寻找一种功能齐全的基于管理/管理角色的解决方案——但不是简单地附加到另一个非基于角色的解决方案。如果我找不到,我想我会自己动手......只是不想重新发明轮子。 最佳答案 RyanBates最近做了两个关于授权的railscast(注意身份验证和授权之间的区别;身份验证检查用户是否如她所说的那样,授权检查用户是否有权访问资源

随机推荐