20世纪90年代,每台应用服务器往往都拥有直接连接存储(DAS)。创建存储区域网络(SAN),是为了提供共享的存储池,以获得更大的规模和更高的效率。Hadoop逆转了这股潮流,让DAS重新流行起来。每个Hadoop集群都有自己的、横向扩展直接连接存储。它有助于Hadoop管理数据局部性,但是牺牲了共享存储的规模和效率。因此,如果你有Hadoop发行版的多个实例,就会有多个这种横向扩展的存储孤岛。
Hedvig公司的首席执行官兼创始人阿维纳什·拉克希曼(Avinash Lakshman)说:“我们遇到的最大挑战就是,兼顾数据局部性与规模和效率。”
数据局部性是指确保大数据集存储在执行分析任务的计算资源附近。对于Hadoop来说,这就意味着管理数据节点(DataNode),而数据节点为MapReduce拥有足够好的性能提供了存储资源。它可以高效地工作,但是导致了另一个操作问题:大数据存储孤岛。本文介绍的这些要点有助于管理Hadoop环境中的大数据存储。
1. 分散式存储
集中式存储作为传统架构已有一段时间。但是大数据其实并不适合集中存储架构。Infogix的金融服务行业(FSI)战略和运营经理森希尔·拉贾曼尼坎(Senthil Rajamanickam)表示,Hadoop旨在让计算资源更接近数据,同时充分利用HDFS文件系统的大规模横向扩展功能。
然而,解决Hadoop管理自有数据的低效问题的常见方法,一向是将Hadoop数据存储在SAN上。而这带来了性能和规模方面的一系列瓶颈。现在,你的所有数据都通过集中式SAN控制器来处理,而控制器破坏了Hadoop的分布式、并行化的特性。你需要为多个数据节点管理多个SAN,或者将所有数据节点保存到一个SAN上。
拉克希曼说:“由于Hadoop是一种分布式应用系统,它应该可以在分布式存储上运行,那样你的存储保持与Hadoop本身一样的弹性。这需要你积极采用软件定义存储方法,在商用服务器上运行,但是它比把Hadoop放在传统SAN或NAS技术上高效得多,因为后者给Hadoop造成了瓶颈。
2. 超融合vs分布式
不过要小心,别将超融合与分布式混为一谈。某些超融合方法是分布式的,但这个术语通常意味着你的应用程序和存储可以共同驻留在同一个计算节点上。解决数据局部性问题很诱人,但是这会造成严重的资源争夺现象。 Hadoop应用和存储平台将争夺同样的内存和处理器资源。拉克希曼表示,最好在专用的应用层上运行Hadoop,在专用的存储层中运行分布式存储,从而充分利用缓存和分层技术,以解决数据局部性和网络性能开销。
3. 避免控制器阻塞点
他强调了做到这一点的一个重要方面――避免通过单一(或可能两个)点(比如传统控制器)来处理数据。通过改而确保存储平台并行化,就能显著提高性能。
此外,这种方法提供了增量可扩展性。为数据湖添加容量就跟添加几台内置闪存或旋转磁盘的x86服务器一样简单。分布式存储平台可在必要时自动添加容量、重新均衡数据。
4. 重复数据删除和压缩
驾驭大数据的一个关键部分是重复数据删除和压缩。Hedvig看到常见的大数据集可以缩减70%-90%。在PB级规模下,这意味着可节省数万美元的磁盘成本。
拉克希曼说:“现代平台提供了内联式(而不是处理后)重复数据删除和压缩。这意味着,如果不先以某种方式来缩减数据,数据永远不会进入到磁盘,这大大减少了存储数据所需的容量。”
5. 整合Hadoop发行版
许多大组织都有多个Hadoop发行版。可能是由于开发人员需要访问多个“版本”,或者业务部门久而久之采用了不同的版本。不管怎样,IT总部常常最终负责这些集群的日常维护和操作。大数据数量真正开始影响业务时,存在多个Hadoop发行版会导致效率低下。
拉克希曼说:“你可以创建一个单一、经过重复数据删除的压缩数据湖,然后它可以为Hadoop的多个实例提供数据,从而获得数据效率。”
6. 对Hadoop虚拟化处理
虚拟化技术在企业界刮起了一场风暴。在许多地方,如今超过80%的物理服务器已虚拟化。不过由于性能和数据局部性问题,许多人避免了对Hadoop进行虚拟化处理。
拉克希曼说:“你可以对Hadoop或Spark进行虚拟化处理。”