Glossary
Every term you will meet reading Tez source, a JIRA thread, a PR review, or an AM
log line — defined in one to four sentences, with a link to the chapter that
covers it in full. Use this as a fast lookup; follow the link when you need
depth. Terms span the whole stack: the API and DAG model (org.apache.tez.dag.api.*),
the AM state machines (org.apache.tez.dag.app.*), and the runtime data path
(org.apache.tez.runtime.*).
Note: Tez reuses much MapReduce vocabulary (spill, IFile, combiner, shuffle, merge) but layers a general DAG model on top. Where a term means something subtly different in Tez than in classic MapReduce, the entry says so.
Jump to: A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · R · S · T · U · V
A
AM (ApplicationMaster) — The per-application coordinator process,
org.apache.tez.dag.app.DAGAppMaster, that runs one YARN container and drives
every DAG: it builds the state machines, talks to the RM for containers, launches
tasks, and routes events. One AM serves one application; in session mode it serves
many DAGs sequentially. See ../deep-dives/dag-app-master.md.
AMContainer — The AM's model of one YARN container (AMContainerImpl), with
its own state machine (AMContainerState: ALLOCATED, LAUNCHING, IDLE,
RUNNING, …). Tracks which task attempt currently occupies the container and
whether it can be reused. See ../deep-dives/container-reuse.md.
AMNode — The AM's model of one cluster node (AMNodeImpl), used for
blacklisting: it counts task failures per node and can mark a node
BLACKLISTED or UNHEALTHY. See ../deep-dives/failure-handling.md.
Attempt (task attempt) — One execution try of a task, identified by a
TezTaskAttemptID. A task may have several attempts over its life: retries after
failure, or concurrent speculative copies. The attempt is what actually runs in a
container. See ../deep-dives/task-attempt-lifecycle.md.
ATS (YARN Application Timeline Server) — The historical event store Tez can
log to via ATSHistoryLoggingService (in the tez-yarn-timeline-history
plugin); the Tez UI reads DAG history from it. See
../deep-dives/counters-diagnostics.md.
Auto-parallelism — A vertex deciding its own task count at runtime instead of
being fixed at plan time. ShuffleVertexManager collects VertexManagerEvent
partition-size stats from upstream tasks and, before the vertex starts, reduces
parallelism by merging partitions when the data is smaller than expected. See
../deep-dives/scheduler.md.
B
Blacklisting — Marking a node faulty after too many task failures so no more
attempts are scheduled there; governed by tez.am.node-blacklisting.enabled and
an ignore-threshold percentage so a cluster-wide outage doesn't blacklist
everything. Implemented in AMNodeTracker / AMNodeImpl. See
../deep-dives/failure-handling.md.
Broadcast edge — An edge whose data-movement type sends every producer
output to every consumer task (EdgeProperty.DataMovementType.BROADCAST),
routed by BroadcastEdgeManager. Used for replicating a small side input (e.g. a
Hive map-join hash table) to all downstream tasks. See
../deep-dives/logical-physical.md.
C
Combiner — An optional map-side reduce that pre-aggregates key/value pairs
during spill and merge to shrink shuffle volume; set via
tez.runtime.combiner.class, invoked once at least tez.runtime.combine.min.spills
spills exist. Same idea as MapReduce's combiner. See
../deep-dives/shuffle-sort.md.
Committer (OutputCommitter) — The org.apache.tez.runtime.api.OutputCommitter
that makes a data-sink output visible atomically (commitOutput) or discards it
(abortOutput). Commit timing is controlled by
tez.am.commit-all-outputs-on-dag-success: commit per-vertex on vertex success,
or all at once on DAG success. See ../deep-dives/failure-handling.md.
Container reuse — Keeping a YARN container alive after its task finishes and
assigning it the next matching task, avoiding JVM launch overhead. Enabled by
default (tez.am.container.reuse.enabled); the scheduler honors locality with a
delay before falling back to rack/non-local reuse. See
../deep-dives/container-reuse.md.
D
DAG (Directed Acyclic Graph) — The unit of work a client submits: a set of
vertices connected by edges, described by org.apache.tez.dag.api.DAG on the
client and executed by DAGImpl in the AM. Unlike MapReduce's fixed map→reduce,
a Tez DAG can be arbitrarily deep and wide. See ../deep-dives/dag-model.md.
DAGAppMaster — See AM. The concrete class is
org.apache.tez.dag.app.DAGAppMaster; its own lifecycle is DAGAppMasterState
(NEW, INITED, RECOVERING, IDLE, RUNNING, …). See
../deep-dives/dag-app-master.md.
DAGClient — The client-side handle (org.apache.tez.dag.api.client.DAGClient,
impl DAGClientImpl) returned by TezClient.submitDAG; you poll it for
DAGStatus, wait for completion, and fetch counters. See
../deep-dives/dag-client.md.
DAGScheduler — The AM component that decides ordering of task scheduling
across a DAG's vertices (not container allocation). Default
DAGSchedulerNaturalOrder schedules in topological order;
DAGSchedulerNaturalOrderControlled throttles downstream vertices. See
../deep-dives/scheduler.md.
DataMovementEvent — The runtime event
(org.apache.tez.runtime.api.events.DataMovementEvent) a producer emits to tell
a specific consumer "output partition N is ready at this location". The edge's
EdgeManager routes it to the right consumer task(s). The heart of how outputs
find inputs. See ../deep-dives/event-routing.md.
Dispatcher — The AM's central event bus (AsyncDispatcher /
AsyncDispatcherConcurrent) that delivers each event type to its registered
handler on a background thread. Every state machine is driven by events pulled off
the dispatcher. See ../deep-dives/event-routing.md.
E
Edge — A connection between two vertices carrying data. Its EdgeProperty
combines a data-movement type (one-to-one / broadcast / scatter-gather /
custom), a data-source type (persisted / ephemeral), a scheduling type,
and the input/output descriptors. Client class org.apache.tez.dag.api.Edge; AM
runtime routing in org.apache.tez.dag.app.dag.impl.Edge. See
../deep-dives/logical-physical.md.
EdgeManager — The pluggable class that computes routing across an edge: given
a producer task and partition, which consumer task(s) and input index receive it.
Built-ins: ScatterGatherEdgeManager, BroadcastEdgeManager,
OneToOneEdgeManager. Custom edge managers are how auto-parallelism rewrites
routing at runtime. See ../deep-dives/logical-physical.md.
Event (runtime) — A message on the AM↔task data plane:
DataMovementEvent, CompositeDataMovementEvent, InputReadErrorEvent,
VertexManagerEvent, InputInitializerEvent, etc. (all in
org.apache.tez.runtime.api.events). Distinct from the AM's internal state-machine
events. See ../deep-dives/event-routing.md.
F
Fetcher — The consumer-side component that pulls producer output over HTTP (or
directly from local disk). FetcherOrderedGrouped serves the sorted shuffle
path; Fetcher (unordered) serves the unsorted path. It talks to the
ShuffleHandler auxiliary service on each producer node. See
../deep-dives/shuffle-sort.md.
Final merge — In the ordered output path, the last on-disk merge of all
spills into a single sorted output file plus index. Can be disabled
(tez.runtime.enable.final-merge.in.output=false) so spills are shuffled
individually, which pipelined shuffle relies on. See
../deep-dives/shuffle-sort.md.
G
Grouping (input split grouping) — Combining many small input splits into
fewer, larger grouped splits so a source vertex launches a sensible number of
tasks. Done by the input initializer (e.g. MRInputAMSplitGenerator) at the AM.
See ../deep-dives/tez-runtime.md.
H
HistoryEvent — A record written to the history-logging service for every
lifecycle milestone; the enum HistoryEventType lists them (DAG_SUBMITTED,
VERTEX_STARTED, TASK_ATTEMPT_FINISHED, …). Backends: SimpleHistory (file),
ATS, and Proto. See ../deep-dives/counters-diagnostics.md.
I
IFile — Tez's on-disk key/value file format
(org.apache.tez.runtime.library.common.sort.impl.IFile) used for spills, merged
outputs, and shuffle payloads: length-prefixed records, optional compression, a
trailing checksum via IFileOutputStream/IFileInputStream. See
../deep-dives/shuffle-sort.md.
Input — The consumer half of the IPO model: a LogicalInput that reads data
routed to a task and exposes a Reader. Runtime-library inputs include
OrderedGroupedKVInput (sorted shuffle) and UnorderedKVInput (unsorted). See
../deep-dives/ipo-abstractions.md.
InputInitializer — AM-side plugin (InputInitializerDescriptor) that runs
before a source vertex to compute its input splits/parallelism — e.g. generating
grouped MR splits. See ../deep-dives/tez-runtime.md.
IPO (Input–Processor–Output) — Tez's core task abstraction: a task is a
Processor fed by zero or more Inputs and writing to zero or more Outputs.
Map and reduce become just processors with particular I/O; any DAG node is
expressed this way. See ../deep-dives/ipo-abstractions.md.
J
JobToken / umbilical security — The shared secret
(jobTokenSecretManager) the AM uses to authenticate containers on the umbilical
protocol so only its own tasks can heartbeat in. See
../deep-dives/yarn-integration.md.
K
KV (key/value) — The record shape most Tez I/O moves: sorted (OrderedKV)
or unsorted (UnorderedKV) partitioned outputs and their matching inputs,
configured by tez.runtime.key.class / tez.runtime.value.class. See
../deep-dives/ipo-abstractions.md.
L
Local mode — Running the AM and all tasks in a single JVM with no YARN, for
debugging and unit tests; enabled by tez.local.mode=true, with an optional
no-network variant. Uses LocalContainerLauncher and LocalTaskSchedulerService.
See ../deep-dives/local-mode.md.
LogicalInput / LogicalOutput / LogicalIOProcessor — The framework interfaces
in org.apache.tez.runtime.api that a task's inputs, outputs, and processor
implement; "logical" because they describe the task's view, independent of the
physical routing the edge performs. See ../deep-dives/logical-physical.md.
Logical vs physical — The DAG the user writes (vertices and edges) is
logical; at runtime it expands into physical tasks and the concrete
data-movement routing the EdgeManager computes. Auto-parallelism is a physical
rewrite of a logical plan. See ../deep-dives/logical-physical.md.
M
MergeManager — The consumer-side memory-and-disk merge engine for sorted
shuffle (org.apache.tez.runtime.library.common.shuffle.orderedgrouped.MergeManager):
it accepts fetched map outputs into memory, spills and merges them under memory
pressure, and feeds a single sorted iterator to the reduce processor. See
../deep-dives/shuffle-sort.md.
MRInput / MROutput — The tez-mapreduce bridge inputs/outputs
(org.apache.tez.mapreduce.input.MRInput, .output.MROutput) that let a Tez task
read via a Hadoop InputFormat and write via an OutputFormat, so existing MR
formats work unchanged under Tez. See ../deep-dives/tez-runtime.md.
N
Non-session mode — The default (tez.am.mode.session=false): the AM runs one
DAG then exits. Simpler and cheaper for one-off/batch jobs; contrast session
mode. See ../deep-dives/dag-app-master.md.
O
One-to-one edge — A data-movement type
(EdgeProperty.DataMovementType.ONE_TO_ONE) where producer task i sends to
consumer task i; producer and consumer therefore have equal parallelism. Routed
by OneToOneEdgeManager. Used when downstream should preserve upstream
partitioning. See ../deep-dives/logical-physical.md.
Output — The producer half of the IPO model: a LogicalOutput a processor
writes to via a Writer. Runtime-library outputs include
OrderedPartitionedKVOutput (sort + partition), UnorderedKVOutput, and
UnorderedPartitionedKVOutput. See ../deep-dives/ipo-abstractions.md.
P
Partitioner — The class (tez.runtime.partitioner.class, e.g.
HashPartitioner) that maps each output key to a partition number in a
scatter-gather output — i.e. which downstream task will consume it. See
../deep-dives/shuffle-sort.md.
Pipelined shuffle — Sending each spill to consumers as soon as it is written
instead of waiting for final merge (tez.runtime.pipelined-shuffle.enabled);
overlaps producer sort with consumer fetch to cut latency. Requires final merge
off and speculation off. See ../deep-dives/shuffle-sort.md.
PipelinedSorter — The default sorter
(org.apache.tez.runtime.library.common.sort.impl.PipelinedSorter): a
memory-block sorter that can sort on background threads and spill progressively;
alternative to the older DefaultSorter. Selected via tez.runtime.sorter.class
(PIPELINED vs LEGACY). See ../deep-dives/shuffle-sort.md.
Prewarm — Launching a PreWarmVertex of no-op tasks in a session before the
real DAG so containers are already allocated and hot, cutting first-DAG latency.
See ../deep-dives/container-reuse.md.
Processor — The compute of a task: a LogicalIOProcessor whose run method
reads its inputs and writes its outputs. SimpleProcessor is the common base;
tez-mapreduce provides map/reduce processors. See
../deep-dives/ipo-abstractions.md.
R
Recovery — Reconstructing DAG progress after an AM crash by replaying the
recovery log written by RecoveryService and parsed by RecoveryParser, so a
new AM attempt resumes rather than restarts. Enabled by tez.dag.recovery.enabled
(default true); bounded by tez.am.max.app.attempts. See
../deep-dives/failure-handling.md.
Rerun (vertex/task rerun) — Re-executing an already-succeeded producer
because a consumer reported its output unreadable (fetch failure). The AM sends
V_TASK_RESCHEDULED / attempt-rerun events to regenerate the lost output. See
../deep-dives/failure-handling.md.
S
Scatter-gather edge — The classic shuffle edge
(EdgeProperty.DataMovementType.SCATTER_GATHER): each producer partitions its
output and each consumer gathers one partition from every producer — the
generalized map→reduce shuffle. Routed by ScatterGatherEdgeManager. See
../deep-dives/shuffle-sort.md.
Session mode — tez.am.mode.session=true: one long-lived AM accepts multiple
DAGs in succession, reusing containers between them. Ideal for interactive
engines like Hive, where query latency dominates. Contrast non-session mode.
See ../deep-dives/dag-app-master.md.
ShuffleHandler — The YARN NodeManager auxiliary service (in
tez-aux-services, org.apache.tez.auxservices.ShuffleHandler) that serves
producer output files to consumer fetchers over HTTP; identified by the
tez.am.shuffle.auxiliary-service.id. See ../deep-dives/shuffle-sort.md.
ShuffleManager — The unsorted-shuffle consumer coordinator
(...common.shuffle.impl.ShuffleManager): schedules fetchers, tracks completed
inputs, and hands fetched data to an UnorderedKVInput. The ordered path's
counterpart is ShuffleScheduler + MergeManager. See
../deep-dives/shuffle-sort.md.
ShuffleVertexManager — The VertexManagerPlugin that implements
auto-parallelism and slow-start for scatter-gather vertices by consuming upstream
VertexManagerEvent stats and deciding when and at what parallelism the vertex
starts. See ../deep-dives/scheduler.md.
Slice — Informal term for one partition's worth of an output — the unit a
single consumer task gathers across all producers in a scatter-gather edge. See
../deep-dives/logical-physical.md.
Slow-start — Delaying a consumer vertex's task launch until a fraction of its
producer tasks have completed, so parallelism and locality decisions use real
data. Governed by ShuffleVertexManager min/max source-fraction settings. See
../deep-dives/scheduler.md.
Speculation — Launching a second, concurrent attempt of a task that is
running much slower than its peers, taking whichever finishes first; enabled by
tez.am.speculation.enabled (off by default), driven by an estimator +
speculator. See ../deep-dives/failure-handling.md.
Spill — Flushing an in-memory sort buffer to an on-disk IFile when it fills
past tez.runtime.sort.spill.percent; a sorted output is the merge of one or more
spills. See ../deep-dives/shuffle-sort.md.
Staging directory — The HDFS scratch dir (tez.staging-dir, default under
/tmp/<user>/tez/staging) where the client uploads the DAG plan, configs, and
localized resources for the AM to read. See ../deep-dives/tez-client.md.
State machine — The Hadoop StateMachineFactory-based finite-state machines
that drive every AM entity: DAGImpl, VertexImpl, TaskImpl,
TaskAttemptImpl, AMContainerImpl, AMNodeImpl. Events cause transitions and
fire transition handlers. See ../deep-dives/state-machines.md.
T
Task — A logical unit of work within a vertex, identified by TezTaskID,
modeled by TaskImpl with TaskStateInternal. A task owns one or more attempts;
it succeeds when an attempt succeeds. See ../deep-dives/task-lifecycle.md.
TaskCommunicator — The AM-side plugin
(org.apache.tez.serviceplugins.api.TaskCommunicator, default
TezTaskCommunicatorImpl) that owns the umbilical RPC server tasks heartbeat
into; managed by TaskCommunicatorManager. Pluggable so external launchers can
supply their own. See ../deep-dives/task-attempt-lifecycle.md.
tez.lib.uris — The config key naming the HDFS location of the Tez binary
tarball the AM and every container localize to get the framework on their
classpath — the single most important deployment setting. See
config reference and
../deep-dives/tez-client.md.
TezChild — The container-side entry point
(org.apache.tez.runtime.task.TezChild) that starts in each task container,
heartbeats the AM over the umbilical, and runs assigned attempts via
TezTaskRunner2 / LogicalIOProcessorRuntimeTask. See
../deep-dives/tez-runtime.md.
TezClient — The client API (org.apache.tez.client.TezClient) that starts a
session or submits a DAG: it stages resources, launches (or reuses) the AM, and
returns a DAGClient. See ../deep-dives/tez-client.md.
TezCounters — The counter tree (org.apache.tez.common.counters.TezCounters)
aggregated up attempt → task → vertex → DAG; built-in groups include
TaskCounter, DAGCounter, and file-system counters. Bounded by
tez.counters.max and related limits to protect AM heap. See
../deep-dives/counters-diagnostics.md.
U
Uber / inline mode — Running tasks inside the AM process rather than separate
containers (tez.am.inline.task.execution.enabled), a debugging/tiny-job mode
analogous to MapReduce uber mode; distinct from full local mode. See
../deep-dives/local-mode.md.
Umbilical — The RPC protocol (TezTaskUmbilicalProtocol) over which a
container's tasks report status, heartbeat, fetch new attempts, and pull events
from the AM. The task's lifeline; a missed heartbeat past
tez.task.timeout-ms marks the attempt lost. See
../deep-dives/task-attempt-lifecycle.md.
Unordered output/input — The unsorted data path
(UnorderedKVOutput / UnorderedKVInput, ShuffleManager) that moves records
without sorting — cheaper when the consumer doesn't need sorted keys (e.g. a
broadcast join build side). See ../deep-dives/shuffle-sort.md.
V
Vertex — A stage of the DAG: a set of tasks running the same processor with
the same I/O, identified by TezVertexID, modeled by VertexImpl with
VertexState. Edges connect vertices. See ../deep-dives/vertex-lifecycle.md.
VertexGroup — A named union of vertices treated as one logical output source,
so a GroupInputEdge can fan several producers into one consumer input and commit
them together (VertexGroupCommit). See ../deep-dives/dag-model.md.
VertexManager (VM plugin) — The pluggable per-vertex controller
(VertexManagerPlugin) that decides when tasks start and can rewrite parallelism
at runtime via its VertexManagerPluginContext. Built-ins:
ShuffleVertexManager, RootInputVertexManager, InputReadyVertexManager,
ImmediateStartVertexManager. The extension point behind slow-start and
auto-parallelism. See ../deep-dives/scheduler.md.
VertexManagerEvent — A runtime event
(org.apache.tez.runtime.api.events.VertexManagerEvent) a producer task sends to
a downstream vertex's manager, carrying payload such as per-partition output
sizes — the input to auto-parallelism decisions. See
../deep-dives/event-routing.md.