{"id":417,"date":"2011-05-13T22:28:00","date_gmt":"2011-05-13T22:28:00","guid":{"rendered":"http:\/\/www.javacodegeeks.com\/2012\/10\/mapreduce-a-soft-introduction.html"},"modified":"2012-10-21T19:45:24","modified_gmt":"2012-10-21T19:45:24","slug":"mapreduce-soft-introduction","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2011\/05\/mapreduce-soft-introduction.html","title":{"rendered":"MapReduce: A Soft Introduction"},"content":{"rendered":"<div dir=\"ltr\" style=\"text-align: left\">MapReduce is a parallel programming technique made popular by Google. It  is used for processing very large amounts of data. Such processing  can be completed in a reasonable amount of time only by distributing  the work to multiple machines in parallel. Each machine processes a  small subset of the data.<\/p>\n<p>MapReduce is a programming model that lets  developers focus on the writing code that processes their data without  having to worry about the details of parallel execution. <\/p>\n<p>MapReduce requires modeling the data to be processed as key,value pairs.  The developer codes a map function and a reduce function.<\/p>\n<p>The MapReduce runtime calls the map function for each key,value pair.  The map function takes as input a key,value pair and produces an output  which is another key,value pair.  <\/p>\n<p>The MapReduce runtime sorts and groups the output from the map functions  by key. It then calls the reduce function passing it a key and a list  of values associated with the key. The reduce function is called for  each key. The output from the reduce function is a key,value pair. The  value is generally an aggregate or something calculated by processing  the list of values that were passed in for the input key. The reduce  function is called for each intermediate key produced by the map  function. The output from the reduce function is the required result.<\/p>\n<p>As an example, let us say you have a large number of log files that  contain audit logs for some event such as access to an account. You need  to find out how many times each account was accessed in the last 10  years.<br \/>\nAssume each line in the log file is a audit record. We are processing  log files line by line.The map and reduce functions would look like  this:<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<pre class=\"brush:java\">map(key , value) {\r\n \/\/ key = byte offset in log file \r\n \/\/ value = a line in the log file\r\n if ( value is an account access audit log) {\r\n  account number = parse account from value\r\n  output key = account number, value = 1\r\n }\r\n}\r\n\r\nreduce(key, list of values) {\r\n \/\/ key = account number\r\n \/\/ list of values {1,1,1,1.....}\r\n for each value\r\n  count = count + value\r\n output key , count \r\n}\r\n<\/pre>\n<p>The map function is called for each line in each log file. Lines  that are not relevant are ignored. Account number is parsed out of  relevant lines and output with a value 1. The MapReduce runtime sorts  and groups the output by account number. The reduce function is called  for each account. The reduce function aggregates the values for each  account, which is the required result.<\/p>\n<p>MapReduce jobs are generally executed on a cluster of machines. Each  machine executes a task which is either a map task or reduce task. Each  task is processing a subset of the data. In the above example, let us  say we start with a set of large input files. The MapReduce runtime  breaks the input data into partitions called splits or shards. Each  split or shard is processed by a map task on a machine. The output from  each map task is sorted and partitioned by key. The outputs from all the  maps are merged to create partitions that are input to the reduce  tasks.<\/p>\n<p>There can be multiple machines each running a reduce task. Each reduce  task gets a partition to process. The partition can have multiple keys.  But all the data for each key is in 1 partition. In other words each key  can processed by 1 reduce task only.<\/p>\n<p>The number of machines , the number of map tasks , number of reduce tasks and several other things are configurable.<\/p>\n<p>MapReduce is useful for problems that require some processing of large  data sets. The algorithm can be broken into map and reduce functions.  MapReduce runtime takes care of distributing the processing to multiple  machines and aggregating the results. <\/p>\n<p><a href=\"http:\/\/hadoop.apache.org\/\">Apache Hadoop<\/a> is an open source Java implementation of mapreduce. Stay tuned for future blog \/ tutorial on mapreduce using hadoop.<\/p>\n<p><strong><i>Reference: <\/i><\/strong><a href=\"http:\/\/khangaonkar.blogspot.com\/2011\/05\/what-is-mapreduce.html\">What is MapReduce?<\/a> from our <a href=\"http:\/\/www.javacodegeeks.com\/p\/jcg.html\">JCG partner<\/a> at <a href=\"http:\/\/khangaonkar.blogspot.com\/\">The Khangaonkar Report<\/a>.<\/p>\n<div style=\"margin: 0px\"><strong><i>Related Articles :<\/i><\/strong><\/div>\n<ul>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/01\/cajo-easiest-way-to-accomplish.html\">Cajo, the easiest way to accomplish distributed computing in Java<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/02\/hibernate-mapped-collections.html\">Hibernate mapped collections performance problems<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/03\/java-code-geeks-andygene-web-archetype.html\">Java Code Geeks Andygene Web Archetype<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/03\/servlet-30-async-processing-for-tenfold.html\">Servlet 3.0 Async Processing for Tenfold Increase in Server Throughput<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>MapReduce is a parallel programming technique made popular by Google. It is used for processing very large amounts of data. Such processing can be completed in a reasonable amount of time only by distributing the work to multiple machines in parallel. Each machine processes a small subset of the data. MapReduce is a programming model &hellip;<\/p>\n","protected":false},"author":305,"featured_media":63,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[183],"class_list":["post-417","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java","tag-mapreduce"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>MapReduce: A Soft Introduction - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"MapReduce is a parallel programming technique made popular by Google. It is used for processing very large amounts of data. Such processing can be\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.javacodegeeks.com\/2011\/05\/mapreduce-soft-introduction.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MapReduce: A Soft Introduction - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"MapReduce is a parallel programming technique made popular by Google. It is used for processing very large amounts of data. Such processing can be\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2011\/05\/mapreduce-soft-introduction.html\" \/>\n<meta property=\"og:site_name\" content=\"Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2011-05-13T22:28:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2012-10-21T19:45:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-hadoop-mapreduce-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Manoj Khangaonkar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Manoj Khangaonkar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/mapreduce-soft-introduction.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/mapreduce-soft-introduction.html\"},\"author\":{\"name\":\"Manoj Khangaonkar\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/1b867f5998ce2a4a4c514239c96637fd\"},\"headline\":\"MapReduce: A Soft Introduction\",\"datePublished\":\"2011-05-13T22:28:00+00:00\",\"dateModified\":\"2012-10-21T19:45:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/mapreduce-soft-introduction.html\"},\"wordCount\":641,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/mapreduce-soft-introduction.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/apache-hadoop-mapreduce-logo.jpg\",\"keywords\":[\"MapReduce\"],\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/mapreduce-soft-introduction.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/mapreduce-soft-introduction.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/mapreduce-soft-introduction.html\",\"name\":\"MapReduce: A Soft Introduction - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/mapreduce-soft-introduction.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/mapreduce-soft-introduction.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/apache-hadoop-mapreduce-logo.jpg\",\"datePublished\":\"2011-05-13T22:28:00+00:00\",\"dateModified\":\"2012-10-21T19:45:24+00:00\",\"description\":\"MapReduce is a parallel programming technique made popular by Google. It is used for processing very large amounts of data. Such processing can be\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/mapreduce-soft-introduction.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/mapreduce-soft-introduction.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/mapreduce-soft-introduction.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/apache-hadoop-mapreduce-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/apache-hadoop-mapreduce-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/mapreduce-soft-introduction.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Enterprise Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\\\/enterprise-java\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"MapReduce: A Soft Introduction\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Developers Resource Center\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.javacodegeeks.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/javacodegeeks\",\"https:\\\/\\\/x.com\\\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/1b867f5998ce2a4a4c514239c96637fd\",\"name\":\"Manoj Khangaonkar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/56f9c038909f5c71f8a524fc672805e758a44d1fdb2ef98e7eed9c806a468f24?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/56f9c038909f5c71f8a524fc672805e758a44d1fdb2ef98e7eed9c806a468f24?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/56f9c038909f5c71f8a524fc672805e758a44d1fdb2ef98e7eed9c806a468f24?s=96&d=mm&r=g\",\"caption\":\"Manoj Khangaonkar\"},\"sameAs\":[\"http:\\\/\\\/khangaonkar.blogspot.com\\\/\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/Manoj-Khangaonkar\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"MapReduce: A Soft Introduction - Java Code Geeks","description":"MapReduce is a parallel programming technique made popular by Google. It is used for processing very large amounts of data. Such processing can be","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:\/\/www.javacodegeeks.com\/2011\/05\/mapreduce-soft-introduction.html","og_locale":"en_US","og_type":"article","og_title":"MapReduce: A Soft Introduction - Java Code Geeks","og_description":"MapReduce is a parallel programming technique made popular by Google. It is used for processing very large amounts of data. Such processing can be","og_url":"https:\/\/www.javacodegeeks.com\/2011\/05\/mapreduce-soft-introduction.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2011-05-13T22:28:00+00:00","article_modified_time":"2012-10-21T19:45:24+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-hadoop-mapreduce-logo.jpg","type":"image\/jpeg"}],"author":"Manoj Khangaonkar","twitter_card":"summary_large_image","twitter_creator":"@javacodegeeks","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Manoj Khangaonkar","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/mapreduce-soft-introduction.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/mapreduce-soft-introduction.html"},"author":{"name":"Manoj Khangaonkar","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/1b867f5998ce2a4a4c514239c96637fd"},"headline":"MapReduce: A Soft Introduction","datePublished":"2011-05-13T22:28:00+00:00","dateModified":"2012-10-21T19:45:24+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/mapreduce-soft-introduction.html"},"wordCount":641,"commentCount":1,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/mapreduce-soft-introduction.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-hadoop-mapreduce-logo.jpg","keywords":["MapReduce"],"articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2011\/05\/mapreduce-soft-introduction.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/mapreduce-soft-introduction.html","url":"https:\/\/www.javacodegeeks.com\/2011\/05\/mapreduce-soft-introduction.html","name":"MapReduce: A Soft Introduction - Java Code Geeks","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/mapreduce-soft-introduction.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/mapreduce-soft-introduction.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-hadoop-mapreduce-logo.jpg","datePublished":"2011-05-13T22:28:00+00:00","dateModified":"2012-10-21T19:45:24+00:00","description":"MapReduce is a parallel programming technique made popular by Google. It is used for processing very large amounts of data. Such processing can be","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/mapreduce-soft-introduction.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2011\/05\/mapreduce-soft-introduction.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/mapreduce-soft-introduction.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-hadoop-mapreduce-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-hadoop-mapreduce-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/mapreduce-soft-introduction.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java","item":"https:\/\/www.javacodegeeks.com\/category\/java"},{"@type":"ListItem","position":3,"name":"Enterprise Java","item":"https:\/\/www.javacodegeeks.com\/category\/java\/enterprise-java"},{"@type":"ListItem","position":4,"name":"MapReduce: A Soft Introduction"}]},{"@type":"WebSite","@id":"https:\/\/www.javacodegeeks.com\/#website","url":"https:\/\/www.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Developers Resource Center","publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/1b867f5998ce2a4a4c514239c96637fd","name":"Manoj Khangaonkar","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/56f9c038909f5c71f8a524fc672805e758a44d1fdb2ef98e7eed9c806a468f24?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/56f9c038909f5c71f8a524fc672805e758a44d1fdb2ef98e7eed9c806a468f24?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/56f9c038909f5c71f8a524fc672805e758a44d1fdb2ef98e7eed9c806a468f24?s=96&d=mm&r=g","caption":"Manoj Khangaonkar"},"sameAs":["http:\/\/khangaonkar.blogspot.com\/"],"url":"https:\/\/www.javacodegeeks.com\/author\/Manoj-Khangaonkar"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/417","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/users\/305"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=417"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/417\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/63"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=417"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=417"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=417"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}