第一章 Hadoop 分布式大数据系统概述
一、分布式系统架构
分布式系统是一种通过多个独立节点协作完成任务的系统架构。是指将系统的各个组件和服务分布在多台独立的计算机节点上(通常是服务器),他们之间通过网络进行通信和协作,它也被称为分布式计算或分布式数据库,并依靠不同的节点通过公共网络进行通信和同步。这些节点通常代表独立的物理硬件设备,但也可代表单独的软件进程或其他递归封装的系统。常见的分布式架构包括微服务架构、分布式数据库系统、分布式存储系统等。
在分布式系统中,各节点之间的通信和协调是关键。每个节点可以看作是一个独立的计算单元,既能完成独立任务,也可以通过网络共享信息和资源。节点间的通信通常通过远程过程调用(RPC)或消息队列等机制实现。然而,由于网络的不可靠性和延迟问题,如何保证节点之间的一致性和数据完整性是分布式系统设计中的重要挑战。
现代分布式系统的应用范围十分广泛。以 HDFS(Hadoop Distributed File System)为代表的分布式存储系统,能够高效存储和管理海量数据;以 MapReduce 为基础的分布式计算模型,支持复杂数据的并行处理;而像 ZooKeeper 这样的分布式协调服务,则为节点间的同步和元数据管理提供了有力支持。此外,分布式数据库、分布式缓存和分布式消息队列等技术也广泛应用于互联网、电商和金融等行业。
在云计算和大数据时代,分布式系统的优势更加突出。云计算通过虚拟化技术抽象物理资源,使分布式系统能够更加灵活地部署和管理。大数据处理框架如 Hadoop 和 Spark,利用分布式架构实现了大规模数据的存储和分析,极大地提升了数据驱动业务的能力。分布式系统还在人工智能领域扮演重要角色,支持大规模模型的分布式训练和推理。
未来,分布式系统将继续推动信息技术的发展。在物联网、边缘计算和区块链等新兴领域,分布式架构正在为复杂的计算场景提供解决方案。通过不断优化和创新,分布式系统将在处理更大规模的数据、更复杂的计算任务方面展现出更强的能力,为数字化社会的发展提供强有力的技术支撑。
二、Hadoop 概述
Apache Hadoop 是 Apache 软件基金会下的一个开源数据库框架,以其开发者 Cutting 儿子的黄色玩具大象 Hadoop 命名。Hadoop 可以编写和运行分布式应用,处理 GB 到 PB 级别的数据。通常来讲,Hadoop 可以指 Hadoop 数据库框架,也可以指基于 Hadoop 的一系列分布式计算平台,包括 HDFS、Zookeeper、MapReduce、HBASE、Hive等等。
Hadoop 数据库框架
Hadoop 分布式文件系统(Hadoop Distributed File System (HDFS)是 Hadoop 生态的核心,是 Hadoop 的存储层,区别于传统的运行在磁盘的文件系统,它将数据分布式的存储在多个服务器节点上。并对其进行备份,这保证了数据的高可用性和高容错性。
MapReduce 是 Hadoop 的计算框架,用于并行计算和处理大规模数据。MapReduce 能够将输入的数据切分成小块, 并交给不同的节点进行处理,最终将结果进行合并。
Yarn 用于资源管理和作业调度。YARN 的基本思想是将资源管理和任务调度/监控的功能拆分为单独的守护进程,拥有一个全局资源管理器 ResourceManager(RM)以及每个应用程序的主控 ApplicationMaster (AM)。他们共同组成 Hadoop 的数据计算框架。
Hadoop 采用 Master/Slave 架构,一个 Hadoop 集群可能会有成百上千的服务器组成,包括一个 NameNode(中心服务器) 和 一定数目的 DataNode(从节点)组成。NameNode 负责管理文件系统的命名空间(namespace)以及客户端对文件的访问。Datanode 负责管理它所在节点的存储。HDFS 暴露了文件系统的命名空间,用户能够以文件的形式在上面存储数据。从内部看,一个文件其实被分成一个或多个数据块,这些块存储在一组 Datanode 上。 Namenode 执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体Datanode 节点的映射。Datanode 负责处理文件系统客户端的读写请求。在 Namenode 的统一调度下进行数据块的创建、删除和复制。
Namenode 负责维护文件系统的名字空间,任何对文件系统名字空间或属性的修改都将被 Namenode 记录下来。应用程序可以设置 HDFS 保存的文件的副本数目。文件副本的数目称为文件的副本系数,这个信息也是由 Namenode 保存的。
Hadoop 分布式计算平台
Hadoop 官网列出了相关的项目如下,这些软件平台一同组组成了 Hadoop 分布式大数据集群生态,我们会在后续的内容中单独讨论这些工具。
Ambari™:Hadoop 集群管理工具 Ambari 是一个基于 Web 的工具,专门用于配置、管理和监控 Apache Hadoop 集群。它支持 Hadoop HDFS、MapReduce、Hive、HCatalog、HBase、ZooKeeper、Oozie、Pig 和 Sqoop 等组件。此外,Ambari 提供直观的仪表盘,可以通过热力图查看集群健康状态,还能以可视化方式查看和诊断 MapReduce、Pig 和 Hive 应用的性能特征,操作简便且用户友好。
Avro™:数据序列化系统 Avro 是一个高效的数据序列化系统,支持将数据序列化为紧凑格式,便于存储和传输。
Cassandra™:高可扩展分布式数据库 Cassandra 是一款高度可扩展的多主节点数据库,没有单点故障风险,适用于分布式数据存储场景。
Chukwa™:分布式系统数据采集工具 Chukwa 是一个用于收集和管理大规模分布式系统数据的工具,帮助简化数据收集和分析。
HBase™:分布式表格数据库 HBase 是一个支持大规模表格数据存储的分布式数据库,能够高效存储和查询结构化数据,特别适用于海量数据场景。
Hive™:数据仓库基础设施 Hive 是一个数据仓库框架,提供数据汇总和临时查询功能,适合大数据的批量分析和查询需求。
Mahout™:机器学习与数据挖掘库 Mahout 是一个可扩展的机器学习和数据挖掘库,支持构建推荐系统、分类器、聚类等机器学习模型。
Ozone™:分布式对象存储系统 Ozone 是一个针对 Hadoop 设计的可扩展、冗余且分布式的对象存储系统,适合存储海量非结构化数据。
Pig™:高层次数据流语言 Pig 是一种高层次的数据流语言和执行框架,支持并行计算,能够简化复杂的大数据处理任务。
Spark™:快速通用计算引擎 Spark 是一个高效的通用计算引擎,专为处理 Hadoop 数据而设计。它提供简单灵活的编程模型,支持多种应用场景,包括 ETL(提取、转换、加载)、机器学习、流处理和图计算。
Submarine:统一的人工智能平台 Submarine 是一个统一的 AI 平台,允许工程师和数据科学家在分布式集群中运行机器学习和深度学习任务。
Tez™:通用数据流编程框架 Tez 是一个通用数据流编程框架,基于 Hadoop YARN 构建。它提供了灵活的引擎,用于执行任意任务的有向无环图(DAG),支持批处理和交互式场景。Tez 已被 Hive 和 Pig 等 Hadoop 生态系统中的框架,以及其他商业软件(如 ETL 工具)采用,用以替代 Hadoop MapReduce 作为底层执行引擎。
ZooKeeper™:分布式协调服务 ZooKeeper 是一个高性能的分布式协调服务,提供分布式应用所需的集中式管理功能,如配置管理、分布式锁和命名服务。
参考内容