[ 
https://issues.apache.org/jira/browse/YARN-4602?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Junping Du updated YARN-4602:
-----------------------------
    Description: 
We are proposing to support MR AM restart with work preserving in 
MAPREDUCE-6608 (https://issues.apache.org/jira/browse/MAPREDUCE-6608) that when 
AM get failed for some reason, the inflight tasks will keep running/pending 
until new AM attempt comes back to continue. One of prerequisite is tasks 
should know where the new AM attempt get launched so TaskUmbilicalProtocol can 
get retry between clients and new server.
There could be the same requirement for other applications running on YARN too. 
Some application decide to handle message delivery itself, e.g. Long running 
services can leverage Slider agent to notify messages back and forth. However, 
vanilla applications on YARN is hard to achieve this because Hadoop RPC 
mechanism essentially is a single way of communication. Although two directions 
mechanism like heartbeats (between NM-RM or AM-RM) can get built on top of it, 
it make less sense to build the same mechanism between AM and its application 
containers - or it need to handle massive of client connections in AM which 
could be the new bottleneck for scalability and very complicated in state 
maintaining. Instead, we need a new message mechanism that is simple and 
scalable.


  was:
Currently, mostly communications among YARN daemons, services and applications 
are go through RPC. In almost all cases, logic running inside of containers are 
RPC client but not server because it get launched inflight. The only special 
case is AM container, because it get launched earlier than any other containers 
so it can be RPC server and tell new coming containers server address in 
application logic (like MR AM). 
The side effects are: 
1. When AM container get failed, the new AM attempts will get launched with new 
address/port, so previous RPC are broken.
2. Application's requirement are variable, there could be other dependency 
between containers (not AM), so some container failed over will affect other 
containers' running logic.
It is better to have some message/notification mechanism between containers for 
handle above cases.



> Scalable and Simple Message Service for YARN application
> --------------------------------------------------------
>
>                 Key: YARN-4602
>                 URL: https://issues.apache.org/jira/browse/YARN-4602
>             Project: Hadoop YARN
>          Issue Type: Sub-task
>          Components: applications, resourcemanager
>            Reporter: Junping Du
>            Assignee: Junping Du
>
> We are proposing to support MR AM restart with work preserving in 
> MAPREDUCE-6608 (https://issues.apache.org/jira/browse/MAPREDUCE-6608) that 
> when AM get failed for some reason, the inflight tasks will keep 
> running/pending until new AM attempt comes back to continue. One of 
> prerequisite is tasks should know where the new AM attempt get launched so 
> TaskUmbilicalProtocol can get retry between clients and new server.
> There could be the same requirement for other applications running on YARN 
> too. Some application decide to handle message delivery itself, e.g. Long 
> running services can leverage Slider agent to notify messages back and forth. 
> However, vanilla applications on YARN is hard to achieve this because Hadoop 
> RPC mechanism essentially is a single way of communication. Although two 
> directions mechanism like heartbeats (between NM-RM or AM-RM) can get built 
> on top of it, it make less sense to build the same mechanism between AM and 
> its application containers - or it need to handle massive of client 
> connections in AM which could be the new bottleneck for scalability and very 
> complicated in state maintaining. Instead, we need a new message mechanism 
> that is simple and scalable.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to