分布式计算最全详解(图文全面总结)(分布式计算步骤)
分布式计算是非常核心的分布式系统,大型架构都会涉及到,下面我就全面来详解分布式计算@mikechen
分布式计算定义
分布式计算是指,利用多个计算机或处理器共同处理一个计算任务,将任务分解为多个子任务,由不同的计算机或处理器分别处理这些子任务,最后将处理结果进行合并,从而完成整个计算任务的过程。
在分布式计算中,每个计算机或处理器都可以独立工作,互相之间通过网络进行通信,从而实现对计算任务的高效处理。
分布式计算特点
分布式计算,有以下4大特点:
1.高性能
分布式计算可以利用多个计算机,或处理器共同处理计算任务,从而显著提高计算任务的处理能力和处理效率。
2.可扩展性
分布式计算可以通过增加计算节点,来扩展系统的计算能力,从而满足不断增长的计算需求。
3.高可靠性
如果某个计算节点发生故障,其它计算节点仍然可以继续处理任务,从而保证整个系统的正常运行。
4.高灵活性
分布式计算可以根据任务的不同需求,和计算节点的不同特性,来调整计算任务的分配和调度,从而实现灵活的计算资源配置和管理。
分布式计算产品
有很多分布式计算产品可供选择,以下是一些常见的分布式计算产品:
1.Apache Hadoop
Apache Hadoop 用于处理大规模的数据集,它采用分布式文件系统和MapReduce计算模型,适用于大数据处理和分析。
网址:https://hadoop.apache.org/
它包括 Hadoop Distributed File System(HDFS)作为分布式文件系统,以及基于 MapReduce 编程模型的分布式计算引擎。
如下图所示:
主要包含两大组件:
1.NameNode
NameNode 是 HDFS 的主节点,负责管理文件系统的命名空间和元数据信息,包括:文件和目录的层次结构、文件块的位置和复制策略等。
NameNode 维护了文件系统的命名空间树和块映射表,对客户端的文件操作进行响应,并协调数据块的存储和复制。
2.DataNode
DataNode 是 HDFS 的数据节点,负责存储文件的实际数据块,并响应客户端的读写请求。
DataNode 负责将数据块的副本存储在本地磁盘上,并定期向 NameNode 报告数据块的健康状态。
每个 DataNode 会向 NameNode 注册,并周期性地发送心跳信号以表明自己的存活状态。
HDFS 适用于大规模数据存储和处理的场景,常见的应用场景包括:
大数据分析:HDFS 提供了高容量、高吞吐量和高可靠性的数据存储解决方案,适用于大规模数据分析和处理任务,如数据挖掘、机器学习、日志分析等。
实时数据处理:HDFS 结合其他分布式计算框架(如 Apache spark、Apache Flink 等),可以实现大规模实时数据处理和流式数据分析。
2.Apache Spark
Spark是一个开源的快速通用的分布式计算引擎,支持高级数据分析和机器学习,专为大规模数据处理而设计。
Spark本身并没有提供分布式文件系统,因此spark的分析大多,依赖于Hadoop的分布式文件系统HDFS。
如下图所示:
Spark 适用于大规模数据的批处理和实时处理,可以处理 PB 级别的数据规模,并且具有高性能和高容错性。
Spark 提供了丰富的数据处理和机器学习功能,适用于数据分析、数据挖掘、特征提取等任务。
3.TensorFlow
一个开源的机器学习框架,支持分布式计算和GPU加速,适用于深度学习和其他复杂的数学计算任务。
4.Apache Flink
一个开源的流处理和批处理框架,支持分布式计算和低延迟数据流处理,适用于实时数据处理和批处理任务。
Flink 中的核心数据结构是流(Stream),表示连续不断的数据流,可以是有界的也可以是无界的。
流可以是来自于外部源(如 :Kafka、RabbitMQ)的实时数据,也可以是通过转换操作得到的数据流。
Flink 可以将流处理的结果写入到 Elasticsearch 中,用于实时索引和检索。
通过 Elasticsearch 的连接器(Elasticsearch Connector),Flink 可以将流处理的结果发送到 Elasticsearch 中,并建立索引以供后续查询。
Flink 可以用于实时流处理场景,如实时监控、实时报警、实时推荐等。
5.Apache Storm
一个开源的分布式实时计算系统,适用于实时数据处理和流数据分析。
Storm 适用于实时流处理场景,如实时监控、实时报警、实时日志处理等。
6.Amazon EC2
亚马逊云计算服务中的一种,提供弹性计算、存储和网络服务,支持多种计算实例类型,包括分布式计算实例,适用于大规模计算和分析任务。
分布式计算应用
分布式计算可以用于各种不同的应用场景,例如:
- 数据处理;
- 科学计算;
- 机器学习;
- 人工智能;
- 图像处理等。
分布式计算可以显著提高计算任务的处理效率和处理能力,同时还可以提高系统的可靠性和容错性。
因为在分布式计算中,如果某个计算机或处理器发生故障,其它计算机或处理器仍然可以继续工作,从而保证整个系统的正常运行。
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。