注:展示部分文档内容和系统截图,需要完整的视频、代码、文章和安装调试环境请私信up主。
2.1 Hadoop的概述
Hadoop是由Apache开发的一个开源分布式计算平台,也是一个开源的分布式系统框架,它提供了一系列强大的工具和技术,用于执行大规模数据处理的任。可以对大规模数据进行分布式存储和处理。它最初是由Doug Cutting和Mike Cafarella开发的,它的名字源自Doug Cutting的儿子玩具象的名字。 Hadoop通过分布式存储和计算的方式,可以处理成千上万的节点的数据集,具有高扩展性和容错性。同时,Hadoop采用多台廉价计算机和低成本存储来代替昂贵的单个服务器,大大降低了计算机处理大规模数据的成本。
Hadoop的核心思想是将数据分布式存储在多台计算机中,然后通过MapReduce模型实现大规模数据处理。其中,MapReduce模型是一个分布式计算框架,将任务分为map和reduce两个步骤,通过数据的映射和归约来完成计算任务。在map阶段,每个节点将输入数据切分为若干记录,并将这些记录映射到key/value对中;在reduce阶段,节点根据输出的key值对记录进行归并,并进行归约操作。通过这种方式,可以有效地利用计算机集群中的资源,实现大规模数据处理。
Hadoop的应用领域非常广泛,尤其是在大数据领域中。Hadoop不仅可以处理结构化数据,还可以处理非结构化或半结构化数据,例如Web日志、电子邮件、社交网络、音频和视频等。这种处理方式还可以用于搜索引擎、推荐系统、广告投放、分析市场趋势和处理生物信息学数据等领域。
总体而言,Hadoop是一个强大的数据处理工具,可以帮助企业高效地处理和分析大数据,从而获得更多的商业机会。在下一章节中,本课题将更加详细地介绍Hadoop的核心组件HDFS、MapReduce、Yarn。
2.2 Hadoop的核心组件
Hadoop是由Apache开发的一个开源分布式计算平台,它提供了一系列强大的工具和技术,用于执行大规模数据处理的任务。Hadoop的核心组件包括Hadoop Distributed File System(HDFS)、MapReduce和Yarn。
2.2.1 HDFS 概述
HDFS是Hadoop Distributed File System的简称,在Hadoop中,HDFS是文件系统层,负责管理分布式文件存储和数据复制机制,它将大规模数据分布式存储在多个节点上。其具有高容错性和可扩展性,能够支持TB乃至PB级别的数据存储容量。其数据存储中采用了主(Master)从(Slaver)节点的结构,按块(Block)存储的文件存储机制。
通常来讲一个完整的分布式文件系统包含以下几个内容:
- NameNode:作为主节点,领导整个HDFS,通常情况下单个集群只有一个主节点。
- DataNode:作为系统的工作节点,对数据块进行存储与管理,在集群中通常存在多个。
- Secondary NameNode:作为防止因NameNode宕机而导致集群无法正常工作的备用节点。
- Client:作为系统中对接用户的接口,使用户可使用操作工具通过Client与集群的文件进行操作。
2.2.2 MapReduce 概述
MapReduce是计算框架,是Hadoop最核心的部分,用于对存储在HDFS中的大规模数据进行分布式计算和处理。MapReduce模型将用户编写的算法分割成可扩展的小任务,并在多个节点上并发执行,以实现高速的大规模数据处理。它分为两个阶段:Map和Reduce。Map阶段将大规模数据分解成键值对,并在不同的机器上进行映射计算,而Reduce阶段则将Map阶段输出的结果进行汇总计算。
2.2.3 Yarn 概述
除了MapReduce以外,Hadoop的另一个核心组件是Yarn。Yarn的全称是Yet Another Resource Negotiator,它是Hadoop的资源管理系统,用于将计算资源动态分配给不同的用户和程序。Yarn的出现使得Hadoop可以支持多种不同的计算任务,并且可以对不同的计算任务进行资源管理和调度。
总的来说Hadoop的核心组件提供了大规模数据存储、分布式计算和资源管理的一整套解决方案,可以实现灵活、高效的数据处理。在下一章中,本课题将介绍Hadoop在大数据处理中的应用。
2.3 Hadoop在大数据处理中的应用
随着互联网的迅速发展,数据量呈爆发式增长,如何高效地处理海量数据成为当今信息技术领域的热门话题。Hadoop作为当今最主流的大数据处理框架之一,具有分布式、可扩展、高可靠等特点,因而在大数据处理中广受欢迎。
Hadoop主要通过HDFS和MapReduce两个核心工具对数据进行处理。其中,HDFS是Hadoop的分布式文件系统,它通过将文件切分成多个块并在多台计算机上进行分布式存储实现高效的数据访问和容错处理。MapReduce是一种分布式计算框架,通过将大批量数据拆分成若干个小的数据块并在多个计算节点上分别进行计算,从而实现海量数据的高效处理。这两个工具的相互协作使得Hadoop能够应对复杂的大数据处理场景,逐渐成为大数据处理领域中的瑞士军刀。
在大数据环境下,Hadoop的应用领域越来越广泛,其中最为重要的应用之一是机器学习。由于机器学习通常需要对海量数据进行处理和分析,因此Hadoop的分布式存储和分布式计算能力使其在机器学习方面有着得天独厚的优势。此外,Hadoop还广泛应用于金融、电子商务、政府等各个领域的大数据处理中,例如银行利率预测、商品销售预测、行政区域划分等。
Hadoop并非万能药,它在大数据处理中也存在一些不足。例如,Hadoop虽然能够处理大量的结构化和半结构化数据,但对于非结构化数据的处理还比较困难。此外,Hadoop由于其本身的复杂性,需要专业人员进行配置、部署和管理,因此实现起来比较复杂。因此,在使用Hadoop进行大数据处理时,还需要综合考虑其优缺点并合理运用。
4.2 系统设计
在本节中,本课题将会描述系统组成部分之间的相互作用及其所采用的技术框架。首先,本课题将介绍系统客户端的实现以及系统整体的架构设计,其次描述系统的组件之间的逻辑关系,再讨论系统的扩展性和可维护性问题。
本课题在客户端的实现上面采用了Webservice技术。考虑到目前大多数非专业技术人员习惯使用Windows平台进行操作,另一方面,将云计算作为一种服务来调用,可以实现与客户端的分离,方便服务集成。鉴于这两方面的考虑,系统设计采用Webservice技术,它是一种跨编程语言、操作系统平台的远程调用技术[1],是以Hadoop计算集群作为其服务端,经Webservice远程调用实现,其数据交互流程如图。
在系统架构设计方面,本课题采用了基于Hadoop平台的分布式架构,实现了数据的存储、处理和分析等功能。同时,本课题还针对系统的安全性做了相应的设计,如用户身份验证、数据访问控制等,确保系统的数据安全性和可靠性。
首先需介绍基于Hadoop的中医病案数据挖掘系统中的系统架构设计。系统架构设计作为整个系统设计的核心,是整个系统的基础之一。
系统整体架构采用了Hadoop分布式框架,以及基于中医数据挖掘算法的云计算技术,以打造一个高效、稳定、易维护的系统。从整体来看,该系统分为数据采集、数据存储、数据预处理、数据挖掘、数据可视化几个部分,并在此基础上构建了相应的数据流程。此外,该系统还采用了前端界面设计和Web技术相结合的方式,提供简单、易用、用户交互性强的操作界面。
对于系统各个组件之间,其逻辑关系的重要性也很高。如数据的采集、预处理、挖掘和可视化在整个系统中构成了数据处理流程。而这些组件之间的关系和流程本课题采用了高可复用和可拓展的方式设计。因此,在系统需要扩展功能或者修改Bug的时候,只需要对应的添加相应的组件或者修改已有的组件,而对此不会对整个系统造成过大的影响。从而提高了系统的可维护性和可扩展性。
本节通过对基于Hadoop的中医病案数据挖掘系统中的系统架构设计进行详细地剖析和阐述,全面展现了该系统的设计理念和实现方法,为后续的系统开发和优化提供了参考。
4.3 功能实现
本章节将主要介绍基于Hadoop的中医病案数据挖掘系统的各个功能实现。其中包括数据预处理,数据存储与数据可视化等多个环节。数据预处理主要包括对原始数据进行清洗、过滤、转换等,以保证数据的准确性和完整性。
数据清洗的目的是提高数据质量,以便更准确地提取有用的信息。其主要任务是检测和纠正数据中的错误、缺失值、重复值和异常值,以及将不同格式的数据转换为一致的格式。其具体包括:
- 缺失值处理,对空值进行填充。
- 噪声数据处理,对重复数据,异常值进行删除,将数据进行分组。
- 一致性检查。
在数据预处理的基础上进行数据分析,则首先需在数据库中创建存储各数据所需要的若干数据表,用来存储用户信息,病案等数据。具体数据表如下:
- 病历信息表,表名:binglixinxi用来储存病历信息,包含用户id,创建时间,用户账号,用户姓名,性别,身高,体重,血压,血糖,心率,现病史,既往史,药敏史与登记日期,具体字段与功能如下表所示。
表4-1病历信息表
字段名称 |
类型 |
长度 |
字段说明 |
主键 |
默认值 |
id |
bigint |
主键 |
主键 |
||
addtime |
timestamp |
创建时间 |
CURRENT_TIMESTAMP |
||
yonghuzhanghao |
varchar |
200 |
用户账号 |
||
yonghuxingming |
varchar |
200 |
用户姓名 |
||
xingbie |
varchar |
200 |
性别 |
||
shengao |
varchar |
200 |
身高/cm |
||
tizhong |
float |
体重/kg |
|||
xueya |
varchar |
200 |
血压 |
||
xuetang |
float |
血糖 |
|||
xinlv |
float |
心率 |
|||
xianbingshi |
longtext |
4294967295 |
现病史 |
||
jiwangshi |
longtext |
4294967295 |
既往史 |
||
yaominshi |
longtext |
4294967295 |
药敏史 |
||
dengjiriqi |
date |
登记日期 |
- 普通用户信息表,表名:yonghu,用来存储普通用户账户的信息,包括用户id,创建时间,用户账号,密码,用户姓名,头像,性别与手机号码,具体字段与功能如下表所示。
表4-2普通用户表
字段名称 |
类型 |
长度 |
字段说明 |
主键 |
默认值 |
id |
bigint |
主键 |
主键 |
||
addtime |
timestamp |
创建时间 |
CURRENT_TIMESTAMP |
||
yonghuzhanghao |
varchar |
200 |
用户账号 |
||
mima |
varchar |
200 |
密码 |
||
yonghuxingming |
varchar |
200 |
用户姓名 |
||
touxiang |
longtext |
4294967295 |
头像 |
||
xingbie |
varchar |
200 |
性别 |
||
shoujihaoma |
varchar |
200 |
手机号码 |
- 管理员用户信息表,表名:users用来储存管理员用户的信息,包括用户id,用户名,密码,角色与新增时间,具体字段与功能如下表所示。
表4-3管理员用户表
字段名称 |
类型 |
长度 |
字段说明 |
主键 |
默认值 |
id |
bigint |
主键 |
主键 |
||
username |
varchar |
100 |
用户名 |
||
password |
varchar |
100 |
密码 |
||
role |
varchar |
100 |
角色 |
管理员 |
|
addtime |
timestamp |
新增时间 |
CURRENT_TIMESTAMP |
- token表,表名:token,用来用户身份信息的数据,包括用户id,用户名,表明,角色,密码,角色,新增时间与过期时间,具体字段与功能如下表所示。
表4-4 token表
字段名称 |
类型 |
长度 |
字段说明 |
主键 |
默认值 |
id |
bigint |
主键 |
主键 |
||
userid |
bigint |
用户id |
|||
username |
varchar |
100 |
用户名 |
||
tablename |
varchar |
100 |
表名 |
||
role |
varchar |
100 |
角色 |
||
token |
varchar |
200 |
密码 |
||
addtime |
timestamp |
新增时间 |
CURRENT_TIMESTAMP |
||
expiratedtime |
timestamp |
过期时间 |
CURRENT_TIMESTAMP |
4.4 系统性能测试
在完成系统功能实现后,本课题需要对系统进行测试。主要内容为各功能的实际测试与模拟病案数据的导入和分析。测试的主要目的是验证系统各功能的实现与其稳定性和可靠性。
用户在选择管理员或者用户的身份登录系统后,可根据自身需要修改用户信息与密码等。
目 录