Apache Hadoop是一种开源软件框架,能够对分布式集群上的大数据集进行高吞吐量处理。Apache模块包括Hadoop Common,这是一组常见的实用工具,可以通过模块来运行。这些模块还包括:Hadoop分布式文件系统(HDFS)、用于任务调度和集群资源管理的 Hadoop YARN以及Hadoop MapReduce,后者是一种基于YARN的系统,能够并行处理庞大的数据集。
Apache还提供了另外的开源软件,可以在Hadoop上运行,比如分析引擎Spark(它也能独立运行)和编程语言Pig。
Hadoop 之所以广受欢迎,就是因为它为使用大众化硬件处理大数据提供了一种几乎没有限制的环境。添加节点是个简单的过程,对这个框架没有任何负面影响。 Hadoop具有高扩展性,能够从单单一台服务器灵活扩展到成千上万台服务器,每个集群运行自己的计算和存储资源。Hadoop在应用程序层面提供了高可用性,所以集群硬件可以是现成的。
实际的使用场合包括:在线旅游(Hadoop声称它是80%的网上旅游预订业务的可靠的大数据平台)、批量分析、社交媒体应用程序提供和分析、供应链优化、移动数据管理、医疗保健及更多场合。
它有什么缺点吗? Hadoop很复杂,需要大量的员工时间和扎实的专业知识,这就阻碍了它在缺少专业IT人员的公司企业的采用速度。由于需要专家级管理员,加上广泛分布的集群方面需要庞大的成本支出,从中获得商业价值也可能是个挑战。I
集群管理也可能颇为棘手。虽然Hadoop统一了分布式计算,但是配备和管理另外的数据中心、更不用说与远程员工打交道,增添了复杂性和成本。结果就是,Hadoop集群可能显得过于孤立。
云是救星吗?
对 Hadoop用户们来说,进入到云端并不是一个非此即彼的命题。一些拥有Hadoop专长的公司会选择基础设施即服务(IaaS)以改善集群管理,还会继续在内部管理Hadoop。本文将着重探讨全面托管的在线Hadoop部署环境。我们称之为Hadoop即服务(HaaS),这是平台即服务(PaaS)的一个子类。
将Hadoop作为一项基于云的托管服务来运行并不便宜,但是相比购买数量众多的集群,它确实节省了资金。它还缓解了由Hadoop 专家来管理的要求,避免了长长的学习曲线。安装的Hadoop大多数仍然会维持一个自助式门户网站,用于分析及其他数据操作,而提供商管理所有的基础设施、管理和处理操作。
此举并非易事。Hadoop架构需要一种具有高扩展性的动态环境,Hadoop专家对复杂的配置和软件集成而言又必不可少。如果某家公司决定采用一项托管服务,它就没必要雇用专家级员工,但托管服务会雇用。客户对专长、定制配置和能力等方面的要求越高,服务的成本就越高昂。
不过,开支通常少于在现场运行部署的大型Hadoop系统,而且它确实降低了复杂性。IT人员可以制定政策,能够从基于Web的控制台来操作数据,而不是将员工时间和大量资金花费在集群和工作负载的管理上。提供商会管理日常任务和动态工作负载的自动化配置。服务还会处理数据、负责分配。
若干缺点
当然了,没有任何技术是完美无缺的,包括HaaS。首先,公司需要把大数据移入移出云。这就带来了延迟,IT人员得购买更粗的带宽及/或购置数据迁移加速解决方案,以克服延迟。IT人员还要对HaaS提供商的性能级别和服务质量做好摸底调查工作。下面是需要关注的几项主要功能:
提供商应该将数据永久性地存储在HDFS。Hadoop不要求使用HDFS作为一种永久性数据存储区,但是这么做具有明显的优势。虽说在内存中的缓存(In-Memory Cache)出现之前,使用HDFS作为永久性数据存储区带来了性能问题。而现在,活动进程出现在HDFS的内存中的缓存,Hadoop使用后写(write-behind)将数据存储在磁盘上。这项功能现在将HDFS定位于一种数据仓库,不需要购买第三方仓库或抽取、转换和加载(ETL)。查询命中整个存储区(包括缓存和HDFS)。又由于HDFS是Hadoop自带的,它可以与Yarn和MapReduce无缝兼容。
高度弹性的计算环境。Hadoop的核心能力就是为多种多样的工作负载维护弹性集群。在运行基于云的Hadoop实例时,这个考量因素显得尤为重要。你已经在处理远程连接至互联网,无法忍受增添另一层延迟。Hadoop云提供商必须维持高度动态和高扩展性的环境。服务还应该能够支持混合工作负载,比如数据消化和客户数据分析。服务器和存储容量应该能够高度自动化地实时配置。
不间断运行。另一个考量因素是能够在数据处理出现故障后恢复过来,不用重启整个过程。Hadoop提供商应该具有不间断运行能力,这不是件小事。要明确提供商支持不间断运行,可以从失效的子服务开始部分重启运行,而不是重启整个任务。
Hadoop即服务提供商
许多大型云厂商为Hadoop服务提供商提供服务,包括惠普Helion、谷歌、亚马逊、Rackspace和微软Azure。然而,云厂商们可能提供自己的托管Hadoop服务,也可能不提供。本文介绍的厂商涵盖Hadoop托管服务提供商,而不是仅仅涵盖上面运行Hadoop的基础设施。
Qubole 的主打服务是Hadoop即服务(HaaS)。Qubole数据服务提供了全面托管的按需集群,可以根据数据大小向上或向下扩展。Qubole与谷歌云(Google Cloud)达成了合作伙伴,使用谷歌的计算引擎(GCE)。 说到谷歌,面向Hadoop的谷歌云存储(GCS)连接件让用户可以直接对存储在GCS中的数据运行MapReduce任务,那样就没必要在内部写入数据、在本地Hadoop中运行。另外的数据连接件让GCS用户能够对存储在谷歌Datastore和谷歌BigQuery中的数据运行 MapReduce。
Hortonworks数据平台提供了企业级托管HaaS。Hadoop YARN能够通过众多操作来处理多个工作负载。Altiscale因特别定制的Hadoop云服务而大放异彩。它强调可靠的原生安全和合规、先进的管理服务、高度自动化以及全面的数据和语言集成。
亚马逊提供了亚马逊弹性MapReduce(EMR)作为一项Hadoop Web服务。EMR将客户端数据和进程分配到动态EC2实例上。微软Azure HDinsight也是一款基于云的Hadoop发行版。HDinsight是纯Hadoop,并不含有另外的微软软件。安装的系统可以同时处理来自多个数据位置的结构化数据和半结构化数据。
IBM BigInsights on Cloud基于Hadoop,把Hadoop核心服务和模块与IBM管理控制台、分析工具和查询引擎整合起来。这个云版本将BigInsights作为一项Hadoop服务在IBM SoftLayer上运行。
最后,相比其名声,Hadoop的采用速度并没有得到应有的体现。对大数据有诸多要求的企业在广泛采用它,因为它们有与之匹配的计算预算。但是许多中型企业、甚至企业级公司还没有采用Hadoop,原因在于它很复杂,另外需要不断优化。
我们认为,只要Hadoop托管服务提供商优化数据中心以提升性能,用户知道加快数据转移,托管Hadoop服务就会把多得多的企业用户吸引过来。