一、需求分析
在进行大数据平台建设前,需要对需求进行充分的分析,包括数据源、数据类型、数据量、数据处理方式、数据使用目的等方面进行分析。
二、技术选型
大数据平台建设所需的技术包括数据存储、数据处理、数据分析等方面。在进行技术选型时,需要根据需求分析结果进行选择
1)传统的IT领域中,企业的服务器资源(内存、cpu等)是有限的,也是固定的。服务器的应用场景却是灵活多变的。例如,今天临时上线了一个系统,需要几台服务器,过了几天,需要把这个系统下线,把这几台服务器清理出来。
因此,分布式资源管理系统应运而生,常见的包括YARN,Kubernetes和Mesos
- 大数据底层基础技术框架主要是指Zookeeper
3) 在选择全文检索引擎工具时,可以从易用性、扩展性、稳定性、集群运维难度、项目集成程度、社区活跃度几个方面进行对比。Lucene、Solr和Elasticsearch的对比
对比项 | £Lucene | £Solr | £Elasticsearch |
易用性 | 低 | 高 | 高 |
扩展性 | 低 | 中 | 高 |
稳定性 | 中 | 高 | 高 |
集群运维难度 | 不支持集群 | 高 | 低 |
项目集成程度 | 高 | 低 | 低 |
社区活跃度 | 中 | 中 | 高 |
4)任务调度技术框架包括Azkaban、Ooize、DolphinScheduler等
它们适用于普通定时执行的例行话任务,以及包含复杂依赖关系的多级任务进行调度,支持分布式,保证调度系统的性能和稳定性
技术选型如下:
比较项 | £Azkaban | £Ooize | £DolphinScheduler |
任务类型 | Shell脚本及大数据任务 | Shell脚本及大数据任务 | Shell脚本及大数据任务 |
任务配置 | 通过自定义DSL语法配置 | 通过XML文件配置 | 通过页面拖拽方式 |
任务暂停 | 不支持 | 支持 | 支持 |
高可用(HA) | 通过DB支持HA | 通过DB支持HA | 支持HA(多Master和Worker) |
多租户 | 不支持 | 支持 | 支持 |
邮件告警 | 支持 | 支持 | 支持 |
权限控制 | 粗粒度支持 | 粗粒度支持 | 细粒度支持 |
成熟度 | 高 | 高 | 中 |
易用性 | 高 | 中 | 高 |
所属公司 | | Cloudeara | 中国易观 |
5)云平台技术选型:
微服务 | £SpringCloud | £Dubbo | £Spring Cloud Netflix | £Service Mesh(下一代) |
服务网关 | SpringCloudGateway | Zuul、gateway | Zuul、gateway | Envoy代理组件 |
认证中心 | Auth2.0 | Auth2.0 | Auth2.0 | Auth2.0 |
注册中心、配置中心 | Nacos | Zookeeper | Eureka、Zookeeper、Consul | PilotDiscovery |
服务调用 | Ribbon LoadBalancer、Feign、OpenFeign | RPC | Ribbon、LoadBalancer、Feign、OpenFeign | istio |
服务监控 | actuator | |||
链路追踪 | skywalking | |||
熔断降级 | sentinel | Hystrix、resilience4j、Sentinel | Hystrix、resilience4j、Sentinel | virtualservice组件 DestinationRule组件 |
分布式文件 | 本地存储、MinIO存储、FastDfs存储 | |||
分布式事务 | seata | |||
分布式日志 | ELK(Elasticsearch、 Logstash、Kibana) | |||
应用容器 | docker | docker | docker | docker |
6)关系型数据库选型:
数据库 | 是否开源 | 适用场景 | 优缺点 |
£MySQL | 是 | 方向 web网站系统,日志记录系统,数据仓库系统,嵌入式系统 | 优点 1. 体积小、速度快、总体拥有成本低,开源,提供的接口支持多种语言连接操作。 2. 支持多种操作系统。 3. MySQL 的核心程序采用完全的多线程编程。线程是轻量级的进程,它可以灵活地为用户提供服务,而不过多的系统资源。用多线程和C语言实现的MySQL 能很容易充分利用CPU。 4. MySQL 有一个非常灵活而且安全的权限和口令系统。当客户与MySQL 服务器连接时,他们之间所有的口令传送被加密,而且MySQL 支持主机认证 缺点 1. 不支持热备份。 2. MySQL不支持自定义数据类型 3. MySQL最大的缺点是其安全系统,主要是复杂而非标准,另外只有到调用mysqladmin来重读用户权限时才发生改变。 4. MySQL对存储过程和触发器支持不够良好。 5. 尽管 MySQL 理论上仍是开源产品,也有人抱怨它诞生之后更新缓慢。然而,应该注意到有一些基于 MySQL 并完整集成的数据库(如 MariaDB),在标准的 MySQL 基础上带来了额外价值。 6. MySQL对XML支持不够良好 |
£Oracle | 否 | Oracle适用场景如下:大型数据库软件,收费,支撑体系完善,强大,安全性高(适用于服务器比较强大的单节点或者集群环境)。 | 优点 1. Oracle 能在所有主流平台上运行(包括 windows)完全支持所有工业标准采用完全开放策略使客户选择适合解决方案对开发商全力支持。 缺点 1. 对硬件的要求很高。 |
£SQL server | 否 | 优点 1. 易用性、适合分布式组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等; 缺点
3. 没有获得任何安全证书。 4. SQL Server 多用户时性能佳。 | |
£DB2 | 否 | 低延迟交易 实时分析 | IBM Db2 由世界领先的数据库专家设计,使开发人员、DBA 和企业架构师能够运行低延迟事务和实时分析,以应对最苛刻的工作负载。 从微服务到 AI 工作负载,Db2 是经过测试、具有弹性的混合数据库,为运行世界的系统提供极高的可用性、内置的精细安全性、轻松的 可扩展性和智能自动化。 极高的可用性 关键任务环境需要持续可用性和对故障的零容忍。部署大型机级的始终在线可用性,以不间断地运行您的工作负载。 内置精细安全 安全是我们的核心。通过动态和静态加密、广泛的审计、数据屏蔽、行和列访问控制、基于角色的访问等来保护您的数据。没有人像您一样了解您的数据。让我们保持这种状态。 轻松的可扩展性 Db2 与您一起成长。随着工作负载的发展和性能需求的变化,纵向扩展和扩展。 智能自动化 内置容器操作器可自动执行耗时的数据库任务,同时保持您的业务正常运行。构建应用程序,同时利用我们先进的工作负载管理自动化和 ML 优化查询引擎。 |
£PostgreSql | 是 | PostgreSQL数据库的主要有以下应用场景: | 优点 1. PostgreSQL 是一个开源的,免费的,同时非常强大的关系型数据管理系统。 2. PostgreSQL 背后有热忱而经验丰富的社区,可以通过知识库和问答网站获取支持,全天候免费。 3. 即使其本身功能十分强大,PostgreSQL 仍附带有许多强大的开源第三方工具来辅助系统的设计、管理和使用。 4. 可以用预先存储的流程来程序性扩展 PostgreSQL ,一个高级的关系型数据库理应如此。 5. PostgreSQL 不只是一个关系型数据库,还是一个面向对象数据库——支持嵌套,及一些其他功能。 缺点 1. 对于简单而繁重的读取操作, 超过了 PostgreSQL 的杀伤力,可能会出现比同行(如MySQL)更低的性能。 2. 按给出的该工具的性质,从普及度来说它还缺乏足够后台支撑,尽管有大量的部署——这可能会影响能够获得支持的容易程度 |
7)K-V数据库:
£memcached | £redis | |
类型 | key-value | key-value |
过期策略 | 支持 | 支持 |
数据类型 | 单一数据类型 | 五大数据类型 |
持久化 | 不支持 | 支持 |
主从复制 | 不支持 | 支持 |
虚拟内存 | 不支持 | 支持 |
8)文档数据库:
£MongoDB | £CouchDB | |
语言 | C++ | Erlang |
是否开源 | 是 | 是 |
优点 | 高性能 | 多主复制 |
- 架构设计
大数据平台建设需要进行架构设计,包括数据采集、数据存储、数据处理、数据分析等方面。在进行架构设计时,需要考虑数据流转、系统可扩展性、高可用性等因素。
四、数据采集
数据采集是大数据平台建设的重要环节,需要根据不同的数据源进行采集。常见的数据源包括数据库、文件、网络等。在进行数据采集时,需要考虑数据采集频率、数据采集量、数据采集质量等因素。数据采集也被称数据同步。随着车联网技术兴起,产生了海量数据。这些数据散落在各个地方,我们需要将这些数据融合到一起,然后从这些海量数据中计算出一些有价值的内容。此时第一步需要做的就是数据采集过来。
数据采集技术框架包括以下几种。
- Flume、Logstash和FileBeat常用于日志数据实时监控采集
技术选型如下:
对比项 | £Flume | £ Logstash | £ FileBeat |
来源 | Apache | Elastic | Elastic |
开发语言 | Java | Jruby | Go |
内存消耗 | 高 | 高 | 低 |
CPU消耗 | 高 | 高 | 低 |
容错性 | 优秀,内部有事务机制 | 优秀,内部有持久化队列 | 无 |
负载均衡 | 支持 | 支持 | 支持 |
插件 | 丰富的输入和输出插件 | 丰富的输入和输出插件 | 只支持文件数据采集 |
数据过滤能力 | 提供了拦截器 | 强大的过滤能力 | 有过滤能力,但较弱 |
二次开发难度 | 容易 | 难 | 难 |
社区活跃度 | 高 | 高 | 高 |
资料完整度 | 高 | 高 | 高 |
- Sqoop和Datax常用于关系型数据库离线数据采集
技术选型如下:
对比项 | £Sqoop | £DataX |
来源 | Apache | 阿里巴巴 |
开发语言 | Java | Java |
运行模式 | MapReduce | 单进程多线程 |
分布式 | 支持 | 不支持 |
执行效率 | 高 | 中 |
数据源类型 | 仅支持关系型数据库和Hadoop相关存储系统 | 支持20分钟 |
扩展性 | 一般 | 较好(提供插件机制) |
社区活跃度 | 活跃 | 活跃 |
资料完整度 | 完整 | 完整 |
- Cannal和Ma'xwell常用于关系型数据库实时数据采集
技术选型如下:
对比项 | £Canal | £Maxwell |
来源 | 阿里巴巴 | Zendesk |
开发语言 | JAVA | JAVA |
数据格式 | 格式自由 | JSON格式 |
HA | 支持 | 支持 |
Bootstrap功能 | 不支持 | 支持 |
分区 | 支持 | 支持 |
随机读 | 支持 | 支持 |
社区活跃度 | 活跃 | 活跃 |
资料完整度 | 完整 | 完整 |
五、数据存储
大数据平台建设需要进行数据存储,常用的存储方式包括HDFS、HBase、Kudu、Kafka等。在进行数据存储时,需要考虑数据存储量、数据存储速度、数据存储可靠性等因素
技术选型如下:
对比项 | £HDFS | £HBase | £Kudu | £Kafka |
优点 | 支持海量数据存储 | 支持海量数据存储、支持单条数据修改 | 支持数据修改、支持SQL数据分析 | 海量数据临时缓冲存储,提供高吞吐量肚读写 |
缺点 | 不支持单条数据修改 | 不支持传统Sql语法 | 定位不明,实际使用有限 |
六、数据处理
大数据平台建设需要对数据进行处理,包括数据清洗、数据预处理、数据转换等方面。常用的数据处理技术包括MapReduce、Spark等。在进行数据处理时,需要考虑数据处理速度、数据处理质量等因素。
数据计算分为离线数据计算和实时数据计算
- 离线数据计算
大数据中的离线数据计算引擎经过十几年的发展,到目前为止主要发生了3次大的变更
MapReduce可以称得上是大数据行业的第一代离线数据计算引擎,主要用于姐姐大规模分布式并行计算。MapReduce计算引擎的核心思想是,将计算逻辑抽象成Map和Reduce两个阶段进行处理
Tez计算引擎在大数据技术生态圈中的存在感较弱,实际工作中很少单独使用Tez去开发程序
Spark最大的特点就是内存计算:任务执行阶段的中间结果全部放在内存中,不需要读写磁盘,极大的提高了数据的计算性能。Spark提供了大量高阶函数()
- 实时数据计算
用于实时数据计算的工具主要有三种
Storm主要用于实现实时数据分布式计算
Flink属于新一代实时数据分布式计算引擎,其计算性能和生态圈都优于Storm
Spark中的SparkStreaming组件也可以提供基于秒级别的实时数据分布式计算功能
技术选型如下:
比较项 | £Storm | £Spark Streaming | £Flink |
计算模型 | Native | Micro-Batch | Native |
API类型 | 组合式 | 声明式 | 声明式 |
语义级别 | At-Least-Once | Exectly-Once | Exectly-Once |
容错机制 | Ack | Checkpoint | Checkpoint |
状态管理 | 无 | 有 | 有 |
应用场景 |
七、数据分析
大数据平台建设需要对数据进行分析,包括数据挖掘、数据可视化、数据预测等方面。常用的数据分析技术包括机器学习、数据挖掘等。在进行数据分析时,需要考虑数据分析结果的准确性、数据分析时间等因素。数据分析技术框架包括Hive、Impala、Kylin、Clickhouse、Druid、Drios等。Hive的执行效率一般,但是稳定性极高Imoala基于内存可以提供优秀的执行效率,但是稳定性一般。Kylin通过预计算可以提供PB级别数据毫秒级别响应。
技术选型如下:
比较项目 | 计算引擎 | 计算性能 | 稳定性 | 数据规模 | SQL支持程度 |
£Hive | MapReduce | 中 | 高 | TB级别 | HQL |
£Impala | 自研MPP | 高 | 低 | TB级别 | 兼容HQL |
£Kylin | MapReduce/Spark | 高 | 高 | TB和PB级别 | 标准SQL |
Clickhouse、Druid和Drois属于典型的实时OLAP数据分析引擎,主要应用在实时数据分析领域,它们之间的区别如下
Druid和Doris是可以支持高并发的,ClickHouse的并发能力有限,Druid中SQL支持是有限的
Druid和ClickHouse的成熟程度目前相对比较高,Doris处于快速发展阶段。
比较项 | 查询性能 | 高并发 | 实时数据插入 | 实时数据更新 | JOIN操作支持 | SQL支持程度 | 成熟程度 | 运维程度 |
£Druid | 高 | 高 | 支持 | 不支持 | 有限 | 有限 | 高 | 中 |
£ClickHouse | 高 | 低 | 支持 | 弱 | 有限 | 非标准SQL | 高 | 高 |
£Doris | 高 | 高 | 支持 | 中 | 有限 | 较好 | 中 | 低 |
八、安全性设计
大数据平台建设需要进行安全性设计,包括数据安全、系统安全等方面。在进行安全性设计时,需要考虑数据的敏感性、系统的可靠性等因素。
九、系统测试
大数据平台建设完成后,需要进行系统测试,包括功能测试、性能测试、安全测试等方面。在进行系统测试时,需要考虑测试的全面性和可靠性。
十、系统维护
大数据平台建设完成后,需要进行系统运维。系统运维包括系统监控、系统维护、系统升级等方面。在进行系统运维时,需要考虑系统稳定性和可用性。