一、前置知识
1. 什么是分布式?
单机系统:一台服务器组成的来完成工作的系统
分布式系统:由多台服务器组成的,通过网络进行通信、协同工作的系统
分布式系统的核心在于它能够将一个大问题拆分成多个小问题,然后由系统中的不同节点分别解决这些小问题,最终通过协同合作来完成整个任务。这种设计可以有效地提高系统的计算能力和存储能力,同时也能提高系统的可靠性和可扩展性
特点:
- 多节点结构:分布式系统由多个计算机节点组成,这些节点可以是物理上分散的服务器,也可以是虚拟的机器实例。这些节点通过网络连接,实现数据和信息的交换
- 协同工作:分布式系统中的节点不是孤立工作的,它们之间需要相互协作,共同完成特定的任务。例如,在分布式数据库中,不同的节点可能负责存储不同的数据部分,节点之间需要相互通信以响应复杂的查询请求
- 分布式处理:分布式系统的设计目的是为了用一组普通的机器来完成单个计算机无法完成的计算或存储任务。这种方式可以提高系统的性能和效率,因为多个节点可以并行处理任务,从而加快处理速度
- 可扩展性:随着系统需求的增长,分布式系统可以通过增加更多的节点来扩展其计算和存储能力,而不需要替换现有的硬件设备
- 容错性:在一个节点出现故障时,分布式系统可以继续运行,因为其他节点可以接管故障节点的工作,这提高了系统的整体可靠性
- 技术复杂性:分布式系统的设计和管理比单一系统更为复杂,涉及到分布式事务、分布式锁、负载均衡等多种技术问题
2. 什么是集群?
集群是一组独立的计算机系统,通过网络连接起来,构成一个能够协同工作的多处理器系统
集群中的每台计算机被称为节点,这些节点可以是物理机器,也可以是虚拟机器。它们通过网络实现进程间的通信,共享资源和数据,对外提供服务时表现得像一个单一的系统。集群技术通常用于提高系统的可用性、可靠性和性能
特点:
- 高性能计算能力:通过将多个计算机的处理能力集中起来,集群能够处理大量的计算任务,适用于需要大量计算资源的科学研究、数据分析等领域
- 高可用性:如果集群中的一个节点发生故障,其他节点可以接管其工作,保证服务不中断,这对于需要持续运行的服务尤为重要
- 负载均衡:集群能够将工作负载分散到不同的节点上,避免单个节点过载,从而提高整体的响应速度和效率
- 资源共享:在集群中,所有的节点都可以访问共享的数据和资源,这样可以实现资源的优化配置和使用
- 易于扩展:随着需求的增长,可以向集群中添加更多的节点,以增强其处理能力和存储能力
3. 分布式与集群的区别
-
概念:
分布式系统通常指的是将不同的业务分布在不同的地方的多个独立的计算机节点组成的系统。这些节点可以独立运行,它们通过网络协同合作完成一个任务
集群则是由多个计算机组成的一个单一的系统,这些计算机共享资源和任务,通常是为了实现同一业务
-
目的:
分布式系统的目标是提高系统的可靠性、可扩展性和性能,通过分散的业务处理来优化整个系统的工作效率
集群的目标也是提高系统的可靠性、可扩展性和性能,但它是通过在多个计算机上部署相同的应用程序来分担请求的压力,从而提高系统的整体处理能力
-
特点:
分布式系统中的每个节点都可以独立运行,节点之间通过网络进行通信和协作,这样可以将一个大问题分解成多个小问题并行解决,从而提高了效率和可靠性
集群中的计算机通常对外表现为一个整体,它们共享资源和数据,通常用于高可用性、负载均衡等场景
总结: 分布式更注重于将任务拆分至不同节点,集群更注重于将资源整合完成同一个任务
4. 什么是分布式文件系统?
文件系统:
文件系统是对存储设备上的文件进行组织和管理的系统,使得用户和系统能够高效地访问和操作这些文件。包括了文件的存储方式,文件的访问、创建、修改和管理等操作
分布式文件系统:
分布式文件系统(Distributed File System,简称DFS)是一种文件系统,其管理的物理存储资源并不直接连接到本地节点,而是通过计算机网络与其他节点连接,这些节点可以是独立的计算机或不同的逻辑磁盘分区和卷标组合在一起形成的完整文件系统
分布式文件系统的设计目的是为了在网络中的多个计算机之间共享文件和数据,它允许用户和程序访问远程存储资源,就像访问本地存储一样。这种设计可以提高数据的可靠性、可用性和存取效率,因为它利用了多台存储节点来分担存储负载
二、Hadoop 的介绍
1. 什么是 Hadoop ?
Hadoop是一个开源的分布式大数据处理框架,它提供了大规模数据存储和分析的能力
Hadoop的核心由三部分组成:
- HDFS(Hadoop Distributed File System):一个高度可靠、高吞吐量的分布式文件系统,设计用来部署在低成本的硬件上。它通过将数据块分布在多个节点上来存储非常大的数据集,并且能够处理硬件故障,确保数据的高可用性
- MapReduce:一个编程模型,用于处理和生成大型数据集。它允许用户在成千上万的计算机上并行处理数据,而无需关心底层的分布式计算细节
- YARN: 一个资源管理平台,负责协调集群资源,以便各种数据处理组件可以高效运行
2. 为什么要使用 Hadoop 作为大数据存储系统
- 高可靠性:Hadoop的数据存储具有多个备份,数据分布在不同机器上的集群中,这样即使个别节点发生故障,也不会导致数据丢失
- 高扩展性:Hadoop设计用于在计算机集群间分配数据并完成计算任务,且向集群中添加新的节点过程并不复杂,因此可以根据需要轻松扩展存储和计算能力
- 高效性:Hadoop能够在节点之间动态移动数据,并在数据所在的节点上进行并行处理,保证了各个节点的负载均衡,从而加快了数据处理速度
- 高容错性:Hadoop的设计包括数据冗余和自动重新部署计算任务的特性,以应对节点故障,确保数据处理的持续性和稳定性
- 大规模数据处理:Hadoop适用于搭建大型数据仓库,能够处理PB级别的数据存储、分析等业务,尤其适合搜索引擎数据分析、海量日志分析等场景
- 开源平台:Hadoop是一个开源的分布式计算和存储平台,这意味着它具有高度的可定制性和灵活性,同时避免了昂贵的软件许可费用