本文是基于林子雨老师的博客完成的一次课程设计,侧重于关注在实际操作中的一些
问题的解决
和各种系统软件的使用安装
。
整体流程是模拟平均心率信息,然后发送给Kafka,接下来Spark Streaming再接收进行处理,将其写入MySQL数据库。Web通过间隔若干时间查询某个时间段内的心跳,并对其进行可视化。
使用的版本如下图:
参考博客链接
平均心率检测以《Spark+Kafka构建实时分析Dashboard案例介绍》为基础,在linux下,模拟数据生成,数据预处理、消息队列发送和接收消息、数据实时处理、数据实时推送和实时展示等数据处理全流程,所涉及的各种典型操作涵盖Linux、Spark、Kafka、JAVA、MySQL、Maven、sbt等系统和软件的安装和使用方法。
关键词:Spark,Kafka,JAVA,MySQL,;
linux系统是一个开源、免费的操作系统,其稳定性、安全性、处理多并发已经得到 业界的认可,目前很多企业级的项目都会部署到Linux/unix系统上,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Spark是一种快速、通用、可扩展的大数据分析引擎。Spark是基于内存计算的大数据并行计算框架。除了扩展了广泛使用的 MapReduce 计算模型,而且高效地支持更多计算模式,包括交互式查询和流处理。Spark 适用于各种各样原先需要多种不同的分布式平台的场景,包括批处理、迭代算法、交互式查询、流处理。通过在一个统一的框架下支持这些不同的计算,Spark 使我们可以简单而低耗地把各种处理流程整合在一起。
Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务等等,用scala语言编写。
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。
Maven是一个项目管理和综合工具。Maven提供了开发人员构建一个完整的生命周期框架。开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期。它是一个Apache的开源项目,主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。
基于linux系统,运用Spark、Kafka、JAVA、MySQL、Maven、sbt等软件,首先我们构建了一个生产者,声明了主题和值及其他相关信息,运行producer应用程序随机产生代表正常人的心跳速率数据,并实时监测平均心率,发送给Kafka,接下来Spark Streaming再接收进行处理,将其写入MySQL数据库。Web通过间隔若干时间查询某个时间段内的心跳,并对其平均心率进行可视化。
1、安装Ubuntu,Hadoop,JDK,Maven,Spark,MySql。其版本信息如下:
3、开启Kafka,得到如图:
4、开启Spark streaming服务并且它会从Kafka主题中处理数据到MySQL,得到如图:
5、开启kafka producer,并且它会将事件写入kafka主题中,得到如图:
6、开启web服务器,如此可以观察dashboard,得到如图:
7、得到结果如图:
2.3.1 通过streaming操作kafka获取数据后,将数据写入MySQL数据库。我们可以使用如下代码创建数据库和表:
运行后发生错误如图所示:
解决方法:对代码进行修改可解决错误,代码如下:
ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLECT=utf8_bin;
其中
2.3.2 我们通过maven进行Spark项目编译执行,进行如下操作:
运行后发生错误如图所示:
解决方法:编辑当前用户.bashrc文件,加上如下指令:
alias sudo=“sudo env PATH=$PATH”
或者去掉sudo,只保留/usr/local/maven/bin/mvn package -DskipTests
运行后发生错误如图所示:
解决方法:通过报错信息可知这是因为JVM申请的memory不够导致无法启动sparkcontext。进行相关信息的查询可知如下表:
由此可知修改命令如下:
java -Xms256m -Xmx1024m -Dconfig=./config/common.conf -jar streaming/target/spark-streaming-0.1.jar
2.3.4 在打开网页可视化的时候,只显示坐标轴,无显示数据,其报错如下:
解决方法 :从错误提示中可以知道是数据库不存在,最终发现在common.conf配置文件中数据库名称与我们创建的数据库名称不相同,如图所示:
改变数据库名称与配置文件中名称一致即可。
如有错误,欢迎指出。