近日,Hadoop 2 GA版发布,借助于YARN,Hadoop 2可以创建能在Hadoop中本地工作的数据处理应用。通过将集群资源管理这些关注点从数据处理中分离出来,YARN使得Hadoop能应用于Map-Reduce以外的数据处理中。因此,这样大量新项目就有可能实现了。比如Stinger和Tez这样的项目,它们关注于在某些场合下获得预期的人工交互响应时间。STORM则致力于流数据处理。Spring已经宣布了Spring YARN framework,那些想编写自己的YARN应用的Java开发者们可以使用它实现自己的目标。通过寻求Hadoop的存储和集群管理平台之间的平衡,数据处理应用现在使得用户能以多种方式与数据进行交互。我们曾和Hortonworks的产品经理Rohit Bakhshi谈过YARN以及YARN给Hadoop用户带来的意义。Rohit同我们分享了他关于YARN的能力简单看法 Hadoop一直保持着向前的势头,并且越来越多的企业(不仅仅是web规模的公司)都想将所有传入的数据保存在Hadoop中,因而它们的用户能够使用多种方式与这些数据进行交互:批处理、交互式、实时数据流分析等等。而且更重要的是,他们要能同时执行这些交互,而不会出现在交互时单个应用或查询占用集群的所有资源的情况。
借助于YARN将Apache Hadoop 2转化成一个多应用的数据系统,Hadoop社区可以处理Hadoop所面临的新一代需求。YARN在底层就满足了实际的需求,而不是以商业附加组件来处理这些需求------会使得用户的环境变得更复杂,这样YARN就很好地满足了这些企业的需求。
展望未来,企业将能部署多租户的、服务于多个目标的Hadoop集群,这些集群可以满足不同组织和应用框架的各项SLA的要求。通过使用mapred api,YARN为种种应用提供了二进制的兼容性。但在Hadoop 1.x中只是使用mapreduce api提供了源代码级的兼容性。Rohit解释说 在Hadoop 2.0中,各个客户端会向运行在YARN上的MapReduce v2框架提交种种MapReduce应用。而在Hadoop 1.0中,各个客户端则向MapReduce v1框架提交MapRecude应用。
这两类API都引用开发者可用的MapRecude框架来创建MapReduce应用。org.apache.hadoop.mapred API是最早的API,最广泛地使用在MapReduce应用的创建中。任何使用mapred API开发的MapReduce v1应用都可以提交至运行在YARN上的MapReduce v2框架,并在该框架中运行。在这种情况下,无须修改该MapReduce应用。
而org.apache.hadoop.mapreduce API则是MapReduce框架的较新的API集。在MapReduce v2和运行于YARN上的MapReduce v2之间,这些API没有提供二进制的兼容性。现存的MapReduce v1应用如果使用了这些API,则需要使用Hadoop2.x Hadoop包进行重编译。重编译后,应用就可以提交至运行在YARN上的MapReduce v2框架,并在该框架中运行。 读者可以通过这里了解进一步的信息。升级现有的Hadoop集群的过程也是很直接和方便的 Hadoop和HDP(包括所有相关的Apache Hadoop组件)都支持“就地”升级,可以就地从HDP 1.3(Hadoop 1.x)升级至HDP 2.0(Hadoop2.x)。保持了所有已有数据,而同时就地升级了元数据,并无须迁移。配置已从HDP 1.3升级至HDP 2.0,会废弃以前配置中的一些配置属性,同时添加一些新的配置属性。所以已有的HDP 1.3配置需要迁移至HDP 2.0。当我们问他会否担忧那些过早地在较小数据集上使用Hadoop的公司时, Rohit回答说他有不同的看法 我们以各种方式使用Hadoop,并且由于它是开源的,我们能看到各种用法。我不会认为这些用法是“过早的”;实际上,很多组织会从一个小的集群开始来使用Hadoop,这个集群仅仅只有几个节点和几T数据,但最终这些环境都不断扩大,直到形成一个数据湖并提供了一个中等的数据架构。小的集群并不是“过早的”---它们是种子。