组网Hadoop集群部署均衡器

来源:大彬 时间:2022-04-22 09:07:21阅读:197

Hadoop主要任务部署分为三部分:Client主节点和从节点的机器。主节点主要负责Hadoop两个关键功能模块HDFS、Map Reduce的监督。当Job Tracker使用Map Reduce名称节点负责并行处理监控和调度数据HDFS监控和调度。节点负责机器运行的绝大多数,并承担所有数据存储和指令计算的痛苦。每个节点不仅扮演数据节点的角色,而且作为与主节点通信的保护过程。保护过程属于Job Tracker,属于名称节点的数据节点。

组网Hadoop集群部署均衡器

Client机器集合了Hadoop所有的集群设置,但既不包括主节点,也不包括从节点。相反,客户端机器的功能是将数据加载到集群并提交给集群Map Reduce对数据处理工作的描述,并在工作结束后收回或检查结果。在小型集群中(约40个节点),单个物理设备可能同时处理多个任务Job Tracker和名称节点。作为大集群的中间件,单个任务通常由独立的服务器处理。

在真正的产品集群中,没有虚拟服务器和管理层,因此没有额外的性能损失。Hadoop在Linux直接操作底层硬件设施是系统中最好的。这说明Hadoop实际上是直接在虚拟机上工作。这样在花费、易学性和速度上有着无与伦比的优势。

Hadoop集群

上面是典型的Hadoop集群结构。一系列框架通常通过大量框架转换与框架服务器(非刀片服务器)连接1GB或者2GB宽带支撑连接。10GB虽然带宽不常见,但可以显著改善CPU核心和磁盘驱动器的密集性。上一层的框架转换将与许多框架同时连接相同的带宽,形成集群。大量的磁盘存储器,CPU及DRAM服务器将成为节点。同样,一些机器也将成为主节点,而这些机器拥有少量磁盘存储器的速度更快CPU及更大的DRAM。

让我们来看看应用程序是如何工作的:

adoop的工作流程

什么是计算机行业竞争如此激烈Hadoop生存方式?它真正解决了什么问题?简而言之,商业和政府都有大量的数据需要快速分析和处理。切割这些大数据,然后分配给大量的计算机,以便计算机能够平行处理这些数据 &— 这就是Hadoop能做的。

在下面这个简单的例子中,我们将有一个巨大的数据文件(给客服部门的电子邮件)。我想快速截取 ;Refund邮件中出现的次数。这是一个简单的字数统计练习。Client将数据加载到集群中(File.txt),提交数据分析描述(word cout),集群将结果存储在新文件中(Results.txt),然后Client阅读结果文档。

向HDFS里写入File

Hadoop集群在没有注入数据之前是不起作用的,所以我们先从加载庞大的File.txt从集群开始。当然,首要目标是快速并行处理数据。为了实现这一目标,我们需要更多的机器同时工作。Client将数据分成更小的模块,然后分成不同的机器,贯穿整个集群。模块分割得越小,并行处理数据的机器就越多。同时,这些机器也可能出现故障,因此需要在不同的机器上同时处理单个数据,以避免数据丢失。因此,每个数据群上重复加载。Hadoop默认设置是每个数据重复加载3次。这个可以通过hdfs-site.xml文件中的dfs.replication设置参数。

Client把File.txt文件分为三块。Cient与名称节点达成协议(通常是)TCP 9000协议)然后获得将要复制数据的三个数据节点列表Client将每个数据直接写入数据节点(通常是)TCP 50010协议)。收到数据的数据节点将数据复制到其他数据节点,循环只复制到所有数据节点。名称节点只负责提供族群中数据的位置和地点(文件系统元数据)。

Hadoop的Rack Awareness

Hadoop还有 ;Rack Awareness概念Hadoop管理员,您可以在集群中定义节点框架的数量。但为什么这会给你带来麻烦呢?两个关键原因是:数据损失预防和网络性能。别忘了,为了防止数据丢失,每个数据都会复制在多台机器上。如果同一块数据的多个副本都在同一个框架上,而机架碰巧出现故障,那么它肯定会带来一团糟。为了防止这种情况发生,有人必须知道数据节点的位置,并根据实际情况在集群中进行明智的位置分配。这个人是名称节点。

如果将两台机器与不同机架的两台机器进行比较,则会有更多的带宽和更低的延迟。在大多数情况下,这是真实的。机架转换的上行带宽一般低于下行带宽。此外,机架内通信的延迟一般低于跨机架(不全部)。所以如果Hadoop ;Rack Awareness理念无疑会显著提高集群性能!是的,它真的做到了!太棒了,对吧?

但失望发生了,你必须第一次手动定义它。不断优化,以保持信息的准确性。如果框架转换可以自动为名称节点提供其数据节点列表,那么它又完美了吗?或者另一方面,数据节点可以知名称节点连接的框架转换,这也是完美的。

如果能知道名称节点可以通过括补结构中的网络OpenFlow控制器查询节点的位置无疑更令人兴奋。

准备HDFS写入

现在Client已经把File.txt分块并准备将其加载到集群中,下面先从Block A开始。Client写作名称节点File.txt从名称节点获得通行证,然后获得每个数据目标数据节点的列表。名称节点使用自己的Rack Awareness数据改变数据节点提供列表。核心规则是复制每个数据3份,总有两份存在于同一个框架上,另一份必须放在另一个框架上。所以给它Client所有列表都必须遵循这一规则。

在Client将File.txt的 “;Block A在部分写入集群之前,Client我们还期待着知道所有的目标数据节点是否准备就绪。它将在列表中取出Block A打开准备好的第一个数据节点TCP 50010协议,告诉数据节点,注意!准备好接收一个数据,包括数据节点5和数据节点6,以确保它们也准备好了。然后从1到5,然后从5到6。

同样的数据节点TCP上一级的命令只在通道中响应Client收到原始数据节点1发送的 ;就绪。此时此刻,Client真正准备在集群中加载数据块。

HDFS载入通道

当数据块写入集群时,三个数据节点(当然,数据节点的数量参考上述设置)将打开一个同步通道。这意味着,当一个数据节点接收到数据时,它会在通道中复制下一个数据节点。

这也是一个借助Rack Awareness数据提高集群性能的例子。请注意,第二个和第三个数据节点在同一个框架中运输,因此它们之间的传输具有高带宽和低延迟。只有当数据块成功地写入三个节点时,下一个才会开始。

HDFS成功载入通道

当所有三个节点都成功接收到数据块时,名称节点发送 ;Block Received报告。并将 返回通道;Success消息,然后关闭TCP回话。Client在收到成功接收的信息后,将向名称节点数据报告已成功接收。名称节点将更新其元数据中的节点位置信息。Client下一个数据块的处理通道将打开,数据节点将写入所有数据块。

Hadoop会使用大量的网络带宽和存储。我们将代表性的处理一些TB等级文件Hadoop每份文件将复制三份默认配置。也就是说1TB将消耗文件3TB网络传输及3TB磁盘空间。

Client写入跨度集群

复制管道完成后的文件成功地写入集群。如果预期的文件分散在整个集群中,每台机器都有一个相对较小的数据部分。文件的块越多,机器的数据就越多。更多的CPU核心和磁盘驱动意味着数据可以获得更多的平行处理能力和更快的结果。这是建立大型和宽集群的动机,以处理更多和更快的数据。当机器数量和集群增加时,我们的网络需要适当扩展。

扩大集群的另一种方法是深入。在你的机器里扩展更多的磁盘驱动器和更多CPU核心,而不是增加机器的数量。在扩展深度方面,你专注于使用更少的机器来满足更多的网络I/O需求上。在这个模型中,你的Hadoop如何将集群过渡到万兆以太网节点已成为一个重要的考虑因素。

名称节点

名称节点包括所有集群的文件系统元数据、监督健康状况的数据节点和协调访问数据。这个名字节点是HDFS中央控制器。它本身没有任何集群数据。该名称节点只知道块构成一个文件,并位于集群中。

每3秒通过一次数据节点TCP通常,将检测信号交换到名称节点,并使用相同的端口号来定义名称节点的保护过程TCP 9000。每10个检测信号作为块报告,数据节点通知所有块的名称节点。块报告允许名称节点构建其元数据,并确保三个副本存在于不同的节点上。

名称节点是Hadoop分布式文件系统(HDFS)一个关键组件。没有它,客户端就无法做到HDFS不可能对文件进行调度和执行Map Reduce工作。正因为如此,用双电源、热插拔风扇、冗余网卡连接等设备名称节点,配置高度冗余的企业服务器,好主意。

复制丢失的副本

如果名称节点停止从数据节点接收检测信号,假设它已经死亡,任何数据都必须消失。名称节点知道哪个副本与节点块一起死亡,并决定将这些块复制到其他数据节点。它还将参考框架感知数据,以保持框架中的两个副本。

考虑到这一场景,由于机架交换机故障或电源故障,整个机架的服务器网络脱落。该名称节点将开始指示集群中的其他节点重新复制机架中丢失的所有数据块。如果机架中的每个服务器都有12TB这可能是数百个数据TB数据需要开始穿越网络。

二级名称节点

Hadoop服务器角色被称为二级名称节点。一个常见的误解是,这个角色为名称节点提供了高可用性的备份,事实并非如此。

二级名称节点偶尔连接到名称节点,并获取名称节点内存中的元数据和文件副本以存储元数据。二级名称节点将这些信息与新文件相结合,并将其送回名称节点,并保留一份副本。

二级名称节点保留的文件,如名称节点死亡,可用于恢复名称节点。

从HDFS客户端读取

当客户想从HDFS读取文件,再次咨询名称节点,并要求提供文件块的位置。

客户从每个块列表中选择数据节点和使用TCP读取50010端口的一块。它将进入下一块,直到前块完成。

从HDFS中读数据节点

在某些情况下,需要从数据节点本身来保护过程HDFS读取数据块。在这种情况下,数据节点需要处理当地没有的数据,因此在开始处理之前,必须从网络上的另一个数据节点检索数据。

另一个重要的例子是名称节点Rack Awareness认知提供了最佳的网络行为。当数据节点询问数据块中名称节点的位置时,名称节点将检查同一框架中的另一个数据节点是否有数据。如果是这样,名称节点从检索数据中提供框架上的位置。该过程不需要通过两个以上的交换机和拥挤的链接来找到另一个框架中的数据。在框架上检索的数据更快,数据处理可以更早地开始,工作可以更快地完成。

Map Task

现在file.txt在我的机器集群中传播,我有机会提供非常快速和高效的并行处理数据Hadoop并行处理框架称为Map Reduce,命名模型后的两个步骤是Map和Reduce。

第一步是Map过程。这就是我们同时要求我们的机器他们本地的数据块上来运行一个计算。在这种情况下,我们要求我们的机器对 “;Refund”这个词在File.txt计数出现在数据块中的次数。

开始此过程,客户端机器提交Map Reduce作业的Job Tracker,问 ;多少次不会在这里?File.txt 中出现Refund”(意译Java代码)。Job Tracker了解哪些数据节点有查询名称节点File.txt块。Job Tracker在这些节点上提供操作Task Tracker与Java该代码需要在其本地数据上执行Map计算。这个Task Tracker启动一个Map监控任务进展Task Tracker并向提供检测信号Job Tracker返回任务状态。

每个Map任务完成后,每个节点将当地计算结果存储在其临时本地存储中。这被称为 ;中间数据。下一步是通过网络传输和发送中间数据Reduce节点上运行的任务最终计算。

Map Task非本地

虽然Job Tracker总是试图选择与当地数据一起做Map task这个节点,但它可能并不总是这样做。其中一个原因可能是所有的节点和本地数据都有太多的其他任务,这是不可接受的。

在这种情况下,Job Tracker查阅名称节点Rack Awareness知识,可以推荐同一框架中其他节点的名称节点。操作跟踪器将此任务交给同一框架中的一个节点。当节点搜索数据时,所需的名称节点将指示框架中的另一个节点获取数据。

Reduce Task从Map Tasks计算接收到的数据

第二阶段的Map Reduce框架称为Reduce。机器上的Map任务已经完成并生成了它们的中间数据。现在我们需要收集所有的中间数据,组合和净化,以便进一步处理,这样我们就会有最终的结果。

Job Tracker从集群中的任何节点开始Reduce并指示任务Reduce所有已完成的任务Map在任务中获取中间数据。Map任务可能几乎同时处理Reducer,导致您突然发送大量节点TCP数据到一个节点。这种流量状况通常被称为 “;Incast或;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;fan-in。大量的网络处理incast重要的网络交换机具有精心设计的内部流量管理能力和足够的缓冲区(不太大或太小)。

Reducer现在任务已经从Map在任务中收集所有中间数据,以开始最后的计算阶段。在这种情况下,我们只需要添加 ;Refund这个词的总数,并将结果写入一个名字Results的txt文件里。

这个名为Results的txt文件,写入HDFS在我们已经涵盖的以下过程中,将文件分成块,装配线复制这些块等。完成后,客户机可以从HDFS读取被认为是完整的工作Results.txt。

我们简单的字数统计不会在网络上传输大量的中间数据。然而,其他工作可能会产生大量的中间数据,如正确的TB排序级数据。

如果你是一个勤奋的网络管理员,你会了解更多Map Reduce以及你的集群将运行的操作类型,以及如何影响你的网络流量。假如你是一个Hadoop你甚至可以提出更好的代码来解决网络明星Map Reduce优化网络性能,加快工作完成时间。

不平衡的Hadoop集群

Hadoop它可以为你的组织提供真正的成功,它为你周围的数据开发了许多以前没有发现的业务价值。当业务人员知道这一点时,你可以相信很快就会有更多的钱给你Hadoop集群购买更多的机架服务器和网络。

当你现在的时候Hadoop当在集群中添加新的机架服务器和网络时,您的集群是不平衡的。在这种情况下,机架1&2是我现有的内容File.txt运行我的机架和机架Map Reduce任务的数据。当我添加了两个新的架到集群,我的File.txt数据不会自动传播到新机架。

在我开始将新数据加载到集群之前,新的服务器是闲置的。另外,如果机架1&2服务器很忙,Job Tracker可能没有其他选择,但会指定File.txt上的Map在没有本地数据的新服务器上执行任务。新服务器需要通过网络获取数据。因此,您可能会看到更多的网络流量和更长的完成时间。

Hadoop集群均衡器

为了弥补集群的平衡性,Hadoop还包括平衡器。

Balancer关注节点间有效存储的差异,尽可能保持平衡在一定的临界值。如果发现节点有大量的剩余存储空间,Balancer找出存储空间剩余较少的节点,并将数据剪切到有大量剩余空间的节点上。只在终端上输入指令Balancer当接收到终端取消命令或终端关闭时,它将运行,Balancer将会关闭。

Balancer可调用的网络带宽很小,默认只有1MB/s。可通过带宽hdfs-site.xml文件中的dfs.balance.bandwidthPerSec设置参数。

Balancer是集群中的好管家。它将在添加新机组之前使用,甚至在打开后运行一周。给平衡器低带宽可以保持长时间运行。

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:shawn.lee@vecloud.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

本站原创内容未经允许不得转载,或转载时需注明出处:https://news.kd010.com/yzx/9092.html

TAG标签:组网

相关推荐

返回顶部