1.大数据介绍

背景

每天全球范围内产生的数据量相当于堆满千座图书馆,想象一下,当你打开手机,浏览社交媒体,或者在网上购物时,你产生了哪些数据?点击、浏览、评论,这些看似微小的行为都在背后生成了庞大的数据流。那么如此之多的数据到底存到了哪里?,而这些数据并不是消失在虚空中,它们被储存、分析和利用。庞大的数据中心和服务器存储着我们生活的每一个片段,每一个决策,每一个趋势。例如大家熟知的短视频 它为什么能推荐出你喜欢类型的视频,这些都是经过海量数据的作为基础产出你的用户画像的,甚至你的画像比你还了解你,并且最近大火的AI都是要根据庞大有用的海量数据去进行训练,如果你对大数据感兴趣并且有学习的心那么就抛开神秘的面纱一起来探索技术。。。

hadoop

那么我们首先来思考一个问题,如果把大数据想象成一个特大集装箱,我们的任务就是要把这些集装箱从一个国家运输到到另一个国家,那我们应该怎么设计?集装箱太多导致什么问题

  • (数据)怎么去储存?

  • (调度)  怎么去分配?

  • (计算)怎么去分拣?

这我们在运输中我们可以加多货轮,调度员,分拣员以及不同角色分工使得运输平稳运行让货物抵达终点,然而框架也是生活作业的映射,大数据是怎么处理这些问题的,那些上亿的数据又该怎么去储存,计算,调度的。

那我们就要知道大数据最重要的底座 Apache Hadoop 软件是一个框架,允许使用简单的编程模型跨计算机集群分布式处理大型数据集。它旨在从单个服务器扩展到数千台机器,每台机器都提供本地计算和存储。该库本身旨在检测和处理应用层的故障,而不是依靠硬件来提供高可用性,因此可以在计算机集群之上提供高可用性服务,而每台计算机都可能容易出现故障。Apache Hadoop

hadoop模块包括什么
  • Hadoop Common:支持其他 Hadoop 模块的通用实用程序。

  • Hadoop 分布式文件系统 (HDFS™):一种分布式文件系统,可提供对应用程序数据的高吞吐量访问。

  • Hadoop yarn:作业调度和集群资源管理的框架。

  • Hadoop MapReduce:用于并行处理大型数据集。

HDFS储存原理

  1. 文件切块:HDFS将待存储的文件切分成固定大小的数据块(默认为128MB),每个数据块通常是连续的字节序列。文件的切块使得数据能够以并行的方式存储和处理。

  2. 数据复制:HDFS采用数据冗余的策略来提供可靠性和容错性。每个数据块都会有多个副本,并将这些副本存储在集群中的不同数据节点上。默认情况下,每个数据块有3个副本,副本之间分布在不同的机架上,以减少机架故障对数据可用性的影响。

  3. 数据分布:HDFS会将数据块分散存储在整个集群的数据节点上,以实现负载均衡。数据块的分布是基于Hadoop集群中可用节点的拓扑结构和网络距离来决定的。这种数据分布策略使得数据在集群中均匀分布,提高了数据的访问效率和并行处理能力。

  4. nameNode和数据节点:HDFS包括两种类型的节点,即nameNode(NameNode)和数据节点(DataNode)。nameNode是HDFS的主要管理节点,负责维护文件系统的命名空间、元数据和数据块的映射关系。数据节点是存储实际数据块的节点,负责数据的读取、写入和复制操作。

  5. 元数据管理:nameNode维护整个文件系统的元数据,包括文件和目录的结构、权限信息以及数据块的位置等。这些元数据被存储在nameNode的内存中以提高访问速度。为了确保元数据的持久性,nameNode会定期将元数据写入磁盘的持久存储介质(如硬盘)中。

  6. 容错机制:HDFS具有高度的容错性。nameNode会定期创建检查点(checkpoint)来保存文件系统的元数据,以便在节点故障时进行恢复。如果nameNode发生故障,可以使用辅助nameNode(Secondary NameNode)或其他备份节点来恢复文件系统的状态。

文件上传

1.客户端与nameNode通信:

  • 客户端向Hadoop集群中的nameNode节点发送上传文件的请求。

  • nameNode接收到请求后,验证客户端的身份和权限。

2.文件切块:

  • 客户端将待上传的文件按照固定大小切割成数据块(默认为128MB)。

  • 切割过程可以在客户端完成,也可以在客户端与目标数据节点之间进行切块,这取决于具体的上传工具和设置。

3.客户端与nameNode确认上传目标位置:

  • 客户端向nameNode查询要上传文件的目标位置。

  • nameNode根据一定的策略确定已经存在数据块在DFS中的存储位置,并生成节点的列表

4.客户端选择一个数据节点:

  • 客户端从nameNode获取数据节点的列表。

  • 客户端根据一定的策略(如距离、负载情况等)选择一个数据节点作为目标存储位置。

5.客户端与目标数据节点通信:

  • 客户端与选定的数据节点建立连接。

  • 客户端与数据节点之间进行数据传输。

6.客户端将数据块发送给目标数据节点:

  • 客户端将切割后的数据块逐个发送给目标数据节点。

  • 数据块的发送可能通过网络传输,具体方式取决于客户端和数据节点之间的连接方式。

7.目标数据节点接收数据块:

  • 目标数据节点接收到数据块后,将其暂存在本地磁盘上。

8.目标数据节点确认数据块接收:

  • 目标数据节点向客户端发送数据块接收的确认消息,表示数据块已成功接收。

9.客户端向nameNode发送数据块位置信息:

  • 客户端将数据块的位置信息发送给nameNode,以便nameNode更新文件系统的元数据。

  • 在数据块上传期间,HDFS会根据副本策略在其他DataNode上创建额外的副本。副本的创建过程通常由NameNode协调。它会选择其他可用的DataNode,并向其发送副本创建的指令

10.nameNode更新文件系统元数据:

  • nameNode接收到数据块位置信息后,更新文件系统的元数据,包括文件的属性、目录结构以及数据块与数据节点的映射关系。

11.重复步骤5至步骤10,直到所有数据块上传完成:

  • 如果文件被切分成多个数据块,客户端将重复执行步骤5至步骤10,将剩余的数据块逐个上传到目标数据节点。

12.文件上传完成:

  • 一旦所有数据块都成功上传到HDFS中的数据节点,文件上传过程完成。

  • 文件现在可以在HDFS中进行存储、管理和访问。

文件下载

1.客户端与nameNode通信:

  • 客户端向Hadoop集群中的nameNode发送下载文件的请求。

  • nameNode接收到请求后,验证客户端的身份和权限。

2.nameNode返回文件元数据:

  • nameNode根据请求中的文件路径,在文件系统的元数据中查找相应的文件信息。

  • nameNode返回文件的元数据给客户端,包括文件大小、数据块的位置信息等。

3.客户端获取数据节点列表:

  • 客户端从文件元数据中获取数据块的位置信息,包括数据节点的列表和数据块在各个数据节点上的副本位置。

4.客户端选择一个数据节点:

  • 客户端根据一定的策略(如距离、负载情况等)选择一个数据节点作为下载数据的目标节点。

5.客户端与目标数据节点通信:

  • 客户端与选定的目标数据节点建立连接。

  • 客户端与数据节点之间进行数据传输。

6.客户端请求数据块:

  • 客户端向目标数据节点发送获取数据块的请求,指明要下载的数据块的ID。

7.目标数据节点响应数据请求:

  • 目标数据节点接收到获取数据块的请求后,从本地磁盘读取数据块的内容。

8.目标数据节点将数据块发送给客户端:

  • 目标数据节点将数据块的内容逐个发送给客户端。

  • 数据块的传输可能通过网络进行,具体方式取决于客户端和数据节点之间的连接方式。

9.客户端接收数据块:

  • 客户端接收到数据块的内容后,将其暂存在本地磁盘或内存中。

10.重复步骤5至步骤9,直到所有数据块下载完成:

  • 如果文件被分成多个数据块,客户端将重复执行步骤5至步骤9,依次下载剩余的数据块。

11.客户端组装数据块:

  • 客户端将下载到的所有数据块按照顺序组装起来,形成完整的文件内容。

12.客户端完成文件下载:

  • 客户端成功下载所有数据块后,文件下载过程完成。

  • 文件现在可以在客户端进行处理、存储或进行进一步的操作。

yarn

当谈到YARN时,我们通常指的是Apache Hadoop生态系统中的YARN(Yet Another Resource Negotiator)。YARN是一个用于集群资源管理和作业调度的框架,旨在支持分布式数据处理任务。下面是一些关于YARN的详细介绍:

  1. 资源管理器(ResourceManager):YARN的核心组件之一,负责整个集群的资源管理。它接收来自客户端的作业提交请求,并协调集群资源的分配和调度。

  2. 节点管理器(NodeManager):每个集群节点上运行的YARN组件,负责监控该节点上的资源使用情况,并与ResourceManager通信报告资源可用性。它还负责启动和监控容器,容器是YARN中用于执行应用程序的资源隔离单元。

  3. 应用程序管理器(ApplicationMaster):每个应用程序在YARN上运行时都会有一个ApplicationMaster实例。它负责与ResourceManager交互以获取资源,并管理应用程序的任务调度和容错。

  4. 容器(Container):YARN中的基本执行单元,由NodeManager启动和管理。容器是一个封装了应用程序任务所需资源(如CPU、内存)的隔离环境。

  5. 资源调度器(Scheduler):YARN支持多种调度器,其中包括Capacity Scheduler(容量调度器)和Fair Scheduler(公平调度器)。调度器负责将集群资源分配给不同的应用程序,并根据配置的调度策略来管理资源分配。

  6. 作业(Job):在YARN中,作业通常是指一个计算任务或一个任务流。作业可以是MapReduce作业、Spark作业、Hive查询等。

YARN的设计目标是提供一个灵活且高效的资源管理框架,使多个应用程序可以在共享的集群资源上并行运行。通过YARN,用户可以将不同类型的工作负载(如批处理、交互式查询、流处理等)部署到Hadoop集群上,并有效地利用集群资源,以提高整体性能和资源利用率。

总结起来,YARN是一个分布式资源管理和作业调度的框架,它通过ResourceManager、NodeManager、ApplicationMaster和容器等组件实现资源的管理和调度。这使得Hadoop集群能够支持多个应用程序的同时运行,并提供高可靠性、高性能的数据处理能力。

上传计算程序

1.打包应用程序:

  • 首先,您需要将计算程序打包为一个可执行的文件(通常是一个Jar文件),其中包含了应用程序的代码、依赖项和配置文件等。

  • 打包应用程序时,确保包含了所有必要的文件和资源,以便应用程序在集群中运行时能够正常工作。

2.提交应用程序:

  • 使用适当的命令行工具(如yarn命令)或应用程序管理界面,将打包好的应用程序提交到YARN上。

  • 提交应用程序时,需要指定应用程序的相关配置,如资源需求、优先级和应用程序的入口点(如主类)等。

3.分配资源:

  • YARN的ResourceManager接收到应用程序提交请求后,会根据集群中的资源情况为应用程序分配适当的资源。

  • ResourceManager考虑应用程序的资源需求和集群中的可用资源,决定为应用程序分配的资源量,如CPU、内存和容器数等。

4.启动ApplicationMaster:

  • ResourceManager会通知某个节点上的NodeManager启动ApplicationMaster。

  • ApplicationMaster是应用程序的主要管理组件,负责协调应用程序的执行和资源管理。

5.任务调度和执行:

  • ApplicationMaster与ResourceManager交互,请求分配节点上的容器来执行任务。

  • ResourceManager根据可用资源和调度策略,将任务分配给合适的节点上的NodeManager。

  • 每个容器中运行一个或多个任务,具体取决于应用程序的设计和配置。

6.监控和容错:

  • YARN会监控任务的执行情况和节点的健康状况。

  • 如果某个任务失败或节点出现故障,YARN会重新分配任务到其他可用的节点上,以保证任务的完成和应用程序的正常运行。

  • ApplicationMaster还负责处理应用程序的错误和异常情况,并进行适当的容错处理。

7.完成应用程序:

  • 当应用程序的所有任务都完成时,ApplicationMaster通知ResourceManager应用程序已经完成。

  • ResourceManager会更新应用程序的状态,并释放已经分配给应用程序的资源。

mapreduce

1.编程模型:

  • MapReduce提供了一种简化并行计算的编程模型,使得开发人员可以更轻松地编写并行化的计算任务。

  • MapReduce将计算过程分为两个主要阶段:Map阶段和Reduce阶段。

  • 在Map阶段,输入数据被分割成多个独立的数据块,每个数据块由一个Map任务处理。

  • 在Reduce阶段,Map阶段的结果按照键值进行分组和排序,然后由多个Reduce任务处理,生成最终的计算结果。

2.数据流处理:

  • 在Map阶段,每个Map任务将输入数据转换为一系列的键值对(key-value pairs)。

  • 这些键值对通过Map函数进行处理,生成中间结果。

  • 在Reduce阶段,Reduce任务接收来自Map阶段的中间结果,将相同键的值进行聚合、排序和归并,生成最终的结果。

3.并行计算:

  • MapReduce充分利用了分布式系统的并行处理能力,可以在大规模集群上同时运行多个Map任务和Reduce任务。

  • Map任务和Reduce任务之间相互独立,可以并行执行,加快计算速度。

  • 数据被划分成多个数据块,并分配给不同的Map任务并行处理,减少了单个任务的计算量,提高了计算效率。

4.容错性:

  • MapReduce具备容错和故障恢复的能力,能够处理节点故障和任务失败的情况。

  • 如果某个Map任务或Reduce任务失败,MapReduce会重新分配任务到其他可用的节点上,并且只重新计算失败的任务,提高了计算的鲁棒性和可靠性。

5.适用场景:

  • MapReduce适用于需要处理大规模数据集的计算任务,尤其是数据密集型的批处理任务。

  • 它广泛应用于数据分析、日志处理、搜索引擎、机器学习等领域,可以处理从几十兆字节到几个拇指字节甚至更大规模的数据集。

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值