Az Apache Hadoop YARN egy Hadoop alprojekt, amit a 2.x-s Hadoop verzióban emeltek a Core szolgáltatások közé. Röviden: a YARN segítségével szétválaszthatóvá váltak a MapReduce erőforrás-menedzsment és adatfeldolgozási funkciói.
Az alprojektet az az igény hívta életre, hogy a Hadoop egyre növekvő számú felhasználói szükségesnek tartották, hogy minél szélesebb körű alkalmazásokkal lehessen a HDFS-ben tárolt adatokat elérni, ez ne korlátozódjon kizárólag a MapReduce-ra. Egy vállalat számára, amikor az adatok elérhetővé válnak a HDFS-ben, fontos, hogy különböző módokon lehessen a tárolt adatokat feldolgozni.
A MapReduce továbbfejlesztésének alapköve a JobTracker/TaskTracker két fő funkcionalitásának, az erőforrás menedzsment valamint a feladat ütemezés és monitorozás szétválasztása volt. Az ötlet arról szólt, hogy fusson egy (klaszter szintű) globális erőforrásmenedzser (ResourceManager), valamint működjenek alkalmazásonként több node-on is futó Container-ek, melyek közül egy kiemelt jelentőséggel bír, az ApplicationMaster. (Ebben a megfogalmazásban egy alkalmazás lehet egy MapReduce megközelítésben értelmezett egyszerű job, vagy több job összefüggő rendszert alkalmazó halmaza is.)
A ResourceManager és a node-okon futó NodeManager alkotja az adatfeldolgozó keretrendszert, amiben a ResourceManager a végső erőforrás-szabályozó egység, ami biztosítja az optimális erőforráselosztást a klaszter alkalmazásai között.
Az alkalmazás-szintű ApplicationMaster a valóságban a ResourceManager és NodeManager deamon-okkal működik együtt, erőforrást igényel a ResourceManager-től, és utasítja a NodeManagert-t a szükséges feladatok végrehajtására, egyúttal felügyeli azok végrehajtását.
A ResourceManager két fő eleme az ütemező (Scheduler) és az alkalmazásmenedzser (ApplicationsManager) funkciókat megvalósító komponensek.
A Scheduler felelős az erőforrásallokációért a különböző futó alkalmazások számára. Tisztán ütemező feladatot lát el abból a szempontból, hogy nem rendelkezik monitoring funkcióval, így nem követi az alkalmazások státuszát. Nem garantálja az alkalmazási vagy hardver hibák miatt hibára futott feladatok újraindulását. A Scheduler az ütemezési feladatát kizárólag az egyes alkalmazások erőforrásszükségletei alapján végzi.
Az ApplicationManager felelős a job-ok fogadásáért, az alkalmazás-specifikus ApplicationMaster-t futtató node kijelöléséért, hiba esetén annak újraindításáért.
A NodeManager egy olyan keretalkalmazás, ami minden node-on fut, és saját hardver erőforrás-kihasználtságának monitorozásáért felel, amit folyamatosan riportál a ResourceManager-nek is.
A YARN így egy generikus keretrendszert biztosít a HDFS-ben tárolt adatokhoz való hozzáféréshez, amit az alkalmazás-fejlesztők API-n keresztül tudnak elérni.
A YARN-ról, egészen jól összeszedve, részletesebb információ elérhető a Hortonworks csapat blogján is.