blob: 2f181a282a96c3adcbe5efda4b883ee7cf10d995 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.18) on Wed Mar 01 02:01:42 GMT 2023 -->
<title>HeronMasterDriver (Heron Java API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2023-03-01">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../jquery/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-ui.min.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="HeronMasterDriver (Heron Java API)";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.heron.scheduler.yarn</a></div>
<h2 title="Class HeronMasterDriver" class="title">Class HeronMasterDriver</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.heron.scheduler.yarn.HeronMasterDriver</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public class <span class="typeNameLabel">HeronMasterDriver</span>
extends java.lang.Object</pre>
<div class="block"><a href="HeronMasterDriver.html" title="class in org.apache.heron.scheduler.yarn"><code>HeronMasterDriver</code></a> is a topology's ApplicationMaster running on YARN clusters. It performs
container management for Heron's YARN Scheduler using REEF framework. This includes making
container request for heron instances, providing package needed to start Heron components,
monitoring the containers and killing containers when requested.
<p></p>
REEF libraries communicate with YARN RM on behalf of this AM. The communication between REEF and
<a href="HeronMasterDriver.html" title="class in org.apache.heron.scheduler.yarn"><code>HeronMasterDriver</code></a> is event driven. <a href="HeronMasterDriver.html" title="class in org.apache.heron.scheduler.yarn"><code>HeronMasterDriver</code></a> provides handlers for
some of the events generated by the framework, including
<ol>
<li>configuring newly allocated containers, <code>HeronMasterDriver.ContainerAllocationHandler</code></li>
<li>launching Heron components in the containers <a href="HeronMasterDriver.HeronWorkerLauncher.html" title="class in org.apache.heron.scheduler.yarn"><code>HeronMasterDriver.HeronWorkerLauncher</code></a></li>
<li>handing errors/failures, <code>HeronMasterDriver.FailedContainerHandler</code> and
<a href="HeronMasterDriver.HeronWorkerTaskFailureHandler.html" title="class in org.apache.heron.scheduler.yarn"><code>HeronMasterDriver.HeronWorkerTaskFailureHandler</code></a></li>
</ol>
<p></p>
On initialization <a href="HeronMasterDriver.html" title="class in org.apache.heron.scheduler.yarn"><code>HeronMasterDriver</code></a> unpacks Heron package and starts the Heron scheduler.
It then receives a <a href="../../spi/packing/PackingPlan.html" title="class in org.apache.heron.spi.packing"><code>PackingPlan</code></a> from the scheduler. It then submit new container requests
to the REEF framework and provides the desired container size. Some of the handlers listed above
are then invoked and heron components will be activated.
<p></p>
The containers allocated by YARN may be bigger than the requested size. This is a consequence of
a YARN scheduler optimization, which allocates resources in fixed memory and CPU increments. For
e.g. if the memory increment is 100 MB, YARN may allocated a container of 200 MB when 150 MB is
requested. As a result, the actual resource allocation may be little more than what was
requested. Moreover YARN does not provide any mechanism to match the container request to
allocated container. So the AM needs to find a suitable heron <a href="../../spi/packing/PackingPlan.ContainerPlan.html" title="class in org.apache.heron.spi.packing"><code>PackingPlan.ContainerPlan</code></a> to be
launched in the the newly allocated YARN container.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="HeronMasterDriver.ContainerAllocationException.html" title="class in org.apache.heron.scheduler.yarn">HeronMasterDriver.ContainerAllocationException</a></span></code></th>
<td class="colLast">
<div class="block"><a href="HeronMasterDriver.ContainerAllocationException.html" title="class in org.apache.heron.scheduler.yarn"><code>HeronMasterDriver.ContainerAllocationException</code></a> represents an error while trying to allocate a
container</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="HeronMasterDriver.HeronWorkerLauncher.html" title="class in org.apache.heron.scheduler.yarn">HeronMasterDriver.HeronWorkerLauncher</a></span></code></th>
<td class="colLast">
<div class="block">Once the container starts, this class starts Heron's executor process.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="HeronMasterDriver.HeronWorkerStartHandler.html" title="class in org.apache.heron.scheduler.yarn">HeronMasterDriver.HeronWorkerStartHandler</a></span></code></th>
<td class="colLast">
<div class="block">This class manages active tasks.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="HeronMasterDriver.HeronWorkerTaskCompletedErrorHandler.html" title="class in org.apache.heron.scheduler.yarn">HeronMasterDriver.HeronWorkerTaskCompletedErrorHandler</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="HeronMasterDriver.HeronWorkerTaskFailureHandler.html" title="class in org.apache.heron.scheduler.yarn">HeronMasterDriver.HeronWorkerTaskFailureHandler</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(org.apache.reef.driver.evaluator.EvaluatorRequestor,org.apache.reef.runtime.common.files.REEFFileNames,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,int,boolean)">HeronMasterDriver</a></span>&#8203;(org.apache.reef.driver.evaluator.EvaluatorRequestor&nbsp;requestor,
org.apache.reef.runtime.common.files.REEFFileNames&nbsp;fileNames,
java.lang.String&nbsp;cluster,
java.lang.String&nbsp;role,
java.lang.String&nbsp;topologyName,
java.lang.String&nbsp;env,
java.lang.String&nbsp;topologyJar,
java.lang.String&nbsp;topologyPackageName,
java.lang.String&nbsp;heronCorePackageName,
int&nbsp;httpPort,
boolean&nbsp;verboseMode)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#killTopology()">killTopology</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#killWorkers(java.util.Set)">killWorkers</a></span>&#8203;(java.util.Set&lt;<a href="../../spi/packing/PackingPlan.ContainerPlan.html" title="class in org.apache.heron.spi.packing">PackingPlan.ContainerPlan</a>&gt;&nbsp;containers)</code></th>
<td class="colLast">
<div class="block">Terminates any yarn containers associated with the given containers.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#restartTopology()">restartTopology</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#restartWorker(int)">restartWorker</a></span>&#8203;(int&nbsp;id)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;(org.apache.reef.driver.evaluator.EvaluatorRequestor,org.apache.reef.runtime.common.files.REEFFileNames,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,int,boolean)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>HeronMasterDriver</h4>
<pre>@Inject
public&nbsp;HeronMasterDriver&#8203;(org.apache.reef.driver.evaluator.EvaluatorRequestor&nbsp;requestor,
org.apache.reef.runtime.common.files.REEFFileNames&nbsp;fileNames,
java.lang.String&nbsp;cluster,
java.lang.String&nbsp;role,
java.lang.String&nbsp;topologyName,
java.lang.String&nbsp;env,
java.lang.String&nbsp;topologyJar,
java.lang.String&nbsp;topologyPackageName,
java.lang.String&nbsp;heronCorePackageName,
int&nbsp;httpPort,
boolean&nbsp;verboseMode)
throws java.io.IOException</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="killTopology()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>killTopology</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;killTopology()</pre>
</li>
</ul>
<a id="killWorkers(java.util.Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>killWorkers</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;killWorkers&#8203;(java.util.Set&lt;<a href="../../spi/packing/PackingPlan.ContainerPlan.html" title="class in org.apache.heron.spi.packing">PackingPlan.ContainerPlan</a>&gt;&nbsp;containers)</pre>
<div class="block">Terminates any yarn containers associated with the given containers.</div>
</li>
</ul>
<a id="restartTopology()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>restartTopology</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;restartTopology()
throws <a href="HeronMasterDriver.ContainerAllocationException.html" title="class in org.apache.heron.scheduler.yarn">HeronMasterDriver.ContainerAllocationException</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="HeronMasterDriver.ContainerAllocationException.html" title="class in org.apache.heron.scheduler.yarn">HeronMasterDriver.ContainerAllocationException</a></code></dd>
</dl>
</li>
</ul>
<a id="restartWorker(int)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>restartWorker</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;restartWorker&#8203;(int&nbsp;id)
throws <a href="HeronMasterDriver.ContainerAllocationException.html" title="class in org.apache.heron.scheduler.yarn">HeronMasterDriver.ContainerAllocationException</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="HeronMasterDriver.ContainerAllocationException.html" title="class in org.apache.heron.scheduler.yarn">HeronMasterDriver.ContainerAllocationException</a></code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body>
</html>