基于Hadoop的bilibili每周必看词条分析

一、实验目的

这次实验中,对bilibli的数据信息进行研究,通过运用大数据处理框架 Spark、Hadoop 及数据可视化技术,对这些数据进行存储、处理和分析,并对点赞、收藏、播放、视频类型分类。

本实验展示了如何利用Hadoop技术对Bilibili平台的数据进行分析,特别是关注每周的热门词条。这些分析可以帮助理解用户的喜好和趋势,为内容创作者和平台运营提供数据支持。未来的工作可以进一步扩展,包括更复杂的数据处理和更精细的分析技术应用。

二、实验环境

实验工具和技术

VMware 17:主要产品和服务包括虚拟机软件、云管理平台以及与云计算相关的各种解决方案。

CentOS 07:是一个基于开源代码的自由Linux发行版,它源自于Red Hat Enterprise Linux(RHEL)的开源代码。

jdk-8u241-linux-x64:JDK包括了Java编译器(javac)、Java运行时环境(JRE)、Java虚拟机(JVM)以及其他工具和库。

Hadoop 3.3.0:作为分布式计算框架,用于处理大规模数据。

MapReduce:用于编写分布式计算程序,处理和分析数据。

Mysql 5.7.29:MySQL广泛用于Web应用程序的后端数据存储和管理

Hive 3.1.2:用于数据清洗和预处理。

Python 3.11.0:爬取网站数据。

PyCharm 2023.2:筛取获取到的有用信息

DataGrip 2021.3.1:连接虚拟机hive数据库,以方便使用sql命令进行创建表格、修改表格等操作。

FinalShell 3.9.2.2:用于管理和连接远程服务器、虚拟机和云实例。

FIneBI 5.1:可视化工具用于生成数据报告和图表

1.配置VMware环境

在nat模式中配置 子网IP地址为192.168.88.0(与后续虚拟机的ip对应)

将网关地址改为192.168.88.2

配置windows本地虚拟网卡

将第一台虚拟机导入 并登录

验证是否安装成功

安装第二台虚拟机,第二台虚拟机依赖于第一台虚拟机,所以要找到第一台的 .vmx文件

导入完成后验证第二台是否安装成功

第三台同第二台一样

2.FinalShell

配置windows上的host文件,使用主机名访问3台虚拟机

FinalShell连接node

3.Apache Hadoop 安装部署及集群搭建(分布式安装)

集群规划

主机

角色

node1

NN  DN  RM  NM

node2

SNN  DN  NM

node3

DN  NM

安装jdk1.8

查看一下三台虚拟机的名称

查看映射cat /etc/hosts

关闭防火墙 禁止开机启动firewalld服务 

systemctl stop firewalld.service  #停止firewalld服务

systemctl disable firewalld.service  #开机禁用firewalld服务

验证SSH免密登录功能

集群时间同步     ntpdate ntp5.aliyun.coml

创建data server software三个目录

上传安装包,解压安装包 在第一台机器安装,后发送给其他两台机器

jdk1.8安装在/export/server下 (拖拽即可)

解压并删除 tar -zxvf jdk-8u241-linux-x64.tar.gz

rm -rf jdk-8u241-linux-x64.tar.gz

配置环境变量 vim /etc/profile

重新加载环境变量文件 source /etc/profile 并验证安装是否成功

在node1绝对路径下 远程拷贝给其他虚拟机

jdk1.8:

scp -r /export/server/jdk1.8.0_241/ root@node2:/export/server/

scp -r /export/server/jdk1.8.0_241/ root@node3:/export/server/

环境变量:

scp /etc/profile root@node2:/etc/

scp /etc/profile root@node3:/etc/

重新加载环境变量文件 source /etc/profile    node2/3 jdk安装成功

安装Hadoop

Hadoop修改环境变量

将hadoop安装包拖至/export/server

解压 删除

rm -rf hadoop-3.3.0-Centos7-64-with-snappy.tar.gz

tar -zxvf hadoop-3.3.0-Centos7-64-with-snappy.tar.gz

修改Hadoop配置文件

hadoop-env.sh

文件最后添加

export JAVA_HOME=/export/server/jdk1.8.0_241

export HDFS_NAMENODE_USER=root

export HDFS_DATANODE_USER=root

export HDFS_SECONDARYNAMENODE_USER=root

export YARN_RESOURCEMANAGER_USER=root

export YARN_NODEMANAGER_USER=root

core-site.xml

core-site.xml

<!-- 设置默认使用的文件系统 Hadoop支持file、HDFS、GFS、ali|Amazon云等文件系统 -->

<property>

    <name>fs.defaultFS</name>

    <value>hdfs://node1:8020</value>

</property>

<!-- 设置Hadoop本地保存数据路径 -->

<property>

    <name>hadoop.tmp.dir</name>

    <value>/export/data/hadoop-3.3.0</value>

</property>

<!-- 设置HDFS web UI用户身份 -->

<property>

    <name>hadoop.http.staticuser.user</name>

    <value>root</value>

</property>

<!-- 整合hive 用户代理设置 -->

<property>

    <name>hadoop.proxyuser.root.hosts</name>

    <value>*</value>

</property>

<property>

    <name>hadoop.proxyuser.root.groups</name>

    <value>*</value>

</property>

<!-- 文件系统垃圾桶保存时间 -->

<property>

    <name>fs.trash.interval</name>

    <value>1440</value>

</property>

hdfs-site.xml

<!-- 设置SNN进程运行机器位置信息 -->

<property>

    <name>dfs.namenode.secondary.http-address</name>

    <value>node2:9868</value>

</property>

mapred-site.xml

<!-- 设置MR程序默认运行模式: yarn集群模式 local本地模式 -->

<property>

  <name>mapreduce.framework.name</name>

  <value>yarn</value>

</property>

<!-- MR程序历史服务地址 -->

<property>

  <name>mapreduce.jobhistory.address</name>

  <value>node1:10020</value>

</property>

<!-- MR程序历史服务器web端地址 -->

<property>

  <name>mapreduce.jobhistory.webapp.address</name>

  <value>node1:19888</value>

</property>

<property>

  <name>yarn.app.mapreduce.am.env</name>

  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>

</property>

<property>

  <name>mapreduce.map.env</name>

  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>

</property>

<property>

  <name>mapreduce.reduce.env</name>

  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>

</property>

yarn-site.xml

<!-- 设置YARN集群主角色运行机器位置 -->

<property>

    <name>yarn.resourcemanager.hostname</name>

    <value>node1</value>

</property>

<property>

    <name>yarn.nodemanager.aux-services</name>

    <value>mapreduce_shuffle</value>

</property>

<!-- 是否将对容器实施物理内存限制 -->

<property>

    <name>yarn.nodemanager.pmem-check-enabled</name>

    <value>false</value>

</property>

<!-- 是否将对容器实施虚拟内存限制。 -->

<property>

    <name>yarn.nodemanager.vmem-check-enabled</name>

    <value>false</value>

</property>

<!-- 开启日志聚集 -->

<property>

  <name>yarn.log-aggregation-enable</name>

  <value>true</value>

</property>

<!-- 设置yarn历史服务器地址 -->

<property>

    <name>yarn.log.server.url</name>

    <value>http://node1:19888/jobhistory/logs</value>

</property>

<!-- 历史日志保存的时间 7天 -->

<property>

  <name>yarn.log-aggregation.retain-seconds</name>

  <value>604800</value>

</property>

workers

node1.itcast.cn

node2.itcast.cn

node3.itcast.cn

配置完成后使用scp同步给其他虚拟机 在node1   /export/server 目录下

scp -r hadoop-3.3.0 root@node2:$PWD

scp -r hadoop-3.3.0 root@node3:$PWD

将Hadoop添加到环境变量

将配置文件拷贝给node2与node3

重启环境变量 输出hadoop验证

格式化操作(初始化操作) NameNode format **只能使用一次**

shell脚本一键启停 (需要配置好机器之间的SSH免密登录和workers文件)

此时启动成功

使用浏览器查看

HDFS集群:http://node1:9870/    YARN集群:http://node1:8088/

4.Apache hive安装部署(远程模式配置)

Hadoop与Hive整合

MySQL安装

在第一台机器上(node1)安装

卸载Centos7自带的mariadb

安装MySQL 创建mysql文件夹 上传MySQL安装包

解压MySQL安装包

安装依赖

安装MySQL

MySQL初始化     更改所属组   启动mysql

查看日志并查看临时密码

复制密码登录MySQL

重设密码 这里设置为123456

授权

MySQL安装并启动成功

将MySQL设置为开机自启动

Hive安装(只需要一台虚拟机安装就可以)

安装包上传至安装目录下

解压Hive

解决Hive与Hadoop之间guava版本差异

修改Hive配置文件

hive-env.sh

    cd /export/server/apache-hive-3.1.2-bin/conf

    mv hive-env.sh.template hive-env.sh

   

    vim hive-env.sh

    export HADOOP_HOME=/export/server/hadoop-3.3.0

    export HIVE_CONF_DIR=/export/server/apache-hive-3.1.2-bin/conf

    export HIVE_AUX_JARS_PATH=/export/server/apache-hive-3.1.2-bin/lib

   

hive-site.xml

    vim hive-site.xml

    <configuration>

    <!-- 存储元数据mysql相关配置 -->

    <property>

    <name>javax.jdo.option.ConnectionURL</name>

    <value>jdbc:mysql://node1:3306/hive3?createDatabaseIfNotExist=true&amp;useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8</value>

    </property>

   

    <property>

    <name>javax.jdo.option.ConnectionDriverName</name>

    <value>com.mysql.jdbc.Driver</value>

    </property>

   

    <property>

    <name>javax.jdo.option.ConnectionUserName</name>

    <value>root</value>

    </property>

   

    <property>

    <name>javax.jdo.option.ConnectionPassword</name>

    <value>123456</value>

    </property>

   

    <!-- H2S运行绑定host -->

    <property>

        <name>hive.server2.thrift.bind.host</name>

        <value>node1</value>

    </property>

   

    <!-- 远程模式部署metastore metastore地址 -->

    <property>

        <name>hive.metastore.uris</name>

        <value>thrift://node1:9083</value>

    </property>

   

    <!-- 关闭元数据存储授权  -->

    <property>

        <name>hive.metastore.event.db.notification.api.auth</name>

        <value>false</value>

    </property>

    </configuration>

   

上传mysql jdbc驱动到hive安装包lib下

初始化元数据

hive安装完成

metastore服务启动

前台启动

后台启动

5.DataGrip配置

创建测试链接文件:1.sql

链接hive

三、操作流程

数据集收集

bilibili每周必看数据获取

右键检查,在网络中输入每周必看的标题(随便一个就可以)

刷新完后 它会自动选择一个文件,右键该文件选择以cURL(cmd)格式复制

将复制的cURL粘贴到该网站:https://spidertools.cn/#/curl2Request

复制右侧代码到Pycharm中 并在后面修改26行,并添加后续内容,使其生成json文件

下面为运行结果

将该文本件输入到txt文件中

至此python爬取每周必看完成

数据预处理

将各个信息即:标题:、视频类型:、视频标签:、视频链接:、视频时长:、UP主:、UP主_id:、adi:、投币数:、弹幕数:、收藏数:、点赞数:、评论数:、分享数:、播放数:删除,将各个不同类型的数据用table制表符分开

打开DataGrip 创建一个新项目

创建SQL File

在创建的新SQL文件中编辑如下内容:

建库建表 db_bilibili.tb_bilibili_source

切换数据库

建数据表

加载数据(本地加载) 上传表数据至 FinalShell (虚拟机node1上)

加载数据到表中

load data local inpath '/root/hivedata/data1.tsv' into table db_bilibili.tb_bilibili_source;

查询表 验证数据文件是否映射成功 select * from tb_bilibili_source;

数据分析

创建一个名为 tb_rs_likes_top10 的表,以统计点赞人数最多的Top10用户选中bilibili_title、likes,根据likes中记录的数字进行排序,并只记录前十条记录到新表中

创建一个名为 tb_rs_favorite_top10 的表,以统计收藏人数最多的Top10用户;选中bilibili_title、favorite,根据favorite中记录的数字进行排序,并只记录前十条记录到新表中

创建一个名为 tb_rs_coin_top10 的表,以统计投币人数最多的Top10用户;选中bilibili_title、coin,根据coin中记录的数字进行排序,并只记录前十条记录到新表中

创建一个名为 tb_rs_share_top10 的表,以统计分享人数最多的Top10用户;选中bilibili_title、share,根据share中记录的数字进行排序,并只记录前十条记录到新表中

创建一个名为tb_rs_video_style的新表,用于存储统计后的视频类型分布数据,从 db_bilibili.tb_bilibili_source 表中选择视频标题和类型,并计算每种组合下的唯一视频数量。

可视化

基于FineBI实现可视化报表

FineBI配置

将Hive的驱动jar包放入FineBI的lib目录下:webapps\webroot\WEB-INF\lib

安装驱动包隔离插件

重启后配置成功

连接数据库

在空处创建名为bilibili的数据连接 数据库与DateGrip中的数据库名称相同:db_bilibili

主机为:node1  端口为:10000 认证方式:用户名密码

用户名:root 密码:无

点击数据准备,创建bilibili的文件夹,在文件夹中创建名为 每周必看 业务包

创建《每周必看》业务包

点开每周必看,添加数据库表

选中之前筛选的数据库表5张表

之前创建的表有:  tb_rs_cion_top10 ; tb_rs_favorite_top10 ;

                  tb_rs_likes_top10 ; tb_rs_share_top10;

                  tb_rs_video_style

下图中框选的

导入数据库表成功

绘制报表

仪表盘创建bilibili

组件中添加数据表

四、可视化结果

分享柱状图

点赞雷达图

收藏折线图

投币瀑布图

视频类型词云

视频类型柱状图

五、遇到的问题

虚拟机在导入到VMware中会出现下面的选项

注意要选择我已移动,选错了就要删除重来

java -version没有找到

在node1上安装完jdk1.8后,并配置完环境变量,再将环境变量文件与jdk文件分发给node2与node3,在node2与node3上输入java -version没有找到

解决:重启配置文件

中文乱码问题

修改Hive存储的元数据信息

在使用DataGrip时遇到了连接不到本地hive的问题

经过反复网上查阅后,了解到连接时需要在虚拟机上开启  HDFS集群、YARN集群、mysql、metastore,之后在开启hive与二代hive,此时使用jps查询

如下,即为连接成功

  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值