什么是 Hadoop?它次要能处理“大数据”的哪两个成绩?
作者头像
  • 彭明真
  • 2021-06-20 16:14:58 4

引荐学习

前言

在我之前的工作中,接触到了大数据处理的需求。当时我们团队有一个专门的大数据部门,但由于中台重构导致整个系统开发量巨大,所有部门共享一个大数据部门,使得人力资源紧张,不得不临时承担起大数据相关的工作。尽管我对大数据知之甚少,但还是通过突击学习掌握了必要的知识,并迅速上手。尽管时间紧迫,这段经历对我而言十分有趣,也让我深刻认识到大数据处理的重要性和挑战。

大数据概述

大数据指的是对海量数据进行分析处理,从中提取有价值的信息,帮助企业做出决策。处理流程包括: 1. 获取数据 2. 处理数据 3. 展现结果

Hadoop介绍

Hadoop是一个分布式系统基础框架,能够利用简单的编程模型处理大型计算机上的大型数据集。它主要解决以下问题:

  • 大数据存储问题:通过HDFS(Hadoop分布式文件系统)实现。
  • 大数据计算问题:通过MapReduce实现。

大文件如何存储?

如果一个文件非常大,超过世界上所有高级计算机的存储能力,可以将文件分成多个块,并将这些块分布到不同的HDFS节点上。为了使外部能够像访问本地文件一样访问分布式文件系统,需要一个统一的HDFS Master来管理文件信息。

大数据如何计算?

从一个网络日志文件中计算独立IP及其出现次数,可以通过将任务划分为较小的任务来处理大量数据。

如何在集群中运行这些计算任务?

可以设置一个集群管理者YARN,它包含一个Master用于接收和分配任务,以及多个Slave用于执行任务。

Hadoop组成

  • Hadoop分布式文件系统(HDFS):提供高吞吐量访问的应用程序数据的分布式文件系统。
  • Hadoop Common:其他Hadoop模块所需的Java库和实用程序。
  • Hadoop MapReduce:基于YARN的大型数据集并行处理系统。
  • Hadoop YARN:负责作业调度和集群资源管理的框架。

Hadoop的历史与发展

Hadoop最初来源于Nutch项目,旨在构建一个大型全网搜索引擎。随着数据量的增长,遇到了扩展性问题,因此借鉴了Google的GFS和MapReduce论文解决了存储和索引问题。随后,Nutch的开发人员实现了HDFS和MapReduce,并将其从Nutch中分离出来,形成了独立的Hadoop项目。

Hadoop架构模型

1.x版本架构

  • 文件系统核心模块:包括NameNode、SecondaryNameNode和DataNode。
  • 数据计算核心模块:包括JobTracker和TaskTracker。

2.x版本架构

  • 单节点架构:NameNode、secondaryNameNode、DataNode、ResourceManager和NodeManager。
  • 高可用架构:NameNode、DataNode、ResourceManager、NodeManager和JournalNode。

HDFS介绍

HDFS是一个分布式文件系统,适合存储大型数据集。它的特点是“一次写入,多次读取”,支持高吞吐量访问。

HDFS设计目的

  • 跨多个廉价计算机集群分布数据和处理,以节约成本。
  • 自动维护多个数据副本,确保可靠性。
  • 提供扩展能力,以处理超大规模数据。

HDFS架构

  • NameNode:管理文件系统的名字空间和客户端对文件的访问。
  • DataNode:负责处理文件内容的读写请求。
  • 副本管理:NameNode控制数据副本的存储位置。

HDFS文件副本和Block块存储

所有文件都以block的形式存储在HDFS中。默认情况下,文件block大小为128M。HDFS通过块机制简化了存储子系统,并提高了数据的容错性和可用性。

HDFS文件权限验证

HDFS的文件权限机制类似于Linux系统,通过r(读)、w(写)和x(执行)权限控制文件访问。

HDFS元信息和SecondaryNameNode

Hadoop集群中只有一个NameNode时,所有元数据信息都保存在FsImage和Edits文件中。SecondaryNameNode定期合并FsImage和Edits文件,以保持文件系统的一致性。

HDFS文件写入过程

客户端发起文件上传请求,与NameNode建立通信。NameNode检查文件是否已存在,返回是否可以上传。客户端请求第一个block的传输目标DataNode服务器,NameNode根据配置文件和机架感知原理分配DataNode地址。

HDFS文件读取过程

客户端向NameNode发起RPC请求,确定文件block的位置。NameNode返回文件的部分或全部block列表,这些DN地址按照距离客户端的远近进行排序。客户端选择排序靠前的DataNode来读取block。

HDFS API操作

在Java中操作HDFS,主要涉及以下类:

  • Configuration:封装客户端或服务器的配置。
  • FileSystem:用于文件操作,通过静态方法get获取该对象。

MapReduce介绍

MapReduce是一种分布式计算框架,核心思想是“分而治之”。Map负责将复杂任务分解为多个简单任务,并行处理。Reduce负责将Map阶段的结果进行全局汇总。

MapReduce设计思想和架构

MapReduce是一个分布式运算程序的编程框架,它将用户编写的业务逻辑代码与默认组件整合成一个完整的分布式运算程序。MapReduce的主要设计思路包括分而治之、一致的计算框架以及抽象模型Map和Reduce。

MapReduce编程规范

MapReduce的开发分为Map阶段、Shuffle阶段和Reduce阶段。Map阶段包括设置InputFormat类和自定义Map逻辑。Shuffle阶段包括分区、排序、规约和分组。Reduce阶段包括排序和合并,以及编写Reduce函数。

MapTask运行机制

MapTask运行机制包括读取数据组件、RecordReader读取数据、执行用户自定义的Map函数、收集结果并通过Partitioner进行分区。结果写入内存,达到阈值后溢写到磁盘,支持Combiner优化中间结果。

ReduceTask工作机制

ReduceTask大致分为Copy、Sort和Reduce三个阶段。Copy阶段通过HTTP方式获取MapTask的结果,Sort阶段对数据进行合并和排序,Reduce阶段调用用户定义的Reduce函数处理数据。

Shuffle详细流程

Shuffle是MapReduce框架中最关键的部分,包括Collect阶段、Spill阶段、Merge阶段、Copy阶段和Sort阶段。Shuffle机制确保Map阶段的数据能够正确传递给Reduce阶段,提高整体处理效率。

结语

通过以上内容,希望能帮助大家更好地理解和掌握大数据处理的基础知识和技术。希望这些信息对你有所帮助。

    本文来源:图灵汇
责任编辑: : 彭明真
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
次要成绩两个处理数据Hadoop什么
    下一篇