Spark大数据分析案例之平均心率检测[2021]

       本文是基于林子雨老师的博客完成的一次课程设计,侧重于关注在实际操作中的一些问题的解决和各种系统软件的使用安装
       整体流程是模拟平均心率信息,然后发送给Kafka,接下来Spark Streaming再接收进行处理,将其写入MySQL数据库。Web通过间隔若干时间查询某个时间段内的心跳,并对其进行可视化。
使用的版本如下图:
Spark大数据分析案例之平均心率检测[2021]_第1张图片

参考博客链接

文章目录

  • 摘要
  • 1 系统与软件简介
    • 1.1 Linux系统
    • 1.2 Spark
    • 1.3 Kafka
    • 1.4 MySQL
    • 1.5 Maven
  • 2 平均心率问题
    • 2.1 题目要求
    • 2.2 题目流程
    • 2.3 问题解决
  • 总结

摘要

       平均心率检测以《Spark+Kafka构建实时分析Dashboard案例介绍》为基础,在linux下,模拟数据生成,数据预处理、消息队列发送和接收消息、数据实时处理、数据实时推送和实时展示等数据处理全流程,所涉及的各种典型操作涵盖Linux、Spark、Kafka、JAVA、MySQL、Maven、sbt等系统和软件的安装和使用方法。

关键词:Spark,Kafka,JAVA,MySQL,;

1 系统与软件简介

1.1 Linux系统

       linux系统是一个开源、免费的操作系统,其稳定性、安全性、处理多并发已经得到 业界的认可,目前很多企业级的项目都会部署到Linux/unix系统上,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

1.2 Spark

       Spark是一种快速、通用、可扩展的大数据分析引擎。Spark是基于内存计算的大数据并行计算框架。除了扩展了广泛使用的 MapReduce 计算模型,而且高效地支持更多计算模式,包括交互式查询和流处理。Spark 适用于各种各样原先需要多种不同的分布式平台的场景,包括批处理、迭代算法、交互式查询、流处理。通过在一个统一的框架下支持这些不同的计算,Spark 使我们可以简单而低耗地把各种处理流程整合在一起。

1.3 Kafka

       Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务等等,用scala语言编写。

1.4 MySQL

       MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。

1.5 Maven

        Maven是一个项目管理和综合工具。Maven提供了开发人员构建一个完整的生命周期框架。开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期。它是一个Apache的开源项目,主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。

2 平均心率问题

2.1 题目要求

       基于linux系统,运用Spark、Kafka、JAVA、MySQL、Maven、sbt等软件,首先我们构建了一个生产者,声明了主题和值及其他相关信息,运行producer应用程序随机产生代表正常人的心跳速率数据,并实时监测平均心率,发送给Kafka,接下来Spark Streaming再接收进行处理,将其写入MySQL数据库。Web通过间隔若干时间查询某个时间段内的心跳,并对其平均心率进行可视化。

2.2 题目流程

1、安装Ubuntu,Hadoop,JDK,Maven,Spark,MySql。其版本信息如下:

Spark大数据分析案例之平均心率检测[2021]_第2张图片

2、对代码进行编译:
Spark大数据分析案例之平均心率检测[2021]_第3张图片

3、开启Kafka,得到如图:

Spark大数据分析案例之平均心率检测[2021]_第4张图片

4、开启Spark streaming服务并且它会从Kafka主题中处理数据到MySQL,得到如图:
Spark大数据分析案例之平均心率检测[2021]_第5张图片

5、开启kafka producer,并且它会将事件写入kafka主题中,得到如图:
Spark大数据分析案例之平均心率检测[2021]_第6张图片

6、开启web服务器,如此可以观察dashboard,得到如图:

Spark大数据分析案例之平均心率检测[2021]_第7张图片

7、得到结果如图:

Spark大数据分析案例之平均心率检测[2021]_第8张图片

2.3 问题解决

2.3.1 通过streaming操作kafka获取数据后,将数据写入MySQL数据库。我们可以使用如下代码创建数据库和表:
Spark大数据分析案例之平均心率检测[2021]_第9张图片
运行后发生错误如图所示:
在这里插入图片描述
解决方法:对代码进行修改可解决错误,代码如下:

ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLECT=utf8_bin;

其中

  1. ENGINE=InnoDB :表示使用innodb引擎,
  2. DEFAULT CHARSET=utf8:表示数据库默认编码为utf-8
  3. COLLECT=utf8_bin:表示数据库校对规则,以二进制比较,也就是区分大小写.

2.3.2 我们通过maven进行Spark项目编译执行,进行如下操作:
在这里插入图片描述
运行后发生错误如图所示:
在这里插入图片描述
解决方法:编辑当前用户.bashrc文件,加上如下指令:
alias sudo=“sudo env PATH=$PATH”
或者去掉sudo,只保留/usr/local/maven/bin/mvn package -DskipTests
在这里插入图片描述
运行后发生错误如图所示:
Spark大数据分析案例之平均心率检测[2021]_第10张图片
解决方法:通过报错信息可知这是因为JVM申请的memory不够导致无法启动sparkcontext。进行相关信息的查询可知如下表:
Spark大数据分析案例之平均心率检测[2021]_第11张图片
由此可知修改命令如下:
java -Xms256m -Xmx1024m -Dconfig=./config/common.conf -jar streaming/target/spark-streaming-0.1.jar

2.3.4 在打开网页可视化的时候,只显示坐标轴,无显示数据,其报错如下:
在这里插入图片描述
解决方法 :从错误提示中可以知道是数据库不存在,最终发现在common.conf配置文件中数据库名称与我们创建的数据库名称不相同,如图所示:
Spark大数据分析案例之平均心率检测[2021]_第12张图片
改变数据库名称与配置文件中名称一致即可。

总结

如有错误,欢迎指出。

在这里插入图片描述

你可能感兴趣的:(课设汇总,大数据,kafka,林子雨,spark)