<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>Jonathan Wilson</title>
<link>https://jonathanwil.com/blog/</link>
<atom:link href="https://jonathanwil.com/blog/index.xml" rel="self" type="application/rss+xml"/>
<description></description>
<generator>quarto-1.7.32</generator>
<lastBuildDate>Sun, 12 Jul 2026 00:00:00 GMT</lastBuildDate>
<item>
  <title>Understanding the Hadoop Ecosystem: A Concept Map for Big Data Architecture</title>
  <dc:creator>Jonathan Wilson</dc:creator>
  <link>https://jonathanwil.com/blog/posts/tech/hadoop/hadoop-ecosystem-paper.html</link>
  <description><![CDATA[ 




<section id="introduction" class="level1">
<h1>Introduction</h1>
<section id="big-data-and-why-hadoop" class="level2">
<h2 class="anchored" data-anchor-id="big-data-and-why-hadoop">Big Data and Why Hadoop</h2>
<p>In 2006, British mathematician Clive Humby coined the phrase, “Data is the new oil,” and today it seems more relevant than ever <span class="citation" data-cites="universitySheffieldCliveHumby">(University of Sheffield, n.d.)</span>. In 2002, about 5 exabytes of new information were stored worldwide, while IDC projected that the global datasphere would reach 175 zettabytes by 2025 <span class="citation" data-cites="lyman2003 reinsel2018">(Lyman &amp; Varian, 2003; Reinsel et al., 2018)</span>. If data is the oil, then what are the refineries? What systems can process these enormous amounts of data and turn them into useful products?</p>
<p>Organizations need ways to store and process data beyond the limits of a single server and many traditional databases. Instead of relying on one increasingly powerful machine, distributed systems divide the work across many computers. As Grace Hopper explained through her oxen analogy, when one ox cannot move a heavy load, you add more oxen rather than trying to build a larger one <span class="citation" data-cites="hopper1982">(Hopper, 1982)</span>. Hadoop follows this same idea by allowing clusters of computers to store and process data together.</p>
</section>
<section id="what-is-hadoop" class="level2">
<h2 class="anchored" data-anchor-id="what-is-hadoop">What is Hadoop</h2>
<p>Apache Hadoop is best understood as an open-source big data ecosystem rather than a single tool. It provides a framework for storing and processing large datasets across clusters of computers. Its four core modules—Hadoop Common, HDFS, YARN, and MapReduce—support distributed storage, resource management, and parallel processing, while related projects extend Hadoop into areas such as querying, analytics, governance, and data management. Unlike a traditional database, Hadoop is designed to scale from a single machine to thousands of computers working together <span class="citation" data-cites="apacheHadoop">(Apache Hadoop Project, n.d.)</span>.</p>
</section>
<section id="origins-of-hadoop" class="level2">
<h2 class="anchored" data-anchor-id="origins-of-hadoop">Origins of Hadoop</h2>
<p>Hadoop was born from two key developments that happened around the same time in the early 2000s, when web search and large-scale data processing were becoming increasingly difficult to manage with traditional systems. One major development was Google’s work on web-scale search. PageRank, created by Larry Page and Sergey Brin, helped make Google successful by ranking web pages based on link relationships across the web <span class="citation" data-cites="brinPage1998">(Brin &amp; Page, 1998)</span>. As Google grew, it also needed a better way to process massive amounts of web data across many machines, which led Jeffrey Dean and Sanjay Ghemawat to publish the influential MapReduce paper <span class="citation" data-cites="deanGhemawat2004">(Dean &amp; Ghemawat, 2004)</span>. Around the same time, Doug Cutting, the creator of Apache Lucene, was working on Apache Nutch, an open-source web search project that needed scalable storage and processing. Hadoop grew out of this work as part of the Lucene/Nutch ecosystem, and its interesting name famously came from Cutting’s child’s stuffed toy elephant. The combination of Google’s MapReduce ideas, the needs of open-source web search, and the work being done in Nutch eventually led to the creation of Hadoop as a framework for distributed storage and parallel computation <span class="citation" data-cites="white2015">(White, 2015, pp. 12–16)</span>.</p>
<p>With a brief introduction and background laid out, the next section explores the Hadoop ecosystem in more depth using principally a concept map along with some other supporting diagrams.</p>
</section>
</section>
<section id="hadoop-concept-map" class="level1">
<h1>Hadoop Concept Map</h1>
<p><strong>Note:</strong> The diagrams/images are large but they have been inserted into this document to allow zooming without reduction in the resolution/quality.</p>
<p>To better organize concepts within the Hadoop ecosystem, I’ve organized the material into the following:</p>
<p><strong>Core Hadoop</strong> — The core of Hadoop refers to the essential components that make Hadoop what it is. Think of the core as the foundation, or kernel, of the larger ecosystem. The functional layers around it depend on these core services for distributed storage, resource management, and parallel processing. Although the requirement of Hadoop core components is becoming less and less of a requirement as more modern tools are developed <span class="citation" data-cites="verbraeken2020">(Verbraeken et al., 2020)</span>, the core is still important to understand because it is the foundation of Hadoop and many of the ecosystem tools depend on it <span class="citation" data-cites="dolev2019">(Dolev et al., 2019)</span>.</p>
<p><strong>Seven Functional Layers</strong> — The seven functional layers represent the major pluggable areas of the Hadoop ecosystem. These layers interact with the core Hadoop components, but they can also interact with each other through their own interfaces. This demonstrates Hadoop as an ecosystem of connected services that support storage, processing, querying, ingestion, coordination, security, governance, and analytics.</p>
<div id="fig-hadoop-concept-map" class="lightbox quarto-float quarto-figure quarto-figure-center anchored" alt="Hadoop ecosystem concept map centered on AeroFlux and Hadoop ecosystem relationships.">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-hadoop-concept-map-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<a href="../../../../images/blog/tech/hadoop/hadoop-ecosystem-concept-map.svg" class="lightbox" data-gallery="quarto-lightbox-gallery-1" title="Figure&nbsp;1: Hadoop ecosystem concept map."><img src="https://jonathanwil.com/images/blog/tech/hadoop/hadoop-ecosystem-concept-map.svg" class="img-fluid figure-img" alt="Hadoop ecosystem concept map centered on AeroFlux and Hadoop ecosystem relationships."></a>
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-hadoop-concept-map-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;1: Hadoop ecosystem concept map.
</figcaption>
</figure>
</div>
<p>As shown in Figure&nbsp;1, I made this mind map specific to a particular use case: AeroFlux. The reason for this is to try and ground all our discussion of Hadoop in the real world and not get overwhelmed with all the information that’s out there because you could easily spend your entire life learning this stuff and still not grasp it all before the next big thing comes along.</p>
<p>In Figure&nbsp;2 I provided a layered ecosystem of Hadoop to show a sample of the available open source technologies. Most of which are supported by the same Apache Software Foundation that supports Hadoop.</p>
<div id="fig-layered-hadoop-ecosystem" class="lightbox quarto-float quarto-figure quarto-figure-center anchored" alt="Layered Hadoop ecosystem diagram showing core Hadoop and functional layers.">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-layered-hadoop-ecosystem-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<a href="../../../../images/blog/tech/hadoop/layered-hadoop-ecosystem.svg" class="lightbox" data-gallery="quarto-lightbox-gallery-2" title="Figure&nbsp;2: Layered ecosystem of Hadoop."><img src="https://jonathanwil.com/images/blog/tech/hadoop/layered-hadoop-ecosystem.svg" class="img-fluid figure-img" alt="Layered Hadoop ecosystem diagram showing core Hadoop and functional layers."></a>
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-layered-hadoop-ecosystem-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;2: Layered ecosystem of Hadoop.
</figcaption>
</figure>
</div>
<p>Figure&nbsp;3 shows a data flow diagram of the AeroFlux project in the context of a hypothetical Hadoop ecosystem. The prupose of this diagram is to support the concept map in Figure&nbsp;1 by showing a more linear flow of data through the functional layers. The diagram is not meant to be a complete representation of all the possible paths through the ecosystem, but rather a sample path that shows how data could flow from ingestion to storage, processing, analytics, and governance.</p>
<div id="fig-aeroflux-data-flow" class="lightbox quarto-float quarto-figure quarto-figure-center anchored" alt="AeroFlux data flow diagram showing ingestion, storage, processing, analytics, and governance components.">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-aeroflux-data-flow-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<a href="../../../../images/blog/tech/hadoop/aeroflux-hadoop-data-flow.svg" class="lightbox" data-gallery="quarto-lightbox-gallery-3" title="Figure&nbsp;3: AeroFlux data flow diagram with Hadoop."><img src="https://jonathanwil.com/images/blog/tech/hadoop/aeroflux-hadoop-data-flow.svg" class="img-fluid figure-img" alt="AeroFlux data flow diagram showing ingestion, storage, processing, analytics, and governance components."></a>
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-aeroflux-data-flow-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;3: AeroFlux data flow diagram with Hadoop.
</figcaption>
</figure>
</div>
</section>
<section id="core-hadoop" class="level1">
<h1>Core Hadoop</h1>
<section id="the-big-four" class="level2">
<h2 class="anchored" data-anchor-id="the-big-four">The Big Four</h2>
<p>The foundation of Hadoop is built around four core modules: Hadoop Common, HDFS, YARN, and MapReduce. Together, these components form the original foundation of Hadoop’s big data architecture and work together <span class="citation" data-cites="apacheHadoop">(Apache Hadoop Project, n.d.)</span>.</p>
</section>
<section id="hdfs-as-the-foundation-of-hadoop" class="level2">
<h2 class="anchored" data-anchor-id="hdfs-as-the-foundation-of-hadoop">HDFS as the Foundation of Hadoop</h2>
<p>Hadoop’s HDFS (Hadoop Distributed File System) is the main data storage mechanism in the Hadoop architecture. I call it the foundation of Hadoop. HDFS provides distributed storage by splitting large files into blocks and storing those blocks across multiple machines in a cluster. It’s data agnostic as it can handle all types of data: structured, semi-structured or unstructured data <span class="citation" data-cites="apacheHdfs2023">(Apache Hadoop Project, 2023)</span>.</p>
<p>HDFS is designed around a master-worker architecture. The NameNode acts as the master service that manages file system metadata. It keeps track of the directory structure, which blocks make up each file, and where those blocks are located across the cluster. The DataNodes are the worker machines that store the actual data blocks and serve read and write requests. When a large file is written to HDFS, it is divided into blocks, commonly 128 MB in many modern Hadoop configurations, although the block size is configurable. Each block is then distributed across DataNodes and replicated for fault tolerance. A common default replication factor is three, meaning each block is copied to three different locations so that the data remains available even if a machine fails. This design allows HDFS to store very large files reliably across clusters of commodity hardware <span class="citation" data-cites="apacheHdfs2023">(Apache Hadoop Project, 2023)</span>.</p>
<p>One of the most important ideas behind HDFS is data locality, often summarized by the Hadoop design principle that “moving computation is cheaper than moving data” <span class="citation" data-cites="apacheHdfs2023">(Apache Hadoop Project, 2023)</span>. The HDFS architecture guide explains that when datasets are very large, it is usually more efficient to run computation near the data instead of moving huge amounts of data across the network to a separate processing machine. This reduces network congestion and increases overall throughput. For example, if a company stores several terabytes of web server logs in HDFS, it would be inefficient to copy all of those logs to one server for analysis. Instead, Hadoop can send processing tasks to the nodes where the log blocks already exist. This is also why HDFS is optimized for streaming reads and large sequential file access rather than low-latency random access. It is very good at scanning large files from beginning to end, such as reading years of transaction logs for batch analysis, but it is not ideal when an application needs to quickly retrieve and update individual records like a traditional transactional database <span class="citation" data-cites="apacheHdfs2023">(Apache Hadoop Project, 2023)</span>.</p>
</section>
<section id="hadoop-common" class="level2">
<h2 class="anchored" data-anchor-id="hadoop-common">Hadoop Common</h2>
<p>Hadoop Common contains the shared libraries, utilities, and basic services that support the other Hadoop modules. It provides the Java abstractions over the underlying operating system and filesystem that HDFS, YARN, and MapReduce all build upon, along with the launch scripts, configuration handling, and JAR files needed to run a Hadoop cluster <span class="citation" data-cites="apacheHadoop">(Apache Hadoop Project, n.d.)</span>.</p>
</section>
<section id="yarn-the-manager" class="level2">
<h2 class="anchored" data-anchor-id="yarn-the-manager">YARN the Manager</h2>
<p>YARN manages cluster resources and job scheduling and monitoring. YARN completes the foundation by separating resource management from the processing model. In earlier Hadoop designs, MapReduce was tightly connected to cluster resource management. YARN made Hadoop more flexible by allowing different processing engines to share the same cluster resources. In YARN, the ResourceManager arbitrates resources across applications, while NodeManagers run on individual machines and monitor resource usage such as CPU, memory, disk, and network. This means MapReduce jobs, Spark applications, Tez jobs, and other distributed applications can run on the same Hadoop cluster while requesting resources through YARN. To better visualize these relationships consider this: HDFS stores distributed data, YARN allocates and monitors compute resources, and MapReduce uses those resources to perform parallel batch processing over the data stored in HDFS <span class="citation" data-cites="apacheYarn2026">(Apache Hadoop Project, 2026a)</span>.</p>
</section>
<section id="mapreduce-the-data-processing-engine" class="level2">
<h2 class="anchored" data-anchor-id="mapreduce-the-data-processing-engine">MapReduce the Data Processing Engine</h2>
<p>MapReduce is the core data processing engine. A MapReduce job breaks a large task into smaller tasks that can run in parallel across the cluster. The map phase processes small portions of the input data and produces intermediate key-value pairs. The shuffle and sort phase groups all intermediate values with the same key and sends them to the appropriate reducer. The reduce phase then combines or summarizes those grouped values to produce the final output. This model gives programmers a clean abstraction for distributed processing because the framework handles task distribution, parallelization, data movement between map and reduce stages, and fault tolerance when tasks or nodes fail <span class="citation" data-cites="apacheMapReduce2026 deanGhemawat2004">(Apache Hadoop Project, 2026b; Dean &amp; Ghemawat, 2004)</span>. Although using MapReduce directly can be cumbersome, hence why why Pig, Hive, and other higher-level tools were developed to provide SQL-like interface that is more user-friendly. Those will be talked about later.</p>
<p>Beyond these four core components, the Hadoop ecosystem extends into additional functional layers made up of many open-source projects which is what we will explore in the following section. For a sample of what is available, see the layered Hadoop ecosystem in Figure&nbsp;2.</p>
</section>
</section>
<section id="exploring-the-hadoop-ecosystem" class="level1">
<h1>Exploring the Hadoop Ecosystem</h1>
<p>For the following section, we will use the concept map in Figure&nbsp;1 and the AeroFlux project as a hypothetical use case. The goal is to explore the Hadoop ecosystem by tracing an end-to-end data path through the core and functional layers and showing how the different open-source projects relate to one another.</p>
<p>For context, AeroFlux is a proposed aviation intelligence platform that combines historical flight data, live flight streams, weather data, and airport metadata to analyze delays and operational patterns. In the context of Hadoop, AeroFlux serves as an example of how a big data architecture could ingest, store, process, query, and model large-scale aviation data for decision support. For more information on the AeroFlux project, see <a href="https://jonathanwilsonami.github.io/OR568_ML_Project/aero-flux.html">AeroFlux</a>.</p>
<section id="seven-functional-layers-overview" class="level2">
<h2 class="anchored" data-anchor-id="seven-functional-layers-overview">Seven Functional Layers Overview</h2>
<p><strong>Hadoop Core</strong> — The foundation of the Hadoop ecosystem. Already discussed in the previous section.</p>
<p><strong>Ingestion</strong> — The data on-ramp that moves external data sources such as flight streams, weather feeds, etc. into the big data environment.</p>
<p><strong>Storage</strong> — The layer that stores raw, curated, and operational data using systems such as HDFS, Parquet, HBase, MongoDB, Neo4j, and Elasticsearch.</p>
<p><strong>Processing</strong> — The compute layer that transforms, cleans, enriches, and analyzes data using engines such as MapReduce, Spark, Flink, Tez, and Pig.</p>
<p><strong>Data Access</strong> — The query and scripting layer that allows users and applications to interact with stored data through tools such as Hive, Trino, Pig, and Elasticsearch.</p>
<p><strong>AI/ML and Analytics</strong> — The layer that uses processed and feature-engineered data for machine learning, prediction, statistical analysis, and decision support.</p>
<p><strong>Security, Governance, and Operations</strong> — The cross-cutting layer that secures, manages, automates, monitors, and documents the platform through tools such as Ranger, Knox, Atlas, Kerberos, Airflow, Ansible, Ambari, and Cloudera Manager.</p>
</section>
<section id="the-aeroflux-path-through-the-layers" class="level2">
<h2 class="anchored" data-anchor-id="the-aeroflux-path-through-the-layers">The AeroFlux Path Through the Layers</h2>
<section id="data-sources-enter-the-system." class="level3">
<h3 class="anchored" data-anchor-id="data-sources-enter-the-system.">Data Sources enter the system.</h3>
<p>AeroFlux begins with external aviation data sources, including flight messages, weather data, airport metadata, and historical flight records. These sources represent the raw material that the rest of the architecture is designed to capture, organize, and analyze. In a real system, examples could include FAA SWIM feeds, ADS-B or OpenSky-style aircraft position data, NOAA weather data, BTS historical flight data, and airport reference data. This part of the path sits just before the ingestion layer because these systems exist outside Hadoop but feed into the big data architecture <span class="citation" data-cites="faaSwim openskyData btsOnTime nwsAviation">(Bureau of Transportation Statistics, n.d.; Federal Aviation Administration, n.d.; National Weather Service, n.d.; OpenSky Network, n.d.)</span>.</p>
</section>
<section id="ingestion-layer-streaming-and-batch-data-are-ingested-into-the-platform." class="level3">
<h3 class="anchored" data-anchor-id="ingestion-layer-streaming-and-batch-data-are-ingested-into-the-platform.">[Ingestion Layer] Streaming and batch data are ingested into the platform.</h3>
<p>AeroFlux separates ingestion into two paths: streaming ingestion and batch ingestion. For live sources such as FAA SWIM messages, AeroFlux uses Apache Kafka as the streaming backbone because the data arrives continuously and needs to be captured as events are produced. Kafka runs in KRaft mode, which means it manages Kafka metadata internally through a quorum of controller nodes instead of depending on ZooKeeper for coordination <span class="citation" data-cites="apacheKafka2026 ongaroOusterhout2014">(Apache Kafka Project, 2026; Ongaro &amp; Ousterhout, 2014)</span>. For scheduled or batch-oriented sources such as historical flight data, airport metadata, or periodic weather files, the system can use Airflow to schedule jobs that load data into HDFS or another storage layer. Other available ingestion tools in the Hadoop ecosystem include Sqoop for relational database imports, Flume for log and event collection, and NiFi for visual dataflow automation and routing <span class="citation" data-cites="apacheAirflow apacheSqoop2019 apacheFlume2022 apacheNifi">(Apache Airflow Project, n.d.; Apache Flume Project, 2022; Apache NiFi Project, n.d.; Apache Sqoop Project, 2019)</span>.</p>
</section>
<section id="orchestration-workflow-orchestration-controls-when-jobs-run." class="level3">
<h3 class="anchored" data-anchor-id="orchestration-workflow-orchestration-controls-when-jobs-run.">[Orchestration] Workflow orchestration controls when jobs run.</h3>
<p>This step belongs to the Security, Governance, and Operations layer, although it supports the ingestion and processing layers directly. AeroFlux uses Airflow to do more than just handle data ingestion—it sequences job tasking to run Spark jobs and trigger downstream analytics. This is different from Kafka’s internal coordination. Kafka/KRaft manages the streaming system itself, while Airflow manages pipeline workflows across systems as DAGs. In a more traditional Hadoop environment, Oozie could be used as the Hadoop-native workflow scheduler, while tools such as Luigi, Azkaban, Dagster, and Prefect are other available orchestration options <span class="citation" data-cites="apacheAirflow apacheKafka2026 apacheOozie2021">(Apache Airflow Project, n.d.; Apache Kafka Project, 2026; Apache Oozie Project, 2021)</span>.</p>
</section>
<section id="data-processing-real-time-events-are-processed-before-landing." class="level3">
<h3 class="anchored" data-anchor-id="data-processing-real-time-events-are-processed-before-landing.">[Data Processing] Real-time events are processed before landing.</h3>
<p>After streaming data enters Kafka, AeroFlux can use Apache Flink to process events in real time. Flink is useful for transformations such as filtering invalid messages, enriching events with airport metadata, calculating rolling airport activity, or detecting early indicators of delay propagation. This real-time processing path sits beside the batch Hadoop path but still feeds the larger data platform. Spark could also support micro-batch or structured streaming workloads, while MapReduce represents the older batch processing model. Tez and Storm are additional available processing options, with Tez commonly used under Hive and Storm representing an earlier generation of streaming technology <span class="citation" data-cites="apacheFlink apacheSpark apacheTez apacheStorm deanGhemawat2004">(Apache Flink Project, n.d.; Apache Spark Project, n.d.; Apache Storm Project, n.d.; Apache Tez Project, n.d.; Dean &amp; Ghemawat, 2004)</span>.</p>
</section>
<section id="hadoop-core-storage-raw-data-lands-in-hdfs." class="level3">
<h3 class="anchored" data-anchor-id="hadoop-core-storage-raw-data-lands-in-hdfs.">[Hadoop Core &amp; Storage] Raw data lands in HDFS.</h3>
<p>HDFS is the foundation where AeroFlux can store raw data at scale. The raw landing zone preserves data in its original or lightly transformed form so that it can be reprocessed later if the schema changes, new features are needed, or a processing error is discovered. This is one of the reasons Hadoop-style architectures are useful for data lake patterns: they allow large volumes of raw data to be stored first and interpreted later by processing and query tools <span class="citation" data-cites="apacheHdfs2023">(Apache Hadoop Project, 2023)</span>.</p>
</section>
<section id="storage-curated-analytical-data-is-stored-in-parquet." class="level3">
<h3 class="anchored" data-anchor-id="storage-curated-analytical-data-is-stored-in-parquet.">[Storage] Curated analytical data is stored in Parquet.</h3>
<p>Once raw data is cleaned and transformed, AeroFlux stores curated analytical datasets in Parquet. Parquet is a columnar file format, which makes it useful for scan-heavy analytics where only certain columns need to be read across millions of records. For example, a delay analysis query may only need flight date, origin airport, destination airport, departure delay, arrival delay, weather conditions, and carrier. Reading only the needed columns can make analytical workloads more efficient. Other available formats include ORC, which is another columnar format often associated with Hive, and Avro, which is row-oriented and useful for record-based data exchange and schema evolution <span class="citation" data-cites="apacheParquet2025 zeng2023">(Apache Parquet Project, 2025; Zeng et al., 2023)</span>.</p>
</section>
<section id="data-processing-batch-analytics-and-feature-engineering-run-on-spark." class="level3">
<h3 class="anchored" data-anchor-id="data-processing-batch-analytics-and-feature-engineering-run-on-spark.">[Data Processing] Batch analytics and feature engineering run on Spark.</h3>
<p>AeroFlux uses Apache Spark for batch analytics, feature engineering, and large-scale transformations over historical and curated data. Spark can read from HDFS, process data in memory, and write results back to HDFS in formats such as Parquet. In the Hadoop ecosystem, Spark jobs can request cluster resources through YARN, while MapReduce remains the original Hadoop processing model. For AeroFlux, Spark is more useful than traditional MapReduce because it supports faster iterative analytics, machine learning workflows, and more flexible data processing <span class="citation" data-cites="apacheSpark apacheHdfs2023 apacheYarn2026 zaharia2016">(Apache Hadoop Project, 2023, 2026a; Apache Spark Project, n.d.; Zaharia et al., 2016)</span>.</p>
</section>
<section id="data-access-analysts-and-applications-query-the-data-through-hive-and-trino." class="level3">
<h3 class="anchored" data-anchor-id="data-access-analysts-and-applications-query-the-data-through-hive-and-trino.">[Data Access] Analysts and applications query the data through Hive and Trino.</h3>
<p>Hive provides a SQL-like interface over data stored in HDFS and other distributed storage systems <span class="citation" data-cites="apacheHive">(Apache Hive Project, n.d.)</span>. It was originally developed as a SQL layer over Hadoop MapReduce, allowing users to perform ETL, batch reporting, and large-scale analysis without writing low-level MapReduce programs <span class="citation" data-cites="camacho2019">(Camacho-Rodríguez et al., 2019)</span>. Over time, Hive evolved into a more complete data warehousing system by improving SQL support, query optimization, and compatibility with faster engines such as Tez and Spark <span class="citation" data-cites="camacho2019">(Camacho-Rodríguez et al., 2019)</span>. Hive also uses the Hive Metastore to maintain information about tables, schemas, partitions, and data locations, while the underlying data can remain in HDFS, cloud object storage, or systems such as HBase <span class="citation" data-cites="apacheHbase">(Apache HBase Project, n.d.)</span>. Trino, a relatively modern technology, adds another access path by providing fast, federated SQL across multiple data sources, which makes it useful for interactive analysis across HDFS, Hive tables, and other connected systems <span class="citation" data-cites="trinoConcepts">(Trino Software Foundation, n.d.)</span>.</p>
</section>
<section id="aiml-and-analytics-layer-machine-learning-models-predict-delays." class="level3">
<h3 class="anchored" data-anchor-id="aiml-and-analytics-layer-machine-learning-models-predict-delays.">[AI/ML and Analytics layer] Machine learning models predict delays.</h3>
<p>After the data has been cleaned, joined, and feature-engineered, AeroFlux can use Spark MLlib for delay prediction. This layer connects to the processing output rather than directly to raw HDFS files, because machine learning works best when the data has already been transformed into reliable features. Mahout is an available legacy alternative in the Hadoop ecosystem, but Spark MLlib is a more natural fit for a modern Spark-based architecture <span class="citation" data-cites="meng2016">(Meng et al., 2016)</span>.</p>
</section>
<section id="storage-and-aiml-and-analytics-propagation-is-modeled-as-a-graph." class="level3">
<h3 class="anchored" data-anchor-id="storage-and-aiml-and-analytics-propagation-is-modeled-as-a-graph.">[Storage and AI/ML and Analytics] propagation is modeled as a graph.</h3>
<p>AeroFlux can use Neo4j to model network relationships i.e.&nbsp;propagation networks. This is useful because aviation delays are not isolated events. A graph database makes these relationships easier to explore than a flat table alone. Other graph-oriented options exist, such as JanusGraph, while HBase can support large-scale point lookups and MongoDB can store flexible document-style operational records <span class="citation" data-cites="neo4j apacheHbase mongodbModeling">(Apache HBase Project, n.d.; MongoDB, n.d.; Neo4j, n.d.)</span>.</p>
</section>
<section id="data-access-search-and-event-exploration-use-elasticsearch." class="level3">
<h3 class="anchored" data-anchor-id="data-access-search-and-event-exploration-use-elasticsearch.">[Data Access] Search and event exploration use Elasticsearch.</h3>
<p>Here we can use Elasticsearch for fast search and exploration of flight events, logs, message contents, and operational anomalies. This is different from Hive or Trino because Elasticsearch is optimized for search-style access rather than large SQL-based analytical scans. For example, an analyst might search for all events related to a specific flight number, airport, message type, or operational disruption. Solr is an available alternative in this part of the ecosystem <span class="citation" data-cites="elasticElasticsearch apacheSolr">(Apache Solr Project, n.d.; Elastic, n.d.)</span>.</p>
</section>
<section id="security-governance-and-operations-security-governance-and-operations-wrap-the-whole-path." class="level3">
<h3 class="anchored" data-anchor-id="security-governance-and-operations-security-governance-and-operations-wrap-the-whole-path.">[Security, Governance, and Operations] Security, governance, and operations wrap the whole path.</h3>
<p>Last but not lease we have security, governance, and operations. These tools do not sit in one single place in the data path because they support the entire platform. YARN allocates compute resources across jobs and applications. Ranger centralizes authorization and access policies. Knox provides a perimeter security gateway for accessing Hadoop services. Atlas manages metadata and data lineage across the stack. Kerberos handles authentication. Airflow schedules recurring workflows, while Ansible helps provision and configure machines. Ambari or Cloudera Manager could be used for cluster management and monitoring in a more traditional Hadoop environment. In the AeroFlux architecture, these supporting components make the platform manageable, secure, and explainable rather than just technically functional <span class="citation" data-cites="apacheYarn2026 apacheRanger apacheKnox apacheAtlas mitKerberos apacheAirflow ansibleDocs apacheAmbari clouderaManager">(Ansible Community, n.d.; Apache Airflow Project, n.d.; Apache Ambari Project, n.d.; Apache Atlas Project, n.d.; Apache Hadoop Project, 2026a; Apache Knox Project, n.d.; Apache Ranger Project, n.d.; Cloudera, n.d.; MIT Kerberos Consortium, n.d.)</span>.</p>
<div style="page-break-after: always;"></div>
</section>
</section>
</section>
<section id="references" class="level1">
<h1>References</h1>
<div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0" data-line-spacing="2">
<div id="ref-ansibleDocs" class="csl-entry">
Ansible Community. (n.d.). <em>Ansible community documentation</em>. Retrieved July 12, 2026, from <a href="https://docs.ansible.com/">https://docs.ansible.com/</a>
</div>
<div id="ref-apacheAirflow" class="csl-entry">
Apache Airflow Project. (n.d.). <em>What is airflow?</em> Apache Software Foundation. Retrieved July 12, 2026, from <a href="https://airflow.apache.org/docs/apache-airflow/stable/index.html">https://airflow.apache.org/docs/apache-airflow/stable/index.html</a>
</div>
<div id="ref-apacheAmbari" class="csl-entry">
Apache Ambari Project. (n.d.). <em>Apache ambari</em>. Apache Software Foundation. Retrieved July 12, 2026, from <a href="https://ambari.apache.org/">https://ambari.apache.org/</a>
</div>
<div id="ref-apacheAtlas" class="csl-entry">
Apache Atlas Project. (n.d.). <em>Apache atlas: Data governance and metadata framework for hadoop</em>. Apache Software Foundation. Retrieved July 12, 2026, from <a href="https://atlas.apache.org/">https://atlas.apache.org/</a>
</div>
<div id="ref-apacheFlink" class="csl-entry">
Apache Flink Project. (n.d.). <em>Apache flink: Stateful computations over data streams</em>. Apache Software Foundation. Retrieved July 12, 2026, from <a href="https://flink.apache.org/">https://flink.apache.org/</a>
</div>
<div id="ref-apacheFlume2022" class="csl-entry">
Apache Flume Project. (2022). <em>Welcome to apache flume</em>. Apache Software Foundation. <a href="https://flume.apache.org/">https://flume.apache.org/</a>
</div>
<div id="ref-apacheHadoop" class="csl-entry">
Apache Hadoop Project. (n.d.). <em>Apache hadoop</em>. Apache Software Foundation. Retrieved July 12, 2026, from <a href="https://hadoop.apache.org/">https://hadoop.apache.org/</a>
</div>
<div id="ref-apacheHdfs2023" class="csl-entry">
Apache Hadoop Project. (2023). <em>Apache hadoop 3.3.5: HDFS architecture</em>. Apache Software Foundation. <a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html">https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html</a>
</div>
<div id="ref-apacheYarn2026" class="csl-entry">
Apache Hadoop Project. (2026a). <em>Apache hadoop 3.5.0: Apache hadoop YARN</em>. Apache Software Foundation. <a href="https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html">https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html</a>
</div>
<div id="ref-apacheMapReduce2026" class="csl-entry">
Apache Hadoop Project. (2026b). <em>Apache hadoop 3.5.0: MapReduce tutorial</em>. Apache Software Foundation. <a href="https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html">https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html</a>
</div>
<div id="ref-apacheHbase" class="csl-entry">
Apache HBase Project. (n.d.). <em>Apache HBase reference guide</em>. Apache Software Foundation. Retrieved July 12, 2026, from <a href="https://hbase.apache.org/book.html">https://hbase.apache.org/book.html</a>
</div>
<div id="ref-apacheHive" class="csl-entry">
Apache Hive Project. (n.d.). <em>Apache hive</em>. Apache Software Foundation. Retrieved July 12, 2026, from <a href="https://hive.apache.org/">https://hive.apache.org/</a>
</div>
<div id="ref-apacheKafka2026" class="csl-entry">
Apache Kafka Project. (2026). <em>KRaft vs ZooKeeper</em>. Apache Software Foundation. <a href="https://kafka.apache.org/40/getting-started/zk2kraft/">https://kafka.apache.org/40/getting-started/zk2kraft/</a>
</div>
<div id="ref-apacheKnox" class="csl-entry">
Apache Knox Project. (n.d.). <em>Apache knox gateway user guide</em>. Apache Software Foundation. Retrieved July 12, 2026, from <a href="https://knox.apache.org/books/knox-2-1-0/user-guide.html">https://knox.apache.org/books/knox-2-1-0/user-guide.html</a>
</div>
<div id="ref-apacheNifi" class="csl-entry">
Apache NiFi Project. (n.d.). <em>Apache NiFi overview</em>. Apache Software Foundation. Retrieved July 12, 2026, from <a href="https://nifi.apache.org/docs/nifi-docs/html/overview.html">https://nifi.apache.org/docs/nifi-docs/html/overview.html</a>
</div>
<div id="ref-apacheOozie2021" class="csl-entry">
Apache Oozie Project. (2021). <em>Apache oozie workflow scheduler for hadoop</em>. Apache Software Foundation. <a href="https://oozie.apache.org/">https://oozie.apache.org/</a>
</div>
<div id="ref-apacheParquet2025" class="csl-entry">
Apache Parquet Project. (2025). <em>Overview</em>. Apache Software Foundation. <a href="https://parquet.apache.org/docs/overview/">https://parquet.apache.org/docs/overview/</a>
</div>
<div id="ref-apacheRanger" class="csl-entry">
Apache Ranger Project. (n.d.). <em>Apache ranger introduction</em>. Apache Software Foundation. Retrieved July 12, 2026, from <a href="https://ranger.apache.org/">https://ranger.apache.org/</a>
</div>
<div id="ref-apacheSolr" class="csl-entry">
Apache Solr Project. (n.d.). <em>Welcome to apache solr</em>. Apache Software Foundation. Retrieved July 12, 2026, from <a href="https://solr.apache.org/">https://solr.apache.org/</a>
</div>
<div id="ref-apacheSpark" class="csl-entry">
Apache Spark Project. (n.d.). <em>Apache spark</em>. Apache Software Foundation. Retrieved July 12, 2026, from <a href="https://spark.apache.org/">https://spark.apache.org/</a>
</div>
<div id="ref-apacheSqoop2019" class="csl-entry">
Apache Sqoop Project. (2019). <em>Apache sqoop</em>. Apache Software Foundation. <a href="https://sqoop.apache.org/">https://sqoop.apache.org/</a>
</div>
<div id="ref-apacheStorm" class="csl-entry">
Apache Storm Project. (n.d.). <em>Apache storm</em>. Apache Software Foundation. Retrieved July 12, 2026, from <a href="https://storm.apache.org/">https://storm.apache.org/</a>
</div>
<div id="ref-apacheTez" class="csl-entry">
Apache Tez Project. (n.d.). <em>Welcome to apache tez</em>. Apache Software Foundation. Retrieved July 12, 2026, from <a href="https://tez.apache.org/">https://tez.apache.org/</a>
</div>
<div id="ref-brinPage1998" class="csl-entry">
Brin, S., &amp; Page, L. (1998). The anatomy of a large-scale hypertextual web search engine. <em>Computer Networks and ISDN Systems</em>, <em>30</em>(1–7), 107–117. <a href="https://research.google/pubs/the-anatomy-of-a-large-scale-hypertextual-web-search-engine/">https://research.google/pubs/the-anatomy-of-a-large-scale-hypertextual-web-search-engine/</a>
</div>
<div id="ref-btsOnTime" class="csl-entry">
Bureau of Transportation Statistics. (n.d.). <em>Airline on-time performance data</em>. U.S. Department of Transportation. Retrieved July 12, 2026, from <a href="https://transtats.bts.gov/DatabaseInfo.asp?QO_VQ=EFD">https://transtats.bts.gov/DatabaseInfo.asp?QO_VQ=EFD</a>
</div>
<div id="ref-camacho2019" class="csl-entry">
Camacho-Rodríguez, J., Chauhan, A., Gates, A., Koifman, E., O’Malley, O., Garg, V., Haindrich, Z., Shelukhin, S., Jayachandran, P., Seth, S., Jaiswal, D., Bouguerra, S., Bangarwa, N., Hariappan, S., Agarwal, A., Dere, J., Dai, D., Nair, T., Dembla, N., &amp; Vijayaraghavan, G. (2019). <em>Apache hive: From MapReduce to enterprise-grade big data warehousing</em>. <a href="https://arxiv.org/abs/1903.10970">https://arxiv.org/abs/1903.10970</a>
</div>
<div id="ref-clouderaManager" class="csl-entry">
Cloudera. (n.d.). <em>Monitoring a cluster using cloudera manager</em>. Retrieved July 12, 2026, from <a href="https://docs.cloudera.com/cdp-private-cloud-base/7.1.8/concepts/topics/cm-introduction-to-monitoring.html">https://docs.cloudera.com/cdp-private-cloud-base/7.1.8/concepts/topics/cm-introduction-to-monitoring.html</a>
</div>
<div id="ref-deanGhemawat2004" class="csl-entry">
Dean, J., &amp; Ghemawat, S. (2004). MapReduce: Simplified data processing on large clusters. <em>Proceedings of the 6th Symposium on Operating Systems Design and Implementation</em>, 137–150. <a href="https://www.usenix.org/conference/osdi-04/mapreduce-simplified-data-processing-large-clusters">https://www.usenix.org/conference/osdi-04/mapreduce-simplified-data-processing-large-clusters</a>
</div>
<div id="ref-dolev2019" class="csl-entry">
Dolev, S., Florissi, P., Gudes, E., Sharma, S., &amp; Singer, I. (2019). A survey on geographically distributed big-data processing using <span>MapReduce</span>. <em>IEEE Transactions on Big Data</em>, <em>5</em>(1), 60–80. <a href="https://doi.org/10.1109/TBDATA.2017.2723473">https://doi.org/10.1109/TBDATA.2017.2723473</a>
</div>
<div id="ref-elasticElasticsearch" class="csl-entry">
Elastic. (n.d.). <em>Elasticsearch: The official distributed search and analytics engine</em>. Retrieved July 12, 2026, from <a href="https://www.elastic.co/elasticsearch">https://www.elastic.co/elasticsearch</a>
</div>
<div id="ref-faaSwim" class="csl-entry">
Federal Aviation Administration. (n.d.). <em>System wide information management (SWIM)</em>. Retrieved July 12, 2026, from <a href="https://www.faa.gov/air_traffic/technology/swim">https://www.faa.gov/air_traffic/technology/swim</a>
</div>
<div id="ref-hopper1982" class="csl-entry">
Hopper, G. M. (1982). <em>Future possibilities: Data, hardware, software, and people</em> [Lecture transcript]. National Security Agency. <a href="https://media.defense.gov/2024/Nov/25/2003593626/-1/-1/0/PART%20ONE%20FUTURE%20POSSIBILITIES%20GRACE%20HOPPER%20TRANSCRIPT%20NO%20SUCH%20PODCAST%20NSA.PDF">https://media.defense.gov/2024/Nov/25/2003593626/-1/-1/0/PART%20ONE%20FUTURE%20POSSIBILITIES%20GRACE%20HOPPER%20TRANSCRIPT%20NO%20SUCH%20PODCAST%20NSA.PDF</a>
</div>
<div id="ref-lyman2003" class="csl-entry">
Lyman, P., &amp; Varian, H. R. (2003). <em>How much information? 2003</em>. University of California, Berkeley, School of Information Management; Systems. <a href="https://www.ischool.berkeley.edu/research/publications/2003/how-much-information-2003">https://www.ischool.berkeley.edu/research/publications/2003/how-much-information-2003</a>
</div>
<div id="ref-meng2016" class="csl-entry">
Meng, X., Bradley, J., Yavuz, B., Sparks, E., Venkataraman, S., Liu, D., Freeman, J., Tsai, D. B., Amde, M., Owen, S., Xin, D., Xin, R., Franklin, M. J., Zadeh, R., Zaharia, M., &amp; Talwalkar, A. (2016). MLlib: Machine learning in apache spark. <em>Journal of Machine Learning Research</em>, <em>17</em>(34), 1–7. <a href="https://www.jmlr.org/papers/v17/15-237.html">https://www.jmlr.org/papers/v17/15-237.html</a>
</div>
<div id="ref-mitKerberos" class="csl-entry">
MIT Kerberos Consortium. (n.d.). <em>Kerberos: The network authentication protocol</em>. Massachusetts Institute of Technology. Retrieved July 12, 2026, from <a href="https://web.mit.edu/kerberos/">https://web.mit.edu/kerberos/</a>
</div>
<div id="ref-mongodbModeling" class="csl-entry">
MongoDB. (n.d.). <em>Data modeling in MongoDB</em>. Retrieved July 12, 2026, from <a href="https://www.mongodb.com/docs/manual/data-modeling/">https://www.mongodb.com/docs/manual/data-modeling/</a>
</div>
<div id="ref-nwsAviation" class="csl-entry">
National Weather Service. (n.d.). <em>Aviation weather center</em>. National Oceanic; Atmospheric Administration. Retrieved July 12, 2026, from <a href="https://aviationweather.gov/">https://aviationweather.gov/</a>
</div>
<div id="ref-neo4j" class="csl-entry">
Neo4j. (n.d.). <em>Neo4j graph intelligence platform</em>. Retrieved July 12, 2026, from <a href="https://neo4j.com/">https://neo4j.com/</a>
</div>
<div id="ref-ongaroOusterhout2014" class="csl-entry">
Ongaro, D., &amp; Ousterhout, J. (2014). In search of an understandable consensus algorithm. <em>Proceedings of the 2014 USENIX Annual Technical Conference</em>, 305–319. <a href="https://www.usenix.org/conference/atc14/technical-sessions/presentation/ongaro">https://www.usenix.org/conference/atc14/technical-sessions/presentation/ongaro</a>
</div>
<div id="ref-openskyData" class="csl-entry">
OpenSky Network. (n.d.). <em>OpenSky network data</em>. Retrieved July 12, 2026, from <a href="https://opensky-network.org/data">https://opensky-network.org/data</a>
</div>
<div id="ref-reinsel2018" class="csl-entry">
Reinsel, D., Gantz, J., &amp; Rydning, J. (2018). <em>The digitization of the world from edge to core</em>. International Data Corporation. <a href="https://www.seagate.com/files/www-content/our-story/trends/files/idc-seagate-dataage-whitepaper.pdf">https://www.seagate.com/files/www-content/our-story/trends/files/idc-seagate-dataage-whitepaper.pdf</a>
</div>
<div id="ref-trinoConcepts" class="csl-entry">
Trino Software Foundation. (n.d.). <em>Trino concepts</em>. Retrieved July 12, 2026, from <a href="https://trino.io/docs/current/overview/concepts.html">https://trino.io/docs/current/overview/concepts.html</a>
</div>
<div id="ref-universitySheffieldCliveHumby" class="csl-entry">
University of Sheffield. (n.d.). <em>Clive humby</em>. Retrieved July 12, 2026, from <a href="https://sheffield.ac.uk/cs/people/academic-visitors/clive-humby">https://sheffield.ac.uk/cs/people/academic-visitors/clive-humby</a>
</div>
<div id="ref-verbraeken2020" class="csl-entry">
Verbraeken, J., Wolting, M., Katzy, J., Kloppenburg, J., Verbelen, T., &amp; Rellermeyer, J. S. (2020). A survey on distributed machine learning. <em>ACM Computing Surveys</em>, <em>53</em>(2). <a href="https://doi.org/10.1145/3377454">https://doi.org/10.1145/3377454</a>
</div>
<div id="ref-white2015" class="csl-entry">
White, T. (2015). <em>Hadoop: The definitive guide</em> (4th ed.). O’Reilly Media.
</div>
<div id="ref-zaharia2016" class="csl-entry">
Zaharia, M., Xin, R. S., Wendell, P., Das, T., Armbrust, M., Dave, A., Meng, X., Rosen, J., Venkataraman, S., Franklin, M. J., Ghodsi, A., Gonzalez, J., Shenker, S., &amp; Stoica, I. (2016). Apache spark: A unified engine for big data processing. <em>Communications of the ACM</em>, <em>59</em>(11), 56–65. <a href="https://doi.org/10.1145/2934664">https://doi.org/10.1145/2934664</a>
</div>
<div id="ref-zeng2023" class="csl-entry">
Zeng, X., Hui, Y., Shen, J., Pavlo, A., McKinney, W., &amp; Zhang, H. (2023). <em>An empirical evaluation of columnar storage formats</em>. <a href="https://arxiv.org/abs/2304.05028">https://arxiv.org/abs/2304.05028</a>
</div>
</div>
<div style="page-break-after: always;"></div>


</section>

 ]]></description>
  <category>tech</category>
  <category>hadoop</category>
  <category>big data</category>
  <category>data architecture</category>
  <guid>https://jonathanwil.com/blog/posts/tech/hadoop/hadoop-ecosystem-paper.html</guid>
  <pubDate>Sun, 12 Jul 2026 00:00:00 GMT</pubDate>
  <media:content url="https://jonathanwil.com/images/blog/tech/hadoop/aeroflux-hadoop-data-flow.png" medium="image" type="image/png" height="65" width="144"/>
</item>
<item>
  <title>Exploring Peru</title>
  <dc:creator>Jonathan Wilson</dc:creator>
  <link>https://jonathanwil.com/blog/posts/travel/peru.html</link>
  <description><![CDATA[ 




<section id="exploring-peru" class="level1">
<h1>Exploring Peru</h1>
<p>Peru had been on my travel list for a long time, largely because of Machu Picchu and the opportunity to hike through the Andes. What I did not fully appreciate before visiting was just how much variety the country offers. In a relatively short period, we experienced historic cities, enormous Inca ruins, glaciated mountains, high-altitude lakes, cloud forests, tropical vegetation, traditional markets, and some of the best food I have encountered while traveling.</p>
<p>The centerpiece of the trip was a five-day trek that combined portions of the Salkantay and Inca trails before ending at Machu Picchu. Altogether, we hiked roughly 50 miles through some of the most diverse landscapes I have ever seen.</p>
<p><img src="https://jonathanwil.com/images/travel/peru/machu-picchu-2.jpg" class="img-fluid" data-fig-cap="Machu Picchu was the final destination of our trek." alt="Machu Picchu viewed from above with green mountains in the background"></p>
<section id="cusco" class="level2">
<h2 class="anchored" data-anchor-id="cusco">Cusco</h2>
<p>Our journey began in Cusco, the historic capital of the Inca Empire. The city sits at approximately 3,400 meters, or 11,150 feet, above sea level, so it also served as our introduction to the effects of high altitude.</p>
<p>The altitude was noticeable, but it was not as bad as I expected. I did not feel sick when we arrived, although walking uphill or climbing stairs made it immediately apparent that less oxygen was available. Even relatively simple physical activities required more effort than they would at sea level.</p>
<p><img src="https://jonathanwil.com/images/travel/peru/cusco-city-from-mountain.jpg" class="img-fluid" data-fig-cap="Cusco viewed from the surrounding hills." alt="The city of Cusco viewed from the surrounding mountains"></p>
<p>Cusco is a fascinating combination of Inca foundations and Spanish colonial architecture. In many places, colonial buildings and churches were constructed directly on top of older Inca stonework. Walking around the city feels like moving through several periods of history at once.</p>
<p>Some of the places we visited included:</p>
<ul>
<li><strong>Plaza de Armas</strong> — Cusco’s central square, surrounded by colonial buildings, restaurants, shops, and historic churches.</li>
<li><strong>Cusco Cathedral</strong> — A massive colonial cathedral containing religious artwork and architecture built over earlier Inca foundations.</li>
<li><strong>Qorikancha</strong> — The former Inca Temple of the Sun, which was later incorporated into the Spanish Convent of Santo Domingo.</li>
<li><strong>Sacsayhuamán</strong> — An enormous Inca complex overlooking Cusco, known for its precisely fitted stone walls.</li>
<li><strong>Centro de Textiles Tradicionales del Cusco</strong> — A cultural center preserving traditional Andean weaving techniques and textile designs.</li>
<li><strong>San Pedro Market</strong> — A busy local market filled with produce, prepared food, fruit juices, spices, textiles, and everyday goods.</li>
</ul>
<p>We visited several additional ruins and cultural sites throughout Cusco and the surrounding region. One of the most impressive aspects of the Inca sites was the scale and precision of their stonework. Many of the stones are enormous, irregularly shaped, and fitted together so precisely that almost no space remains between them.</p>
<div class="quarto-layout-panel" data-layout-ncol="2">
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: center;">
<p><img src="https://jonathanwil.com/images/travel/peru/incan-ruins.jpg" class="img-fluid" alt="Large stone walls at an Inca ruin near Cusco"></p>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: center;">
<p><img src="https://jonathanwil.com/images/travel/peru/incan-ruins-2.jpg" class="img-fluid" alt="Historic Inca ruins surrounded by the Andes"></p>
</div>
</div>
</div>
</section>
<section id="the-sacred-valley" class="level2">
<h2 class="anchored" data-anchor-id="the-sacred-valley">The Sacred Valley</h2>
<p>We also traveled through the Sacred Valley, visiting areas such as Pisac and Ollantaytambo. The valley contains farmland, villages, mountains, archaeological sites, and terraces that demonstrate how effectively the Incas adapted to the mountainous terrain.</p>
<p><img src="https://jonathanwil.com/images/travel/peru/sacred-valley-peru.jpg" class="img-fluid" data-fig-cap="The Sacred Valley of the Incas." alt="Green agricultural land and mountains in Peru's Sacred Valley"></p>
<p>Ollantaytambo was especially memorable. The town still follows portions of its original Inca street plan and sits beneath an impressive archaeological complex built into the mountainside. It was also one of the major staging points for travelers heading toward the Inca Trail and Machu Picchu.</p>
</section>
<section id="the-salkantay-trek" class="level2">
<h2 class="anchored" data-anchor-id="the-salkantay-trek">The Salkantay Trek</h2>
<p>The most memorable part of the trip was our five-day trek through the Andes. The route covered roughly 50 miles and combined the Salkantay route with portions of the Inca Trail.</p>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Trek at a Glance
</div>
</div>
<div class="callout-body-container callout-body">
<ul>
<li><strong>Length:</strong> Approximately 50 miles</li>
<li><strong>Duration:</strong> Five days</li>
<li><strong>Highest point:</strong> Salkantay Pass at approximately 4,630 meters, or 15,190 feet</li>
<li><strong>Terrain:</strong> Mountain valleys, glaciated peaks, high-altitude passes, cloud forest, jungle, and Inca trails</li>
<li><strong>Final destination:</strong> Machu Picchu</li>
</ul>
</div>
</div>
<p>At the beginning of the trek, the landscape was open and mountainous, with distant glaciers and snow-covered peaks surrounding the trail.</p>
<p><img src="https://jonathanwil.com/images/travel/peru/starting-salkantay-treck.jpg" class="img-fluid" data-fig-cap="Starting the Salkantay Trek." alt="The beginning of the Salkantay trek through a mountain valley"></p>
<div class="quarto-layout-panel" data-layout-ncol="2">
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: center;">
<p><img src="https://jonathanwil.com/images/travel/peru/salkantay-mountain.jpg" class="img-fluid" alt="Salkantay Mountain rising above the trail"></p>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: center;">
<p><img src="https://jonathanwil.com/images/travel/peru/salkantay-mountain-1.jpg" class="img-fluid" alt="Snow-covered Salkantay Mountain beneath a blue sky"></p>
</div>
</div>
</div>
<section id="humantay-lake" class="level3">
<h3 class="anchored" data-anchor-id="humantay-lake">Humantay Lake</h3>
<p>One of our first major destinations was Humantay Lake, a turquoise glacial lake beneath the surrounding mountains. The climb to the lake was steep, especially while we were still adjusting to the altitude, but the view at the top made the effort worthwhile.</p>
<div class="quarto-layout-panel" data-layout-ncol="2">
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: center;">
<p><img src="https://jonathanwil.com/images/travel/peru/unmantay-lake.jpg" class="img-fluid" alt="Turquoise water at Humantay Lake beneath glaciated mountains"></p>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: center;">
<p><img src="https://jonathanwil.com/images/travel/peru/unmantay-mountain.jpg" class="img-fluid" alt="Humantay Mountain rising behind the hiking trail"></p>
</div>
</div>
</div>
</section>
<section id="crossing-salkantay-pass" class="level3">
<h3 class="anchored" data-anchor-id="crossing-salkantay-pass">Crossing Salkantay Pass</h3>
<p>The most difficult section was the climb to Salkantay Pass, the highest point of the trek at approximately 4,630 meters, or 15,190 feet.</p>
<p>The trail itself was manageable, but the altitude made every step more demanding. Near the pass, the air felt noticeably thinner, and maintaining a steady pace became more important than moving quickly.</p>
<p>Unfortunately, I also caught a virus during the trek. The illness was not caused by the altitude, but the fever and congestion made breathing at high elevation much more difficult. Reaching the pass while sick added an unexpected challenge, but it also made standing at the summit feel even more rewarding.</p>
<p><img src="https://jonathanwil.com/images/travel/peru/salkantay-pass-summit.jpg" class="img-fluid" data-fig-cap="Reaching Salkantay Pass at approximately 15,190 feet." alt="Standing near the summit of Salkantay Pass surrounded by mountains"></p>
<p><img src="https://jonathanwil.com/images/travel/peru/coming-down-from-salkantay-pass.jpg" class="img-fluid" data-fig-cap="Descending from the pass." alt="Descending from Salkantay Pass along a rocky mountain trail"></p>
<p>Overall, I would not describe the trek as excessively difficult for someone who is reasonably active. The biggest variable is the altitude. The distance and terrain require endurance, but the limited oxygen is what makes otherwise ordinary climbs feel much harder.</p>
</section>
</section>
<section id="from-glaciers-to-jungle" class="level2">
<h2 class="anchored" data-anchor-id="from-glaciers-to-jungle">From Glaciers to Jungle</h2>
<p>One of the most remarkable parts of the trek was how quickly the landscape changed. We began among glaciated mountains and high-altitude valleys, but after crossing the pass, we gradually descended into cloud forest and tropical rainforest.</p>
<p>Within a relatively short distance, the environment changed from rocky, cold, and exposed to warm, green, and humid.</p>
<div class="quarto-layout-panel" data-layout-ncol="2">
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: center;">
<p><img src="https://jonathanwil.com/images/travel/peru/mountain-sky-view.jpg" class="img-fluid" alt="Mountain peaks and dramatic clouds along the Salkantay route"></p>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: center;">
<p><img src="https://jonathanwil.com/images/travel/peru/hiking-jungles-of-peru.jpg" class="img-fluid" alt="Hiking through dense green vegetation in the Peruvian jungle"></p>
</div>
</div>
</div>
<p>We saw a surprising amount of wildlife along the way, including insects, birds, and other animals adapted to the different elevations. One of the more unusual sightings was a high-altitude tarantula that our guide identified along the trail.</p>
<p>We also passed farms growing coffee, cacao, passion fruit, sugar cane, and other tropical crops. Being able to see and taste food directly where it was grown made this portion of the trip especially memorable.</p>
<p><img src="https://jonathanwil.com/images/travel/peru/passion-fruit.jpg" class="img-fluid" alt="Fresh passion fruit opened along the trail"></p>
</section>
<section id="coffee-and-chocolate" class="level2">
<h2 class="anchored" data-anchor-id="coffee-and-chocolate">Coffee and Chocolate</h2>
<p>During the lower-elevation portion of the trek, we participated in a coffee-making experience. We started with raw coffee beans and worked through several of the steps involved in preparing them.</p>
<p><img src="https://jonathanwil.com/images/travel/peru/coffee-tree.jpg" class="img-fluid" alt="Coffee cherries growing on a coffee tree"></p>
<p><img src="https://jonathanwil.com/images/travel/peru/making-coffee.jpg" class="img-fluid" data-fig-cap="Preparing coffee from locally grown beans." alt="Roasting and preparing coffee beans by hand"></p>
<p>We also tasted raw cacao beans and learned more about how cacao is transformed into chocolate. Raw cacao tastes very different from the finished chocolate most people are familiar with, making it interesting to experience the ingredient closer to its original form.</p>
<p><img src="https://jonathanwil.com/images/travel/peru/coco-beans.jpg" class="img-fluid" alt="Fresh cacao beans removed from a cacao pod"></p>
</section>
<section id="life-on-the-trail" class="level2">
<h2 class="anchored" data-anchor-id="life-on-the-trail">Life on the Trail</h2>
<p>The trekking company handled nearly all of the logistics. Our group had a guide, two chefs, and mules that carried much of the equipment between camps. At night, we stayed in a mixture of small lodges and glamping-style accommodations rather than carrying and setting up traditional tents ourselves.</p>
<p>The level of support made the trip considerably more comfortable than I originally expected. Meals were prepared for us each day, transportation was coordinated, and our guide explained the history, geography, plants, and cultural significance of the places we encountered.</p>
<p>Our guide also regularly chewed coca leaves. Coca has a long history in Andean culture and is commonly used by people living and working at high elevations. The leaves are also used in tea and are believed to help people manage fatigue and some of the effects of altitude.</p>
<p>There was a running joke that the Incas managed to build their enormous mountain complexes with a little help from coca leaves. Joking aside, the plant clearly has a deep cultural significance that goes far beyond its association with cocaine.</p>
</section>
<section id="the-inca-trail" class="level2">
<h2 class="anchored" data-anchor-id="the-inca-trail">The Inca Trail</h2>
<p>As we moved closer to Machu Picchu, portions of the route joined historic Inca trails. Hiking these sections provided a better appreciation for the scale of the Inca road system and the difficulty of building paths through such steep terrain.</p>
<p><img src="https://jonathanwil.com/images/travel/peru/inca-train-jungle.jpg" class="img-fluid" alt="A railway passing through the jungle near the Inca Trail"></p>
<p>At several points, we could see Machu Picchu in the distance before reaching the site itself. After several days of hiking, seeing it appear across the mountains made the destination feel much more significant than arriving by train or bus alone.</p>
<p><img src="https://jonathanwil.com/images/travel/peru/machu-picchu-in-distance.jpg" class="img-fluid" alt="Machu Picchu visible in the distance between the mountains"></p>
<p><img src="https://jonathanwil.com/images/travel/peru/looking-man-machu-picchu-distance.jpg" class="img-fluid" data-fig-cap="Our first distant views of Machu Picchu." alt="A hiker looking toward Machu Picchu in the distance"></p>
</section>
<section id="aguas-calientes" class="level2">
<h2 class="anchored" data-anchor-id="aguas-calientes">Aguas Calientes</h2>
<p>Before entering Machu Picchu, we spent time in Aguas Calientes, the primary town serving visitors to the archaeological site. The town sits in a narrow valley surrounded by steep, forested mountains, with a river and railway running through it.</p>
<p><img src="https://jonathanwil.com/images/travel/peru/train-to-aguas-calientes.jpg" class="img-fluid" alt="Train traveling toward Aguas Calientes through the mountains"></p>
<p><img src="https://jonathanwil.com/images/travel/peru/aguas-calientes-peru.jpg" class="img-fluid" data-fig-cap="Aguas Calientes, the gateway to Machu Picchu." alt="Buildings and mountains in Aguas Calientes, Peru"></p>
<p>The train system connecting the region also provides some incredible views as it winds between the mountains and follows the river toward Aguas Calientes.</p>
</section>
<section id="machu-picchu" class="level2">
<h2 class="anchored" data-anchor-id="machu-picchu">Machu Picchu</h2>
<p>Machu Picchu was the culmination of the trek and the place I had most anticipated seeing. Photographs capture its basic shape, but they do not fully communicate how dramatically the site is positioned within the surrounding mountains.</p>
<p>The combination of architecture, elevation, terraces, clouds, and steep green peaks makes the entire setting feel almost unreal.</p>
<div class="quarto-layout-panel" data-layout-ncol="2">
<div class="quarto-layout-row">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: center;">
<p><img src="https://jonathanwil.com/images/travel/peru/machu-picchu-1.jpg" class="img-fluid" alt="Stone structures and terraces at Machu Picchu"></p>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: center;">
<p><img src="https://jonathanwil.com/images/travel/peru/machu-picchu-3.jpg" class="img-fluid" alt="A wide view of Machu Picchu and the surrounding mountains"></p>
</div>
</div>
</div>
<p>Walking through the site also makes it easier to appreciate its complexity. Machu Picchu was not simply a collection of stone buildings. It incorporated agricultural terraces, water systems, residences, ceremonial spaces, stairways, and carefully planned pathways throughout a steep mountain environment.</p>
<p><img src="https://jonathanwil.com/images/travel/peru/machu-picchu-4.jpg" class="img-fluid" alt="Terraces and stone buildings within Machu Picchu"></p>
<p>After hiking for several days, reaching Machu Picchu on foot made the experience feel like the conclusion of a much larger journey rather than a single sightseeing stop.</p>
</section>
<section id="rainbow-mountain-and-the-red-valley" class="level2">
<h2 class="anchored" data-anchor-id="rainbow-mountain-and-the-red-valley">Rainbow Mountain and the Red Valley</h2>
<p>Another major excursion was Rainbow Mountain and the nearby Red Valley. Rainbow Mountain reaches approximately 5,036 meters, or 16,522 feet, making it one of the highest elevations we reached during the trip.</p>
<p><img src="https://jonathanwil.com/images/travel/peru/rainbow-mountain.jpg" class="img-fluid" data-fig-cap="Rainbow Mountain at approximately 16,522 feet." alt="The colorful mineral layers of Rainbow Mountain beneath a blue sky"></p>
<p>The altitude was again the greatest challenge. Even after spending several days in the mountains, walking uphill at more than 16,000 feet required a slow and deliberate pace.</p>
<p>The neighboring Red Valley was equally impressive and, in some ways, even more striking. The landscape contained broad red slopes and ridgelines that looked almost like another planet.</p>
<p><img src="https://jonathanwil.com/images/travel/peru/red-valley-peru.jpg" class="img-fluid" data-fig-cap="The Red Valley near Rainbow Mountain." alt="Red mountains and valleys near Rainbow Mountain"></p>
</section>
<section id="food-in-peru" class="level2">
<h2 class="anchored" data-anchor-id="food-in-peru">Food in Peru</h2>
<p>Food was another major part of the experience. We tried a wide range of dishes and ingredients, including:</p>
<ul>
<li>Alpaca</li>
<li>Guinea pig, traditionally known as <em>cuy</em></li>
<li>Several varieties of ceviche</li>
<li>Fresh tropical fruit</li>
<li>Raw cacao beans</li>
<li>Locally grown coffee</li>
<li>Sugar cane</li>
<li>Inka Cola</li>
<li>Coca tea and coca leaves</li>
</ul>
<p>The ceviche in Lima was some of the best I have ever had. It was extremely fresh, bright, acidic, and very different from many versions I had tried previously.</p>
<p>Guinea pig was one of the most unusual foods we sampled. It had a flavor and texture unlike anything I had eaten before. It was not necessarily something I would order regularly, but I am glad I tried it as part of the cultural experience.</p>
<p><img src="https://jonathanwil.com/images/travel/peru/eating-guinea-pig.jpg" class="img-fluid" alt="Trying a traditional guinea pig dish in Peru"></p>
<p><img src="https://jonathanwil.com/images/travel/peru/guinea-pig-place.jpg" class="img-fluid" alt="Restaurant serving traditional guinea pig dishes"></p>
<p>San Pedro Market in Cusco was one of the best places to explore local food at an affordable price. The market offered fruit, juices, soups, meats, baked goods, spices, and prepared meals alongside textiles and household products.</p>
</section>
<section id="inti-raymi-and-andean-culture" class="level2">
<h2 class="anchored" data-anchor-id="inti-raymi-and-andean-culture">Inti Raymi and Andean Culture</h2>
<p>We also experienced some of the celebrations surrounding <strong>Inti Raymi</strong>, or the Festival of the Sun, which takes place every June. The festival celebrates the Inca sun god and remains one of Cusco’s most important annual cultural events.</p>
<p>Throughout the trip, we encountered traditions connected to weaving, farming, food, music, clothing, and religious practice. Visiting the textile center and seeing how alpaca wool is processed and woven helped illustrate the amount of skill involved in creating traditional Andean clothing.</p>
<p>We also had opportunities to feed alpacas and learn more about how alpaca fiber is cleaned, dyed, spun, and turned into clothing and textiles.</p>
</section>
<section id="trekking-company" class="level2">
<h2 class="anchored" data-anchor-id="trekking-company">Trekking Company</h2>
<p>For anyone interested in completing a similar trip, we used <a href="https://www.salkantaytrekking.com/">Salkantay Trekking</a>.</p>
<p>The company was professional and well organized, especially compared with some of the other trekking operations we observed along the route. Transportation, accommodations, food, entrance arrangements, and guides were coordinated in advance, which allowed us to focus on the experience itself.</p>
<p>Our guide was knowledgeable about the trail, Inca history, local culture, wildlife, and plant life. The chefs also managed to prepare surprisingly elaborate meals despite working from temporary kitchens along the trail.</p>
<p>The company offers several different packages and routes. Our experience included glamping-style accommodations, while some versions of the traditional Inca Trail involve more basic backcountry camping conditions. I originally expected our accommodations to be much more rugged, so the level of comfort was a pleasant surprise.</p>
</section>
<section id="final-thoughts" class="level2">
<h2 class="anchored" data-anchor-id="final-thoughts">Final Thoughts</h2>
<p>Peru was one of the most varied trips I have taken. Within a relatively small geographic area, we moved from colonial cities and ancient ruins to glaciers, high-altitude mountain passes, cloud forests, tropical farms, and dense jungle.</p>
<p>The altitude, illness, and long days of hiking made portions of the trip challenging, but those difficulties also made the experience more memorable. Reaching Salkantay Pass, seeing Machu Picchu emerge in the distance, preparing coffee from locally grown beans, and walking through landscapes that changed almost daily were all experiences I will remember for a long time.</p>
<p>Machu Picchu may have been the destination, but the journey through Peru was what made the trip truly meaningful.</p>


</section>
</section>

 ]]></description>
  <category>travel</category>
  <guid>https://jonathanwil.com/blog/posts/travel/peru.html</guid>
  <pubDate>Tue, 16 Jun 2026 00:00:00 GMT</pubDate>
  <media:content url="https://jonathanwil.com/images/travel/peru/machu-picchu-2.jpg" medium="image" type="image/jpeg"/>
</item>
</channel>
</rss>
