{"id":719,"date":"2009-12-20T12:21:36","date_gmt":"2009-12-20T17:21:36","guid":{"rendered":"http:\/\/philippeadjiman.com\/blog\/?page_id=719"},"modified":"2025-07-07T05:38:22","modified_gmt":"2025-07-07T05:38:22","slug":"the-hadoop-tutorial-series","status":"publish","type":"page","link":"https:\/\/philippeadjiman.com\/blog\/the-hadoop-tutorial-series\/","title":{"rendered":"The Hadoop Tutorial Series"},"content":{"rendered":"<p><\/p>\n<p>[Note: this was written in 2009 (!) when Hadoop was just starting to get popular, so it is already &#8220;very&#8221; old but keeping this series live as an archive and souvenir of the early days of the &#8220;big data&#8221; era]<\/p>\n<p>In that series, you&#8217;ll find a progressive set of tutorials written along the way around the Hadoop Apache Project (images are broken and will be restored soon)<a href=\"http:\/\/philippeadjiman.com\/blog\/2010\/01\/14\/hadoop-tutorial-series-issue-4-to-use-or-not-to-use-a-combiner\/\" target=\"_blank\" rel=\"noopener\"><br \/><\/a><\/p>\n<p><\/p>\n\n\n<div class=\"wp-block-query is-layout-flow wp-block-query-is-layout-flow\"><ul class=\"wp-block-post-template is-layout-flow wp-block-post-template-is-layout-flow\"><li class=\"wp-block-post post-848 post type-post status-publish format-standard has-post-thumbnail hentry category-hadoop category-tutorial tag-hadoop tag-tutorial\">\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-f56f613f wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\"><figure class=\"wp-block-post-featured-image\"><a href=\"https:\/\/philippeadjiman.com\/blog\/2010\/01\/14\/hadoop-tutorial-series-issue-4-to-use-or-not-to-use-a-combiner\/\" target=\"_self\"  ><img data-recalc-dims=\"1\" decoding=\"async\" loading=\"lazy\" width=\"800\" height=\"800\" src=\"https:\/\/i0.wp.com\/philippeadjiman.com\/blog\/wp-content\/uploads\/2010\/01\/global-professional-uhf-8-way-passive-splittercombiner.png?resize=800%2C800&#038;ssl=1\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"Hadoop Tutorial Series, Issue #4: To Use Or Not To Use A Combiner\" style=\"object-fit:cover;\" srcset=\"https:\/\/i0.wp.com\/philippeadjiman.com\/blog\/wp-content\/uploads\/2010\/01\/global-professional-uhf-8-way-passive-splittercombiner.png?w=800&amp;ssl=1 800w, https:\/\/i0.wp.com\/philippeadjiman.com\/blog\/wp-content\/uploads\/2010\/01\/global-professional-uhf-8-way-passive-splittercombiner.png?resize=300%2C300&amp;ssl=1 300w, https:\/\/i0.wp.com\/philippeadjiman.com\/blog\/wp-content\/uploads\/2010\/01\/global-professional-uhf-8-way-passive-splittercombiner.png?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/philippeadjiman.com\/blog\/wp-content\/uploads\/2010\/01\/global-professional-uhf-8-way-passive-splittercombiner.png?resize=768%2C768&amp;ssl=1 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/figure><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\"><h2 class=\"wp-block-post-title\"><a href=\"https:\/\/philippeadjiman.com\/blog\/2010\/01\/14\/hadoop-tutorial-series-issue-4-to-use-or-not-to-use-a-combiner\/\" target=\"_self\" >Hadoop Tutorial Series, Issue #4: To Use Or Not To Use A Combiner<\/a><\/h2>\n\n<div class=\"wp-block-post-excerpt\"><p class=\"wp-block-post-excerpt__excerpt\">Explains when Hadoop Combiners help (or hurt) performance and correctness, with code\u2011level guidance. <\/p><\/div><\/div>\n<\/div>\n\n<\/li><li class=\"wp-block-post post-818 post type-post status-publish format-standard has-post-thumbnail hentry category-hadoop category-tutorial tag-hadoop tag-tutorial\">\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-f56f613f wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\"><figure class=\"wp-block-post-featured-image\"><a href=\"https:\/\/philippeadjiman.com\/blog\/2010\/01\/07\/hadoop-tutorial-series-issue-3-counters-in-action\/\" target=\"_self\"  ><img data-recalc-dims=\"1\" decoding=\"async\" loading=\"lazy\" width=\"700\" height=\"700\" src=\"https:\/\/i0.wp.com\/philippeadjiman.com\/blog\/wp-content\/uploads\/2010\/01\/ler0131_trans_cntrs_3_sh_web.jpg?resize=700%2C700&#038;ssl=1\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"Hadoop Tutorial Series, Issue #3: Counters In Action\" style=\"object-fit:cover;\" srcset=\"https:\/\/i0.wp.com\/philippeadjiman.com\/blog\/wp-content\/uploads\/2010\/01\/ler0131_trans_cntrs_3_sh_web.jpg?w=700&amp;ssl=1 700w, https:\/\/i0.wp.com\/philippeadjiman.com\/blog\/wp-content\/uploads\/2010\/01\/ler0131_trans_cntrs_3_sh_web.jpg?resize=300%2C300&amp;ssl=1 300w, https:\/\/i0.wp.com\/philippeadjiman.com\/blog\/wp-content\/uploads\/2010\/01\/ler0131_trans_cntrs_3_sh_web.jpg?resize=150%2C150&amp;ssl=1 150w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/a><\/figure><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\"><h2 class=\"wp-block-post-title\"><a href=\"https:\/\/philippeadjiman.com\/blog\/2010\/01\/07\/hadoop-tutorial-series-issue-3-counters-in-action\/\" target=\"_self\" >Hadoop Tutorial Series, Issue #3: Counters In Action<\/a><\/h2>\n\n<div class=\"wp-block-post-excerpt\"><p class=\"wp-block-post-excerpt__excerpt\">Shows how to instrument MapReduce jobs with Hadoop Counters to track custom metrics during large\u2011scale processing. <\/p><\/div><\/div>\n<\/div>\n\n<\/li><li class=\"wp-block-post post-664 post type-post status-publish format-standard has-post-thumbnail hentry category-hadoop category-tutorial tag-hadoop tag-tutorial\">\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-f56f613f wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\"><figure class=\"wp-block-post-featured-image\"><a href=\"https:\/\/philippeadjiman.com\/blog\/2009\/12\/20\/hadoop-tutorial-series-issue-2-getting-started-with-customized-partitioning\/\" target=\"_self\"  ><img data-recalc-dims=\"1\" decoding=\"async\" loading=\"lazy\" width=\"630\" height=\"543\" src=\"https:\/\/i0.wp.com\/philippeadjiman.com\/blog\/wp-content\/uploads\/2009\/12\/withcounts-flat.png.webp?resize=630%2C543&#038;ssl=1\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"Hadoop Tutorial Series, Issue #2: Getting Started With (Customized) Partitioning\" style=\"object-fit:cover;\" srcset=\"https:\/\/i0.wp.com\/philippeadjiman.com\/blog\/wp-content\/uploads\/2009\/12\/withcounts-flat.png.webp?w=630&amp;ssl=1 630w, https:\/\/i0.wp.com\/philippeadjiman.com\/blog\/wp-content\/uploads\/2009\/12\/withcounts-flat.png.webp?resize=300%2C259&amp;ssl=1 300w\" sizes=\"auto, (max-width: 630px) 100vw, 630px\" \/><\/a><\/figure><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\"><h2 class=\"wp-block-post-title\"><a href=\"https:\/\/philippeadjiman.com\/blog\/2009\/12\/20\/hadoop-tutorial-series-issue-2-getting-started-with-customized-partitioning\/\" target=\"_self\" >Hadoop Tutorial Series, Issue #2: Getting Started With (Customized) Partitioning<\/a><\/h2>\n\n<div class=\"wp-block-post-excerpt\"><p class=\"wp-block-post-excerpt__excerpt\">Teaches key partitioning patterns (e.g., partial sorts to specific reducers) to control data flow in MapReduce jobs. <\/p><\/div><\/div>\n<\/div>\n\n<\/li><li class=\"wp-block-post post-597 post type-post status-publish format-standard has-post-thumbnail hentry category-hadoop category-tutorial tag-hadoop tag-tutorial\">\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-f56f613f wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\"><figure class=\"wp-block-post-featured-image\"><a href=\"https:\/\/philippeadjiman.com\/blog\/2009\/12\/07\/hadoop-tutorial-part-1-setting-up-your-mapreduce-learning-playground\/\" target=\"_self\"  ><img data-recalc-dims=\"1\" decoding=\"async\" loading=\"lazy\" width=\"588\" height=\"428\" src=\"https:\/\/i0.wp.com\/philippeadjiman.com\/blog\/wp-content\/uploads\/2009\/12\/hadoop-logo.png?resize=588%2C428&#038;ssl=1\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"Hadoop Tutorial Series, Issue #1: Setting Up Your MapReduce Learning Playground\" style=\"object-fit:cover;\" srcset=\"https:\/\/i0.wp.com\/philippeadjiman.com\/blog\/wp-content\/uploads\/2009\/12\/hadoop-logo.png?w=588&amp;ssl=1 588w, https:\/\/i0.wp.com\/philippeadjiman.com\/blog\/wp-content\/uploads\/2009\/12\/hadoop-logo.png?resize=300%2C218&amp;ssl=1 300w\" sizes=\"auto, (max-width: 588px) 100vw, 588px\" \/><\/a><\/figure><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\"><h2 class=\"wp-block-post-title\"><a href=\"https:\/\/philippeadjiman.com\/blog\/2009\/12\/07\/hadoop-tutorial-part-1-setting-up-your-mapreduce-learning-playground\/\" target=\"_self\" >Hadoop Tutorial Series, Issue #1: Setting Up Your MapReduce Learning Playground<\/a><\/h2>\n\n<div class=\"wp-block-post-excerpt\"><p class=\"wp-block-post-excerpt__excerpt\">Step\u2011by\u2011step setup of a Cloudera VM + Maven project so you can quickly experiment with Hadoop wordcount and beyond. <\/p><\/div><\/div>\n<\/div>\n\n<\/li><\/ul><\/div>\n","protected":false},"excerpt":{"rendered":"<p>[Note: this was written in 2009 (!) when Hadoop was just starting to get popular, so it is already &#8220;very&#8221; old but keeping this series live as an archive and souvenir of the early days of the &#8220;big data&#8221; era] In that series, you&#8217;ll find a progressive set of tutorials written along the way around [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"open","template":"","meta":{"nf_dc_page":"","footnotes":""},"class_list":["post-719","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/philippeadjiman.com\/blog\/wp-json\/wp\/v2\/pages\/719","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/philippeadjiman.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/philippeadjiman.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/philippeadjiman.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/philippeadjiman.com\/blog\/wp-json\/wp\/v2\/comments?post=719"}],"version-history":[{"count":8,"href":"https:\/\/philippeadjiman.com\/blog\/wp-json\/wp\/v2\/pages\/719\/revisions"}],"predecessor-version":[{"id":1882,"href":"https:\/\/philippeadjiman.com\/blog\/wp-json\/wp\/v2\/pages\/719\/revisions\/1882"}],"wp:attachment":[{"href":"https:\/\/philippeadjiman.com\/blog\/wp-json\/wp\/v2\/media?parent=719"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}