一、是什么
hadoop是一个分布式系统基础架构,主要业务为数据存储和分布式计算,分别由分布式文件系统hdfs(hadoop distributed file system)和mapreduce两个核心设计负责,另外一个核心组件为yarn(yet another resource negotiator)。
hdfs 是 hadoop 的文件系统,它将大文件分成多个块,并在集群中的多个节点上进行存储。它提供了高容错性,即使某个节点出现故障,数据也可以从其他节点中恢复。
mapreduce 是 hadoop 的计算框架,用于并行处理存储在 hdfs 上的大数据集。mapreduce 通过将任务分成 map 和 reduce 两个阶段来实现并行处理。map 阶段将输入数据映射为键值对,并生成中间结果,而 reduce 阶段对中间结果进行汇总和计算,生成最终的输出结果。
yarn 是 hadoop 2.x 引入的资源管理器,负责集群资源的管理和任务的调度。它允许不同类型的应用程序(如 mapreduce、spark 等)共享集群资源,并实现了更好的资源利用率和多租户支持。
hadoop 的优势在于它的可扩展性和容错性。通过将大数据集分布式存储和处理在多个节点上,hadoop 可以处理大规模数据并实现横向扩展。同时由于数据的备份和容错机制,即使在节点故障的情况下,数据也能保持安全可靠。
总的来说,hadoop 是一个强大的工具,用于存储和处理大数据,为企业和组织提供了处理海量数据的解决方案。
二、为什么
hadoop 的出现是为了解决处理和分析大规模数据的挑战。在过去,随着互联网的兴起和数字化时代的到来,人们开始积累和生成大量的数据,传统的数据处理技术已经无法满足这种规模和复杂性的数据需求。
在这种背景下,google 提出了 mapreduce 和 google 文件系统(gfs)的概念,用于处理和存储大规模数据。这两个概念的核心思想是将数据分布式存储在多台服务器上,并通过并行计算的方式处理数据。google 的这些技术成果为大规模数据处理领域带来了革命性的变革。
doug cutting 和 mike cafarella 等人受到了 google 的启发,决定开发一个开源的实现类似功能的系统,于是诞生了 hadoop 项目。hadoop 最初是以 apache nutch 项目中的分布式文件系统和分布式计算模块为基础开发的。2006 年,yahoo 开始使用 hadoop 来处理他们的大规模数据,这也标志着 hadoop 的商业化应用。
hadoop 项目迅速发展,得到了全球开发者社区的支持和贡献。apache hadoop 成为了一个顶级的开源项目,并形成了生态系统,包括了许多相关的项目和工具,如 hive、hbase、spark 等。
hadoop 的出现和发展,使得企业和组织能够更轻松地处理和分析大规模数据,从而发现数据中的价值和见解。它成为了大数据时代的标志性技术,为数据驱动的决策和创新提供了基础。
三、怎么办
一个简单的 hadoop 项目通常包括以下几个基本组件和步骤:
-
数据收集:从不同的数据源(如日志文件、数据库、传感器等)收集数据。
-
数据预处理:对收集到的数据进行清洗、转换和标准化,以确保数据的质量和一致性。
-
数据存储:将预处理后的数据存储到 hadoop 分布式文件系统(hdfs)中,以便后续的数据处理和分析。
-
数据处理:
- 使用 mapreduce 或 spark 等分布式计算框架对存储在 hdfs 上的数据进行处理和分析。
- 这包括编写 mapreduce 程序或 spark 应用程序来执行特定的数据处理任务,如数据聚合、统计分析等。
-
数据存储和查询:将处理后的数据存储到 hdfs 或者使用 hive 等工具创建数据仓库,并提供查询接口,以便用户可以方便地查询和分析数据。
-
结果输出:将数据处理和分析的结果输出到目标位置,如文件、数据库或者可视化工具中,供用户进行查看和使用。
一个成熟的hadoop 项目通常具有以下基本结构:
-
数据层:
- hdfs 文件系统:用于存储大数据集的分布式文件系统。
- 数据源:数据源可以是结构化、半结构化或非结构化的数据,包括日志文件、数据库、传感器数据等。
-
数据处理层:
- mapreduce 或 spark 程序:用于对存储在 hdfs 上的数据进行处理和分析的分布式计算程序。这些程序通常包括 map 和 reduce 阶段,或者采用 spark 的 rdd、dataframe 或 dataset 进行数据处理。
- 数据清洗和转换:包括数据清洗、转换和标准化等预处理步骤,以确保数据质量和一致性。
-
数据存储和管理层:
- hive 或 hbase:hive 是基于 hadoop 的数据仓库工具,可以将 sql 查询转换为 mapreduce 或 spark 任务,用于数据分析和查询。hbase 是基于 hadoop 的分布式 nosql 数据库,适用于实时读写操作和随机访问。
- 数据仓库:用于存储清洗、转换后的数据,以供后续分析和查询使用。
-
调度和资源管理层:
- yarn(yet another resource negotiator):用于集群资源的管理和任务调度,可以同时运行多个不同类型的任务,如 mapreduce、spark、hive 等。
- 作业调度器:用于调度和管理数据处理作业的执行,以确保资源的有效利用和作业的顺利完成。
-
监控和管理层:
- hadoop 生态系统工具:如 ambari、cloudera manager、apache ranger 等,用于监控集群健康状态、管理权限、配置和调优等。
- 日志和指标监控:用于收集和分析集群运行时的日志和性能指标,以便及时发现和解决问题。
-
安全和权限管理层:
- kerberos 或 ldap:用于集群的身份验证和权限管理,确保数据的安全性和保密性。
- 访问控制列表(acl):用于对数据和资源进行细粒度的权限控制,限制用户和应用程序的访问权限。
成熟的 hadoop 项目的结构包括数据层、数据处理层、数据存储和管理层、调度和资源管理层、监控和管理层,以及安全和权限管理层。这些组件共同构成了一个完整的数据处理和分析平台,用于处理大规模数据集的存储、处理、查询和分析。
注:一个成熟的 hadoop 项目中,hdfs 就是用来存储数据的主要组件之一。数据存储层中提到的其他组件,如 hive 和 hbase,实际上是建立在 hdfs 之上的应用或服务,用于更方便地管理和查询数据。
发表评论