hadoop3 新功能yarn service初探

原创 2018-06-29 11:26 阅读(290)次

最近浏览最新版的hadoop 3.1.0,发现一个有趣的东西,YARN service。看来hadoop的团队也意识到mapreduce的没落,转而发展自己的强项了,甚至还结合了docker。

YARN service

由几个重要的部分组成

Service Framework (ApplicationMaster) on YARN

本质上这是一个ApplicationMaster,他负责根据用户提供的服务定义,从ResourceManager请求containers,并根据placement 策略启动容器。另外他需要做繁重的任务:

1. 解析并执行服务定义和配置

2. 管理容器的生命周期,如自动启动failed的容器,监控各组件之间是否健康和是否准备就绪,确保组件按依赖顺序启动,扩展申请新的组件,结束不需要的组件,升级组件等等。

主要目的就是确保服务以用户期望的状态运行。


A Restful API-Server for deploying/managing services on YARN

支持restful格式的api,这点跟elasticsearch一样,通过json和http方式来和yarn进行通信,并来启动简单或者复杂的服务等生命周期的管理,是一种很常见的设计。避免了用户直接使用底层api,编码去进行服务调用。API server是无状态的,所以用户可以启动多个实例,同时还提供了一个load balancer来支持API-server的HA和负载均衡(这是对外提供大并发服务才会考虑的问题)。


Service Discovery

DNS server,是为了用来发现YARN上的服务的,通过了DNS lookup的机制。
YARN service (实际上是ApplicationMaster)将容器的信息(主机名,ip)放到YARN service registry(注册表),dns server将注册表中的信息公开,转换为DNS记录,例如A记录和SRV记录。
客户端就可以通过这个DNS server,以标准的DNS lookup机制来发现容器的IP。
YARN Service registry之前的读取机制仅支持java api和REST接口,所以很难对正在运行的服务和客户端进行绑定(这里我目前无法确定官方表达的意思,我猜测是之前的服务发现需要主动调用api或者REST 接口来获得,增加了使用难度。)

本文完。



下一篇:JVM的种类