

{"id":1271,"date":"2016-12-13T06:10:13","date_gmt":"2016-12-13T06:10:13","guid":{"rendered":"http:\/\/data-flair.training\/blogs\/?p=1271"},"modified":"2021-05-19T18:24:24","modified_gmt":"2021-05-19T12:54:24","slug":"hadoop-yarn-tutorial","status":"publish","type":"post","link":"https:\/\/data-flair.training\/blogs\/hadoop-yarn-tutorial\/","title":{"rendered":"Hadoop Yarn Tutorial for Beginners"},"content":{"rendered":"<p>This <strong>Hadoop<\/strong> Yarn tutorial will take you through all the aspects of Apache Hadoop Yarn like Yarn introduction, Yarn Architecture, Yarn nodes\/daemons &#8211; resource manager and node manager. In this tutorial, we will discuss various Yarn features, characteristics, and High availability modes.<\/p>\n<h2>Hadoop Yarn Tutorial &#8211; Introduction<\/h2>\n<p><strong>Apache Yarn<\/strong> &#8211; &#8220;<strong>Y<\/strong>et <strong>A<\/strong>nother <strong>R<\/strong>esource <strong>N<\/strong>egotiator&#8221; is the resource management layer of <strong>Hadoop<\/strong>. The Yarn was introduced in Hadoop 2.x.<\/p>\n<p>Yarn allows different data processing engines like graph processing, interactive processing, stream processing as well as batch processing to run and process data stored in<strong> HDFS<\/strong>\u00a0(Hadoop Distributed File System). Apart from resource management, Yarn also does job Scheduling.<\/p>\n<p>Yarn extends the power of Hadoop to other evolving technologies, so they can take the advantages of HDFS (most reliable and popular storage system on the planet) and economic cluster. To learn installation of Apache Hadoop 2 with Yarn follows this quick installation guide.<\/p>\n<div id=\"attachment_1272\" style=\"width: 850px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/12\/hadoop-yarn-architecture-tutorial-s.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1272\" class=\"wp-image-1272 size-full\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/12\/hadoop-yarn-architecture-tutorial-s.png\" alt=\"hadoop yarn architecture tutorial\" width=\"840\" height=\"283\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/12\/hadoop-yarn-architecture-tutorial-s.png 840w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/12\/hadoop-yarn-architecture-tutorial-s-150x51.png 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/12\/hadoop-yarn-architecture-tutorial-s-300x101.png 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/12\/hadoop-yarn-architecture-tutorial-s-768x259.png 768w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><\/a><p id=\"caption-attachment-1272\" class=\"wp-caption-text\">hadoop yarn architecture tutorial<\/p><\/div>\n<p>Apache yarn is also a data operating system for Hadoop 2.x. This architecture of Hadoop 2.x provides a general purpose data processing platform which is not just limited to the <strong>MapReduce<\/strong>.<\/p>\n<p>It enables Hadoop to process other purpose-built data processing system other than MapReduce. It allows running several different frameworks on the same hardware where Hadoop is deployed.<\/p>\n<h2>Hadoop Yarn Architecture<\/h2>\n<div id=\"attachment_2414\" style=\"width: 1546px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2017\/05\/Apache-YARN-architecture-min.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2414\" class=\"wp-image-2414 size-full\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2017\/05\/Apache-YARN-architecture-min.jpg\" alt=\"Apache YARN architecture\" width=\"1536\" height=\"864\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2017\/05\/Apache-YARN-architecture-min.jpg 1536w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2017\/05\/Apache-YARN-architecture-min-150x84.jpg 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2017\/05\/Apache-YARN-architecture-min-300x169.jpg 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2017\/05\/Apache-YARN-architecture-min-768x432.jpg 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2017\/05\/Apache-YARN-architecture-min-1024x576.jpg 1024w\" sizes=\"auto, (max-width: 1536px) 100vw, 1536px\" \/><\/a><p id=\"caption-attachment-2414\" class=\"wp-caption-text\">Hadoop YARN architecture<\/p><\/div>\n<p>In this section of Hadoop Yarn tutorial, we will discuss the complete architecture of Yarn. Apache Yarn Framework consists of a master daemon known as \u201cResource Manager\u201d, slave daemon called node manager (one per slave node) and Application Master (one per application).<\/p>\n<h3>1. Resource Manager (RM)<\/h3>\n<p>It is the master daemon of Yarn. RM manages the global assignments of resources (CPU and memory) among all the applications. It arbitrates system resources between competing applications.\u00a0follow Resource Manager\u00a0guide\u00a0to learn Yarn Resource manager in great detail.<\/p>\n<p>Resource Manager has two Main components:<\/p>\n<ul>\n<li>Scheduler<\/li>\n<li>Application manager<\/li>\n<\/ul>\n<h4>a) Scheduler<\/h4>\n<p>The scheduler is responsible for allocating the resources to the running application. The scheduler is pure scheduler it means that it performs no monitoring no tracking for the application and even doesn\u2019t guarantees about restarting failed tasks either due to application failure or hardware failures.<\/p>\n<h4>b) Application Manager<\/h4>\n<p>It manages running Application Masters in the cluster, i.e., it is responsible for starting application masters and for monitoring and restarting them on different nodes in case of failures.<\/p>\n<h3>2. Node Manager (NM)<\/h3>\n<p>It is the slave daemon of Yarn. NM is responsible for containers monitoring their resource usage and reporting the same to the ResourceManager. Manage the user process on that machine. Yarn NodeManager also tracks the health of the node on which it is running. The design also allows plugging long-running auxiliary services to the NM; these are application-specific services, specified as part of the configurations and loaded by the NM during startup. A\u00a0shuffle is a typical auxiliary service by the NMs for MapReduce applications on YARN<\/p>\n<h3>3. Application Master (AM)<\/h3>\n<p>One application master runs per application. It negotiates resources from the resource manager and works with the node manager. It Manages the application life cycle.<\/p>\n<p>The AM acquires containers from the RM\u2019s Scheduler before contacting the corresponding NMs to start the application\u2019s individual tasks.<\/p>\n<h2>Resource Manager Restart<\/h2>\n<p>Resource Manager is the central authority that manages resources and schedules applications running on YARN. Hence, it is potentially an SPOF in an Apache YARN cluster.<br \/>\nThere are two types of restart for Resource Manager:<\/p>\n<ul>\n<li><strong>Non-work-preserving RM restart &#8211;\u00a0<\/strong>This restart enhances RM to persist application\/attempt state in a pluggable state-store. Resource Manager will reload the same info from state-store on the restart and re-kick the previously running apps. Users does not need to re-submit the applications. Node manager and clients during down time of RM will keep polling RM until RM comes up, when RM comes up, it will send a re-sync command to all the NM and AM it was talking to via heartbeats. The NMs will kill all its manager&#8217;s containers and re-register with RM<\/li>\n<li><strong>Work-preserving RM restart &#8211;<\/strong>\u00a0This focuses on reconstructing the running state of RM by combining the container status from Node Managers and container requests from Application Masters on restart. The key difference from Non-work-preserving RM restart is that already\u00a0running apps will not be stopped after master\u00a0restarts, so applications will not lose its processed data\u00a0because of RM\/master outage. RM recovers its running state by taking advantage of container status which is sent from all the node managers. NM will not kill the containers when it re-syncs with the restarted RM. It continues managing the containers and sends the container status across to RM when it re-registers.<\/li>\n<\/ul>\n<h2>Yarn Resource Manager High availability<\/h2>\n<p>The ResourceManager (master) is responsible for handling\u00a0the resources in a cluster, and scheduling multiple applications (e.g.,<strong> spark <\/strong>apps or MapReduce). Before\u00a0to Hadoop v2.4, the master (RM)\u00a0was the SPOF (single point of failure).<\/p>\n<p>The High Availability feature adds redundancy in the form of an Active\/Standby ResourceManager pair to remove this otherwise single point of failure.<\/p>\n<p>ResourceManager HA is realized through an Active\/Standby architecture \u2013 at any point in time, one in the masters\u00a0is Active, and other\u00a0Resource Managers are in Standby mode, they are waiting to take over when anything happens to the Active.<\/p>\n<p>The trigger to transition-to-active comes from either the admin (through CLI) or through the integrated failover-controller when automatic failover is enabled.<\/p>\n<h3>1. Manual transitions and failover<\/h3>\n<p>When automatic failover is not configured, admins have to manually transit one of the Resource managers to the active state.<\/p>\n<p>Failover from active\u00a0master to the other, they are expected to transmit the active master\u00a0to standby and transmit a Standby-RM to Active. Hence, this activity\u00a0can be done using the yarn.<\/p>\n<h3>2. Automatic failover<\/h3>\n<p>In this case, there is no need for any manual intervention. The master has an option to embed the Zookeeper (a coordination engine) based ActiveStandbyElector to decide which Resource Manager should be the Active.<\/p>\n<p>When the active fails, another Resource Manager is automatically selected to be active. Note that, there is no need to run a separate zookeeper\u00a0daemon because ActiveStandbyElector embedded in Resource Managers acts as a failure detector and a leader elector instead of a separate ZKFC daemon.<\/p>\n<h2>Yarn Web Application Proxy<\/h2>\n<p>It is also the part of Yarn. By default, it runs as a part of RM but we can configure and run in a standalone mode. Hence, the reason of the proxy is to reduce the possibility of the web-based attack through Yarn.<\/p>\n<p>In Yarn, the AM has a responsibility to provide a web UI and send that link to RM.<\/p>\n<p>RM runs as trusted user, and provide visiting that web address will treat it and link it provides to them as trusted when in reality the AM is running as non-trusted user, application Proxy mitigate this risk by warning the user that they are connecting to an untrusted site.<\/p>\n<h2>Yarn Docker Container Executor<\/h2>\n<p>Docker combines an easy to use interface to<strong> Linux<\/strong> container with easy to construct files for those containers. Docker generates light weighted virtual machine. The Docker Container Executor allows the Yarn NodeManager to launch yarn container to Docker container.<\/p>\n<p>Hence, these containers provide a custom software environment in which user\u2019s code run, isolated from a software environment of NodeManager.<\/p>\n<p>Hence, Docker for YARN provides both consistency (all YARN containers will have similar\u00a0environment) and isolation (no interference with other components\u00a0installed on the same machine).<\/p>\n<h2>Yarn Timeline Server<\/h2>\n<p>The storage and retrieval of application\u2019s current and historic information in a generic fashion is addressed by the timeline service in Yarn.<\/p>\n<h3>1. Persisting application specific information<\/h3>\n<p>The collection or retrieval of information completely specific to a specific application or framework. For Example, Hadoop MapReduce framework consists the pieces of information about the map task, reduce task and counters.<\/p>\n<p>Application developer publishes their specific information to the Timeline Server via TimeLineClient in the application Master or application container.<\/p>\n<h3>2. Persisting general information about completed applications<\/h3>\n<p>Generic information includes application-level data such as:<\/p>\n<ul>\n<li>Queue-name<\/li>\n<li>User information and the like set in the ApplicationSubmissionContext<\/li>\n<li>Info about each application-attempt<\/li>\n<li>A list of application-attempts that ran for an application<\/li>\n<li>The list of containers run under each application-attempt<\/li>\n<li>Information about each container<\/li>\n<\/ul>\n<h2>Yarn Timeline service version 2<\/h2>\n<p>It is the major iteration of the timeline server. Thus, V2 addresses two major challenges:<\/p>\n<ul>\n<li>The previous version does not well scale up beyond small cluster.<\/li>\n<li>And single instance available for the write and read.<\/li>\n<\/ul>\n<p>Hence, In the v2 there is a different collector for write and read, it uses distributed collector, one collector for each Yarn application.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This Hadoop Yarn tutorial will take you through all the aspects of Apache Hadoop Yarn like Yarn introduction, Yarn Architecture, Yarn nodes\/daemons &#8211; resource manager and node manager. In this tutorial, we will discuss&#46;&#46;&#46;<\/p>\n","protected":false},"author":7,"featured_media":43090,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[75],"tags":[5350,5352,16320,16321,16326,16328,16329,16330,16331],"class_list":["post-1271","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-yarn","tag-hadoop-yarn","tag-hadoop-yarn-tutorial","tag-yarn","tag-yarn-architecture","tag-yarn-ha","tag-yarn-introduction","tag-yarn-node-manager","tag-yarn-resource-manager","tag-yarn-tutorial"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Hadoop Yarn Tutorial for Beginners - DataFlair<\/title>\n<meta name=\"description\" content=\"Hadoop Yarn Tutorial- Yarn Architecture, YARN node manager,YARN resource manager,YARN Application Master,Yarn Timeline server,Yarn Docker Container Executor\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/data-flair.training\/blogs\/hadoop-yarn-tutorial\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hadoop Yarn Tutorial for Beginners - DataFlair\" \/>\n<meta property=\"og:description\" content=\"Hadoop Yarn Tutorial- Yarn Architecture, YARN node manager,YARN resource manager,YARN Application Master,Yarn Timeline server,Yarn Docker Container Executor\" \/>\n<meta property=\"og:url\" content=\"https:\/\/data-flair.training\/blogs\/hadoop-yarn-tutorial\/\" \/>\n<meta property=\"og:site_name\" content=\"DataFlair\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DataFlairWS\/\" \/>\n<meta property=\"article:published_time\" content=\"2016-12-13T06:10:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-05-19T12:54:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/12\/Hadoop-Yarn-Tutorial-01.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"DataFlair Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:site\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DataFlair Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Hadoop Yarn Tutorial for Beginners - DataFlair","description":"Hadoop Yarn Tutorial- Yarn Architecture, YARN node manager,YARN resource manager,YARN Application Master,Yarn Timeline server,Yarn Docker Container Executor","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/data-flair.training\/blogs\/hadoop-yarn-tutorial\/","og_locale":"en_US","og_type":"article","og_title":"Hadoop Yarn Tutorial for Beginners - DataFlair","og_description":"Hadoop Yarn Tutorial- Yarn Architecture, YARN node manager,YARN resource manager,YARN Application Master,Yarn Timeline server,Yarn Docker Container Executor","og_url":"https:\/\/data-flair.training\/blogs\/hadoop-yarn-tutorial\/","og_site_name":"DataFlair","article_publisher":"https:\/\/www.facebook.com\/DataFlairWS\/","article_published_time":"2016-12-13T06:10:13+00:00","article_modified_time":"2021-05-19T12:54:24+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/12\/Hadoop-Yarn-Tutorial-01.jpg","type":"image\/jpeg"}],"author":"DataFlair Team","twitter_card":"summary_large_image","twitter_creator":"@DataFlairWS","twitter_site":"@DataFlairWS","twitter_misc":{"Written by":"DataFlair Team","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/data-flair.training\/blogs\/hadoop-yarn-tutorial\/#article","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/hadoop-yarn-tutorial\/"},"author":{"name":"DataFlair Team","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/beb0cab24b7aa54423a3b50e669a9dcd"},"headline":"Hadoop Yarn Tutorial for Beginners","datePublished":"2016-12-13T06:10:13+00:00","dateModified":"2021-05-19T12:54:24+00:00","mainEntityOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/hadoop-yarn-tutorial\/"},"wordCount":1452,"commentCount":5,"publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/hadoop-yarn-tutorial\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/12\/Hadoop-Yarn-Tutorial-01.jpg","keywords":["hadoop yarn","hadoop yarn tutorial","yarn","yarn architecture","yarn ha","yarn introduction","yarn node manager","yarn resource manager","yarn tutorial"],"articleSection":["YARN Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/data-flair.training\/blogs\/hadoop-yarn-tutorial\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/data-flair.training\/blogs\/hadoop-yarn-tutorial\/","url":"https:\/\/data-flair.training\/blogs\/hadoop-yarn-tutorial\/","name":"Hadoop Yarn Tutorial for Beginners - DataFlair","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/hadoop-yarn-tutorial\/#primaryimage"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/hadoop-yarn-tutorial\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/12\/Hadoop-Yarn-Tutorial-01.jpg","datePublished":"2016-12-13T06:10:13+00:00","dateModified":"2021-05-19T12:54:24+00:00","description":"Hadoop Yarn Tutorial- Yarn Architecture, YARN node manager,YARN resource manager,YARN Application Master,Yarn Timeline server,Yarn Docker Container Executor","breadcrumb":{"@id":"https:\/\/data-flair.training\/blogs\/hadoop-yarn-tutorial\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/data-flair.training\/blogs\/hadoop-yarn-tutorial\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/hadoop-yarn-tutorial\/#primaryimage","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/12\/Hadoop-Yarn-Tutorial-01.jpg","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/12\/Hadoop-Yarn-Tutorial-01.jpg","width":1200,"height":628,"caption":"Hadoop Yarn Tutorial for Beginners"},{"@type":"BreadcrumbList","@id":"https:\/\/data-flair.training\/blogs\/hadoop-yarn-tutorial\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog Home","item":"https:\/\/data-flair.training\/blogs\/"},{"@type":"ListItem","position":2,"name":"YARN Tutorials","item":"https:\/\/data-flair.training\/blogs\/category\/yarn\/"},{"@type":"ListItem","position":3,"name":"Hadoop Yarn Tutorial for Beginners"}]},{"@type":"WebSite","@id":"https:\/\/data-flair.training\/blogs\/#website","url":"https:\/\/data-flair.training\/blogs\/","name":"DataFlair","description":"Learn Today. Lead Tomorrow.","publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/data-flair.training\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/data-flair.training\/blogs\/#organization","name":"DataFlair","url":"https:\/\/data-flair.training\/blogs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","width":106,"height":48,"caption":"DataFlair"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DataFlairWS\/","https:\/\/x.com\/DataFlairWS","https:\/\/www.linkedin.com\/company\/dataflair-web-services-pvt-ltd\/","https:\/\/www.youtube.com\/user\/DataFlairWS"]},{"@type":"Person","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/beb0cab24b7aa54423a3b50e669a9dcd","name":"DataFlair Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/c322416204232f4dd97ef3901b0a499a5d34d7ba7fe333f4bfe53a907873d293?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c322416204232f4dd97ef3901b0a499a5d34d7ba7fe333f4bfe53a907873d293?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c322416204232f4dd97ef3901b0a499a5d34d7ba7fe333f4bfe53a907873d293?s=96&d=mm&r=g","caption":"DataFlair Team"},"description":"DataFlair Team specializes in creating clear, actionable content on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. Backed by industry expertise, we make learning easy and career-oriented for beginners and pros alike.","url":"https:\/\/data-flair.training\/blogs\/author\/dfteam3\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/1271","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/comments?post=1271"}],"version-history":[{"count":9,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/1271\/revisions"}],"predecessor-version":[{"id":94194,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/1271\/revisions\/94194"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media\/43090"}],"wp:attachment":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media?parent=1271"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/categories?post=1271"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/tags?post=1271"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}