10G 的Hadoop有什么意义呢?你会怎么设计集群呢?我们一起讨论一下适合或者不适合10G Hadoop的案例,然后看看怎么对10G集群进行网络的设计。如果你想快速开启10G Hadoop或升级, 基于Hadoop集群和网络请认真阅读这篇文章然后再回过头来思考。

1G Hadoop集群背后的基本原理

Hadoop是被一个网络公司设计的(雅虎)出于必要的有效存储和分析网络扩展应用本身存在的大量数据设置,这里假设你能创造利润的是办法是设置大量的数据, 那么不管你喜不喜欢,目标都很简单:通过以最低的成本和最好的用户体验构建基础设施去处理大量数据设置来提高底线。那它应该可以扩展,需要更大的数据容量和更大的带宽,你只需要增加更多的机架和降低机器成本,添加水平集群置入到数据中心仓库。同样,网络扩展Hadoop集群可能会变得很大(数以千计的机器)因此每个机器的变量成本会快速增加,真的非常的快。所以这里的设计理念是让每个机器和机架的开关尽可能的便宜,尽可能的利用组件,例如内置1GE NICs (LOM),和1GB 的机架交换机。由于这些原因,10GE Hadoop也没有什么意义, 也很难确保成本(但是也不总是这样)

但是Hadoop再也不是只是针对网络公司或者数据中心仓库。其他产业例如零售,银行,保险,电信,政府等产业现在都在利用大数据从曾经被他们遗弃的数据中获取更多的价值,这里可能需要设置大量的数据, 但是我敢说是可选择性的和具有主动权的(那就是核心商业)很多IT底线工作模式和以前是有区别的,也不需要数据中心仓库,对于这些企业来说。 10GE 的Hadoop不值得多考虑点的吗? 我想是的, 但是一如既往的标准免责声明的应用, 得看情况。

适用10GEHadoop的案例

你不是雅虎公司, 你只是一个运用有限的Hadoop部署的普通企业,你已经部署了10GE在IT基础设施上的其他区域(可能是私有云)而保持操作一致性和资源替代是具有非常重要的意义的。10GE的增量没能和规模形成正比,但它确实是一个有上千个节点的巨大的集群

空间是很珍贵的, 你没有数据中心仓库, 那么你就要想办法扩展Hadoop部署且不用耗光所有的机架在你的有限的数据中心。

你的Hadoop集群运行了大量ETL类型的工作负载,因此在集群中从映射器到减速器环绕了很多中型数据,还有在数据节点中间有很多HDFS复制的数据流,这样子在10GE的机器中运行的集群就更流畅了。

当你在部署存储密集的2RU机器时(例如,Dell PowerEdge C2100, or R720xd,可能是每个节点24TB, 这些节点之一有12-16个核可能比典型的8核1RU 4TB 需要更多的网络 I/O,当节点崩溃时(或者更糟糕的是整个机架)那么庞大的数据量需要从整个集群进行再复制。

如果你是雅虎尽管你有数据中心仓库但仍然远远不够,你要在集群300米之内连接这么多的互联交换机还是很困难的因为横向扩展已经到极限了你只能选择扩展节点的深度。

在一个有限的集群中10GE的增量成本可能和1Gig相差不大,并且日益便宜。10G交换机和NIC的价格迅速的下滑,特别是基层交换机和NIC,你不需要花哨的CNAs 或者 DCB。

不适用10GE Hadoop的案例

10GE NICs仍未广泛提供LOM,所以你需要花费额外的成本去购买配备了10GE存储的机器。

端口接端口的10 GE ToR 交换机所需成本是一个标准的1GE交换机成本的三倍,

你的工作负载没有网络压力, 你的工作也没有移动或者更改数据,你正在所以机器间的数据传输(中间数据)是光纤数据因此1GE也可以很好的实现

还没有公开的数据可以显示10GE Hadoop的明确成本/效益(如果你在一些博文中看到有讨论记录或链接)据我所知这种结论还是有大量理论依据的。另一方面,成本/效益的标准线还是很明确的。

花费在装备每个节点和10GE的钱另一方面还可以用来添加更多的节点在你的集群上。如果你的工作负载中CPU和存储限制比网络多那么添加节点和磁盘到集群上比添加网络更有意义

集群的性能其实也不是最重要的你可以利用Hadoop离线量处理,没有人非要计较工作量是在一个小时,或者20分钟完成的。

为10GE Hadoop创建网络

其实一个很小的10G集群(只有一个或者两个机架)操作起来和有40个节点 10G顶级换机一样简单,你可以用向交换机LAG技术把两个交换机链接在一起(此处所示的是VLT)每个节点通过LAG连接到两个交换机上,然后链接10GE交换机到剩下的外部访问网络(如果有需要, 最好能是L3)操作非常的简单直接,对于这项操作不错的交换机有Dell Force10 S4810 线率 L2/L3 10G/40G交换机,当然你也可以使用相对便宜的L2交换机,但是你要想想ToR 交换机有什么性能可以让你轻松自如的扩展超越前两个机架(例如, 3层换自动资源配置和Perl/Python 操作)

要超过两个机架以上, 你可以用一个性价比高的10GE 交换机提供机架间集群的互联(Spine).为此你不用买一个既昂贵, 又庞大,还需要充电的高阶的机架式交换机。其实低成本, 低能耗, 固定的交换机也可以很好的完成工作,再次推荐,我们可以用S4810来完成。如下图所示

160 nodes

用一对1UR的交换机来互相连接10GE Hadoop集群 你可以结合实际规模连接160个节点,假设在机架之间的超额认购率为2.5:1(在机架内部的线率)考虑到你的2RU节点有24TB或者更多,可以用一个超过了1PB可用内存的集群(三倍复制之后)也挺好的。

因为Hadoop没有要求2层邻接在集群中的节点间, 所以我们将在机架间采用比较优质经典的L3交换机, 既简单易懂还可以扩展, 你可以选择你最喜欢的路由协议,OSPF, IS-IS, BGP, 无论哪一个都可以

如果160个节点不够,你可以把同样的架构通过添加更多同样的1RU交换机在Spine层里来扩展到1280个节点,随着需求增加集群也将增加到16Spine。每个交换机有16个上行链路并对应连接1x10GE到每个Spine交换机上,因为我们选择3层交换机作为集群互联,所以我们不受典型的两层topology的约束,见下文

像这种具有较大的Hadoop集群, 你可能要考虑到用单链接连接每个节点到单交换机上降低成本扩大集群大小,毕竟是用64个机架,即使全部机架崩溃了你也只损失了集群资源的一小部分,可能都不值得为了冗余加倍连接到主机上。

1280 nodes

如果你一开始想要创建一个150-300个节点 相当大的一个10GE Hadoop集群,你肯定会考虑一并创建一个40G互联集群,为什么呢?可以减少Spine交换机的个数, 减少从ToR到Spine的电缆,减少网络配置端口。另一大优势是40G的光纤比10G的贵1.8倍,所以即便你要扩展集群也可以省一大笔钱。

用40G光纤省65%的成本优势,根据我的经验来看,任何一个用40G spine交换机 320-640个节点的集群都比创建10G spine交换机的性价比高,即使用相同参数的机架到机架间2.5:1过载比和机架内部的线路速率一起工作都具有优势的。

再次强调,你不需要一个庞大的电源和昂贵的40G线卡给高阶的机架式交换机充电, 取而代之可以采用相对成本低,功耗低的2RU固定交换机, 例如40G的32个端口的Dell Force10 Z9000,如下所示

320 nodes

这儿也适用40G互联横向扩展到spine层同样的规则,利用S4810 ToR (Leaf)切换4 x 40G上行链路,你可以把40Gspine从2个交换机增加到4个交换机,把集群大小从320个节点加一倍到640个节点。

如果你需要把你的集群连接到外面,最好的位置是在Leaf层ToR交换机。利用spine交换机上的端口连接就不会影响集群大小,因为每个端口都代表了机架上的节点。只需要少量的端口在ToR交换机上并且用3层链路连接交换机的核心就可以给你的集群提供很好的隔离和安全性了。你可以在这里使用BGP或者甚至是静态路由保证您的内部路由安全的和外部隔离。

640 nodes

你可能觉得疯了吧,10G Hadoop和640个节点,一个集群完全不够用,没问题的,把这些Z9000交换机放在spine里面用作128x 10G的交换机取代32 x 40G。然后把S4810 ToR
交换机上行链路到16 x 10G. 务必注意,使用越狱的10G链路可以减少电缆100米的距离

你可以在spine里面横向扩展到(16)Z9000交换机,因为每个ToR有16个上行链路。而一个集群里面有128个ToR交换机-每个Z9000里面有128个端口。另外, 横向扩展是有可能的因为我们是用的优质经典的的3层交换机从ToR到集群交互连接,如果用2层交换机是不可能完成设置的,除非你有TRILL那也不可能真正的完全实现,反正都毫无意义,因为Hadoop节点根本不在乎是2层或者3层还是来自其它层。

2560 nodes

你甚至可以通过添加第三步到fabric中创建比这更大的集群,在第三步中ToR连接Leaf,Leaf再连接到spine。在这种情况下集群大小超过20,000 10GE 的主机也可以用相同的低成本, 低能耗, 1RU 和2RU 的固定交换机。

对于很大的集群就像这种,或甚至小一点的,都可以很方便的自动部署交换机,有点类似服务器引导本身从网上下载OS,从CMDB中自动检索配置文件,网络交换机也应该可以自动安装。这儿讨论了交换机, 同样你还可以用 Perl和Python 脚本和熟悉的脚本语言自定义操作.

总结

对于要建设一个10 GE 的Hadoo集群来说他不是一件容易的事情, 例如密集虚拟服务器和IP存储。对于一些人来说,没有经济意义, 对于其他人来说,10GE Hadoop 具有非常重大的意义。例如支持密集的节点,扩展有限的数据中心,现存的基础设施和围绕10GE的操作,以及强烈的网络作业对集群的压力。

就像你用1GE的集群你可以创建一些令人映像深刻的小集群,随着不断发展你可以用低成本,低能耗,固定10G 或者40G的互联网交换机,创建一个具有3层交换配置的网络,你不需要一个2层 在机架间,也不需要一个又贵又庞大的机箱交换机来完成工作。