Key Classes by Module

This is the "where does X live" map. When you have a behavior and need the class that implements it — or a class name from a stack trace and need to know which module owns it — start here. Tez is a multi-module Maven build; the module boundary is the first thing to identify, because it tells you the layer (client API, AM control plane, or task-side data plane) and often the JIRA component.

The Maven modules, from the root pom.xml <modules> block:

ModuleLayerWhat it is
tez-apiClient + shared APIPublic DAG-building API, config classes, runtime API interfaces, client
tez-commonSharedID classes, counters, dispatcher, utilities used everywhere
tez-dagAM control planeThe ApplicationMaster: state machines, schedulers, launchers, communicators, history, recovery
tez-runtime-libraryTask data planeInputs, outputs, sorters, shuffle, fetchers, partitioners, VM plugins
tez-runtime-internalsTask data planeThe container-side task runner and umbilical plumbing
tez-mapreduceCompatibilityMR InputFormat/OutputFormat bridges, map/reduce processors
tez-examplesExamplesRunnable example DAGs (WordCount, joins, Cartesian product)
hadoop-shim / hadoop-shim-implsCompatibilityVersion-abstraction over Hadoop APIs
tez-pluginsOptional servicesHistory-logging backends (ATS, Proto) and the shuffle aux-service
tez-toolsToolingSwimlanes, log-split, TFile parser, the config-doc doclet
tez-tests, tez-ext-service-testsTestsIntegration tests / MiniTezCluster harness
tez-uiUIEmber.js history UI (not Java)
tez-dist, tez-build-tools, docsBuildAssembly, checkstyle config, site docs

Warning: Class names get refactored across versions — a class may move packages, split, or be renamed. Treat every name here as a starting point and grep to confirm in your checkout:

# Confirm a class exists and find its module/package:
grep -rln "class TaskAttemptImpl" --include=*.java .
# Find an interface's implementations:
grep -rln "implements VertexManagerPlugin\|extends VertexManagerPlugin" --include=*.java .

Jump to: tez-api · tez-common · tez-dag: state machines · tez-dag: events · tez-dag: scheduling · tez-dag: launch & comms · tez-dag: recovery & history · tez-runtime-library: I/O · tez-runtime-library: sort · tez-runtime-library: shuffle · tez-runtime-library: VM plugins · tez-runtime-internals · tez-mapreduce · tez-examples · hadoop-shim · tez-plugins


tez-api

The public API a DAG author programs against, plus the config and runtime-API interfaces shared by both AM and tasks.

Class (org.apache.tez.*)RoleRead
client.TezClientEntry point: starts a session or submits a DAG, returns a DAGClient../deep-dives/tez-client.md
client.TezClientUtilsStages resources, builds the AM launch context, resolves tez.lib.uris../deep-dives/tez-client.md
dag.api.DAGThe client-side DAG builder: add vertices, edges, vertex groups../deep-dives/dag-model.md
dag.api.VertexA DAG stage: processor descriptor, parallelism, data sources/sinks../deep-dives/dag-model.md
dag.api.Edge / GroupInputEdgeA connection between vertices / a group→vertex fan-in../deep-dives/logical-physical.md
dag.api.EdgePropertyBundles data-movement, data-source, and scheduling types for an edge../deep-dives/logical-physical.md
dag.api.VertexGroupA named union of vertices for grouped input/commit../deep-dives/dag-model.md
dag.api.{Processor,Input,Output}DescriptorSerializable "class name + payload" that names a runtime component../deep-dives/ipo-abstractions.md
dag.api.VertexManagerPlugin / ...PluginContextBase + context for runtime vertex control (slow-start, auto-parallelism)../deep-dives/scheduler.md
dag.api.TezConfigurationAll AM/DAG/vertex config keys and defaultsconfig reference
dag.api.client.DAGClient / DAGClientImplClient handle to poll DAGStatus and wait for completion../deep-dives/dag-client.md
dag.api.client.DAGStatus / VertexStatusSnapshot of DAG/vertex state, progress, and counters../deep-dives/dag-client.md
runtime.api.LogicalIOProcessor / LogicalInput / LogicalOutputThe IPO framework interfaces every task component implements../deep-dives/ipo-abstractions.md
runtime.api.OutputCommitterCommit/abort a data-sink output atomically../deep-dives/failure-handling.md
runtime.api.events.DataMovementEvent"Output partition N ready here" — the core routing event../deep-dives/event-routing.md

tez-common

The shared substrate: identity, counters, event dispatch, and utilities that both the AM and the task side depend on.

Class (org.apache.tez.*)RoleRead
dag.records.TezDAGID / TezVertexID / TezTaskID / TezTaskAttemptIDThe hierarchical ID types that thread through every log line and event../deep-dives/dag-model.md
dag.records.TezIDBase class for the ID hierarchy../deep-dives/dag-model.md
dag.records.TaskAttemptTerminationCauseThe enum classifying why an attempt ended (fetch failure, node fail, preempted, …)../deep-dives/failure-handling.md
common.counters.TezCountersThe counter tree aggregated attempt→task→vertex→DAG../deep-dives/counters-diagnostics.md
common.counters.TaskCounter / DAGCounterBuilt-in counter enums (spilled records, shuffle bytes, etc.)../deep-dives/counters-diagnostics.md
common.AsyncDispatcher / AsyncDispatcherConcurrentThe event bus that delivers each event type to its handler../deep-dives/event-routing.md
common.TezCommonUtilsStaging-dir resolution, timeouts, path helpers../deep-dives/tez-client.md
common.TezUtils / ReflectionUtilsConfig↔payload conversion; instantiate descriptors by class name../deep-dives/ipo-abstractions.md

Note: The ID classes live in tez-common under package org.apache.tez.dag.records even though "dag" is in the path — do not look for them in tez-dag. Grep: grep -rn "class TezTaskAttemptID" tez-common/.

tez-dag: state machines

The AM's control-plane entities. Each is a Hadoop StateMachineFactory machine — this is the state-machine trio+ you will read most often. See ../deep-dives/state-machines.md.

Class (org.apache.tez.dag.app.*)RoleRead
DAGAppMasterThe AM god object: builds every service, owns the dispatcher, runs the DAG../deep-dives/dag-app-master.md
dag.impl.DAGImplState machine for one DAG (DAGState)../deep-dives/state-machines.md
dag.impl.VertexImplState machine for one vertex (VertexState); the largest class in the AM../deep-dives/vertex-lifecycle.md
dag.impl.TaskImplState machine for one task (TaskStateInternal)../deep-dives/task-lifecycle.md
dag.impl.TaskAttemptImplState machine for one attempt (TaskAttemptStateInternal)../deep-dives/task-attempt-lifecycle.md
dag.impl.EdgeRuntime edge: holds the EdgeManager and routes events across it../deep-dives/logical-physical.md
dag.impl.VertexManagerWraps a VertexManagerPlugin and applies its parallelism/scheduling decisions../deep-dives/scheduler.md
dag.impl.{ScatterGather,Broadcast,OneToOne}EdgeManagerBuilt-in routing implementations per data-movement type../deep-dives/logical-physical.md
DAGAppMasterStateThe AM's own lifecycle enum (NEW…RECOVERING…RUNNING…)../deep-dives/dag-app-master.md
AppContextThe shared service registry passed to every AM component../deep-dives/dag-app-master.md

tez-dag: events & dispatch

The internal event types and the handlers they wire to. See ../deep-dives/event-routing.md and the state-machine & event map.

Class (org.apache.tez.dag.app.dag.event.* unless noted)RoleRead
DAGEventType / DAGEvent (+ subclasses)Events driving DAGImplevent map
VertexEventType / VertexEvent (+ subclasses)Events driving VertexImplevent map
TaskEventType / TaskEvent (+ subclasses)Events driving TaskImplevent map
TaskAttemptEventType / TaskAttemptEvent (+ subclasses)Events driving TaskAttemptImplevent map
DAGAppMasterEventType / DAGAppMasterEventAM-global events (reboot, DAG finished, service fatal error)../deep-dives/dag-app-master.md
SpeculatorEventType / SpeculatorEventFeed the speculator attempt status updates../deep-dives/failure-handling.md
rm.AMSchedulerEventType / AMSchedulerEventTask launch requests / ended / node-blacklist to the scheduler../deep-dives/scheduler.md

tez-dag: scheduling & containers

Turning "this attempt needs to run" into a YARN container, and reusing containers. See ../deep-dives/scheduler.md and ../deep-dives/container-reuse.md.

Class (org.apache.tez.dag.app.*)RoleRead
rm.TaskSchedulerManagerDispatches AMSchedulerEvents to the active task scheduler(s)../deep-dives/scheduler.md
rm.DagAwareYarnTaskSchedulerDefault YARN scheduler: DAG-priority-aware allocation and reuse../deep-dives/scheduler.md
rm.YarnTaskSchedulerServiceThe older YARN scheduler implementation../deep-dives/scheduler.md
rm.LocalTaskSchedulerServiceScheduler used in local mode (no RM)../deep-dives/local-mode.md
rm.container.AMContainerImplPer-container state machine (AMContainerState) enabling reuse../deep-dives/container-reuse.md
rm.container.AMContainerMapRegistry of all containers the AM holds../deep-dives/container-reuse.md
rm.node.AMNodeTracker / AMNodeImplPer-node failure tracking and blacklisting../deep-dives/failure-handling.md
dag.impl.DAGSchedulerNaturalOrderDefault cross-vertex scheduling order (topological)../deep-dives/scheduler.md
dag.impl.DAGSchedulerNaturalOrderControlledThrottled variant that gates downstream vertices../deep-dives/scheduler.md

tez-dag: launch & communication

Launching container processes and the umbilical the tasks phone home on. See ../deep-dives/task-attempt-lifecycle.md.

Class (org.apache.tez.dag.app.*)RoleRead
launcher.ContainerLauncherManagerDispatches ContainerLauncherEventType to the active launcher../deep-dives/task-attempt-lifecycle.md
launcher.TezContainerLauncherImplDefault launcher: asks YARN NM to start container processes../deep-dives/yarn-integration.md
launcher.LocalContainerLauncherIn-JVM launcher for local mode../deep-dives/local-mode.md
TaskCommunicatorManagerOwns the umbilical RPC server; routes heartbeats to the state machines../deep-dives/task-attempt-lifecycle.md
TezTaskCommunicatorImplDefault umbilical implementation (TezTaskUmbilicalProtocol server)../deep-dives/task-attempt-lifecycle.md
TaskHeartbeatHandler / ContainerHeartbeatHandlerDetect lost tasks/containers past their timeouts../deep-dives/failure-handling.md
serviceplugins.api.TaskCommunicator / ContainerLauncherThe service-plugin base classes (pluggable comms/launch)../deep-dives/yarn-integration.md

tez-dag: recovery & history

Surviving an AM crash, and emitting the lifecycle event stream. See ../deep-dives/failure-handling.md and ../deep-dives/counters-diagnostics.md.

Class (org.apache.tez.dag.*)RoleRead
app.RecoveryParserReplays the recovery log to rebuild DAG state on a new AM attempt../deep-dives/failure-handling.md
history.recovery.RecoveryServiceWrites the recovery event stream durably during a run../deep-dives/failure-handling.md
history.HistoryEventHandlerFans lifecycle events out to the configured logging service(s)../deep-dives/counters-diagnostics.md
history.HistoryEventTypeThe enum of all loggable milestonesevent map
history.events.* (e.g. DAGSubmittedEvent, TaskAttemptFinishedEvent)The concrete history event records../deep-dives/counters-diagnostics.md
history.logging.impl.SimpleHistoryLoggingServiceDefault file-based history backend../deep-dives/counters-diagnostics.md
history.logging.impl.DevNullHistoryLoggingServiceDiscards history (disable logging)../deep-dives/counters-diagnostics.md
app.web.WebUIServiceThe AM's embedded status web server../deep-dives/dag-app-master.md

tez-runtime-library: inputs, outputs, processors

The concrete IPO components a DAG wires into vertices. See ../deep-dives/ipo-abstractions.md.

Class (org.apache.tez.runtime.library.*)RoleRead
input.OrderedGroupedKVInputSorted-shuffle consumer input (the reduce-side input)../deep-dives/shuffle-sort.md
input.UnorderedKVInputUnsorted-shuffle consumer input../deep-dives/shuffle-sort.md
input.ConcatenatedMergedKeyValueInputMerges multiple physical inputs into one logical input../deep-dives/ipo-abstractions.md
output.OrderedPartitionedKVOutputSort + partition producer output (the map-side output)../deep-dives/shuffle-sort.md
output.UnorderedKVOutput / UnorderedPartitionedKVOutputUnsorted producer outputs../deep-dives/shuffle-sort.md
processor.SimpleProcessorBase for a straightforward read-inputs/write-outputs processor../deep-dives/ipo-abstractions.md
partitioner.HashPartitioner / RoundRobinPartitionerMap keys to partitions for scatter-gather../deep-dives/shuffle-sort.md

tez-runtime-library: sort & IFile

The producer-side sort/spill/merge machinery and the on-disk format. See ../deep-dives/shuffle-sort.md.

Class (...runtime.library.common.sort.impl.*)RoleRead
ExternalSorterAbstract base for the sorters (buffer, spill, merge)../deep-dives/shuffle-sort.md
PipelinedSorterDefault sorter: block-based, multi-threaded, progressive spill../deep-dives/shuffle-sort.md
dflt.DefaultSorterThe legacy quicksort-and-spill sorter../deep-dives/shuffle-sort.md
IFileTez's compressed length-prefixed KV file format (spills, outputs, shuffle)../deep-dives/shuffle-sort.md
IFileInputStream / IFileOutputStreamChecksummed stream wrappers around IFile data../deep-dives/shuffle-sort.md
TezMergerK-way merge of sorted IFile segments../deep-dives/shuffle-sort.md
TezSpillRecord / TezIndexRecordThe per-partition offset index written alongside a sorted output../deep-dives/shuffle-sort.md

tez-runtime-library: shuffle & fetch

The consumer-side transfer engines. Two parallel stacks: ordered (sorted) and unordered (unsorted). See ../deep-dives/shuffle-sort.md.

Class (...runtime.library.common.shuffle.*)RoleRead
orderedgrouped.ShuffleOrchestrates the ordered (sorted) shuffle for a consumer input../deep-dives/shuffle-sort.md
orderedgrouped.ShuffleSchedulerSchedules ordered fetchers, tracks per-host progress, penalizes bad hosts../deep-dives/shuffle-sort.md
orderedgrouped.MergeManagerIn-memory + on-disk merge of fetched sorted map outputs../deep-dives/shuffle-sort.md
orderedgrouped.FetcherOrderedGroupedFetches sorted output over HTTP / local disk../deep-dives/shuffle-sort.md
impl.ShuffleManagerOrchestrates the unordered shuffle for a consumer input../deep-dives/shuffle-sort.md
FetcherThe unordered fetcher../deep-dives/shuffle-sort.md
impl.ShuffleInputEventHandlerImplTurns incoming DataMovementEvents into fetch work../deep-dives/event-routing.md
ShuffleUtilsShared helpers: event construction, connection setup, path resolution../deep-dives/shuffle-sort.md

tez-runtime-library: vertex managers & edge managers

The runtime control plugins that live in the library, not the AM core. See ../deep-dives/scheduler.md.

Class (org.apache.tez.dag.library.vertexmanager.*)RoleRead
ShuffleVertexManagerSlow-start + auto-parallelism for scatter-gather vertices../deep-dives/scheduler.md
ShuffleVertexManagerBaseShared base for shuffle-based vertex managers../deep-dives/scheduler.md
FairShuffleVertexManager / FairShuffleEdgeManagerAuto-parallelism that balances partition sizes fairly../deep-dives/scheduler.md
InputReadyVertexManagerStarts tasks as their inputs become ready (one-to-one/broadcast)../deep-dives/scheduler.md
RootInputVertexManagerManages parallelism for source (root-input) vertices../deep-dives/scheduler.md
VertexManagerWithConcurrentInputHandles vertices with concurrent input edges../deep-dives/scheduler.md

tez-runtime-internals

The container-side runtime: what actually runs inside a task JVM. See ../deep-dives/tez-runtime.md.

Class (org.apache.tez.runtime.*)RoleRead
task.TezChildContainer process entry point; heartbeats AM, runs assigned attempts../deep-dives/tez-runtime.md
task.TezTaskRunner2Runs one attempt: init inputs/outputs/processor, invoke run, report../deep-dives/tez-runtime.md
LogicalIOProcessorRuntimeTaskThe in-task object owning the processor and its I/O and memory../deep-dives/tez-runtime.md
task.TaskReporterSends periodic heartbeats/counters and pulls events over the umbilical../deep-dives/task-attempt-lifecycle.md
common.TezTaskUmbilicalProtocolThe RPC protocol tasks use to reach the AM../deep-dives/task-attempt-lifecycle.md
api.impl.TezUmbilicalTask-side umbilical abstraction../deep-dives/task-attempt-lifecycle.md
InputReadyTrackerTracks which of a processor's inputs are ready to read../deep-dives/ipo-abstractions.md

tez-mapreduce

The compatibility bridge so existing Hadoop MR formats and logic run under Tez. See ../deep-dives/tez-runtime.md.

Class (org.apache.tez.mapreduce.*)RoleRead
input.MRInput / MRInputLegacyRead via a Hadoop InputFormat inside a Tez task../deep-dives/tez-runtime.md
input.MultiMRInputMultiple MR inputs into one vertex../deep-dives/tez-runtime.md
output.MROutput / MROutputLegacyWrite via a Hadoop OutputFormat../deep-dives/tez-runtime.md
common.MRInputAMSplitGeneratorAM-side input initializer that groups MR splits../deep-dives/tez-runtime.md
committer.MROutputCommitterAdapts a Hadoop OutputCommitter to Tez's OutputCommitter../deep-dives/failure-handling.md
hadoop.DeprecatedKeysMaps old mapred.* keys to Tez runtime keysconfig reference

tez-examples

Runnable, readable DAGs — the fastest way to see the API in action. See ../overview/index.md.

Class (org.apache.tez.examples.*)Role
WordCountThe canonical two-vertex scatter-gather DAG
OrderedWordCountAdds a sorting stage (three vertices)
HashJoinExample / SortMergeJoinExampleBroadcast (map) join vs sort-merge join DAGs
CartesianProductCustom-edge Cartesian product
SimpleSessionExampleSubmitting multiple DAGs to one session
TezExampleBaseShared client bootstrap for the examples

hadoop-shim

Isolates the Hadoop-version-specific API differences behind one interface. See ../contributor-mindset/compatibility.md.

Class (org.apache.tez.hadoop.shim.*)Role
HadoopShimThe abstraction over version-specific Hadoop calls
HadoopShimsLoaderSelects the right shim at runtime via HadoopShimProvider
DefaultHadoopShimThe fallback implementation
HadoopShim28 / HadoopShim27 (in hadoop-shim-impls)Version-specific implementations

tez-plugins

Optional services shipped as separate artifacts, selected by config. See ../deep-dives/counters-diagnostics.md.

Class / submoduleRole
tez-aux-services → org.apache.tez.auxservices.ShuffleHandlerNodeManager aux-service that serves shuffle output over HTTP
tez-yarn-timeline-history → ...logging.ats.ATSHistoryLoggingServiceLogs history to YARN ATS
tez-protobuf-history-plugin → ...logging.proto.ProtoHistoryLoggingServiceLogs history as protobuf files (Hive's preferred backend)
tez-yarn-timeline-cache-plugin → TimelineCachePluginImplATS cache plugin backing the Tez UI
tez-history-parserOffline parser turning ATS/proto history into analysis data

Note: History-logging backend is chosen by tez.history.logging.service.class; the default is SimpleHistoryLoggingService in tez-dag, and the ATS/Proto services above override it. See the config reference.