云计算与大数据课程笔记(七)之“冷门“的Hadoop奇思妙想笔记

机架感知(Rack Awareness)

在 Hadoop 集群中,机架感知(Rack Awareness)是优化数据存储、访问速度和集群可靠性的关键特性。理解 Hadoop 中的机架和交换机通信过程,有助于深入了解 Hadoop 的数据复制策略和故障恢复机制。

机架感知的概念

在大型 Hadoop 集群中,物理服务器(节点)被组织在不同的机架(Racks)中。每个机架内部的服务器通过机架内的交换机相连,并且各个机架之间通过更高层次的交换机连接机架感知意味着 Hadoop 能够理解集群的物理(网络)拓扑结构,即哪些节点位于同一个机架上,以及机架之间如何连接。

为什么需要机架感知

  1. 数据复制和容错:Hadoop 通过在不同的机架上复制数据来提高数据的可靠性。如果一个机架发生故障,由于数据已经在其他机架上有副本,因此数据不会丢失。

  2. 网络带宽优化机架内的通信成本低于机架间的通信成本。通过在机架内尽量保持数据传输,Hadoop 能够优化网络带宽的使用,加快数据访问速度。

Hadoop 的数据复制策略

Hadoop 的 HDFS 默认将每个数据块复制三份(这个复制因子是可配置的)。默认的复制策略是:

  1. 第一份复制在提交数据的节点上。
  2. 第二份复制在不同机架的一个节点上。
  3. 第三份复制在与第二份相同机架的另一个节点上。

这种策略的设计旨在平衡容错能力和网络带宽的使用。通过在不同机架间复制数据,Hadoop 保证了即使整个机架发生故障,数据也不会丢失。同时,通过将一些副本保留在同一机架上,减少了机架间通信的需要,从而优化了带宽消耗。

机架内和机架间的通信(Hadoop集群的内部通信)

  • 机架内通信:在同一机架内的服务器通过机架内的交换机进行通信。这种通信速度快,延迟低,因为数据不需要通过主干网络。

  • 机架间通信:当数据需要从一个机架传输到另一个机架时,数据会通过机架间的高层次交换机进行路由。虽然这增加了通信成本(包括延迟和带宽消耗),但是它对于确保数据的可靠性和可用性至关重要。

假设我们有两台服务器,一台位于机架 A(Server A),另一台位于机架 B(Server B),并且它们需要交换数据。

机架内通信(Server A 与 Server A1)

  1. 数据发送:Server A 决定向同一机架内的另一台服务器 Server A1 发送数据。Server A 将数据打包成一个或多个数据包。

  2. 交换机转发:数据包首先被发送到 Server A 所在机架的顶部交换机(Top of Rack, ToR交换机)。因为 Server A1 和 Server A 在同一个机架内,ToR 交换机可以直接根据 MAC 地址表找到 Server A1 的端口。

  3. 数据接收:ToR 交换机将数据包转发到 Server A1。在这个过程中,数据包没有离开机架,因此延迟非常低,通信速度很快。

机架内部的交换机(通常是机架顶部交换机,ToR)主要负责在物理层(第一层)和数据链路层(第二层)上进行操作。因此,机架内部的网络可以被视为一个局域网(LAN),在这个局域网内,数据传输速度快,延迟低。

机架间通信(Server A 与 Server B)

  1. 数据发送:现在,Server A 需要向位于不同机架的 Server B 发送数据。Server A 同样将数据打包成数据包,并发送到其所在机架的 ToR 交换机。

  2. 到达汇聚层:因为 Server B 位于不同的机架,ToR 交换机不能直接将数据包送达 Server B。因此,ToR 交换机首先将数据包发送到更高层次的交换机,通常是汇聚层交换机(Aggregation Switch)或核心层交换机(Core Switch)。

  3. 路由决策:在汇聚层或核心层,根据网络的路由协议和策略,决定如何将数据包从机架 A 转发到机架 B。这涉及查找路由表,以确定最佳路径。

  4. 到达目标机架:数据包通过汇聚层或核心层的交换机被发送到机架 B 的 ToR 交换机。

  5. 数据接收:机架 B 的 ToR 交换机接收到数据包后,根据 MAC 地址表找到 Server B 的端口,并将数据包转发给 Server B。

汇聚层交换机在这里起到路由器的作用,根据IP地址进行数据包的路由决策,确保数据包能够从一个局域网传输到另一个局域网。因此,从这个角度来看,机架间的互连可以被视为一个更大规模的互连网,其中包含多个通过路由器(或执行路由功能的第三层交换机)相连的局域网。 


Hadoop集群的外部通信

汇聚层交换机主要负责 Hadoop 集群内部的通信。对于集群与外部网络的联系,以及涉及到的路由器的位置和作用,我们可以这样理解:

集群外部网络联系

  1. 边界节点(Gateway Nodes):Hadoop 集群通常通过一个或多个专门配置的边界节点与外界通信这些节点充当集群和外部网络之间的接口,管理进出集群的数据流和网络请求。边界节点也被称为网关节点,它们配置有必要的网络路由规则和策略,确保数据安全和网络效率。

  2. 负载均衡器:在较大的部署中,为了分散对边界节点的访问压力,可能会使用负载均衡器。负载均衡器均匀地将外部请求分发到多个边界节点上(只是均衡器,没有承载功能),提高处理能力和提升系统的可用性。

Hadoop 集群与外部网络的联系主要通过边界节点(网关节点)实现,而集群内部和外部网络之间的路由器位于数据中心的网络核心层。通过配置合适的路由策略和安全措施,可以确保集群的数据交换既高效又安全。在大型企业或云环境中部署的 Hadoop 集群,其网络架构设计会考虑到从机架层到接入层,再到核心层的全方位网络需求。

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-03-22 09:52:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-22 09:52:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-22 09:52:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-22 09:52:01       20 阅读

热门阅读

  1. Python实战:Python虚拟环境(venv)的创建与使用

    2024-03-22 09:52:01       23 阅读
  2. Python 数据分析模块pandas 如何创建DataFrame

    2024-03-22 09:52:01       19 阅读
  3. 【数据分析】Pandas内容补充

    2024-03-22 09:52:01       17 阅读
  4. 外包干了一个月,忘记Git怎么使用了...

    2024-03-22 09:52:01       18 阅读
  5. C# 数组

    2024-03-22 09:52:01       18 阅读
  6. python继承的应用

    2024-03-22 09:52:01       18 阅读
  7. 如何利用技术手段获取全球公开网站上的数据?

    2024-03-22 09:52:01       21 阅读
  8. mysql的基本知识点——JOIN联表查询

    2024-03-22 09:52:01       21 阅读
  9. 数据结构万字总结(超级详细)第一章——绪论

    2024-03-22 09:52:01       16 阅读
  10. Android仿微信视频聊天本地与远程切换功能

    2024-03-22 09:52:01       19 阅读