hadoop 高可用集群_设计具有数据隔离的高可用性,容错Hadoop集群

hadoop 高可用集群

Hadoop不再只是流行语,它已成为业务必需品。 我们一直都有大量的数据涌入,但就在最近,我们释放了这种呈指数增长的数据的潜力。 大数据分析中的现代技术提供了新的方法来识别和纠正故障,帮助数据挖掘,提供优化反馈–途径无穷。 现代的Hadoop生态系统不仅提供了一个可靠的分布式聚合系统,可以无缝地提供数据并行性,而且还可以进行分析,从而提供出色的数据见解。

在本文中,我们将研究高可用性,容错的Hadoop集群的设计。 但是首先让我们深入研究Apache Hadoop的核心组件,然后我们将逐步进行一些修改,以适应最基本的设计要求,这些要求可以利用基础Apache Hadoop基础架构,同时增加安全性和数据级隔离。 因此,让我们讨论一下核心组件(如图1所示)

hadoop 高可用集群_设计具有数据隔离的高可用性,容错Hadoop集群

图1:Apache Hadoop核心组件

HDFS集群

HDFS集群由一个NameNode和主从架构中的多个DataNode组成,如图2所示。NameNode是负责HDFS文件和块以及文件系统名称空间的数据管理器。 该信息作为名称空间映像和编辑日志永久存储在本地驱动器上。 NameNode还存储非持久性信息,例如给定文件的所有块的位置。 HDFS文件分为多个块,以复制并存储在DataNodes上。 每个DataNode定期与NameNode同步,并提供有关块的信息。 HDFS架构负责Apache Hadoop的数据存储,容错和丢失预防部分。

hadoop 高可用集群_设计具有数据隔离的高可用性,容错Hadoop集群

图2:HDFS架构– NameNode(主节点)– DataNodes(从节点)配置

YARN(YARN应用程序资源协商器)体系结构

MapReduce 2.0或YARN区分了JobTracker的职责,JobTracker是早期Hadoop版本中的作业调度程序,因此将资源管理与应用程序管理分开。 它还有助于将作业计划和监视与资源管理分开。

ResourceManager是全局主服务器和资源仲裁器。 ApplicationMaster能够管理不同的用户应用程序。 每个应用程序有一个ApplicationMaster。 因此,例如,您将为MapReduce应用程序提供一个,为交互式应用程序提供一个,依此类推。 有一个JobHistoryServer守护程序可以跟踪这些应用程序并记录其完成情况。 最后,还有一个名为NodeManager的按节点从属服务器(类似于先前版本的TaskTracker),它跟踪在其特定节点上运行的任务。 YARN架构负责Apache Hadoop的数据计算和管理方面。

hadoop 高可用集群_设计具有数据隔离的高可用性,容错Hadoop集群

图3:YARN体系结构– ResourceManager(主服务器)– ApplicationMaster + NodeManager(主服务器+从服务器)配置

既然我们对Apache Hadoop核心组件有了了解,那么让我们简要介绍一下我们的简约设计要求。 我将首先在此处列出它们,然后详细介绍如何满足Apache Hadoop 2的要求。

要求:

  • 高可用性–集群永远不会失败。
  • 安全性–群集应覆盖所有安全层
  • 横向扩展–最大化(网络IO)性能,并最小化物理尺寸。
  • 虚拟机上的Hadoop –弹性,改进的多租户,增加的系统利用率。

高可用性

Hadoop 2版本建立了一个具有活动和备用NameNode的配置,从而避免了单点故障。 每当保守的故障转移控制器检测到故障时,它都会让备用服务器接管并关闭活动的NameNode(通过“围栏”或“对头部中的其他节点进行射击”)。 备用NameNode可以非常快地接管,因为两者都是活动的; 以及备用NameNode共享编辑日志,并且DataNodes向活动和备用NameNode报告。

另外,YARN中的ResourceManager可以支持高可用性。 故障转移控制器是ResourceManager的一部分,当活动故障转移时,备用控制器将接管备用控制器。

安全

每当我们谈论安全性时,我们都在谈论“防御层”(也称为“防御环”)。 这些层包括身份验证,授权,审计和数据保护:

安全-身份验证:

本地Apache Hadoop中最常见的身份验证形式是Kerberos。 身份验证可以从用户到服务,例如HTTP身份验证; 或可以从服务到服务(作为用户(例如,代理用户)或作为服务(例如,客户端SSL证书))。

安全-授权:

Apache Hadoop已经提供了类似Unix的文件权限,并且还具有Map Reduce作业,YARN等的访问控制列表。

安全性–问责制/审核:

审核日志提供了责任制,本机Apache Hadoop拥有用于NameNode的审核日志,这些日志记录了文件的创建,打开等。此外,还有JobTracker,JobHistoryServer和ResourceManager的历史日志。 历史记录记录了在特定群集上运行的所有作业。

安全性–静止数据和运动防护中的数据:

使用操作系统必须提供的任何加密以及其他硬件级别的加密,可以轻松地对静态数据进行加密。 另一方面,需要在配置文件中启用动态数据,如下所示:

对于通过RPC进行的客户端交互,可以通过在core-site.xml中设置“ hadoop.rpc.protection = privacy”来启用SASL(简单身份验证和安全层)协议。 注意:Java SASL提供了不同级别的数据保护(也称为QOP-保护质量)。 根据所需的质量,用户可以将保护参数设置为“身份验证”,仅用于身份验证。 “完整性”用于身份验证和交换数据的完整性,“隐私”用于添加加密(使用对称**)并避免“中间人”攻击。 完整性检查和加密均以性能为代价。

HDFS数据使用的数据传输协议(DTP)不使用SASL框架进行身份验证,因此直接效果是没有QOP。 因此,有必要用SASL握手包装DTP,这可以通过在hdfs-site.xml中设置'dfs.encrypt.data.transfer = true'来实现。

最后,对于通过SSL的HTTP,只需设置'dfs.https.enable = true',然后通过hdfs-site.xml中的'dfs.client.https.need-auth = true'启用双向SSL即可解决问题。 对于MapReduce Shuffle,可以通过在mapred-site.xml中设置“ mapreduce.shuffle.ssl.enabled = true”来启用SSL。

向外扩展

尽管Hadoop只需要商品硬件,但使用Hadoop进行数据通信始终是一件大事。 即使您具有中等大小的群集,也存在大量的复制流量以及在Mappers和Reducers之间的数据移动。 因此,选择具有良好网络主干的集群硬件非常重要,同时又要提供良好的性能并证明其经济性足以满足或超过您的横向扩展需求。

在Servergy,我们使用飞思卡尔的QorIQ T4240 64位通信处理器设计了这样的系统。 节能的Servergy CTS存储设备(如图4所示)具有两个T4240处理器。 每个T4240都有一个安全协处理器,用于加速加密/解密操作。 T4240还具有四个10GigE端口和一个20Gig SRIO(串行快速IO)端口。 SRIO提供了低延迟,高带宽的互连。 对于每个Servergy CTS设备,我们当前的单个群集仅使用八个10GigE端口中的四个-两个10GigE端口连接到活动交换机,另外两个连接到冗余/备用交换机,以在交换机级别提供高可用性。 此配置如图5所示。注意:基于部署,我们可以绑定10GigE端口以增加带宽或将SRIO用于低延迟传输。

hadoop 高可用集群_设计具有数据隔离的高可用性,容错Hadoop集群

图4:Servergy CTS存储设备框图

hadoop 高可用集群_设计具有数据隔离的高可用性,容错Hadoop集群

图5:CTS设备解决方案– 10x12x2 = 240核; 480个线程

虚拟机上的Hadoop

Hadoop集群中的许多系统不仅处理计算需求,而且还提供数据存储。 因此,如果您考虑使用Hadoop即服务,则始终会担心数据安全性。 进入虚拟化! 虚拟化不仅提供所需的隔离,还提供弹性。 虚拟化增加了YARN提供的多租户,并通过最大限度地利用资源来提高系统利用率。 除此之外,易于部署也是虚拟化的一大优势。

与Hadoop的传统布局保持一致,每个虚拟机(VM)都可以运行NodeManager / TaskTracker和一个DataNode,如图6所示。但是,这种配置并不能提供虚拟化的所有好处。 首先,配置并不是真正的弹性。 您必须针对(不断增长的)需求对其进行预配置。 例如,在紧密配置的群集上数据的任何增长都需要向群集添加新的节点,但是现在您拥有了备用的计算资源,并且还需要平衡群集。 数据计算与数据存储之间没有任何分离。

hadoop 高可用集群_设计具有数据隔离的高可用性,容错Hadoop集群

图6:虚拟机上的传统Hadoop布局。

为了使其更具弹性,我们可以将每个VM数据+计算设计配置更改为面向服务的体系结构,这将更有利于Hadoop即服务提供商(甚至是基础架构即服务)服务供应商)。 让我们讨论两个新配置:

hadoop 高可用集群_设计具有数据隔离的高可用性,容错Hadoop集群

图7:面向服务的架构配置中的虚拟Hadoop

图7显示了一个配置,其中每个多个NodeManagers / TaskTracker具有一个虚拟化DataNode。 根据集群的计算需求,可以通过向集群添加更多的虚拟节点来添加更多的NodeManager。 由于每个VM运行其自己的NodeManager,因此此配置不仅提供了计算和数据级别的隔离,还提供了出色的多租户隔离。 关键是要找到给定主机上每个虚拟化DataNode的虚拟化NodeManager总数的良好平衡。 这在很大程度上取决于您的数据,复制因子,应用程序和集群容量。

在“基础架构即服务”领域中引起广泛关注的另一种配置是拥有持久数据并添加虚拟化的计算节点(NodeManagers / TaskTrackers)或数据节点与计算节点的组合以完成集群。 此配置如图8所示。

hadoop 高可用集群_设计具有数据隔离的高可用性,容错Hadoop集群

图8:基础架构即服务配置中的虚拟Hadoop

在这里,基础架构可满足所有网络,负载平衡和持久数据存储需求。 群集和VM管理器控制由计算VM(TaskTrackers / NodeManager)和“ DataNode + NodeManager” VM的组合组成的Hadoop群集。 此配置有助于简化对云中HDFS数据的访问(当出于计算目的需要时),还可以简化将数据备份到持久性存储的过程。 在这样的配置中,由于所有数据(原始,分析或挖掘的)都被持久存储,因此云中不需要长时间运行的集群。

关于作者

是Java Performance Consultant。 她过去的经验包括与Oracle / Sun和AMD合作。 为服务器类系统优化JVM。 莫妮卡(Monica)被评选为JavaOne 2013年度摇滚明星发言人,并且是Garbage First Garbage Collector(G1 GC)的性能负责人。 您可以在Twitter @mon_beck上关注Monica

翻译自: https://www.infoq.com/articles/Hadoop-Cluster/?topicPageSponsorship=c1246725-b0a7-43a6-9ef9-68102c8d48e1

hadoop 高可用集群