Apache Hadoop YARN: Moving beyond MapReduce and Batch Processing with Apache Hadoop 2 (2014)
Apache Hadoop has a rich and long history. It’s come a long way since its birth in the middle of the first decade of this millennium—from being merely an infrastructure component for a niche use-case (web search), it’s now morphed into a compelling part of a modern data architecture for a very wide spectrum of the industry. Apache Hadoop owes its success to many factors: the community housed at the Apache Software Foundation; the timing (solving an important problem at the right time); the extensive early investment done by Yahoo! in funding its development, hardening, and large-scale production deployments; and the current state where it’s been adopted by a broad ecosystem. In hindsight, its success is easy to rationalize.
On a personal level, Vinod and I have been privileged to be part of this journey from the very beginning. It’s very rare to get an opportunity to make such a wide impact on the industry, and even rarer to do so in the slipstream of a great wave of a community developing software in the open—a community that allowed us to share our efforts, encouraged our good ideas, and weeded out the questionable ones. We are very proud to be part of an effort that is helping the industry understand, and unlock, a significant value from data.
YARN is an effort to usher Apache Hadoop into a new era—an era in which its initial impact is no longer a novelty and expectations are significantly higher, and growing. At Hortonworks, we strongly believe that at least half the world’s data will be touched by Apache Hadoop. To those in the engine room, it has been evident, for at least half a decade now, that Apache Hadoop had to evolve beyond supporting MapReduce alone. As the industry pours all its data into Apache Hadoop HDFS, there is a real need to process that data in multiple ways: real-time event processing, human-interactive SQL queries, batch processing, machine learning, and many others. Apache Hadoop 1.0 was severely limiting; one could store data in many forms in HDFS, but MapReduce was the only algorithm you could use to natively process that data.
YARN was our way to begin to solve that multidimensional requirement natively in Apache Hadoop, thereby transforming the core of Apache Hadoop from a one-trick “batch store/process” system into a true multiuse platform. The crux was the recognition that Apache Hadoop MapReduce had two facets: (1) a core resource manager, which included scheduling, workload management, and fault tolerance; and (2) a user-facing MapReduce framework that provided a simplified interface to the end-user that hid the complexity of dealing with a scalable, distributed system. In particular, the MapReduce framework freed the user from having to deal with gritty details of fault tolerance, scalability, and other issues. YARN is just realization of this simple idea. With YARN, we have successfully relegated MapReduce to the role of merely one of the options to process data in Hadoop, and it now sits side-by-side by other frameworks such as Apache Storm (real-time event processing), Apache Tez (interactive query backed), Apache Spark (in-memory machine learning), and many more.
Distributed systems are hard; in particular, dealing with their failures is hard. YARN enables programmers to design and implement distributed frameworks while sharing a common set of resources and data. While YARN lets application developers focus on their business logic by automatically taking care of thorny problems like resource arbitration, isolation, cluster health, and fault monitoring, it also needs applications to act on the corresponding signals from YARN as they see fit. YARN makes the effort of building such systems significantly simpler by dealing with many issues with which a framework developer would be confronted; the framework developer, at the same time, still has to deal with the consequences on the framework in a framework-specific manner.
While the power of YARN is easily comprehensible, the ability to exploit that power requires the user to understand the intricacies of building such a system in conjunction with YARN. This book aims to reconcile that dichotomy.
The YARN project and the Apache YARN community have come a long way since their beginning. Increasingly more applications are moving to run natively under YARN and, therefore, are helping users process data in myriad ways. We hope that with the knowledge gleaned from this book, the reader can help feed that cycle of enablement so that individuals and organizations alike can take full advantage of the data revolution with the applications of their choice.
—Arun C. Murthy
Focus of the Book
This book is intended to provide detailed coverage of Apache Hadoop YARN’s goals, its design and architecture and how it expands the Apache Hadoop ecosystem to take advantage of data at scale beyond MapReduce. It primarily focuses on installation and administration of YARN clusters, on helping users with YARN application development and new frameworks that run on top of YARN beyond MapReduce.
Please note that this book is not intended to be an introduction to Apache Hadoop itself. We assume that the reader has a working knowledge of Hadoop version 1, writing applications on top of the Hadoop MapReduce framework, and the architecture and usage of the Hadoop Distributed FileSystem. Please see the book webpage (http://yarn-book.com) for a list of introductory resources. In future editions of this book, we hope to expand our material related to the MapReduce application framework itself and how users can design and code their own MapReduce applications.
In Chapter 1, “Apache Hadoop YARN: A Brief History and Rationale,” we provide a historical account of why and how Apache Hadoop YARN came about. Chapter 2, “Apache Hadoop YARN Install Quick Start,” gives you a quick-start guide for installing and exploring Apache Hadoop YARN on a single node. Chapter 3, “Apache Hadoop YARN Core Concepts,” introduces YARN and explains how it expands Hadoop ecosystem. A functional overview of YARN components then appears in Chapter 4, “Functional Overview of YARN Components,” to get the reader started.
Chapter 5, “Installing Apache Hadoop YARN,” describes methods of installing YARN. It covers both a script-based manual installation as well as a GUI-based installation using Apache Ambari. We then cover information about administration of YARN clusters in Chapter 6, “Apache Hadoop YARN Administration.”
A deep dive into YARN’s architecture occurs in Chapter 7, “Apache Hadoop YARN Architecture Guide,” which should give the reader an idea of the inner workings of YARN. We follow this discussion with an exposition of the Capacity scheduler in Chapter 8, “Capacity Scheduler in YARN.”
Chapter 9, “MapReduce with Apache Hadoop YARN,” describes how existing MapReduce-based applications can work on and take advantage of YARN. Chapter 10, “Apache Hadoop YARN Application Example,” provides a detailed walk-through of how to build a YARN application by way of illustrating a working YARN application that creates a JBoss Application Server cluster. Chapter 11, “Using Apache Hadoop YARN Distributed-Shell,” describes the usage and innards of distributed shell, the canonical example application that is built on top of and ships with YARN.
One of the most exciting aspects of YARN is its ability to support multiple programming models and application frameworks. We conclude with Chapter 12, “Apache Hadoop YARN Frameworks,” a brief survey of emerging open-source frameworks that are being developed to run under YARN.
Appendices include Appendix A, “Supplemental Content and Code Downloads”; Appendix B, “YARN Installation Scripts”; Appendix C, “YARN Administration Scripts”; Appendix D, “Nagios Modules”; Appendix E, “Resources and Additional Information”; and Appendix F, “HDFS Quick Reference.”
Code is displayed in a monospaced font. Code lines that wrap because they are too long to fit on one line in this book are denoted with this symbol: .
Additional Content and Accompanying Code
Please see Appendix A, “Supplemental Content and Code Downloads,” for the location of the book webpage (http://yarn-book.com). All code and configuration files used in this book can be downloaded from this site. Check the website for new and updated content including “Description of Apache Hadoop YARN Configuration Properties” and “Apache Hadoop YARN Troubleshooting Tips.”