近日,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 数据,但最终这些环境都不断扩大,直到形成一个数据湖并提供了一个中等的数据架构。小的集群并不是“过早的”—它们是种子。
可以从最新发布的官方声明中获取更多信息。
评论