第2章 相关技术和理论基础
1. Spark简介
Spark研发自伯克利大学AMP实验室,是一个基于内存迭代式运算且可用于海量数据环境下的通用数据处理平台,是Apache的顶级开源项目之一。Spark旨在于提供更快的数据处理速度,更高的程序开发效率,更好的程序构建体验。
Spark有如下主要特性:
- 运行速度快:Spark使用DAG执行引擎以支持循环数据流与内存计算,从本质上提高了运行速度。
- 容易使用:Spark支持多种主流语言进行编程且提供了丰富的API,极大地方便了开发者构建程序。
- 通用性: Spark提供了丰富的计算模型,可以适用于大数据时代的诸多场合。
- 运行模式多样::Spark 可运行于Hadoop、云平台或独立的集群模式下[]。
2. Hadoop简介
Hadoop分布式系统基础架构属于Apache开源项目。其有如下特性:
- 用户透明:用户并不需要详细了解Hadoop底层的复杂实现即可进行使用。
- 跨平台性:Hadoop基于Java语言开发,具有良好的跨平台性。
- 高吞吐性:适用于海量数据处理运用[]。
- 横向拓展:可部署于廉价的集群上,可动态拓展集群规模。
- 高可靠性:基于HDFS的冗余文件存储策略及可选搭建的HA机制,提供了可靠的文件存取服务。
Hadoop的重要组件HDFS在本系统中有着重要的运用,其内部主要包括NameNode、DataNode两种角色。NameNode(仅一个)在 HDFS 内部提供元数据服务及控制所有文件操作;DataNode为 HDFS 提供存储块。由于早期仅存在一个 NameNode,一旦NameNode宕机将导致整个集群瘫痪。此外由于NameNode要承担整个集群的访问操作,随着数据体量的膨胀将会进一步增加机器纵向代价,故而可以借助Zookeeper工具实现HA(High Availability)机制及横向集群性能拓展[]。
3. Centos简介
CentOS是Linux发行版之一,来源于RHEL(Red Hat Enterprise Linux),不同的是Centos开放源代码且更加可靠。CentOS作为linux的发行版之一,继承了许多linux的优良特性,如:
- 完全免费:用户可以通过各种途径免费获得,并可以任意修改其源代码。
- 多用户、多任务:支持多个用户在互不影响的前提下工作在同一台计算机上,当然,该特性基于多任务技术前提下。
- 丰富的网络功能:用户可以轻松实现网页浏览、文件传输、远程登陆等网络工作。
- 可靠的安全、稳定性能:Centos采取读写权限控制、审计跟踪、核心授权等诸多安全控制技术措施。
- 支持多种平台:Linux可以运行在多种硬件平台上。
- 支持多处理器技术:多个处理器同时工作,使系统性能大大提高[]。
4. Zookeeper简介
Zookeeper 研发自雅虎的一个项目小组,旨在于解决分布式协调服务的调度问题,尤其是分布式单点问题。Zookeeper有如下主要特性:
- 简单易用:Zookeeper将各复杂的分布式一致性服务封装成原语集,为用户提供了简单易用的接口。
- 高效的数据存取:Zookeeper将数据保存在内存中故而提供了更加快速的数据访问操作。
- 简单的数据模型:允许分布式进程通过共享的层次结构命名空间进行相互协调。
- 数据一致性解决方案:ZooKeeper 实现诸如数据发布/订阅、分布式协调/通知、集群管理等一些列本系统需要用到的功能。
- HA机制实现:ZooKeeper在集群运用中对于HA(High Availability,高可用)机制的实现有着举足轻重的作用[]
5. Kafka简介
Kafka流处理平台研发自Apache开源基金会,其是一个高吞吐量的分布式发布订阅消息系统,可以处理网站中的所有动作流数据。Kafka有如下特性:
- 数据存储稳定性:通过O(1)的磁盘数据结构提供消息的持久化使得大规模消息存储也能够保持长时间的稳定性能。
- 高吞吐量:支持每秒数百万的消息。
- 分区消息:支持通过Kafka服务器和消费机集群来分区消息。
- 并行性:支持Hadoop并行数据加载。
此外为了后面更好的使用kafka,以下简要介绍一下kafka的相关概念:
- Broker:Kafka 集群包含一个或多个服务器,这些服务器被称为Broker。
- Topic:每条发布到Kafka集群的消息都有一个类别, 这个类别被称为Topic。
- Partition:是物理上的概念,每个Topic包含一个或多个Partition,多个partition下由leader向外提供数据服务。
- Producer:消息生产者,负责发布消息到Kafka Broker。
- Consumer:消息消费者,向Kafka Broker读取消息的客户端。
- Consumer Group:每个Consumer属于一个可有用户指定的Consumer Group。
6. SpringBoot简介
Spring Boot是由Pivotal团队开发,其设计目标在于简化Spring应用的初始搭建以及开发过程。该框架使用基于注解的方式来进行项目配置,从而使开发人员避免于繁杂的xml文件配置。Springboot有如下特点:
- 创建独立的Spring应用程序
- 嵌入的Tomcat,无需部署WAR文件
- 简化Maven配置
- 自动配置Spring
- 提供生产就绪型功能,如指标,健康检查和外部配置
- 绝对没有代码生成并且对XML也没有配置要求[]
本系统web站点模块开发基于springboot相对于传统SSM技术可以更加方便快速搭建。
7. 大数据简介
大数据即为数据+大数据技术,而非数据本身。所谓大数据技术,是指伴随着大数据的采集、存储、分析和应用的相关技术[],是一系列使用非传统的工具来对大量的结构化、半结构化和非结构化数据进行处理,从而获得分折和预测结果的一系列数据处理和分析技术。
大数据基本处理流程主要包括数据采集、存储、分析和结果呈现等环节。从数据分析全流程的角度来看,大数据技术主要包括数据采集与预处理、数据存储和管理、数据处理与分析、数据安全和隐私保护等几个层面的内容。其中数据采集与预处理利用ETL工具将分布的、异构数据源中的数据抽取到临时中间层后进行一系列ETL操作,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础;也可以利用日志采集工具(如Flume, Kafla等)把实时采集的数据作为流计算系统的输人,进行实时处理分析。数据存储和管理利用分布式文件系统、数据仓库、关系数据库、NoSQL数据库、云数据库等,实现对结构化、半结构化和非结构化海量数据的存储和管理。数据处理与分析利用分布式并行编程模型和计算框架,结合机器学习和数据挖掘算法,实现对海量数据的处理和分析;对分析结果进行可视化呈现,帮助人们更好地理解数据、分析数据。数据安全和隐私保护在从大数据中挖掘潜在的巨大商业价值和学术价值的同时,构建隐私数据保护体系和数据安全体系,有效保护个人隐私和数据安全。
大数据技术是许多技术的一个集合体,这些技术也并非全部都是新生事物,诸如数据仓库、ETL、 OLAP等技术是已经发展多年的技术,在大数据时代得到不断补充、完善、提高后又有了新的升华,也可以视为大数据技术的一个组成部分[]。