hadoop-mapreduce-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Hitesh Shah <hit...@hortonworks.com>
Subject Re: YARN Features
Date Tue, 12 Mar 2013 18:47:53 GMT
Answers regarding DistributedShell. 

has some details on YARN's architecture.

-- Hitesh

On Mar 12, 2013, at 7:31 AM, Ioan Zeng wrote:

> Another point I would like to evaluate is the Distributed Shell example usage.
> Our use case is to start different scripts on a grid. Once a node has
> finished a script a new script has to be started on it. A report about
> the scripts execution has to be provided. in case a node has failed to
> execute a script it should be re-executed on a different node. Some
> scripts are Windows specific other are Unix specific and have to be
> executed on a node with a specific OS.

The current implementation of distributed shell is effectively a piece of example code to
folks write more complex applications. It simply supports launching a script on a given number

of containers ( without accounting for where the containers are assigned ), does not handle
retries on failures
and simply reports a success/failure based on the no. of failures in running the script. 

Based on your use case, it should be easy enough to build on the example code to handle the
features that 
you require. 

The OS specific resource ask is something which will be need to be addressed in YARN. Could
you file a JIRA 
for this feature request with some details about your use-case. 

> The question is:
> Would it be feasible to adapt the example "Distributed Shell"
> application to have the above features?
> If yes how could I run some specific scripts only on a specific OS? Is
> this the ResourceManager responsability? What happens if there is no
> Windows node for example in the grid but in the queue there is a
> Windows script?
> How to re-execute failed scripts? Does it have to be implemented by
> custom code, or is it a built in feature of YARN?

The way YARN works is slightly different from what you describe above. 

What you would do is write some form of a controller which in YARN terminology is referred
to as an ApplicationMaster. 
It would request containers from the RM ( for example, 5 containers on WinOS, 5 on Linux with
1 GB each of RAM ). Once, the container is
assigned, the controller would be responsible for launching the correct script based on the
container allocated. The RM would be responsible
for ensuring the correct set of containers are allocated to the container based on resource
usage limits, priorities, etc. [ Again to clarify, OS type 
scheduling is currently not supported ]. If a script fails, the container's exit code and
completion status would be fed back to the controller which 
would then have to handle retries ( may require asking the RM for a new container ).

> Thank you in advance for your support,
> Ioan Zeng

View raw message