Who's who: Hadoop glossary

Every Hadoop term used in this course in one or two plain sentences, grouped by topic and searchable. Start with Often confused: the pairs of terms that trip up most students and interview candidates. 274 terms so far; the list grows with each module.

Apache Hadoop⏱ 10 minFree · no sign-up

Often confused

Hadoop vs Spark

Not either/or. Hadoop is storage (HDFS) + resources (YARN) + an engine (MapReduce). Spark is an engine that usually runs on YARN and reads HDFS. In our lab five cached Spark passes took 35 s; five MapReduce jobs took 199 s.

Data lake vs lakehouse

A data lake is files in cheap storage. A lakehouse adds a table format (Iceberg, Delta, Hudi) on top, giving transactions, updates, snapshots and time travel.

Authentication vs authorization

Authentication proves who you are (Kerberos tickets). Authorization decides what you may do (HDFS permissions, ACLs, Ranger policies). Without authentication, authorization can be bypassed by claiming another name, as our unsecured lab showed.

Backup vs disaster recovery

A backup is a copy you can restore from, maybe slowly. DR is a ready second site with recent data and a rehearsed plan to switch over within the RTO.

Capacity vs maximum-capacity vs user limit

capacity is what a queue is guaranteed; maximum-capacity is how far it may grow when others are idle; user-limit-factor caps one user inside the queue. In our lab maximum-capacity 100% did nothing until user-limit-factor was raised.

Container memory vs Java heap

The container (mapreduce.map.memory.mb) is what YARN reserves on the node; the heap (-Xmx) is what Java may use for objects, about 80% of it. Too small a heap gives "Java heap space"; heap + overhead above the container gets the container killed.

Row format vs columnar format

Row formats (CSV, SequenceFile, Avro) keep each record together: good for writing and reading whole records. Columnar (Parquet, ORC) keep each column together: good for analytics that read a few columns of many rows.

Compressed file vs compressed container

A .gz file is one stream: not splittable, one map. A container (SequenceFile BLOCK, Avro, Parquet, ORC) compresses inside blocks, so the file stays splittable whatever the codec.

Combiner vs reducer

A reducer runs once per key on all values, after the shuffle. A combiner runs on one map task's output, zero or more times, before the shuffle; it only works for operations like sum, count, max and min.

Reduce-side vs map-side join

Reduce-side: both inputs are shuffled; works for any sizes (24.4 MB shuffled, 24.8 s in our lab). Map-side: the small side is copied to every map task; no shuffle (18.9 s), but the small side must fit in memory.

Partitioner vs grouping comparator

The partitioner decides which reducer gets a key. The grouping comparator decides which keys, already on that reducer, share one reduce() call.

Killed vs failed task attempt

Failed: the attempt crashed (exception, exit code 137) and counts toward the retry limit. Killed: the framework stopped it on purpose, usually the losing copy in speculative execution. Our job showed both and still succeeded.

Map output vs job output

Map output is temporary, sorted, on the worker's local disk, served to reducers and deleted after the job. Job output (part-r files) is written to HDFS with replication.

Snapshot vs Trash

Trash catches a normal -rm for a while, but -skipTrash or expiry bypasses it. A snapshot keeps the old state even after a -skipTrash delete, until you delete the snapshot.

HA vs Federation

HA gives one namespace two NameNodes (active + standby) for availability. Federation splits the namespace across several active NameNodes for scale. They can be combined.

Replication vs erasure coding

Replication keeps 3 full copies (200% overhead), fast to read and repair. Erasure coding keeps data + parity (e.g. 50% overhead), cheaper for cold data but costlier CPU and network on repair.

Block vs input split

A block is how HDFS physically stores bytes (128 MB pieces). An input split is the logical piece one map task reads; it normally matches a block, but a record that crosses a block boundary is read whole by one split.

NameNode vs ResourceManager

Both are masters, of different things. The NameNode manages storage (files and blocks). The ResourceManager manages compute (memory and CPU for jobs).

DataNode vs NodeManager

Both run on a worker. The DataNode stores blocks; the NodeManager runs task containers. Running both on one machine is what makes data locality possible.

Secondary NameNode vs Standby NameNode

The Secondary only merges the edit log into the fsimage. It cannot replace a failed NameNode. The Standby (HA) is a hot spare that takes over automatically.

ResourceManager vs ApplicationMaster

The ResourceManager serves the whole cluster and hands out containers. An ApplicationMaster serves one job and decides which of its tasks run in those containers.

Replication vs backup

Replication keeps live copies to survive hardware failure; deletes and bad writes reach every copy. A backup or snapshot is a separate point-in-time copy you can restore.

Node-local vs rack-local

Node-local: the task runs on a machine holding its block. Rack-local: on another machine in the same rack, so data crosses only the rack switch.

Dead vs stale DataNode

A dead node has been silent past the timeout (≈10.5 min) and its replicas are re-created elsewhere. A stale node has missed heartbeats for a shorter time (30 s by default) and can be avoided for reads and writes without being declared dead.

Standalone vs pseudo-distributed

Standalone runs a job inside one Java process on local files; no daemons. Pseudo-distributed runs every daemon (NameNode, DataNode, ResourceManager…) as a separate process on one machine, with real HDFS and YARN.

core-default.xml vs core-site.xml

core-default.xml holds Hadoop's built-in defaults inside the jars; never edit it. core-site.xml in etc/hadoop is where you override the values you need.

Decommission vs stopping a DataNode

Decommissioning copies every block away first, then marks the node Decommissioned: no moment with fewer replicas. Stopping it is treated as a failure: HDFS waits until the node is declared dead (≈10.5 min) before re-replicating.

hdfs dfs -mv vs -cp

-mv only renames in the NameNode, so it is instant for any size. -cp reads and rewrites every byte through the client (5.6 s vs 1.9 s for 403 MB in our lab).

docker compose stop vs down

stop pauses the containers and keeps their disks, so HDFS data survives. down deletes the containers, and without volumes the data goes with them.

All terms

Hardware and clusters

ClusterNetworked nodes that work together as one system. Lesson →
Commodity hardwareOrdinary, affordable servers. Hadoop tolerates their failures in software. Lesson →
Core (spine) switchLarge switch connecting all the racks. Cross-rack traffic goes through it. Lesson →
DaemonA long-running background program. Every Hadoop component (NameNode, DataNode…) is a Java daemon. Lesson →
Edge (gateway) nodeThe node where users log in and submit jobs; runs client tools only. Lesson →
Gateway nodeAnother name for an edge node: client tools and configs, no core daemons. Lesson →
HeartbeatRegular “I am alive” message from a worker to its master. HDFS: every 3 seconds. Lesson →
JBOD“Just a bunch of disks”: separate disks without RAID, the usual choice for DataNodes. Lesson →
Master nodeCoordinates the cluster: keeps metadata, tracks health, assigns work. NameNode, ResourceManager. Lesson →
NodeOne server (or VM) that is a member of a cluster. Lesson →
OversubscriptionWhen a switch's server ports add up to more bandwidth than its uplinks, for example 3 : 1. Lesson →
RackA cabinet of 20–40 servers sharing power and a top-of-rack switch. A failure domain and a bandwidth boundary. Lesson →
ServerA computer built to run all day and serve other computers over a network. Lesson →
Shared-nothingEach node has its own CPU, RAM and disks; nodes share only the network. Lesson →
Single point of failure (SPOF)A part whose failure stops the whole system, such as a master with no standby. Lesson →
ToR switch“Top of rack” switch that connects the servers in one rack and links the rack to the core network. Lesson →
Utility nodeRuns supporting services: ZooKeeper, Hive Metastore, HiveServer2, Oozie, cluster manager. Lesson →
Worker nodeStores data and runs tasks. Usually runs a DataNode and a NodeManager. Lesson →

Sizing and operations

Alert fatigueToo many alerts that need no action, so real ones get ignored (e.g. staging files with replication 10). Lesson →
Blameless postmortemAn incident review with timeline, root cause and actions, focused on systems rather than blame. Lesson →
Canary jobA small scheduled job whose success and duration are monitored, to catch problems before users do. Lesson →
Capacity planningTurning data volume, retention, copies, headroom and growth into numbers of servers, disks and memory. Lesson →
Configuration driftClusters that should be identical slowly ending up with different versions or settings. Lesson →
Data residencyRules that some data must stay in a given country (e.g. RBI's rule for payment-system data in India). Lesson →
DistCpDistributed copy: a map-only MapReduce job that copies files between or within clusters in parallel; -update copies only changed files. Lesson →
DR clusterA cluster in another region that receives copies of critical data and takes over if the main site is lost. Lesson →
Fault toleranceContinuing to work correctly when some parts fail. Lesson →
HeadroomFree space kept on purpose (often 20–30%) so the cluster never runs full. Lesson →
Horizontal scaling (scale out)Adding more nodes rather than making one machine bigger. Lesson →
jpsJDK command listing running Java processes: the quickest check of which Hadoop daemons are up. Lesson →
OLTP vs OLAPOLTP: many small fast reads/writes (databases). OLAP: big scans for analysis (warehouses, Hive, Spark). Lesson →
OversubscriptionTotal server bandwidth in a rack divided by the rack's uplink bandwidth. Lesson →
RPO / RTORecovery point objective (how much data you may lose) and recovery time objective (how long recovery may take). Lesson →
RunbookWritten steps to diagnose and fix a known problem; every alert should link to one. Lesson →
Snapshot-diff syncdistcp -update -diff s1 s2: copies only the changes between two snapshots and replays renames and deletes. Lesson →
Stale DataNodeNo heartbeat for 30 s (dead only after 10 min 30 s); the NameNode's count of them can lag by minutes. Lesson →
TCOTotal cost of ownership: hardware, software, people, power, space and downtime over the years. Lesson →
TestDFSIOHDFS read/write benchmark in the MapReduce tests jar; reports throughput per task. Lesson →

HDFS

Active NameNodeIn HA, the one NameNode that serves clients and writes the edit log; the other waits as standby. Lesson →
Automatic failoverZooKeeper + ZKFC detect a dead active NameNode and promote the standby without a human (about 10 s in our lab). Lesson →
BalancerTool that moves blocks from full DataNodes to emptier ones (hdfs balancer). Lesson →
blk_ and .meta filesA replica on a DataNode disk: blk_N holds the bytes, blk_N_genstamp.meta the checksums (4 B per 512 B). Lesson →
BlockThe unit HDFS stores: a file is cut into blocks of 128 MB by default (the last one can be smaller). Lesson →
Block groupIn erasure coding, the set of data + parity blocks that together hold one striped piece of a file. Lesson →
Block mapNameNode's in-memory map from each block to the DataNodes holding it; rebuilt from block reports, never saved. Lesson →
Block poolAll blocks of one namespace (BP-…); a folder on every DataNode. Federation gives each NameNode its own. Lesson →
Block reportA DataNode's full list of the blocks on its disks, sent at start-up and periodically. Lesson →
CheckpointMerging fsimage + edit log into a new fsimage (SecondaryNameNode, Standby NameNode or saveNamespace). Lesson →
ChecksumA small value computed from data to detect corruption. HDFS uses CRC32C per 512 bytes. Lesson →
Cluster IDID shared by all NameNodes of a federated cluster; DataNodes only join NameNodes with the same cluster ID. Lesson →
CompactionRewriting many small files into a few large ones (e.g. 128 MB–1 GB), typically per partition. Lesson →
Corrupt replicaA replica whose checksum does not match; the reader reports it (reportBadBlocks) and the NameNode replaces it. Lesson →
DataNodeHDFS worker that stores block replicas on its local disks and serves reads and writes. Lesson →
DecommissioningRetiring a DataNode safely: list it in dfs.hosts.exclude, run -refreshNodes, wait for Decommissioned. Lesson →
dfsadminhdfs dfsadmin: admin client for the NameNode (-report, -refreshNodes, -safemode, -printTopology…). Lesson →
EC policyErasure-coding layout set per directory, e.g. RS-6-3-1024k, RS-3-2-1024k, XOR-2-1-1024k. Lesson →
Epoch (QJM)A number each new active NameNode gets from the JournalNodes; writes with an older epoch are rejected, which stops a zombie NameNode. Lesson →
Erasure codingData plus parity cells (for example RS-6-3) instead of full copies: about 1.5× storage. Hadoop 3. Lesson →
FencingMaking sure the old active NameNode cannot keep acting after failover (QJM epochs, plus sshfence or a shell script). Lesson →
FileSystem APIorg.apache.hadoop.fs.FileSystem: the Java API (create, open, listStatus, rename, delete…) used by all Hadoop clients. Lesson →
fs.defaultFSSetting in core-site.xml that tells clients and daemons where the NameNode is, e.g. hdfs://nn1:8020. Lesson →
fsckhdfs fsck path: health report of files and blocks (missing, corrupt, under-replicated); read-only by default. Lesson →
fsimage and edit logThe NameNode's saved metadata: a full snapshot (fsimage) plus a log of every change since (edits). Lesson →
Generation stampVersion number of a block (blk_N_GS); bumped when a pipeline is recovered, so stale replicas can be recognised. Lesson →
getmergehdfs dfs -getmerge dir local.csv: concatenates every file in an HDFS folder into one local file. Lesson →
HAR (Hadoop Archive)hadoop archive packs many files into a few part files plus an index, cutting NameNode objects; read via har://. Lesson →
HDFSHadoop Distributed File System: stores big files as blocks replicated across DataNodes. · later module
hdfs dfsThe HDFS shell (FsShell): Linux-like commands such as -ls, -put, -cat, -mv, -rm on Hadoop file systems. Lesson →
HDFS FederationSeveral independent NameNodes, each managing part of the namespace, sharing the DataNodes. Lesson →
Hedged readIf a read is slow, start a second read on another replica and use whichever finishes first. Lesson →
hflush / hsyncOutput-stream calls: hflush makes written data visible to readers; hsync also forces it to disk on the DataNodes. Lesson →
HttpFSA gateway server offering the WebHDFS API that streams data itself, so clients need to reach only one host. Lesson →
Incremental block reportSmall report of replicas a DataNode received or deleted since its last report. Lesson →
JournalNodes (QJM)An odd-sized group of nodes storing the NameNode edit log, so the standby stays in sync (HA). Lesson →
LeaseA write lock the NameNode gives one client, so only one writer works on a file at a time. Lesson →
Maintenance modePlanned short downtime for a DataNode without copying away all its blocks. Lesson →
Missing blockA block with no live replica at all. Files using it cannot be read. Lesson →
Name quotaLimit on the number of files + directories under a directory (the directory itself counts). Lesson →
NameNodeThe HDFS master: file names, directories, permissions and the location of every block. Lesson →
Nameservice IDLogical name for an HA NameNode pair (hdfs://canteen/...); clients try both NameNodes behind it. Lesson →
Network distanceHops between client and replica in the topology: 0 same node, 2 same rack, 4 other rack. Reads go to the nearest replica. Lesson →
oiv / oevOffline Image Viewer and Offline Edits Viewer: read fsimage and edits files as text/XML. Lesson →
Over-/mis-replicatedOver: more replicas than the target (extras deleted). Mis: enough replicas but all in one rack. Lesson →
PacketA 64 KB piece of a block sent through the write pipeline and acknowledged by every DataNode. Lesson →
PacketUnit of the write pipeline: about 64 KB, i.e. 126 chunks of 512 bytes, each with a 4-byte checksum. Lesson →
Pipeline recoveryWhen a DataNode fails mid-write, the client rebuilds the pipeline with the survivors and a new generation stamp, then keeps writing. Lesson →
Rack awarenessHDFS knowing which rack each node is on (from a topology script), so replicas span racks. Lesson →
Re-replicationMaking new copies of blocks that lost replicas, until each is back to its replication factor. Lesson →
Reed-Solomon (RS)The coding behind EC: RS-k-m stores k data + m parity cells and survives losing any m of them. Lesson →
Replication factorHow many copies of each block HDFS keeps. Default 3 (dfs.replication). Lesson →
Router-based Federation (RBF)Router servers holding a shared mount table, so clients see one namespace without client-side config. Lesson →
Safe modeRead-only state of the NameNode at start-up while it waits for enough block reports. Lesson →
Safe mode thresholdint(total blocks × 0.999) must have a reported replica, then a 30 s extension, before safe mode ends. Lesson →
Secondary NameNodeMerges the edit log into the fsimage (checkpointing). It is not a standby and cannot take over. Lesson →
setrephdfs dfs -setrep [-w] N path: change a file's replication factor (and wait). Lesson →
Short-circuit readA client on the same machine reads the block file directly from local disk (dfs.client.read.shortcircuit, off by default). Lesson →
Small files problemMillions of tiny files overload NameNode memory and RPCs and create too many map tasks; the fix is fewer, bigger files. Lesson →
SnapshotRead-only, point-in-time copy of a snapshottable directory, kept under .snapshot; created instantly, no data copied. Lesson →
snapshotDiffhdfs snapshotDiff dir s1 s2: lists created (+), deleted (-), modified (M) and renamed (R) paths. Lesson →
Space quotaLimit on raw bytes under a directory, replication included; a new block reserves a full block × replication. Lesson →
Split brainTwo NameNodes both believing they are active. HA design (epochs, fencing) exists to prevent it. Lesson →
Stale DataNodeNo heartbeat for 30 s: still live, but can be avoided for reads and writes. Lesson →
Standby NameNodeIn High Availability, a second NameNode kept up to date that takes over if the active one fails. Lesson →
StripingSplitting a file into small cells written round-robin across many DataNodes (used by erasure coding). Lesson →
Topology scriptScript named by net.topology.script.file.name that prints a rack for each DataNode IP or host. Lesson →
Transaction ID (txid)Number given to every namespace change in the edit log; fsimage_N contains changes up to N. Lesson →
Trash/user/<name>/.Trash: where -rm moves files when fs.trash.interval > 0 (it is 0, off, by default). Lesson →
triggerBlockReporthdfs dfsadmin -triggerBlockReport host:9867 makes a DataNode send a full block report now. Lesson →
Under-replicated blockA block with fewer live replicas than its replication factor. Lesson →
ViewFSClient-side mount table that stitches several federated namespaces into one tree (viewfs://). Lesson →
WebHDFSREST API for HDFS on the NameNode (port 9870); data requests are redirected to DataNodes (port 9864). Lesson →
Write once, read manyHDFS files are written once (and can be appended) but not edited in the middle. Lesson →
Write pipelineThe chain client → DN1 → DN2 → DN3 through which each block is written, with acks flowing back. Lesson →
ZKFCZooKeeper Failover Controller: watches a NameNode and triggers automatic failover in HA. Lesson →

MapReduce

_SUCCESSEmpty file written into a job's output directory when the job completes successfully. Lesson →
Broadcast joinSpark/Hive name for a replicated map-side join: the small table is copied to every task. Lesson →
CombinerAn optional “mini reducer” run on map output before the shuffle, to send less data. It may run 0, 1 or many times. Lesson →
CombineTextInputFormatPacks many small files into one split, up to a maximum size, so fewer map tasks start. Lesson →
Composite keyA key with several fields, such as (student, day), compared field by field. Lesson →
ContextThe object map() and reduce() get: write(), getCounter(), getConfiguration(), getInputSplit(). Lesson →
CounterA named number tasks increment and the framework sums for the job, e.g. Map input records or a custom BAD_AMOUNT. Lesson →
Counter limitmapreduce.job.counters.max (120): one more fails tasks with “Too many counters: 121 max=120”. Lesson →
Data localityRunning a task on, or near, the node that holds its input block. Lesson →
Data skew (hot key)Uneven keys make one reducer do most of the work; 3 reducers gave files of 0, 79 and 38 bytes in our lab. Lesson →
Distributed cacheShips read-only files, archives and jars to every task: addCacheFile(uri#name), -files, -archives, -libjars. Lesson →
DriverThe main() that builds the Job: input/output paths, Mapper, Reducer, key/value classes, then waitForCompletion(). Lesson →
Dynamic counterA counter named by strings at run time: getCounter("Orders by hour", "14"). Lesson →
Exit code 137A container killed with SIGKILL (kill -9 or out of memory); the attempt fails and is retried. Lesson →
Grouping comparatorsetGroupingComparatorClass: decides which sorted keys share one reduce() call. Lesson →
hadoop jarRuns a job from a jar: hadoop jar app.jar MainClass [-D key=value] in out. Lesson →
Hadoop StreamingRuns any program that reads stdin and writes key<TAB>value lines as mapper or reducer (mapred streaming). Lesson →
HashPartitionerDefault partitioner: (key.hashCode() & Integer.MAX_VALUE) % numReduceTasks decides each key's reducer. Lesson →
In-mapper combiningAggregating in a HashMap inside the mapper and emitting the totals in cleanup(), instead of a combiner. Lesson →
Input splitThe piece of input one map task processes; usually one block, but it is a logical range, not the block itself. Lesson →
InputFormatDefines how a job reads input: getSplits() on the client, createRecordReader() in each map task (TextInputFormat by default). Lesson →
JobHistory ServerKeeps logs and counters of finished MapReduce jobs (web UI on port 19888). Lesson →
Key-value pairThe only data shape MapReduce passes around, e.g. (“chai”, 15). Map emits them; reduce receives a key with all its values. Lesson →
Map-only jobA job with 0 reducers: map output goes straight to part-m-NNNNN files, with no sort or shuffle. Lesson →
Map-side joinJoining inside the map phase with no shuffle: replicated (small side in memory) or composite (pre-sorted inputs). Lesson →
Mapper / ReducerUser code that turns input records into key–value pairs (map) and combines all values for a key (reduce). Lesson →
MapReduceProgramming model and engine: map tasks process input splits in parallel, reduce tasks combine the results. Lesson →
mapreduce vs mapred APIorg.apache.hadoop.mapreduce is the newer API (Context, Job); org.apache.hadoop.mapred is the older one (OutputCollector, JobConf). Lesson →
Merge factor (io.sort.factor)How many sorted files are merged in one pass (10 by default); 18 spills needed an extra pass. Lesson →
MRAppMasterThe ApplicationMaster of a MapReduce job: requests containers near the data, tracks tasks, retries and speculation. Lesson →
MultipleInputsLets one job read several paths, each with its own InputFormat and Mapper. Lesson →
Natural keyThe field you group by (the student) inside a composite key; partitioning and grouping use only it. Lesson →
Node-local (data-local)Task runs on a node holding a replica of its input. Network distance 0. Lesson →
NullOutputFormatAn OutputFormat that writes nothing; useful when counters are the whole result. Lesson →
Object reuseThe framework refills the same key/value objects; keep a copy (new Text(v)) if you store values. Lesson →
Off-rackTask runs in a different rack from its data. Distance 4. Lesson →
Output committerMoves successful task output into the final directory and writes the _SUCCESS marker. Lesson →
part-r / part-m filesJob output files: part-r-NNNNN from reducers, part-m-NNNNN from map-only jobs, one per task. Lesson →
Partial aggregateA mergeable intermediate value such as (sum, count); an average is not one, so it can't be combined. Lesson →
PartitionThe share of map output that goes to one reducer; one partition = one reduce task = one part-r file. Lesson →
PartitionerDecides which reduce task gets each map output pair; getPartition() must return 0 … n-1. Lesson →
PipeMapRedStreaming's pipe to your script; “subprocess failed with code 1” means the script crashed (see yarn logs). Lesson →
Rack-localTask runs on another node in the same rack as its data. Distance 2. Lesson →
RawComparatorCompares serialized keys byte by byte without deserializing them, to speed up the sort. Lesson →
RecordReaderTurns a split's bytes into records; finishes a record crossing the split end and skips a partial first line. Lesson →
Reduce slowstartmapreduce.job.reduce.slowstart.completedmaps (0.05): start reducers, and their copying, after 5% of maps finish. Lesson →
Reduce-side joinBoth inputs are mapped to (join key, tagged record) and matched in the reducer; works for any size but shuffles everything. Lesson →
SaltingAdding a suffix (key#0 … key#n) to a hot key to spread it over reducers, then merging the parts. Lesson →
Secondary sortGetting each reduce group's values in a chosen order: composite key + natural-key partitioner + grouping comparator. Lesson →
setup() / cleanup()Mapper and Reducer hooks that run once per task, before the first and after the last record. Lesson →
ShuffleMoving map outputs across the network to the reducers, sorted by key. Lesson →
ShuffleHandlerThe NodeManager service (mapreduce_shuffle, port 13562) that serves map output to reducers. Lesson →
Sort buffer (io.sort.mb)mapreduce.task.io.sort.mb: the in-memory circular buffer for map output (100 MB default); it spills at 80% full. Lesson →
Speculative executionRunning a backup copy of a slow task elsewhere; the first to finish wins. Lesson →
SpillWriting the sorted contents of the map sort buffer to a file on local disk; 16 MB gave 18 spills in our lab. Lesson →
Spilled RecordsCounter of records written to local disk by maps and reduces; far above 2 × map output means extra merge passes. Lesson →
Split slopFileInputFormat folds a last piece of up to 10% (factor 1.1) into the previous split: 128 MB + 6.2 MB gave 1 split. Lesson →
Splittable formatInput a reader can start in the middle of (plain text, bzip2, SequenceFile, Parquet). A gzip file is one split. Lesson →
Staging directory/tmp/hadoop-yarn/staging/<user>/.staging/job_…: where the client uploads the jar, job.xml and split list. Lesson →
StragglerA task or node that is alive but much slower than the rest. Lesson →
TaggingMarking each value with its source (O| order, M| menu) so the reducer knows where it came from. Lesson →
Task attemptOne run of a task (attempt_…_m_000000_0). Failed attempts are retried, up to 4 by default; speculative copies are extra attempts. Lesson →
TotalOrderPartitionerSends key ranges (from a sampled partition file) to reducers so all part files together are globally sorted. Lesson →
Uber modeRuns a tiny job's tasks inside the ApplicationMaster's JVM to save container start-up (off by default). Lesson →
VInt / VLongVariable-length numbers (WritableUtils): small values take 1 byte. Our compact key was 4.3× smaller. Lesson →
WaveOne round of tasks when there are more tasks than container slots. Lesson →
WritableHadoop's compact serialization types: Text, IntWritable, LongWritable, NullWritable. Keys must be WritableComparable. Lesson →
WritableComparableA Writable that can be sorted; every map output key must be one. compareTo() sets the sort order. Lesson →

YARN

AM resource limitmaximum-am-resource-percent (0.1): share of a queue for ApplicationMasters; beyond it jobs wait in ACCEPTED. Lesson →
Application attemptOne run of an application's ApplicationMaster; a failed AM gets a new attempt (2 by default). Lesson →
Application statesNEW → NEW_SAVING → SUBMITTED → ACCEPTED → RUNNING → FINAL_SAVING → FINISHING → FINISHED (or FAILED, KILLED). Lesson →
ApplicationMasterOne per job: asks for containers and manages that job's tasks and retries. Lesson →
ApplicationsManagerThe part of the ResourceManager that accepts applications and starts (and restarts) their ApplicationMasters. Lesson →
Capacity SchedulerHadoop 3's default: hierarchical queues with guaranteed capacity, elastic maximum-capacity and user limits. Lesson →
ContainerA slice of a node's memory and CPU in which one task runs. Lesson →
Delay schedulingWaiting briefly for a slot on a node with the data before running the task elsewhere. Lesson →
DominantResourceCalculatorCounts both memory and vcores when packing containers; the default calculator counts memory only. Lesson →
Fair SchedulerShares the cluster so every running app/queue gets its fair share over time, by weight. Lesson →
FIFO schedulerServes applications in arrival order; a small job can wait behind a big one (120 s in our lab). Lesson →
Java heap spaceOutOfMemoryError when objects outgrow -Xmx; raise the heap (and container) or stop collecting data in memory. Lesson →
LocalizationA NodeManager downloading a container's jars, files and archives before starting it. Lesson →
Log aggregationNodeManagers copy finished containers' logs into HDFS (/tmp/logs/<user>/…) for yarn logs and JobHistory. Lesson →
MB-secondsYARN's usage bill per application: memory held × time (our job: 33,224 MB-seconds). Lesson →
Minimum allocationyarn.scheduler.minimum-allocation-mb: requests are rounded up to a multiple (384 → 512 MB in our lab). Lesson →
NodeManagerYARN worker on each node: launches and monitors containers. Lesson →
Preemption (YARN)Taking containers back from a queue over its share so an under-served queue gets its guarantee. Lesson →
QueueA named share of the cluster (root.prod, root.dev); jobs pick one with mapreduce.job.queuename. Lesson →
Resource requestWhat an ApplicationMaster asks for: container size (memory, vcores), number, priority and preferred nodes/racks. Lesson →
ResourceManagerThe YARN master: tracks free resources and grants containers to applications. Lesson →
Scheduler (YARN)The part of the ResourceManager that decides which application gets the next free container. Lesson →
user-limit-factorCapacity Scheduler cap on one user, as a multiple of the queue's capacity; 1 (default) kept our big job at about 30%. Lesson →
YARNYet Another Resource Negotiator: Hadoop's cluster resource manager since Hadoop 2. Lesson →
yarn logsReads aggregated container logs: -applicationId, -containerId, -log_files, -am, -show_application_log_info. Lesson →

History and versions

Apache NutchOpen-source web search engine by Doug Cutting and Mike Cafarella where Hadoop's code began. Lesson →
GFSThe Google File System (paper, 2003): the design HDFS is based on. Lesson →
Hadoop CommonShared libraries, configuration and tools used by every other Hadoop module. Lesson →
JobTrackerHadoop 1 master that did both resource management and task scheduling for every job. Replaced by YARN. Lesson →
Schema-on-readStore raw data as it is and apply structure when reading it (Hive, Spark). Lesson →
SlotHadoop 1's fixed place for one map task or one reduce task, never both. Lesson →
TaskTrackerHadoop 1 worker daemon that ran tasks in fixed map and reduce slots. Lesson →

Setup and configuration

*-default.xmlBuilt-in defaults for every property, packaged inside Hadoop's jars. Lesson →
*-site.xmlYour configuration files in etc/hadoop (core, hdfs, yarn, mapred). They override the defaults. Lesson →
-D optionSets a property for one command or job, e.g. hdfs dfs -D dfs.replication=2 -put … Lesson →
/conf and /jmxWeb endpoints of every daemon: the settings in use (with source) and live metrics as JSON. Lesson →
apache/hadoop imageOfficial Docker image of Hadoop; FILE_property=value environment lines become XML settings. Lesson →
Cluster IDID created by formatting. DataNodes with a different one refuse to join (“Incompatible clusterIDs”). Lesson →
final property<final>true</final>: configuration files loaded later (such as a job.xml) cannot override it. Lesson →
Fully distributed modeMasters and workers on separate machines (or containers), replication 3. Production. Lesson →
JAVA_HOMEEnvironment variable pointing to the Java folder (above bin/java). Set it in hadoop-env.sh so every daemon finds Java. Lesson →
NameNode formathdfs namenode -format: creates an empty namespace and a new cluster ID. Once per cluster; again erases HDFS. Lesson →
Passwordless SSHKey-based login without a password; the start scripts use it to start daemons on every host, even localhost. Lesson →
Pseudo-distributed modeEvery daemon on one machine in its own JVM, with HDFS (replication 1) and YARN. For learning. Lesson →
Standalone modeDefault mode: one JVM, local files (file:///), no daemons. For debugging logic. Lesson →
Web UI portsNameNode 9870, DataNode 9864, ResourceManager 8088, NodeManager 8042, JobHistory 19888. Lesson →
workers fileetc/hadoop/workers: one worker host per line, read by start-dfs.sh and start-yarn.sh. Lesson →
WSL 2Windows Subsystem for Linux: a real Ubuntu inside Windows, the easiest way to practise Hadoop on a Windows PC. Lesson →

Data formats

Apache AvroLanguage-neutral binary row format; each data file carries its JSON schema; compact, splittable, compressible. Lesson →
Columnar formatStores a table column by column (Parquet, ORC) so readers fetch only needed columns and compress better. Lesson →
Compression codecA CompressionCodec: Default (deflate), Gzip, BZip2, Lz4, Snappy, ZStandard; chosen by file extension. Lesson →
Dictionary encodingStoring each distinct value once plus small codes per row (ORC DICTIONARY_V2[8] for 8 items). Lesson →
hadoop checknativeShows which native libraries (hadoop, zlib, zstd, bzip2, openssl, ISA-L) Hadoop can load. Lesson →
Map output compressionmapreduce.map.output.compress + codec: compresses the shuffle (lab: 60 MB → 13 KB with ZSTD). Lesson →
ORCOptimized Row Columnar: stripes with light-weight indexes every 10,000 rows; Hive's native format. Lesson →
ParquetColumnar format: row groups → column chunks → pages, footer with schema and min/max statistics. Default in Spark. Lesson →
Predicate pushdownSkipping row groups or stripes whose min/max cannot match a filter; works best on sorted data (1 of 10 vs 10 of 10). Lesson →
Projection (column pruning)Reading only the needed columns: 192,526 bytes instead of 4,431,110 for Parquet in our lab. Lesson →
Row group / stripeThe horizontal slice of a Parquet (row group) or ORC (stripe) file; the unit that statistics let readers skip. Lesson →
Schema evolutionChanging a schema without breaking old data: new fields need defaults (our lab: missing default → AvroTypeException). Lesson →
SequenceFileHadoop's binary file of Writable key-value pairs; header names the classes and codec; NONE, RECORD or BLOCK compression. Lesson →
Splittable codecA codec readers can start mid-file (SplittableCompressionCodec); only bzip2 among the built-ins. A .gz file is one map. Lesson →
Sync markerA 16-byte marker repeated inside SequenceFile and Avro files so a split can start in the middle of the file. Lesson →
Writer vs reader schemaAvro resolves the schema stored in the file against the one the program expects, field by field. Lesson →

Security

Apache RangerCentral access policies enforced by plugins in HDFS, Hive, HBase and others, with masking, row filters and audit. Lesson →
Encryption zoneAn HDFS folder whose files are encrypted at rest with keys from the Hadoop KMS. Lesson →
HDFS ACLExtra named-user/group permissions on a file or folder (setfacl/getfacl; a + after the permission bits). Lesson →
KDC / TGTThe Key Distribution Center issues a ticket-granting ticket at kinit, then service tickets for each service. Lesson →
KerberosTicket-based network authentication; Hadoop's secure mode (hadoop.security.authentication=kerberos). Lesson →
KeytabA file with a principal's keys so a service can log in without a password; guard it like a password. Lesson →
PrincipalA Kerberos identity: user@REALM or service/host@REALM, e.g. nn/nn-secure@LAB.MYPHATSHALA. Lesson →
Simple authenticationHadoop's default: it trusts the user name the client sends (HADOOP_USER_NAME), so anyone can claim any user. Lesson →

Ecosystem

Apache AtticWhere retired Apache projects go, e.g. Sqoop (Jun 2021) and Oozie (Feb 2025). Lesson →
Apache HBaseA NoSQL store on HDFS for millisecond reads and writes by row key. Lesson →
Apache IcebergOpen table format: snapshots, row-level DELETE/UPDATE, time travel, schema and partition evolution. Lesson →
Apache SparkA DAG engine with in-memory caching that usually runs on YARN and reads HDFS; it replaced MapReduce as the engine. Lesson →
Apache ZooKeeperA replicated coordination service: leader election, locks, configuration (used by HA and HBase). Lesson →
BackfillRe-running a pipeline for past dates; safe only if each run is idempotent (overwrites its own partition). Lesson →
Bronze / silver / goldLayers of a pipeline: raw as received, cleaned and typed, business-ready aggregates. Lesson →
Compute–storage separationData stays in object storage (S3, GCS, ADLS) while clusters come and go to process it. Lesson →
Driver / executorSpark's planner process and its long-lived worker JVMs (YARN containers) that run tasks and cache data. Lesson →
ExchangeSpark's name for a shuffle in a physical plan; each Exchange starts a new stage. Lesson →
External tableA table that points at existing files; dropping it leaves the files in place. Lesson →
Hive MetastoreStores table definitions (columns, format, location) shared by Hive, Spark, Trino and Impala. Lesson →
LakehouseOpen table formats on cheap storage giving warehouse features (ACID, time travel) to many engines. Lesson →
Lazy evaluationSpark transformations only build a plan; an action (collect, write) runs it. Lesson →
RDD / DataFrameSpark's distributed collections: RDD = partitioned objects with lineage; DataFrame = table with a schema the optimizer can rewrite. Lesson →
s3a / abfs / gs connectorsHadoop FileSystem clients that let jobs read and write cloud object storage with s3a://, abfs://, gs:// paths. Lesson →
Spot / preemptible workersCheaper cloud machines that can be taken back; fine for task-only workers because tasks rerun. Lesson →
SQL-on-HadoopEngines that run SQL over files in HDFS or object storage: Hive, Spark SQL, Trino, Impala, Drill. Lesson →
Time travelQuerying a table as of an older snapshot (our lab: VERSION AS OF snapshot 1 → 500,000 orders). Lesson →
Transient clusterA cluster created for a job or a night and deleted afterwards; you pay only while it runs. Lesson →