您找過以下的關鍵字

尚無搜尋紀錄

我們處於一個資料爆炸的時代。每時每刻、各行各業都在產生和累積巨量的資料內容。這些資料中蘊含著生產業務活動、取得商業資訊、做出管理決策的重要資訊。如何處理這些資料並取得有價值的資訊,是許多組織和單位面臨的共同問題。而這個問題的解決又依賴兩項技術,一是能夠對產生的業務資料進行統一管理和綜合,並且能夠無限擴充儲存空間;二是能夠有效處理獲得的巨量資料,在限定時間內獲得處理結果的處理常式。

因此,尋求一個合理可靠的巨量資料處理解決方案是目前資料處理的重點。很多企業領導者把對巨量資料的處理看成網際網路之後,又一個能夠獲得競爭優勢的關鍵性因素,把巨量資料處理能力作為其核心商業競爭力加以發展。這更突顯了巨量資料的戰略意義。



寫作目的

Hadoop 作為應用範圍最為廣泛的巨量資料處理開放原始碼框架,自然引起廣泛的關注,吸引了大量程式設計和開發人員進行相關內容的開發與學習。掌握Hadoop 程式設計基本技能的程式設計人員,成為目前各組織和單位最迫切需要的熱門人才。他們的主要工作就是利用儲存和管理產生的巨量資料撰寫對應的MapReduce 程式對巨量資料進行處理,分析巨量資料中包含的潛在資訊,進行資料資源的管理和對其價值進行進一步開發,為商業機會的取得、管理模式的創新、決策的制定提供對應的支援。隨著越來越多的組織、單位和企業對巨量資料採擷的重視,高層次的程式設計人才必將成為就業市場上搶手的人才。

本書是為MapReduce 程式設計和開發人員,學習最新MapReduce2.0 程式碼而出版的。對MapReduce 2.0 的組成結構與核心部分程式,循序漸進的介紹與說明,以MapReduce 2.0 來源程式為主,從最底層開始介紹新一代的MapReduce 2.0 程式設計模式,多角度、多方面地對MapReduce 2.0 原始程式和功能實現提供翔實的分析,並結合實際案例撰寫大量的應用程式設計,使讀者能夠在開發者的層面掌握MapReduce 2.0 程式的設計方法和技巧,為開發出更強大的MapReduce 2.0 應用打下紮實的基礎。



本書優勢

本書並非單純理論的說明,深入淺出地介紹了MapReduce 2.0 理論系統的全部基礎知識,並在程式撰寫時使用官方推薦的最新MapReduce 2.0 的新型API 進行程式設計,摒棄了已經被明確放棄使用的MapReduce 1.0 程式設計方法,這也是Hadoop 程式設計的大勢所趨。



本書透過深入分析MapReduce 2.0 原始程式,從來源介紹MapReduce 2.0程式設計的優雅,在此基礎上進行對應程式的開發,更進一步地幫助讀者了解和掌握MapReduce 2.0 程式設計的精妙之處。

作者認為,巨量資料處理和分析人才應在掌握基礎和理論的基礎上,重視實際應用程式開發能力和解決問題能力的培養。因此,本書結合作者在工作中遇到的大量實際案例進行分析,抽象化核心模型並列出實際解決方案,全部程式例題均提供了對應程式供讀者學習。



本書內容

本書共分為10 章,所有程式均採用MapReduce 2.0 版本。如果不作特別說明,本書所有MapReduce 都指MapReduce 2.0。

第1 章介紹Hadoop 的基礎知識,初步介紹其應用範圍,說明使用Hadoop對「巨量資料」進行處理是目前資料處理的方向,也是必然趨勢,同時介紹了Hadoop 能為使用者帶來的解決方案和應用效果。

第2 章介紹HDFS 概念、架構,說明HDFS 儲存巨量資料和對資料進行備份的方法,並透過多條程式碼說明使用MapReduce 2.0 附帶的API 進行程式設計的方法。讀者學習完第2 章後,可以使用提供的相關API 進行針對HDFS 的程式設計。

第3 章全面介紹MapReduce 的基本IO 系統,資料傳輸壓縮格式以及基底資料類型。透過原始程式分析向讀者透徹而準確地展示其基本資料結構的組成與應用方式,為實現自訂的MapReduce 資料類型打下紮實的基礎。同時,書中程式極佳地示範了如何在自訂資料類型的基礎上提供進階比較方法的程式設計,為後文對資料排序提供幫助。

第4 章開始進入MapReduce 程式設計部分,也是本書核心內容的開始。詳細介紹MapReduce 的程式設計框架結構,從輸入開始,循序漸進地介紹各個部分處理過程,對核心原始程式展開分析,從專業開發者的角度向讀者剖析MapReduce執行框架結構,透過大量程式進行示範,為原始程式分析提供佐證,並將輸入輸出和執行分成許多部分進行詳細說明。在學完第4 章後,讀者可以撰寫一個簡單的MapReduce 資料處理程式。

第5 章是對MapReduce 測試方法的介紹,首先介紹了以傳統JUnit 為基礎的MRUnit 測試方法;其次著重說明以本機系統為基礎的模擬叢集環境的測試方法;最後向讀者示範將程式上傳叢集進行測試的方法。透過撰寫實例程式說明對叢集環境下輸出資訊歸類和整理的方法,以及透過Web 介面檢視最後內容的方法。

第6 章介紹MapReduce 的執行流程,說明經典的MapReduce 執行流程和新一代的YARN(MapReduce 2.0)執行流程,從載入工作的初始化開始,循序漸進地介紹了各部分執行流程和資料處理的方法,最後對異常結果的處理作了分析和歸納。

第7 章透過劃分多個小節內容向讀者介紹了MapReduce 的進階程式設計內容。此部分主要是程式碼設計內容,旨在教會讀者撰寫自訂的輸入輸出格式,並透過分析原始程式實現MapReduce 程式設計中所涉及的必不可少的自訂輸入輸出格式的設計。

第8 章介紹了更多MapReduce 程式設計的細節和處理方法,進一步能夠

實現更多的程式功能。從計數器開始到對輸出值進行排序和尋找,無一不是MapReduce 程式設計的重要功能和應用。此部分對每個小細節都採用了大量的實例程式作為支撐,進一步向讀者解釋和傳授MapReduce 程式設計的精髓。

第9 章是展望內容,示範了使用MapReduce 進行資料集之間連接處理的方法,說明MapReduce 不僅可以作為一個資料處理程式,同時還可以作為巨量資料採擷的解決方案。此章的最後介紹了資料採擷中最常用的Apriori 的MapReduce程式設計解決方案。

最後一章透過大量的實例程式從多個角度介紹了MapReduce 程式開發的實際案例。其中,「雲端儲存模型」是現在最熱點的儲存解決方案;多文件關鍵字的分析和排序是目前文獻程式開發中必不可少的應用;尋找共同轉載微博是網際網路應用熱點;從資料庫讀取資料給讀者一個完整的從現有資料庫讀取資料並進行處理的解決方案;學生成績排序可作為畢業設計的一項想法。這些都是目前MapReduce 程式設計學習和研究重點。



目標讀者

本書適合於學習MapReduce 2.0 原始程式、MapReduce 2.0 程式設計、資料採擷、機器學習等相關內容的程式設計人員,也可以作為大專院校相關科系的教材。建議在學習本書內容的過程中,理論結合實際,獨立進行一些程式的撰寫,採取開放式的實驗方法,即讀者自行準備實驗資料和實驗環境,解決實際問題,最後達到理論結合實際的目的。在學習過程中,可以檢視第10 章相關內容進行學習。

作者現任電腦專業講師,在大學及研究所開設資料採擷、Java 程式設計、資料結構等多項課程,研究方向為資料倉儲與資料採擷、人工智慧、機器學習,主持或參加多項研究專案。本書在寫作過程中獲得了家人們的大力支持,在此對他們表示感謝。

由於撰寫水準有限,疏漏之處在所難免,歡迎讀者們批評指正。