[ 
https://issues.apache.org/jira/browse/TEZ-1539?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14128849#comment-14128849
 ] 

Siddharth Seth commented on TEZ-1539:
-------------------------------------

The Initializer events are generated by tasks and sent to InputInitializers 
running in the AM.

bq. Regarding the impact on recovery, I don't think this change will impact the 
current recovery because the InputInitializerEvent only exists between NEW and 
INITED ( if the recovered state is NEW, then these events should be able to 
regenerated
The events are sent between the state NEW and INITED. The events, however, are 
generated by a different vertex, which may have some tasks succeeded. That's 
the reason to store the events - they won't be regenerated if previous tasks 
are not re-run (already SUCCEEDED).

What the recovery change is trying to do is store the events when they're 
generated by the task. On recovery these events should be routed as normal - 
and will go to the intended vertex. If that vertex is already complete, they'll 
be ignored. Otherwise, the initializer will start and see the relevant events.

> Allow a FIRE_ONCE_ON_SUCCESS model for events generated by user code
> --------------------------------------------------------------------
>
>                 Key: TEZ-1539
>                 URL: https://issues.apache.org/jira/browse/TEZ-1539
>             Project: Apache Tez
>          Issue Type: Improvement
>            Reporter: Siddharth Seth
>            Assignee: Siddharth Seth
>         Attachments: TEZ-1539.1.wip.txt, TEZ-1539.2.txt
>
>
> Specifically for InputInitalizerEvents and VertexManagerEvents.
> Pasting comment from TEZ-1447
> In a majority of cases, events generated by different attempts of the same 
> task will be identical - in which case just making use of the event generated 
> by the first successful attempt is adequate. Doing something like this manes 
> that users don't worry about retries, indices etc - and can just rely on 
> receiving a set of events which are to be processed once the vertex succeeds.
> If different attempts of the same workload generate different events - 
> processing is likely to be incorrect, since it's very possible for all data 
> to be processed (VERTEX successful), then a failure and retry - which 
> generates a different event. The initializer doesn't even run at this point, 
> since it's already done it's work and is complete. Handling such scenarios, 
> likely involves re-running the entire initializer and re-starting the vertex 
> which processed the event from scratch. In situations like this, where data 
> generated may be different, the best bet is for speculation to be disabled 
> (when it's supported), and max-attempts to be set to 1.



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

Reply via email to