書籍製作-大數據分析與應用

Page 1

http://certificate.jyic.net/ 前進專業.淬鍊身價

本書特色 1. 闡述大數據的重要觀念,包括正面的效用與負面的副作用,建立讀者對大數據正確的認知。 2. 說明大數據時代的因應與挑戰,其中有思維的轉變、大數據分析技術、大數據的應用模 式分類,也有大數據分析的流程。 3. 介紹各行各業的大數據經典應用案例,讓讀者體會大數據分析的應用精髓,有機會發揮

ICT 計算機綜合能力國際認證 • 最 新 計 算 機 概 論 -Office 2010 含 ICT 計算機綜合能力國際認 證 Essentials Level - 陳 恩 航・ 楊進雄 編著

創造力,開創自己的大數據應用。 4. 介紹大數據分析工具(Hadoop 和 Spark)的生態系統,期使讀者能充分掌握大數據的 技術發展和工具的應用藍圖。 5. 透過對大數據工具的實戰演練,包括安裝、設定、指令操作等,使讀者在具備大數據概 念正確理解的同時,還能擁有動手實現的功力。 6. 學習大數據程式語言 Scala,熟悉函數式程式設計(functional programming)的特

商務專業應用能力國際認證

點,以及它對於大數據的操作與處理,提升讀者對大數據分析演算法的開發能力。

• BAP Documents 文 書 處 理 Using Microsoft® Word 2010 商務專業應用能力國際認證 Essentials Level 通 關 寶 典 - 附

7. 使用 Spark 的機器學習程式庫(MLlib),應用在既有資料集的分析上,讓讀者迅速獲

大數據 (Big Data) 分析與應用 使用 Hadoop 與 Spark 劉勇志 編著

使用

得大數據的預測能力。

分) 析 與 應 用 (Big Data

商管群 國際認證叢書

最新版

贈 BAP 學評系統含教學影片 - JYiC 認證研究團隊 編著

Hadoop Spark

• BAP Spreadsheets 電 子 試 算 表 Using Microsoft® Excel® 2010 商務專業應用能力國際認 證 Essentials Level 通關寶典 -

Big Data Analysis and Applications-using Hadoop and Spark

附贈 BAP 學評系統含教學影片 - JYiC 認證研究團隊 編著

• BAP Presentations 商 業 簡 報 Using Microsoft® PowerPoint® 2010 商務專業應用能力國際認 證 Essentials Level 通關寶典 附贈 BAP 學評系統含教學影片 - JYiC 認證研究團隊 編著

最新版

劉 勇 志

FB030(28)

PVQC 專 業 英 文 詞 彙 能 力 國 際 認 證

建議售價:550 元

ISBN 978-986-455-377-8

編 著

• PVQC 計 算 機 專 業 英 文 詞 彙 能力通關寶典 - 附贈自我診斷系

統-戴建耘 e 檢研究團隊 編譯 ‧GLAD 全球學習與測評發展中心 指導

斷 系 統 - e 檢研究團隊 編譯 ‧GLAD 全球學習與測評發展中心 指導

台科大圖書股份有限公司 編印

基礎

進階

深入

FB030 FB030

• PVQC 商 業 與 管 理 專 業 英 文 詞彙能力通關寶典 - 附 贈 自 我 診

台科大圖書

勁園 Maker 教育

附範例光碟

.技 職 專 業 出 版 .Bube 創意文具

.空 間 .設 備 .教 具 .機器人

• 第 6~12 章範例指令

http://www.tiked.com.tw/

http://maker.jyic.net/

Big Data Analysis and Applications-using Hadoop and Spark

大數據

勁園國際認證


作者序 擁抱大數據 科技引領著社會潮流的轉變,科技的力量(如社群媒體、電子商務、智慧型行動裝 置、雲端運算、互聯網以及大數據等)為生活各個層面帶來了驚人的改變。回頭看五年 或十年以前,發現根本無需一個世代的時間,生活與工作面貌就可以產生翻天覆地的變 化。人類現在正活在一個數位化的世界,無論人類的生活、工作、溝通、娛樂、互動、 學習等,都與數位化的資料息息相關。當我們不斷地產生資料的同時,也被資料左右著、 束縛著(想想 Line 的叮咚聲)我們的生活步調和模樣,這些不斷奔流而出的大量資料, 為我們構建了一個人類歷史上空前的「大數據時代」。 在大數據時代裡,人們使用著智慧型手機和各種連網設備,隨著本身每天的喜怒哀 樂心情起伏,不斷地貼動態、按讚、打回應文、上傳照片、玩直播、導航、打卡、搜尋 和購買商品等,同時也分享文章(如部落格)、創作(如開放原始碼)、知識(如維基 百科)、資源(如 Uber)等。這些大數據不僅僅是個人在網路上的數位足跡(digital

footprint),同時也是社會的縮影、文化的表徵、知識的積累以及人類整體的智慧和價 值觀呈現。 假如我們有足夠的資訊科技能力和資料分析方法,我們便能駕馭大數據,讓它成為 我們的金礦,更有機會用它來促進商業活動、改善醫療品質、提升交通效率、改善生活 環境、增進人類福祉。例如零售業、銀行、電信公司、金融保險業利用消費者資訊、交 易紀錄資料和分析模型,提供消費者的個人化服務,並且降低商業經營風險和提升利潤; 在醫療業中,醫生根據病人的不同症狀、體質,乃至基因特徵,使用資料分析演算法來 預測手術的成功率和用藥的效果;市政府利用手機通話紀錄,預測人潮動向,加派公共 運輸班車,疏運跨年活動結束後的人潮;警察部門使用大數據分析,找出犯罪熱點加強 巡邏,降低犯罪率的發生;公司將客服中心的客服談話轉為文字,使用文字探勘技術做

ii


自然語言處理和情感分析,以了解顧客對服務的滿意程度與營收之間的相關性;調查局 透過掃描信用卡資料、銀行轉帳紀錄和電話通聯記錄來找尋恐怖份子的蹤跡等。 相反的,如果我們沒有足夠的技術能力和分析技巧,就只能被大數據所淹沒。在這 個大數據時代,每個人都以事實證據和數字來做決策,那麼你具有大數據的技能嗎?你 可以從大量的資料中找到隱含其間的特徵、規則、規律和相關性嗎?本書便是因應這樣 的需要而誕生。

為何寫這本書 坊間大數據的入門書籍何其多,為什麼又要多出這一本呢?坊間大數據的入門書大 致可分為二大類,第一大類純講大數據的觀念和案例,讀者讀完後只覺得「大數據」這 三個字很神奇,之後就不知道如何動手來實現了;另一大類則專講技術,很容易讓讀者 陷入技術的細節,跑的範例也是簡單幾筆、不知所云的測試資料集,常有「不知為何而 戰」的感覺,完全無法透徹大數據的應用價值和精華。這類書籍還可能將焦點放在大數 據分析和探勘演算法的數學理論與公式推導,對想了解大數據應用的讀者而言,不僅無 法進行實務應用,更可能陷入數學理論的雲霧之中。除非對數理很有興趣或進階的讀者 可以嘗試,否則對於想了解大數據入門應用的讀者並不合用。 除了上述二類大數據書籍外,還有一種書名上雖有「大數據」三個字,但嚴格來說, 並不能歸類為大數據書籍,因為它們沒有談及分散式處理和平行化運算等技術,自然無 法處理超大量的資料集。它們涵蓋了傳統的資料倉儲、資料探勘、商業智慧等相關的資 料分析技術,這些技術和知識對現代的商業經營與企業運作也相當重要,但它們不是大 數據。想要處理大數據,過去許多基於單一電腦記憶體內運算的資料探勘演算法已經不 能再使用,必須要有新的、能夠在大數據平台上進行分散式和平行運算的「大規模」資 料分析演算法,並且還要能夠處理複雜的資料型態,這才稱得上是大數據分析技術。 作為一本真正理想的大數據入門書,筆者認為起碼要達到大數據之「手腦並用」。 「腦」的部分即「大數據之腦」,是要了解真正的大數據意義和內涵、通曉大數據的應 用案例,並熟悉如何應用大數據技術和流程來解決問題,同時還要懂得如何發揮大數據

iii


的商業價值。而所謂的「大數據之手」是要能動手利用資料分析、資料探勘、機器學習 等技術以及大數據分析工具箱中的工具,甚至能使用大數據電腦語言開發出特殊應用目 的的大數據演算法,以便將實務的資料放在大數據平台上運算出想要的結果。 因此,本書一開始花了不少篇幅來介紹大數據的意涵和商業應用案例,同時也介紹 了資料科學/大數據分析技術以及「資料科學家」這個熱門職稱的必要條件。接著介紹 大數據技術和大數據工具的生態系統(Hadoop 和 Spark)。從本書中段開始,進入實做 的工具平台安裝(VirtualBox 和 Ubuntu)、資料處理和分析的基礎指令操作訓練(HDFS 和 RDD)以及大數據分析之電腦語言(Scala)的學習。最後應用前面章節所累積的基礎, 導入大數據分析演算法的開發和應用案例的執行。 本書同時關注大數據技術與知識的理解及應用,不僅有觀點的啟發,還有技術面實 做的落實。因為光有技術不懂應用,技術只能束之高閣,無法發揮商業價值,落得空歡 喜一場;而只有觀念卻不懂技術,猶如海市蜃樓、空中樓閣,看得到卻用不上。老實說, 想要同時具備「大數據之腦」和「大數據之手」不是一見簡單任務,但是在大數據時代, 想要成為搶手人才,就必須懂得應用心法,也要懂得實戰招式,這是大數據時代的挑戰, 也是大數據人才的機會。

誰適合閱讀本書 以下諸多對象皆適合閱讀本書: ●

開設大數據分析與應用相關課程的教師和學生 面對大數據的風潮,國內不少大專院校系所開設巨量資料相關學程和課程。有些 課程比較偏重數理,如機率、統計、多變量分析、數值分析等;也有些課程比較偏向 資訊工程,如資料結構、演算法、人工智慧等;還有一些是針對傳統商業工具的使用 和介紹,如資料倉儲、 OLAP、資料探勘、商業智慧等。假如有需要針對商業與管理 的大數據應用,透過本書的觀念陳述、大數據工具(主要是 Hadoop 和 Spark)演練、 系統的安裝和上機操作以及大數據範例實做,不但能讓修課者快速掌握大數據的精 髓,還有機會開發大數據分析演算法。

iv


對大數據觀念和實作有興趣的入門自學者 對大數據觀念和實作有興趣的初學者可以從本書得到一個廣泛且正確的大數據觀 念與認知,也能看到大數據先驅者爐火純青的大數據應用案例,並對資料科學有一個 廣泛認識。最重要的是,可以對整個大數據技術和應用的落實面有一個通盤了解。 Spark 提供一個方便的交談式資料處理環境(spark shell),非常有利於初學者 學習大數據分析。本書全部的練習和範例執行,皆在交互式資料處理環境下完成, 讀者無需使用複雜的開發工具撰寫繁複的電腦程式(輸入程式→編譯→出現一堆錯 誤?!!),取而代之的是,每輸入一組資料分析處理指令,馬上顯示指令處理結 果,一個步驟跟著一個步驟,最後便能得到大數據分析結果。這種學習大數據分析的 方式,讓初學者有較大掌握度,且透過一些錯誤嘗試的過程,逐漸理解 Spark 處理大 數據的訣竅,如此也能大大降低初學者的挫折感。

對 Hadoop 和 Spark 的安裝和使用有興趣者 本書詳細對 Hadoop 和 Spark 的觀念、安裝、運作模式和操作指令等做深入講解, 尤其詳細介紹 Spark 的 RDD(彈性分散式資料集)架構和指令,奠定讀者在大數據 平行運算分析時的堅實基礎。

想將 Scala 函數式語言應用在資料分析者 Scala 語言是 Spark 平台的官方語言,也是整合了函數式和物件導向特性的新一 代程式語言,非常適合用來進行大數據演算法的開發。假如你沒學過 Scala 或沒有程 式設計經驗,甚至對程式設計感到怕怕的,請不用擔心,本書第 8 章專章講解 Scala 語言特性和範例,並針對資料處理和分析所需,提供「夠用」的 Scala 功能,不需要 也不會有過份深奧難懂的部分,畢竟我們只是要對資料進行操作,而不是要開發火星 登陸用程式。

已經採用資料分析/探勘套裝軟體,但想進一步自行開發大數據演算法者 雖然市面上有很多商業性的資料分析/探勘套裝軟體,非常適合終端使用者即開

v


即用,將資料載入、預處理、選擇模式、執行,然後獲得結果。這些軟體雖然容易使 用,但大多提供有限數量或固定式的常用功能模組,面對大數據多樣性和百花齊放的 應用面,代表你有可能找不到完全配適的功能模組以進行特殊的運算和分析。因此這 時候便需要在大數據的平台上,使用 Scala 來開發專用的大數據演算法。 ●

小資企業買不起大數據分析軟體者 商業性資料分析/探勘套裝軟體所費不貲,一般小資企業很難支應這些成本。小 資企業想從事「大」「小」數據分析,可以使用本書介紹的大數據開放原始碼系統, 系統不僅給你用,程式碼更是「全都露」,對有才華想自己動手做的小資者,包括學 生、初學者或小公司的資料分析人員等都是一大福音。當然想要運用到得心應手的境 界,的確是一項不小的挑戰。

本書各章簡介 本書共有十二章,分為三大篇:觀念篇(第 1 ~ 3 章)、工具篇(第 4 ~ 8 章)和 應用篇(第 9 ~ 12 章)。以下針對 12 章的內容進行簡介: ●

第 1 章:為大數據提供一個廣泛且完整的概念陳述,包括大數據的定義、5V 特徵, 並且說明大數據的作用和威力。凡事有利也有弊,除了大數據正面效益的陳述之外, 也陳述了大數據可能造成的負面影響。本章讓讀者可以正確理解大數據的意涵,並能 進一步善用它的正面力量杜絕負面作用,如此面對大數據時代,才能輕鬆又自在。

第 2 章:迎接大數據時代的到來,無可避免要面對一些新的挑戰,本章目的便是說明 如何因應這些挑戰。首先是大數據思維的三個轉變;其次利用欣賞業界大數據的創新 實務應用案例,來啟發我們對大數據的創新應用模式;最後提出一個大數據計畫的啟 動流程,協助企業正確展開大數據計畫,建置以資料為中心的創新產品與服務。

第 3 章:首先介紹有別於過去資料科學的大數據分析特徵,並說明大數據分析技術的 四個層級架構;其次說明 21 世紀最吸引人的職業「資料科學家」所應具備的專業知 識及成功的特質。最後介紹大數據資料分析的工具箱,以及資料科學家進行大數據分 析的流程和步驟。

vi


第 4 章:介紹兩個大數據時代的神兵利器「Hadoop / HDFS 分散式檔案系統」和 「Spark 平行運算框架」。前者用來「儲存」大數據;後者則用來「運算」大數據。 本章內容涵蓋它們的發展歷史、特性和生態系統,同時也介紹因應大數據分析而生的

NoSQL 資料庫族群。 ●

第 5 章:進入大數據分析的第一步,就是為大數據平台安裝一個作業系統 Ubuntu。 本章使用虛擬化工具 VirtualBox,讓讀者可以在自己的 Windows 電腦中建立多部虛 擬電腦,並完成安裝和設定 Ubuntu 作業系統。透過詳細的步驟解說和畫面示範,協 助讀者順利完成安裝任務。

第 6 章: 完 成 了 Ubuntu 的 安 裝 之 後, 接 著 帶 領 讀 者 安 裝 Hadoop 和 Spark。 在

Hadoop 方面,我們將建立一個 Hadoop 分散式電腦集群,讓多部電腦(包括主人機 和僕人機)可以相互連通和操作。接著講解安裝 Spark 的流程和步驟。完成 Hadoop 和 Spark 之後,示範簡單的 HDFS 分散式檔案架構和 Spark 計算框架的執行任務, 也可以順便了解一下安裝是否正確無誤。 ●

第 7 章:針對 Hadoop HDFS 和 Spark RDD 的基礎操作進行解說,作為奠定大數據 分析的基礎。HDFS 指令重點在於對 Hadoop 分散式檔案系統的操作,例如目錄、檔 案的建立、拷貝和刪除等;而在 Spark RDD 的部分,主要是針對 RDD 中各種型態 資料的轉換與運算,是大數據平行化運算的精華所在。

第 8 章: 介 紹 大 數 據 程 式 語 言 Scala, 它 是 Spark 的 官 方 語 言, 用 於 開 發 Spark 的 系 統 核 心 和 程 式 庫。 本 章 除 了 解 說 了 大 數 據 分 析 所 需 的 Scala 基 礎、 資 料 集 (collections)操作和處理方法(methods)以及基本邏輯控制之外,還針對最重要 的 Scala 函數式程式設計(functional programming)特性部分做詳盡解說與示範。 本章以一章的篇幅來解釋大數據分析時「夠用」的 Scala 功能,沒有過度繁複的概念。 讀者如熟悉這些 Scala 特性和功能,再配合上一章 RDD 的操作,便能將大數據玩弄 於股掌之間,進而開發出自己的大數據演算法。

第 9 章:開始進入本書的應用篇,讓讀者在先前章節所搭建的大數據平台上,使用

Scala 大數據程式語言和 Spark RDD 的平行化計算框架,開發一些小型應用,累積大

vii


數據分析基本演算法的開發經驗。這些小範例包括字數計算、矩陣相乘、頻繁項分析、

One-hot 編碼問題、相似性計算及文件資料反排序。 ●

第 10 章:想要開發大型複雜的大數據分析演算法,並不是作為入門教材的本書 所可以涵蓋,幸好在我們安裝的 Spark 平台中,已經包含了一組機器學習程式庫 (MLlib),其中具有一些常用的專業機器學習演算法(詳細功能如第 4 章所介紹)。 本章開始利用這些專業的演算法來對資料集進行運算和分析,主要目的是利用迴歸分 析和葡萄酒的特徵資料來訓練迴歸模式,以達到之後可以輸入新特徵資料便能預測葡 萄酒的品質分數。

第 11 章:首先介紹推薦系統的一些觀念、技術和分類;其次示範推薦系統中的協同 過濾(collaborative filtering)演算法,以應用在將書籍推薦給相似興趣的會員或推 薦會員去購買他可能有興趣的書籍。

第 12 章:本章使用分類演算法(主要是隨機森林法 random forest)來對鳶尾花的品 種特徵資料進行學習,以便最後可以達到輸入花瓣的長度和寬度、花萼的長度和寬度 即能預測或分類花的品種。此外本章使用了 Spark MLlib 的進階版本 Spark ML(機 器學習)程式庫,它提供 Spark MLlib 相仿的機器學習功能,但有對 MLlib 進一步 抽象化,將大數據分析步驟融入在管線(pipeline,如同工廠的流水線)的概念之中。 最棒的是它還提供了 k 次交叉驗證(k-fold cross validation),方便在大數據分析過 程中找到最佳參數組合模型。

隨書光碟內容 隨書光碟「密技」目錄下,收錄本書第 6 ~ 12 章中所有操作指令和附註說明的「密 技檔案」,方便讀者利用剪下和貼上神功,完成系統的操作和大數據分析,以避免冗長 的指令造成初學者輸入時的困擾與挫折感。當然,已經熟悉相關指令的讀者可以自行輸 入本書指令。此外,鼓勵讀者修改指令內容,嘗試執行自己想要的功能,以提升學習效 果。

viii


勘誤與聯繫 筆者才疏學淺,加上編寫時間匆促,雖再三查證除錯,書中難免還是會有錯誤 或 不 精 確 的 地 方, 懇 請 讀 者 先 進 不 吝 批 評 指 教。 如 蒙 指 正, 請 利 用 電 子 郵 件 地 址

qasystem123@gmail.com,謝謝。

致謝 一本著作的完成,並不是一件容易的事,需要諸多緣份的俱足。首先感謝台科大圖 書范總經理和范經理的慨允出版,以及編輯怡萱的辛勞與專業版面設計和編輯;其次感 謝諸多同事與朋友,對本書的精闢意見和建議(請恕在此不一一指名與羅列細節);最 後感謝母親大人和內人椿琪對家中大小事的妥善安排與照顧,讓我沒有後顧之憂,以及 小一的彥忻不斷為我打氣加油,常祝我「寫書順利、一臂之力」,在此一併獻上崇高的 謝意和祝福。 本書的撰寫也參考了 Apache Hadoop 和 Spark 的官方網站與技術文件,以及有關技 術社群大神們的精彩經驗分享,對他們的專業和對社群的無私貢獻,由衷佩服與感謝。

劉勇志

2017,于高雄

ix


目錄 觀念篇 第 1 章 進入大數據時代 1-1 大數據時代來了 1-2 「大」數據有多「大」 1-3 大數據的「大」特徵 1-4 大數據的「大」作用 1-5 大數據的「大」問題 1-6 結語

3 3 6 9 15 18 24

第 2 章 大數據挑戰與因應 2-1 大數據的思維轉變 2-2 大數據案例 2-3 大數據的應用模式分類 2-4 大數據計畫的啟動 2-5 結語

25

第 3 章 大數據分析技術 3-1 資料科學 3-2 資料分析工具箱 3-3 大數據分析流程 3-4 結語

45

工具篇

25 30 37 40 43 45 52 57 59

.

第 4 章 大數據工具與生態系統 4-1 Hadoop / HDFS:分散式檔案系統 4-2 Spark:平行運算框架 4-3 NoSQL 資料庫 4-4 結語

63

第 5 章 大數據作業系統 Ubuntu 的安裝 5-1 安裝虛擬化系統工具 Oracle VirtualBox 5-2 新增和設定 Ubuntu 虛擬機 5-3 安裝和設定 Ubuntu 作業系統 x

83

65 75 79 81 85 90 101


Contents 第 6 章 大數據平台 Hadoop 和 Spark 的安裝 6-1 建立和設定 master 主機 6-2 建立 slave1 虛擬機 6-3 繼續 master 的設定 6-4 啟動 Hadoop 主機集群 6-5 試玩 HDFS 6-6 試玩 Spark 6-7 結束 Spark 和 Hadoop

121

第 7 章 HDFS 和 Spark RDD 的操作 7-1 HDFS 的操作指令 7-2 Spark RDD 的操作

173

第 8 章 Scala—大數據的程式語言 8-1 Scala 基礎 8-2 基本的資料型態 8-3 資料集 Collections 8-4 邏輯流程控制 8-5 函數 8-6 常用資料集處理方法 8-7 模式匹配 Pattern Matching

235

124 148 154 158 163 167 170 174 188 236 243 245 261 270 276 284

.

應用篇 第 9 章 大數據分析應用基礎 9-1 字數計算(word count) 9-2 矩陣相乘 9-3 頻繁項(frequent items)分析 9-4 One-hot 編碼 9-5 相似性(similarity)計算 9-6 文件資料反向排序

291

第 10 章 大數據分析範例—葡萄酒分析 10-1 葡萄酒品質資料集

315

xi

292 297 300 303 306 308 317


Contents 318 322 323 324 325 327 329 331 334

10-2 讀入資料檔 10-3 基本統計資料 10-4 建立 LabeledPoint 資料類別格式 10-5 資料標準化 10-6 切割資料集 10-7 預測模型訓練 10-8 預測與模式評估 MSE 10-9 參數最佳組合與模型測試 10-10 結論

第 11 章

大數據分析範例—書籍推薦 11-1 推薦技術 11-2 書籍資料集 11-3 讀入資料檔與資料前處理 11-4 建立 Rating 資料格式 11-5 切割資料集 11-6 預測模型訓練 11-7 計算均方差 MSE 11-8 參數最佳組合與最佳模型 11-9 使用最佳模型進行推薦

337

第 12 章

大數據分析範例—鳶尾花分類 12-1 大數據分析流程 12-2 分類演算法 12-3 鳶尾花資料集 12-4 讀入資料檔與資料前處理 12-5 資料集隨機切割 12-6 模式設定與訓練 12-7 使用評價器(evaluator)計算準確度 12-8 交叉驗證 12-9 使用最佳模式來預測新值

361

338 341 343 347 350 350 353 354 356 362 365 366 367 375 376 378 380 384

387

附錄 參考文獻 xii


工具篇 第 4 章 大數據工具與生態系統 第 5 章 大數據作業系統 Ubuntu 的安裝 第 6 章 大數據平台 Hadoop 和 Spark 的安裝 第 7 章 HDFS 和 Spark RDD 的操作 第 8 章 Scala—大數據的程式語言



Chapter

大數據作業系統 Ubuntu 的安裝

5

5

大數據作業系統 Ubuntu 的安裝

為解決大數據的資料儲存和處理二大問題,必須建置一個分散式資料儲存 和 處 理 的 平 行 運 算 主 機 集 群( cluster ) 環 境。 如 前 章 所 述, Hadoop 可 以 提

供 大 數 據 的 分 散 式 檔 案 系 統, 業 界 稱 之 為 HDFS ( hadoop distributed file

system );而 Spark 則作為分散式資料處理的軟體框架,提供大數據分析的平 行計算能力。由於 Hadoop 和 Spark 只支援在 Unix / Linux 之類的作業系統上

運行,所以安裝好 Unix / Linux 之類的作業系統是大數據運行的必要條件。本 章主要目的便是進行此類系統的安裝和設定。

在眾多的 Unix / Linux 發行版本中, Ubuntu 被認為是對初學者比較友善

的版本之一。根據其官網的描述: Ubuntu 是一個廣泛應用於個人電腦、智慧手 機、伺服器、雲端計算以及智慧物聯網設備的開源(開放原始碼)作業系統,具

備簡潔直觀的桌面作業系統,同時擁有安全、快速、易用的特性,因此我們選定

Ubuntu 系統作為後續大數據運行的作業系統。

有 鑑 於 Windows 平 台 的 普 及, 且 讀 者 也 不 一 定 有 多 餘 的 電 腦 硬 體 安 裝

Ubuntu 作 業 環 境, 因 此 最 通 用 的 解 決 方 案 就 是 利 用「 虛 擬 化 」 技 術 在 既 有 的

Windows 平台上虛擬出另一部或多部電腦,以用來安裝 Ubuntu 作業系統。虛

擬化出來的機器稱為「虛擬機」,虛擬機的概念如下圖所示。

83


大數據分析與應用

實體電腦 Windows (也就是讀者手邊的電腦)透過虛擬化系統 VirtualBox

提供虛擬化的功能,在實體電腦中虛擬出二部 Ubuntu 的電腦,也就是虛擬電腦

A 和虛擬電腦 B 。虛擬電腦中的 CPU 、記憶體、硬碟和網路卡等配備都是「分享」 實體電腦的相關硬體能力和容量,例如虛擬電腦中的網路卡是借用實體電腦網路

卡的功能,才具備連上網路的能力。這樣的虛擬化技術可以讓我們在實體電腦環 境中,架構「異質」作業系統的虛擬電腦,而且數量可以超過一部以上,作業系 統的類型也幾乎沒有限制。 虛擬化的好處是讓讀者可以在自己的電腦上安裝多台 Ubuntu 虛擬機器,建

立大數據分散式處理的電腦集群,而不需要具備多台電腦硬體。當然,想要啟動 愈多的虛擬電腦,實體電腦硬體就必須具備愈強的 CPU ,以及更多的記憶體和硬

碟空間。

Information

假如讀者手邊具備二台以上可用的電腦硬體,也可以在個別硬體上,直接安裝大數 據平台,體驗真正分散式和平行處理的效能。

本章重點在於大數據系統和工具的安裝,其主要步驟和軟體版本如下: 安裝虛擬化系統工具 Oracle VirtualBox 。 新增和設定 Ubuntu 虛擬機。

安裝和設定 Ubuntu (版本 15.10 )系統。 84


Chapter 大數據作業系統 Ubuntu 的安裝 5-1 安裝虛擬化系統工具 Oracle VirtualBox

5

5-1 安裝虛擬化系統工具 Oracle VirtualBox VirtualBox 是一個免費的跨平台虛擬化工具軟體,原由德國 InnoTek 公司

開發,目前由軟體大廠 Oracle 公司進行維護。請根據以下步驟進行軟體下載和

安裝。

Step

1

下載 VirtualBox 軟體

欲下載 VirtualBox 軟體,請至網址 https://www.virtualbox.org/wiki/

Downloads 或在 Google 首頁搜尋關鍵字 download virtualbox ,並點選第一

列搜尋結果。

請 將 下 載 的 軟 體 放 在 適 當 的 目 錄, 下 載 完 畢 後 請 點 擊 執 行 檔, 例 如

VirtualBox-5.0.22-108108-Win.exe 。

點擊下載 Windows 版本

Information

VirtualBox 若有新版號,可選擇新版安裝。

85


大數據分析與應用

Step

2

進入安裝精靈

安裝精靈的執行過程都是按 Next 或 Yes 以便繼續,如下圖。

1 點擊繼續

2 3

4

86


Chapter 大數據作業系統 Ubuntu 的安裝 5-1 安裝虛擬化系統工具 Oracle VirtualBox

5

Step

3

開始安裝

出現安裝畫面,請點擊下方「 Install 」。

1 開始安裝

遇到「您要安裝此裝置軟體嗎?」的詢問畫面時,請按「安裝 (I) 」,如下圖。

2

3

4

87


大數據分析與應用

Step

4

完成安裝

在最後完成安裝的畫面按下「 Finish 」,結束安裝程序。

點擊「 Finish 」後,接著啟動 VirtualBox 主畫面,如下圖。

目前因尚無任何虛擬機,主畫面左側欄目前為空白。

88


Chapter 大數據作業系統 Ubuntu 的安裝 5-1 安裝虛擬化系統工具 Oracle VirtualBox

5

Step

5

更改虛擬機檔案目錄

後續新增的虛擬機檔案一般都比較大(以 GB 為單位),安裝 VirtualBox 後,

系統預設的虛擬機檔案存放目錄是在 C 磁碟。為避免虛擬機系統搶占本機作業系

統的空間,比較理想的方式是將虛擬機檔案目錄改到有大量空間的磁碟區(例如

D 磁碟),讀者若無 C 磁碟以外的其他磁碟,則此步驟省略。

更改方式請點選「檔案」/「喜好設定」,會出現「 VirtualBox 喜好設定」

的小視窗,在「預設機器資料夾」輸入自己設定的目錄,或點按右邊倒三角形下 拉目錄視窗選擇,設定完畢請按「確定」。往後新建虛擬機的相關檔案資料會存 放於此資料夾內。 1. 點選「檔案」 2. 點選「喜好設定」

3. 輸入自己預設的目 錄,或按右側倒三 角形下拉設定

4. 點選「確定」

89


大數據分析與應用

5-2 新增和設定 Ubuntu 虛擬機 大 數 據 平 台 Hadoop 和 Spark 是 在 Unix / Linux 平 台 上 運 行, 本 書 選 擇

Ubuntu 版本作為作業系統,以下是 Ubuntu 的虛擬機設定步驟。 Step

1

下載 Ubuntu39

欲下載 Ubuntu 作業系統軟體,請至網址 https://www.ubuntu-tw.org/

modules/tinyd0 或在 Google 首頁搜尋關鍵字 download ubuntu ,並點選搜

尋結果第一列「下載 Ubuntu | Ubuntu 正體中文站」,便可看到以下畫面。

1. 點選桌面版本

2. 點選 15.10 版本

3. 點選 64 位元版本

4. 點選「開始下載」

首先點選「 Ubuntu 桌面版本」,其次選擇版本號 15.10 ,假如讀者的電腦 是 64 位元的 Windows ,則可選擇 64 位元版本。點擊「開始下載」便可選擇儲

存在適當的目錄。 Information

本書編寫時正好遇到 Ubuntu 最新版本 16.04 LTS(long term support, 長期支 援版本)發布,但因為新版本的第三方支援並不完備,故選擇次新版本 15.10 下載。 39

90

本 書 出 版 時,「 Ubuntu 正 體 中 文 站 」 網 站 改 版, Ubuntu 15.10 的 連 結 已 經 移 除, 可 另 至 中 興 大 學 http://ftp.nchu.edu.tw/Linux/Ubuntu/ubuntu-cd/15.10/ 或 Ubuntu 官 網

( 速 度 較 慢 ) http://old-releases.ubuntu.com/releases/15.10/ 下 載 64 位 元 版 Ubuntu 15.10 , 檔 名 為「 ubuntu-15.10-desktop-amd64.iso 」; 或 32 位 元 版 Ubuntu , 檔 名 為

「 ubuntu-15.10-desktop-i386.iso 」。


Chapter 大數據作業系統 Ubuntu 的安裝 5-2 新增和設定 Ubuntu 虛擬機

5

Step

2

新增虛擬機

回 到 剛 剛 的 VirtualBox 主 畫 面, 準 備 新 增 新 的 虛 擬 機, 以 便 安 裝

Ubuntu 。點擊左上角「新增 (N) 」,建立新的虛擬機。

輸入虛擬機的「名稱」為 master (即為大數據分析平台的第一部主電腦,

取名為 master ),點選「類型」下拉選單,選擇 Linux ,「版本」為「 Ubuntu

(64-bit) 」(若之前下載的版本為 32 bit ,則由下拉選單中選擇「 Ubuntu (32-

bit) 」)。完成後點擊「下一步 (N) 」繼續。

1 2

91


大數據分析與應用

Step

3

設定虛擬機的記憶體大小

接著指定虛擬機所配置到的記憶體大小。請拉動箭頭或直接輸入記憶體大小 的數字。

直接左右拉動

或直接輸入數字

LOOK! 請根據讀者個人電腦的實體配置,斟酌決定記憶體大小,例如 512、1024、

2048 或 4096。根據 Ubuntu 官方的建議,最低運行需求為 512 MB,給 予愈多的記憶體,可以得到愈好的執行效率,但虛擬機的記憶體量不可能超 過實體機器的記憶體量,例如讀者的個人電腦實際記憶體僅有 2 GB(2048

MB),便無法給到 2048 MB。因後續會啟動二部虛擬機,建議訂為讀者實 體機器記憶體的四分之一。

92


Chapter 大數據作業系統 Ubuntu 的安裝 5-2 新增和設定 Ubuntu 虛擬機

5

Step

4

設定硬碟參數

點選「立即建立虛擬硬碟」,點擊「建立」繼續。

1 2

點選「 VDI 」虛擬硬碟的檔案類型,點擊「下一步」繼續。

1

2

93


大數據分析與應用

選擇「動態配置」,不選「固定大小」是為了不要一開始就配置最大的固定 空間,應讓硬碟根據使用狀況而逐漸擴展空間。點擊「下一步」繼續。

1

2

基本上建立初步的大數據分析平台, 10 GB 的硬碟空間就足夠,但為讓往後

可以放更多資料,所以訂為 40 GB ,以免將來發現空間不足時,想再擴增空間會

是一件很麻煩的事。另外,在上一步驟中,我們設定了「動態配置」,所以所新

增的虛擬機並不會一次占據 40 GB 的空間。讀者也可以考量自己的個人電腦實

體硬碟空間限制,斟酌減少此數字。點擊「建立」繼續,回到 VirtualBox 主畫面。

輸入 40

1

2

94


Chapter 大數據作業系統 Ubuntu 的安裝 5-2 新增和設定 Ubuntu 虛擬機

5

虛擬機 master 已經建立完成,目前的狀態是電源關閉。為了後續 Ubuntu 的安裝,還需要設定虛擬機的一些進階參數。

Step

5

設定虛擬機進階參數

點擊一下 master ,確定 master 被選上(背景為藍色),接著點選上面的「設 定值 (S) 」功能,進入參數設定畫面。 2 1

設定共用剪貼簿 如下圖,點選「一般」功能,接著點選「進階」頁籤,再點選「共用剪貼簿

(S) 」下拉選單,選擇「雙向」選項。這是設定讀者的 Windows 系統剪貼簿可

以和虛擬機的剪貼簿相通,後續可以用來剪貼操作密技(隨書光碟上的操作指令 檔案)上的指令,到虛擬機上進行相關系統操作、安裝和設定的動作。

95


大數據分析與應用

1. 點選「一般」 功能 2. 點選「進階」 頁籤 3. 點選「共用剪貼簿 (S)」下拉選單

4. 選擇「雙向」選項

設定光碟機的開機 iso 檔 點選「存放裝置」功能,進入光碟/硬碟控制器的設定功能。點選「控制器:

IDE 」下的「空」,這是虛擬機的光碟裝置。接著點選「光碟機 (D) 」右邊的光

碟符號,出現下拉選單,然後點選「選擇虛擬光碟檔案」選項,會出現檔案位置 選擇。

1. 點選「存放裝置」 功能

96

2. 點選「控制器: IDE」下的「空」

3. 點選「光碟機 (D)」 右邊的光碟符號

4. 點選「選擇虛擬光 碟檔案」選項


Chapter 大數據作業系統 Ubuntu 的安裝 5-2 新增和設定 Ubuntu 虛擬機

5

找到 Step 1 下載的 Ubuntu 存放目錄位置,點選 Ubuntu 安裝檔( ISO 檔),

本 例 為 ubuntu-15.10-desktop-amd64.iso 。 接 著 按 下 方「 開 啟 舊 檔 (O) 」 繼

續,如下圖。

1

2

虛 擬 機 光 碟 機 已 經 放 入 了 光 碟( 檔 ), 後 續 將 會 以 此 光 碟( 檔 ) 來 安 裝

Ubuntu 。在此之前還有二個功能必須設定,包括網路和共用資料夾。

97


大數據分析與應用

設定虛擬機網卡 點選「網路」功能,確定「介面卡 1 」的頁籤被選上,再點選「附加到 (A) 」

下拉選單,選擇「橋接界面卡」選項。

1. 點選「網路」功能 2. 點選「介面卡 1」頁籤 3. 點選「附加到 (A)」 下拉選單

4. 選擇「橋接界面卡」 選項

選擇「橋接介面卡」後,「名稱 (N) 」應該會顯示讀者實體電腦中的網路卡

名稱。

98


Chapter 大數據作業系統 Ubuntu 的安裝 5-2 新增和設定 Ubuntu 虛擬機

5

Information

選擇「橋接介面卡」的目的是讓虛擬機可以連上實體電腦的區域網路,不僅虛擬機 可以和讀者的 Windows 實體電腦連通,甚至也可以跟區域網路上的其他實體電腦 或虛擬機溝通,方便跨越多台實體電腦,建立大數據平台的電腦集群。因此在電腦 教室的環境,便可以將多台電腦串成大數據分析的分散式處理平台。

設定共用資料夾 設定共用資料夾的目的是要讓實體機器和虛擬機可以透過一個共享的資料夾 來分享和交換資料。也就是說,實體機器放在共用資料夾的檔案,虛擬機是可以 存取的,而虛擬機產生在此的檔案也可以讓實體機器抓取。後續不管是下載的安 裝檔案或是大數據分析的資料集,都可以透過這個共用資料夾來相互傳遞。 點選「共用資料夾」功能後,點擊新增目錄的圖示,接著點選「資料夾路徑」 下拉選單,選擇「其他」選項。

2. 點擊圖示 3. 點選「資料夾路 徑」下拉選單 4. 選擇「 其他」 選項

1. 點選「共用資料夾」 功能

99


大數據分析與應用

彈跳出「瀏覽資料夾」的畫面,建立一個新資料夾 UbuntuShare ,選擇完 後請按「確定」繼續。

5. 彈跳出「瀏 覽資料夾」 視窗

6. 點選「建 立新資料 夾 (M)」

7. 建立 UbuntuShare 資料夾

8. 點選「確定」

勾選「自動掛載 (A) 」,讓虛擬機每次啟動時,都可以自動連上此資料夾。

完成後按「確定」繼續。

1

2

100


Chapter 大數據作業系統 Ubuntu 的安裝 5-3 安裝和設定 Ubuntu 作業系統

5

至此已經完成了虛擬機進階參數的設定,最後請按「確定」回到主畫面。

5-3 安裝和設定 Ubuntu 作業系統 前幾個步驟已經完成了虛擬機的設定,同時也掛載了 Ubuntu 15.10 光碟檔

到 IDE 控制器,接下來便是啟動虛擬機,讓虛擬機讀取光碟檔,直接進入系統安

裝畫面。

Step

1

啟動虛擬機,由光碟機(檔)開機

點擊一下 master ,確定 master 被選上(背景為藍色),接著點選右上方

的「啟動 (T) 」功能,開啟虛擬機。 2 1

101


大數據分析與應用

顯示啟動畫面。

繼續啟動。

102


Chapter 大數據作業系統 Ubuntu 的安裝 5-3 安裝和設定 Ubuntu 作業系統

5

Step

2

設定系統安裝參數

顯示歡迎畫面後,在左側滑動滑鼠滾輪,選擇「中文(繁體)」後,點擊「安 裝 Ubuntu 」。

1. 選擇「中文 ( 繁體 )」

2. 點擊「安裝 Ubuntu」

勾選「當安裝時下載更新」和「安裝這個第三方軟體」,點擊「繼續」。

1. 勾選此二選項

2. 點選「繼續」

103


大數據分析與應用

點選「清除磁碟並安裝 Ubuntu 」,點擊「立刻安裝 (I) 」。

1

2

點擊「繼續」。

104


Chapter 大數據作業系統 Ubuntu 的安裝 5-3 安裝和設定 Ubuntu 作業系統

5

確認時區為 Taipei 台北,點擊「繼續」。

選擇「英語 ( 美式 ) 」的鍵盤配置,後續步驟會針對中文輸入法另外進行安 裝。

1. 選擇「英語 ( 美式 )」

2. 選擇「英語 ( 美式 )」

105


大數據分析與應用

Step

3

設定電腦名稱、使用者帳號和密碼

為了簡化後續的操作,系統的使用者名稱和密碼都選擇簡短的英文字 mis 。

安裝畫面上,除了「您的電腦名稱」為 master 外,其他都是輸入 mis 。點選「自

動登入」後,點擊「繼續」。

2. 輸入 master 1. 全部輸入小寫 mis

3. 點選「自動登入」

4. 點擊「繼續」

Step

4

開始安裝

系統進行檔案複製,並進入安裝程序。經過幾分鐘的時間和數個展示畫面之 後,就可以看到完成安裝的畫面。

106


Chapter 大數據作業系統 Ubuntu 的安裝 5-3 安裝和設定 Ubuntu 作業系統

5

看到「完成安裝」的畫面後,請點擊「立刻重新啟動」。

Step

5

手動重新啟動 Ubuntu

點擊完「立刻重新啟動」後,通常會遇到虛擬機「呆」住的畫面,如下圖畫 面 A。

若畫面一直停留在畫面 A 很久,請做強迫關機的動作。點選畫面 A 右上角

關閉視窗的圖示,會出現「關閉虛擬機器」的子視窗(如畫面 B ),點選「機器 關機 (P) 」選項,再點擊「確定」,即可關閉虛擬機回到 VirtualBox 主畫面。 1. 點選「關閉視窗」 圖示

畫面 A

畫面 B

2. 點選「機器關機 (P)」 3. 點擊「確定」

107


大數據分析與應用

Step

6

第一次啟動 Ubuntu

點擊一下 master ,確定 master 被選上(背景為藍色),接著點選「啟動

(T) 」,進行系統安裝後的第一次開機。 2 1

遇到「鍵盤捷徑鍵」畫面,請點擊結束圖示。

遇到「鍵盤 捷徑鍵」畫 面,請點擊 結束圖示

108


Chapter 大數據作業系統 Ubuntu 的安裝 5-3 安裝和設定 Ubuntu 作業系統

5

Step

7

安裝 Guest Additions

安裝 Guest Additions 的目的包括:提供虛擬機更高的螢幕解析度、剪貼簿

和資料夾的資料交換、實體機器和虛擬機間滑鼠游標的自動切換、時間同步功能 等。

點擊「裝置」功能,點選「插入 Guest Additions CD 映像…」。 1. 點擊「裝置」功能

2. 點選「插入 Guest Additions CD 映像 ...」

出現確認畫面,請點擊「執行 (R) 」繼續。

輸入密碼 mis ,點擊「核對 (A) 」繼續。

1 2

109


大數據分析與應用

系統自動啟動「終端機」(黑色畫面),開始執行相關的安裝和設定。執 行 完 畢 後 會 停 留 在「 Press Return to close this window …」, 按 一 下 鍵 盤

Enter 鍵回到 Ubuntu 的桌面,建議此時重新啟動系統。

點擊右上角關機圖示,再點擊「關機…」,會出現關機提示畫面。

1. 點擊右上角關機圖示

2. 點擊「關機 ...」

110


Chapter 大數據作業系統 Ubuntu 的安裝 5-3 安裝和設定 Ubuntu 作業系統

5

看到關機提示畫面時,請點選左側「重新啟動」。

重新啟動後,讀者會看到全螢幕「高」解析度的 Ubuntu 桌面,如下圖。虛

擬機右下角的圖示分別顯示出虛擬機的硬體狀態,某些圖示甚至可以按右鍵進入

設定畫面。圖示的意義分別代表:硬碟、光碟、網路卡、 USB 設備、共用資料

夾、顯示器、視訊擷取、額外功能以及滑鼠功能。最後一個向下的箭頭和 Right

Ctrl 是指目前的主機鍵( Host key )設定為鍵盤右側的 Ctrl 鍵,原本此鍵是用

來在實體機器和虛擬機之間切換滑鼠游標,但系統在本步驟已經安裝了 Guest

Additions ,故此 Host key 已經不再重要。

111


大數據分析與應用

Step

8

設定終端機圖示

「終端機」的功能(猶如 Windows 系統中的 cmd 程式)在大數據的分析

過程中, 提供指令的輸入與操作窗口,是 Ubuntu 不可或缺的功能之一。把此 程式的圖示找出來,並放置在左側啟動欄,方便後續使用。

在左側啟動欄中,點擊「搜尋」圖示,出現輸入欄後,輸入「 terminal 」,

底下畫面會出現與 terminal 相關的圖示。 1. 點擊「搜尋」圖示 2. 在輸入欄中輸入 「terminal」

對「終端機」圖示按滑鼠左鍵不放,並往左拖曳到啟動欄中,置放於「搜尋」 圖示的下方,此時「檔案」圖示會往下移動挪出空間,將「終端機」圖示放置此 處,放開滑鼠左鍵,即完成「終端機」圖示的放置。往後只要點擊「終端機」圖 示一下,就可以啟動終端機功能。

1. 找到終端機圖示,點 擊滑鼠左鍵不放並往 左拖曳

112


Chapter 大數據作業系統 Ubuntu 的安裝 5-3 安裝和設定 Ubuntu 作業系統

5

2. 往啟動欄中「搜尋」 圖示的下方,系統會 自動挪出空間

3. 完成「終端機」 圖示的放置

LOOK! 在安裝和設定 Ubuntu 15.10 的過程中,有時會出現「可以升級至 Ubuntu

16.04 LTS」的提示畫面,請選擇不升級。

1

2

113


大數據分析與應用

Step

9

更新 Ubuntu 語言支持

點擊右上角「設定」圖示,選擇「系統設定值」功能,出現系統設定值畫面, 點擊「語言支持」,經過系統上網檢查語言支持後,通常會出現「安裝的語言支 援尚未完備」畫面,請點選「安裝 (I) 」繼續。

1. 點擊右上角 「設定」圖示 2. 點擊「系統 設定值」

3. 出 現 系 統 設 定 值 畫 面 後, 點 擊「語言支持」

4. 點擊「安裝 (I)」

若需要核對身分請輸入密碼 mis ,再點擊「核對 (A) 」繼續。 1 2

114


Chapter 大數據作業系統 Ubuntu 的安裝 5-3 安裝和設定 Ubuntu 作業系統

5

完成後,點擊右下角「關閉 (C) 」。

LOOK! 此時必須執行系統登出和重新登入一次,語言支持設定才算完成。

點擊右上角「設定」功能圖示,再點選「登出」。

1

2

115


大數據分析與應用

點擊右側「登出」按鈕。

再以 mis 身分登入,輸入密碼 mis 。

116


Chapter 大數據作業系統 Ubuntu 的安裝 5-3 安裝和設定 Ubuntu 作業系統

5

Step

10

新增中文輸入法

點擊「鍵盤」圖示,選擇「 ConfigureFcitx 」功能,進入輸入法設定,並點

選左下角「 + 」按鈕以新增輸入法,選擇「新酷音」輸入法,按「確定 (O) 」。 1. 點擊「鍵盤」圖示

2. 點選「ConfigureFcitx」 功能

3. 點擊「+」按鈕 4. 點選「新 酷音」

5. 點擊「確 定」

回到「輸入法設定」畫面,看到「新酷音」已經加入,點擊左上角紅色叉叉 結束視窗圖示。接下來設定中文輸入快速鍵。

117


大數據分析與應用

Step

11

設定中文輸入快速啟動鍵

Ubuntu 的預設中文輸入快速啟動鍵和一般 Windows 環境下的使用習慣不

一樣,進入 Ubuntu 系統設定值畫面,更改成一般習慣使用的 Ctrl-Space 組合 鍵。

點選右上角「設定」圖示,選擇「系統設定值」功能,出現「系統設定值」 畫面後,點擊「文字輸入」圖示,進入「文字輸入」畫面。

1. 點擊「設定」圖示 2. 點選「系統設定值」功能

3. 點擊「文字輸 入」圖示

118


Chapter 大數據作業系統 Ubuntu 的安裝 5-3 安裝和設定 Ubuntu 作業系統

5

點選「切換至下個來源的按鍵」輸入欄位(原顯示 Super+Space ),出現「新

捷徑鍵…」後,按下鍵盤上的 Ctrl-Space ,完成後關閉「文字輸入」視窗。

至此 Ubuntu 作業系統已經安裝和設定完畢,接下來的第六章將會繼續完成 大數據分析平台 Hadoop 和 Spark 的安裝。

1. 點擊「切換 至下個來源 的按鍵」輸 入欄位

2. 出現「新捷徑 鍵 ...」後

3. 按下鍵盤上的 Ctrl-Space

119


大數據分析與應用

Q &A 1. 在花費一段時間成功安裝 Ubuntu 作業系統之後,是不是可以透過「拷貝」 虛擬機的方式,來增加另外一部虛擬機(電腦),而不需要再辛苦重新安裝 Ubuntu ? 試著在虛擬機 master 關閉的狀態下,創建另外一部 Ubuntu 虛擬機。 *提示:使用 VirtualBox 的「再製」功能。 2. 虛擬機的網路卡設定有許多組態設定,請至虛擬機的網路設定畫面,在「啟用網 路卡」下的「附加到」功能中,點選不同的設定組態,再啟動虛擬機,檢查虛擬 機的連線狀態,虛擬機是否可以上網?虛擬機可以和實體機的 Windows 連通嗎? 又不同的虛擬機之間可以連通嗎?

3. 在 多 台 實 體 電 腦 的 環 境 中( 例 如 電 腦 教 室 ), 分 別 對 不 同 的 實 體 電 腦 安 裝 Ubuntu 虛擬機,再利用「ping 電腦 IP 位址」指令,測試虛擬機是否可以相互 連通。

120


Chapter

大數據平台 Hadoop 和 Spark 的安裝

6

6

大數據平台 Hadoop 和 Spark 的安裝

在前一章的基礎下(在虛擬機上完成 Ubuntu 作業系統的安裝),本章開始 要往大數據的平台邁進,也就是安裝 Hadoop 和 Spark 。

本章所要建立的大數據分析平台系統和網路架構如下圖所示。

Hadoop 電 腦 集 群 的 主 機 分 為 兩 種 角 色, 一 種 稱 為 master ( 主 人 機 ),

主 要 負 責 集 群 資 料 目 錄 的 維 護 和 運 算 資 源 的 分 配 與 管 理( 功 能 名 稱 分 別 為

121


大數據分析與應用

NameNode 和 ResourceManager );另一種為僕人機( slave ),主要負責資

料的分散式儲存處所和對於運算工作的聯繫與回應(功能名稱分別為 DataNode

和 NodeManager )。 在 基 本 的 Hadoop 集 群 架 構 中, 主 人 機 僅 能 有 一 部, 而 僕人機可以包含多部以上。

本章安裝的是最基礎的集群環境,需要動用到二部虛擬機,一部扮演主人機

master 的角色;另一部扮演僕人機 salve1 的角色,也就是上圖中,虛線所框住

的範圍。假如讀者想要再增加僕人機,例如 slave2 、 slave3 等,則請仿效後續 建立僕人機的步驟即可完成。 Information

Hadoop 的安裝也允許主人機和僕人機「合體」,也就是所有的角色和功能都集中 在單一部電腦,稱為「假」分散式模式(Pseudo-Distributed Mode)。讀者可參 考隨書光碟「第 6 章大數據平台 Hadoop 和 Spark 的安裝 .docx」中「安裝單節點

Hadoop 環境」小節的設定方式和操作指令,就可以在單一虛擬機上啟動主人機和 僕人機的所有功能。 另外須注意的是,本次所安裝的 Hadoop 電腦集群,是架構在區域網路環境

上,採用固定的 IP 位址,主人機 master 使用 192.168.1.100 ;僕人機 slave1 使用 192.168.1.101 。假如讀者的 IP 網段或 IP 可用位址區間有所不同,而必

須使用不同的網路設定參數,請依據實際狀況調整,但相關的變更必須一一反映 在後續的設定中。

本章的重點在於大數據系統和工具的安裝,其主要步驟和軟體版本如下: 安裝和設定 Hadoop 2.6.4 。

安裝和設定 Spark 1.6.2 (for Hadoop 2.6) 。

安裝策略

安裝 Hadoop 和 Spark 是一件繁複的流程,為了減少讀者的負擔,本章採 用以下的安裝流程,如下圖所示。

122


Chapter

大數據平台 Hadoop 和 Spark 的安裝

6

在上一章的基礎之下,我們已經建立了 Ubuntu 虛擬機 master ,為簡化安

裝流程,我們先在此虛擬機之上,完成主人機和僕人機安裝流程中的共同部分, 之後再複製虛擬機 master ,產生僕人機 slave1 。接著針對二種角色不同的部分,

分別進行必要的安裝和設定,完成相關安裝和設定之後,執行指令啟動 Hadoop

的 電 腦 集 群( 包 含 master 和 slave1 )。 接 下 來 會 透 過 一 個 網 頁 界 面, 檢 查

Hadoop 電腦集群的狀態,並試著執行分散式檔案系統的簡易操作和執行一支簡

單的分散式程式,確認 Hadoop 是否可以正常運行。

假如讀者有多台僕人機(例如 slave2 、 slave3 等)要安裝,則可以重複圖

上虛線部分的「新增僕人機的安裝流程」。

LOOK! 以上是透過虛擬機安裝大數據平台的「捷徑」方法。假如讀者所使用安裝 的不是虛擬機器,而是實體機器的話,則每一部實體機器都必須從安裝

Ubuntu 作業系統開始,完整執行每一個安裝步驟,並針對主人機和僕人機 分別安裝及設定。 123


大數據分析與應用

在安裝 Hadoop 和 Spark 的過程中,需要使用到 Ubuntu 的操作指令,這 對某些讀者而言可能相當陌生。為了減少登打指令時的錯誤而導致系統安裝失

敗,筆者將所有的安裝指令整理在隨書光碟中的 Word 檔案。讀者安裝系統時,

請在另一個視窗中打開此檔,接著利用複製和貼上神功,就可以完成複雜的系統 安裝,且保證一定能夠成功。唯一要注意的是必須「細心」,複製「對的」資料

貼在「對的」地方,並且看到「對的」結果出現,才是成功關鍵。讀者可以從隨 書光碟中找到本章的安裝指令檔案,光碟目錄「密技」下,檔名「第 6 章大數據 平台 Hadoop 和 Spark 的安裝 .docx 」。

6-1 建立和設定 master 主機 Step

1

取得大數據平台軟體

下載 Hadoop 2.6.4 下 載 Hadoop 2.6.4 , 請 至 以 下 網 址 下 載( 安 裝 密 技 檔 案 內 有 網 址 ):

http://apache.stu.edu.tw/hadoop/common/hadoop-2.6.4/

點選下圖紅色框框的連結,下載 Hadoop 2.6.4 壓縮檔,並儲存在虛擬機的

共用資料夾,例如 D:\UbuntuShare (請參考上一章設定,若讀者所設定的檔案 目錄名稱不同,請依個人的目錄名稱為準),方便後續 Ubuntu 系統取用。

124


Chapter 大數據平台 Hadoop 和 Spark 的安裝 6-1 建立和設定 master 主機

6

Information

讀者在搜尋 Hadoop 軟體的時候,可能會發現有比 Hadoop 2.6.4 更新的版本,但 由於我們必須配合 Spark 1.6.2 的執行,因此選擇具相容性的 Hadoop 2.6.4。

下載 Spark 1.6.2 下載 Spark 1.6.2 ,請至以下網址下載(安裝密技檔案內有網址): http://

spark.apache.org/downloads.html

進入 Spark 下載頁,首先選擇最新版本 1.6.2 (本書撰寫時的最新版本), 接著點選與 Hadoop 2.6 相容的建構版本、點選「直接下載」,最後點擊下載連

結, 選 擇 存 檔 在 Ubuntu 的 共 用 資 料 夾, 例 如 D:\UbuntuShare ( 請 參 考 上 一

章的設定,若讀者所設定的檔案目錄名稱不同,請依個人的目錄名稱為準),方 便後續 Ubuntu 系統取用。

1. 點選「Spark 1.6.2」 版本 2. 點 選 與 Hadoop 2.6 相容的建構版本 3. 點選「直接下載」 4. 點擊下載、選擇存檔 目錄

Step

2

設定 master 網路參數

為了讓虛擬機 master 可以正常連上網路,確保大數據電腦集群的正常運作,

必須先設定網路相關參數,並確定 master 可以正常連上 Internet 。

啟動虛擬機 master 。

點擊一下 master ,確定 master 被選上(背景為藍色),接著點選右上的「啟 動 (T) 」功能,開啟虛擬機。

125


大數據分析與應用

2 1

開機完成後,出現 Ubuntu 桌面,點擊「終端機」圖示,會啟動終端機界面,

如下圖。

點擊「終端機」圖示

「 終 端 機 」 是 我 們 後 續 安 裝 和 控 制 大 數 據 平 台 的 重 要 介 面, 在 往 後 的 操 作 過 程 中 常 大 量 使 用 終 端 機 和 操 作 指 令。 終 端 機 畫 面 會 顯 示 提 示 字 元

mis@master:~$ , 並 且 游 標 停 留 其 後, 等 待 使 用 者 輸 入 指 令。 mis 代 表 使 用

者 帳 號; master 是 主 機 名 稱; ~ 代 表 目 前 使 用 者 停 留 在「 家 目 錄 」( Home

Directory ),其完整的名稱是 /home/mis ; $ 則是指令提示(分隔)字元,也

表示 mis 是一般身分使用者(非系統最高管理者 root;root 的提示字元是 # )。

126


Chapter 大數據平台 Hadoop 和 Spark 的安裝 6-1 建立和設定 master 主機

6

Information

讀者電腦上的終端機顏色配置預設為「黑底白字」,主要目的是減少螢幕光線對讀 者眼睛的傷害。然而黑底白字並不適合在書上呈現,故往後的終端機示意圖都是白 底黑字(如下圖所示)。

讀者若想要更改自己喜歡的顏色配置也可以,請在「終端機」畫面上按右鍵,點選「設 定組合」/「設定組合偏好設定」,再點選「顏色」頁籤,接著點選「內建色彩組 合 (M)」下拉選單,即可挑選自己喜歡的顏色配置。

編輯主機名稱檔 hosts 設定此資料的用意在於後續可以用主機名稱代替 IP 位址。請在「終端機」 輸入以下指令,並按「 Enter 」鍵。 sudo gedit /etc/hosts

LOOK! 請開啟操作密技檔案,拷貝(Ctrl-C)檔案上的指令貼至 Ubuntu 終端機的 畫面中,如此讀者就不會被指令登打細節所困擾。貼上的方式可以選擇在終 端機畫面上,按滑鼠右鍵點選「貼上」,或按鍵盤組合鍵 Ctrl-Shift-V。記得 按 Enter 以執行指令。

使用圖形化文字編輯器 gedit 編輯 hosts 檔案,定義主機的名稱和 IP 位址。

gedit 前面的另一個指令 sudo ,代表要用超級管理員的權限能力來執行 gedit 指

令,避免權限不足而無法完成編輯動作。第一次藉由 sudo 執行指令時,系統會

詢問密碼,請輸入 mis ,並按「 Enter 」,執行畫面如下圖。

127


大數據分析與應用

1. 輸入指令 2. 第一次使用 sudo 指令 會 詢 問 密 碼, 請 輸 入 mis,並按「Enter」 3. 清空原本舊資料, 貼上設定資料 註:若有 slave2 或 slave3, 請 刪 除 此 二行開頭的 # 字號

上 圖 中, 輸 入 指 令 sudo gedit /etc/hosts , 按 下「 Enter 」 鍵, 會 出 現

[sudo] password for mis: 提示,要求使用者輸入密碼(請輸入 mis )。由於

是密碼的關係,輸入時並不會顯示在畫面上。當出現 gedit 的編輯畫面時,請清 空畫面上原本的舊資料,並貼上如下的設定資料。 127.0.0.1 127.0.1.1

localhost Hadoop

192.168.1.100 master 192.168.1.101 slave1 #192.168.1.102 slave2 #192.168.1.103 slave3 # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastpref ix ff02::1 ip6-allnodes ff02::2 ip6-allrouters

完成後請按 Ctrl-S 存檔,關閉 gedit 視窗(點按畫面左上角「紅底黑色 X 」

圖示),回到終端機畫面。

128


Chapter 大數據平台 Hadoop 和 Spark 的安裝 6-1 建立和設定 master 主機

6

LOOK! 若讀者的網路組態與本書設定的不同,請依據實際狀況更改,例如讀者的網 域是 192.168.0.xxx,則第四行請改成「192.168.0.100 master」,後續相 關設定依此類推。 Information

讀者若預計要設定更多的僕人機,例如 slave2、slave3 等,則請清除在該行前頭的

# 字號,或自行增加更多僕人機的設定。

設定 master 的 IP 位址為固定 IP 位址 大數據平台中的主人機必須管理僕人機應用程式的啟動和執行。若網路設定 中採用了浮動 IP 位址,當 IP 位址變動時,會導致主人機無法聯繫僕人機,因此

大數據平台上的電腦集群主機最好都設定成固定 IP 位址。請輸入以下指令,並

按「 Enter 」鍵。

sudo gedit /etc/network/interfaces

出現 gedit 編輯畫面,請清空畫面上原本的舊資料,貼上我們所設定的資料。

129


大數據分析與應用

# interfaces(5) f ile used by ifup(8) and ifdown(8) auto lo iface lo inet loopback auto enp0s3 iface enp0s3 inet static address 192.168.1.100 netmask 255.255.255.0 network 192.168.1.0 gateway 192.168.1.1 dns-nameservers 168.95.1.1

設定 master 的固定 IP 為 192.168.1.100 ,完成後請按 Ctrl-S 存檔,並關 閉 gedit 視窗,回到終端機畫面。

編輯本機的名稱

請輸入以下指令,並按「 Enter 」鍵。 sudo gedit /etc/hostname

確定主機的名稱為 master ,按 Ctrl-S 存檔,關閉 gedit 視窗,回到終端機

畫面。

重新開機 請輸入以下指令,並按「 Enter 」鍵,重新開機,讓設定生效。 sudo reboot

130


Chapter 大數據平台 Hadoop 和 Spark 的安裝 6-1 建立和設定 master 主機

6

檢查網路 IP 設定是否正確 開機完成後,啟動「終端機」,輸入以下指令,確認 IP 位址是否正確。 ifconf ig hostname

執行畫面如下圖。

正確喔!

確定網路可以連上 Internet 點擊「 Firefox 」瀏覽器,查看是否可以連上網際網路。

點擊「Firefox」瀏 覽器,可以連上網 際網路!

131


大數據分析與應用

Step

3

安裝遠端安全連線 SSH

SSH ( Secure Shell )提供主人機對僕人機遠端的安全登入和資料加密傳輸

功能。其作法是主人機先將自己的公鑰分發給僕人機,當主人機要登入僕人機 時,僕人機先傳遞一份隨機訊息給主人機,主人機再以私鑰加密回傳給僕人機, 而僕人機再用主人機的公鑰來解開,藉此確認主人機的身分,便可以免密碼的方 式登入僕人機。這樣的機制可以讓 Hadoop 在運作時,省卻對大量僕人機做密碼

輸入登入的需求。

更新線上軟體列表 請在終端機輸入以下指令,並按「 Enter 」鍵。 sudo apt-get update

Ubuntu 透過 APT ( Advanced Packaging Tools ,進階套件工具)來獲得 和安裝軟體。 APT 可以自動下載、配置及安裝軟體套件,並且該軟體所必要搭配

(依賴)的其他軟體套件也會自動下載安裝,這大大簡化了 Ubuntu 系統在管理

和使用軟體的程序。使用前先更新軟體套件清單,方便後續取得最新的軟體與其 所依賴的軟體套件,執行畫面如下圖。

套件清單更新完成!請繼續後面的安裝程序。

132


Chapter 大數據平台 Hadoop 和 Spark 的安裝 6-1 建立和設定 master 主機

6

開始下載安裝 ssh 請輸入以下指令,並按「 Enter 」鍵。 sudo apt-get -y install ssh

安裝畫面如下圖。

產生公私鑰和授權檔 請輸入以下指令,並按「 Enter 」鍵,產生公私鑰。 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

建立授權檔。 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

查看公私鑰檔案 ll ~/.ssh

133


大數據分析與應用

執行畫面如下圖。

授權檔、私鑰和 公鑰檔案

測試 ssh 接下來測試本機的 ssh 是否正常,主要檢查是否可以不需密碼就登入本機。

請輸入以下指令,並按「 Enter 」鍵,安全連線到 master (其實就是本機)。 ssh master

134


Chapter 大數據平台 Hadoop 和 Spark 的安裝 6-1 建立和設定 master 主機

6

測試過程如下圖所示。 第一次執行「ssh master」,會 詢問是否繼續連線,請輸入 yes

登 入 master 了 (其實就是本機 啦!)

輸 入「exit」, 離 開此次的登入 已經登出囉! 再登一次! 這次啥問題也沒問 就讓人進來!表示 ssh 正常運作囉!

輸 入「exit」, 離 開。這次真的要離 開,不玩了

首次使用 ssh 連線某一部主機(例如本例中的 master ),會詢問是否繼續

連線,回答 yes 後,該主機的名稱會被加入到 known_hosts 檔案中(與公私鑰 和授權檔放在同一目錄 .ssh 下)。第二次後再連線到該主機,只要系統確認主

機名稱、 IP 位址和加解密資料沒有錯誤,就可以直接免密碼登入。假如測試連線 的過程中一直要求登入者輸入密碼,便表示 ssh 沒有正常運作。 Information

這樣的測試動作會在僕人機建立之後,再做一次跨主機的測試。基本上,若是可以 順利完成對本機做的 ssh 測試,跨主機測試也應該沒有問題。

135


大數據分析與應用

Step

4

安裝 Java JDK

在安裝和執行完全由 Java 程式語言所開發的 Hadoop 系統前,必須先建立

Java 的環境。以下開始安裝 Java 套件。 安裝預設的 Java JDK

請輸入以下指令,並按「 Enter 」鍵。 sudo apt-get -y install default-jdk

安裝畫面如下圖。

查詢 Java 版本和安裝路徑 請輸入以下指令,並按「 Enter 」鍵,查詢 Java 安裝版本。 java –version

查詢 Java 安裝路徑,指令如下。

update-alternatives --display java

執行畫面如下圖。

Java 的安裝版本 和安裝目錄

136


Chapter 大數據平台 Hadoop 和 Spark 的安裝 6-1 建立和設定 master 主機

6

Java 的 安 裝 版 本 為 1.7.0_101 , 預 設 安 裝 目 錄 為 /usr/lib/jvm/java-7-

openjdk-amd64/ 。 安 裝 目 錄 很 重 要, 在 後 續 的 安 裝 中, 必 須 提 供 給 Hadoop

系統知道, Hadoop 系統才能正常運行。

Step

5

解壓 Hadoop 和 Spark 安裝檔

安裝 Hadoop 和 Spark 系統的第一步,便是把下載回來的壓縮檔解壓,並 放在適當的目錄下。

確定安裝檔案是否存在 請輸入以下指令,並按「 Enter 」鍵。 sudo ls -l /media/sf_UbuntuShare

Step 1 下載的 Hadoop 和 Spark 壓縮檔存放在 D:\UbuntuShare (設定為

共用資料夾),對映到 Ubuntu 的系統便是 /media/sf_UbuntuShare (注意目

錄區隔符號不是 Windows 下的倒斜線 \ ),查看一下此目錄是否擺放之前下載 的 hadoop-2.6.4.tar.gz 和 spark-1.6.2-bin-hadoop2.6.tgz 。

準備安裝的檔案在此!

安裝 hadoop-2.6.4 請輸入以下指令,並按「 Enter 」鍵,解壓縮 hadoop-2.6.4 到本地目錄。 sudo tar -zxf /media/sf_UbuntuShare/hadoop-2.6.4.tar.gz

將解壓的資料移動到 /usr/local/hadoop ,作為 hadoop 的安裝目錄。 sudo mv hadoop-2.6.4 /usr/local/hadoop

更改 /usr/local/hadoop 安裝目錄為使用者 mis 所擁有,以具備後續修改

和執行的權力。

137


大數據分析與應用

sudo chown mis:mis -R /usr/local/hadoop

執行畫面如下圖。

沒有顯示錯誤訊息,表示指令執行無誤。

安裝 spark-1.6.2 請輸入以下指令,並按「 Enter 」鍵,解壓縮 spark-1.6.2 到本地目錄。 sudo tar -zxf /media/sf_UbuntuShare/spark-1.6.2-bin-hadoop2.6.tgz

將解壓的資料移動到 /usr/local/spark ,作為 Spark 的安裝目錄。 sudo mv spark-1.6.2-bin-hadoop2.6 /usr/local/spark/

更改 /usr/local/spark/ 安裝目錄為使用者 mis 所擁有,以具備後續修改 和執行的權力。

sudo chown mis:mis -R /usr/local/spark

執行畫面如下圖。

沒有顯示錯誤訊息,表示指令執行無誤。

設定 Hadoop 和 Spark 環境變數 將 Hadoop 和 Spark 環境變數設定在 mis 的啟動腳本( .bashrc 檔)中,

每次 mis 登入時,便可以有正確的環境變數設定。

請輸入以下指令開啟啟動腳本,並按「 Enter 」鍵。

138


Chapter 大數據平台 Hadoop 和 Spark 的安裝 6-1 建立和設定 master 主機

6

sudo gedit ~/.bashrc

在檔尾貼上以下資料。 #Java 安裝路徑 export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 #Hadoop 相關路徑 export HADOOP_HOME=/usr/local/hadoop export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export YARN_HOME=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export YARN_HOME=$HADOOP_HOME export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib" export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH #Spark 相關路徑 export SPARK_HOME=/usr/local/spark export PATH=$PATH:$SPARK_HOME/bin

139


大數據分析與應用

執行畫面如下圖。

1. 輸入指令

2. 移至檔尾、按二 次「Enter」鍵

3. 複製、貼上環 境變數資料

環境的設定包括 Java 、 Hadoop 和 Spark 等安裝路徑,完成後請按 Ctrl-S 存檔,並關閉 gedit 視窗,回到終端機畫面。

140


Chapter 大數據平台 Hadoop 和 Spark 的安裝 6-1 建立和設定 master 主機

6

讓環境變數設定生效 請輸入以下指令,並按「 Enter 」鍵。 source ~/.bashrc

執行啟動腳本,讓剛才的設定生效。

Step

6

設定 Hadoop 配置檔(configuration files)

為了讓電腦集群可以正常運作,必須對 Hadoop 的設定檔做正確設定,以下

是幾個 Hadoop 核心的配置檔及其說明。

Hadoop 主要配置檔名稱和功能說明

配置檔名稱

hadoop-env.sh

功能說明 設定與 Hadoop 有關的環境變數,主要是

JAVA_HOME 。 通知 Hadoop 系統程式、 NameNode 在

core-site.xml

電腦集群中執行的位置,還有包含 HDFS 和 MapReduce 一般性 I/O 的設定。

yarn-site.xml mapred-site.xml

電腦集群資源管理 Yarn 相關的設定,包括

ResourceManager 和 NodeManager 。 設定 MapReduce 應用程式作業所需的參 數。

master

設定執行 NameNode 角色的主機名稱。

slaves

設定執行 DataNode 角色的主機名稱。 定 義 NameNode 和 DataNode 的 目 錄

hdfs-site.xml

路徑和相關參數。 註: 此 檔 須 等 到 建 立 slave1 虛 擬 機 後 才 會進行設定。

以下進行配置檔設定,並說明參數的意義。

設定 hadoop-env.sh 腳本檔 請輸入以下指令開啟腳本檔,並按「 Enter 」鍵。

sudo gedit /usr/local/hadoop/etc/hadoop/hadoop-env.sh

141


大數據分析與應用

請將第 25 行 export JAVA_HOME=${JAVA_HOME} 改成以下設定。 export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

執行畫面如下圖。

完成後請按 Ctrl-S 存檔,並關閉 gedit 視窗,回到終端機畫面。

設定 core-site.xml

先建立 Hadoop 的暫存目錄,請輸入以下指令,並按「 Enter 」鍵。 mkdir -p /usr/local/hadoop/tmp

建立的 /usr/local/hadoop/tmp 目錄會在 core-site.xml 中用到。 142

請輸入以下指令,並按「 Enter 」鍵,編輯 core-site.xml 。


Chapter 大數據平台 Hadoop 和 Spark 的安裝 6-1 建立和設定 master 主機

6

sudo gedit /usr/local/hadoop/etc/hadoop/core-site.xml

在 <configuration> 和 </configuration> 之間,輸入以下內容。 <property> <name>fs.default.name</name> <value>hdfs://master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop/tmp</value> </property>

執行畫面如下圖。

游標停在 <configuration> 和 </configuration> 之間, 貼上設定文字

設 定 的 文 字 請 確 實 貼 在 <configuration> 和 </configuration> 之 間,

每 組 設 定 文 字 包 含 <name></name> ( 其 間 放 的 是 參 數 名 稱 ) 和 <value> </

value> (其間放的是參數的值),參數值放的位置若有錯位, Hadoop 啟動時便

無法依照我們想要設定的狀況正常運行。在 core-site.xml 中,我們設定的二個 參數,一個是 Hadoop 分散式檔案系統的主機(即 NameNode )和它的通訊埠

( port );另一個是 Hadoop 運行時產生暫時資料的存放目錄。事實上, core-

143


大數據分析與應用

site.xml 的參數相當多,在此僅設定我們所需的參數,若對其參數種類和預設值

有興趣,請參考 https://hadoop.apache.org/docs/r2.6.4/hadoop-project-

dist/hadoop-common/core-default.xml 。

完成後請按 Ctrl-S 存檔,並關閉 gedit 視窗,回到終端機畫面。

設定 yarn-site.xml

請輸入以下指令,並按「 Enter 」鍵,編輯 yarn-site.xml 。 sudo gedit /usr/local/hadoop/etc/hadoop/yarn-site.xml

在 <configuration> 和 </configuration> 之間,輸入以下內容。 <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>

執行畫面如下圖。

游標停在 <configuration> 和 </configuration> 之間, 貼上設定文字

144


Chapter 大數據平台 Hadoop 和 Spark 的安裝 6-1 建立和設定 master 主機

6

在 此 設 定 Yarn 資 源 管 理 主 機 ResourceManager 所 在 的 主 機 和

NodeManager 上 可 以 執 行 的 MapReduce 程 式。 yarn-site.xml 的 參 數 相 當 多,在此僅設定我們所需要的參數,若對其參數種類和預設值有興趣,請參考

https://hadoop.apache.org/docs/r2.6.4/hadoop-yarn/hadoop-yarncommon/yarn-default.xml 。

完成後請按 Ctrl-S 存檔,並關閉 gedit 視窗,回到終端機畫面。

設定 mapred-site.xml

先 從 樣 本 檔 mapred-site.xml.template 複 製 成 mapred-site.xml 檔, 再

輸入以下指令,並按「 Enter 」鍵。

sudo cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/ local/hadoop/etc/hadoop/mapred-site.xml

輸入以下指令,並按「 Enter 」鍵,編輯 mapred-site.xml 。 sudo gedit /usr/local/hadoop/etc/hadoop/mapred-site.xml

在 <configuration> 和 </configuration> 之間,輸入以下內容。 <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>

指定 MapReduce 任務執行時的資源管理框架為 Yarn 。 mapred-site.xml

的參數相當多,在此僅設定我們所需要的參數,若對其參數種類和預設值有興 趣,請參考 https://hadoop.apache.org/docs/r2.6.4/hadoop-mapreduce-

client/hadoop-mapreduce-client-core/mapred-default.xml 。 完成後請按 Ctrl-S 存檔,並關閉 gedit 視窗,回到終端機畫面。

設定 master 檔案

輸入以下指令,並按「 Enter 」鍵,編輯 master 檔案。 sudo gedit /usr/local/hadoop/etc/hadoop/master

輸入以下內容。 master

145


大數據分析與應用

master 檔案指出 Hadoop 集群中 NameNode 所在的主機名稱,也就是之 前在 /etc/hosts 檔案中所設定的 master 。

執行畫面如下圖。

完成後請按 Ctrl-S 存檔,並關閉 gedit 視窗,回到終端機畫面。

設定 slaves 檔案

輸入以下指令,並按「 Enter 」鍵,編輯 slaves 檔案。 sudo gedit /usr/local/hadoop/etc/hadoop/slaves

輸入以下內容。 slave1

slaves 檔案指出 Hadoop 集群中 DataNode 所在的主機名稱,也就是之前 在 /etc/hosts 檔案中所設定的 slave1 。

146


Chapter 大數據平台 Hadoop 和 Spark 的安裝 6-1 建立和設定 master 主機

6

執行畫面如下圖。

完成後請按 Ctrl-S 存檔,並關閉 gedit 視窗,回到終端機畫面。 Information

若讀者有多台僕人機(例如 slave2、slave3 等),必須在此檔案一一指出,如下圖。

147


大數據分析與應用

6-2 建立 slave1 虛擬機 到目前為止我們已經完成了大部分主機共同部分的設定,為了建立 Hadoop

的集群,我們將透過 VirtualBox 的「再製」功能,複製一部新的虛擬機來扮演

slave1 的角色。 Step

1

關閉 master 虛擬機

點選 Virtualbox 視窗右上角關閉視窗圖示,彈出「關閉虛擬機器」視窗後,

點選「機器關機」,接著點擊「確定」。

148


Chapter 大數據平台 Hadoop 和 Spark 的安裝 6-2 建立 slave1 虛擬機

6

再製虛擬機 slave1 確 定 虛 擬 機 master 為 關 閉 狀 態, 用 滑 鼠 右 鍵 點 擊 master , 點 擊「 再 製

(O) 」。

輸入新虛擬機器名稱為 slave1 ,勾選「重新初始化所有網路卡的 MAC 位址

(R) 」,點擊下一步。

149


大數據分析與應用

點選「完整再製 (F) 」,點擊「再製」。

1 2

幾分鐘後會發現虛擬機 slave1 已經建立完成。

Step

2

設定 slave1 網路參數

再製完成的虛擬機 slave1 的狀態和設定與虛擬機 master 完全一樣,接著

我們要更新必要的網路設定和 Hadoop 設定。 請先啟動虛擬機 slave1 。

150


Chapter 大數據平台 Hadoop 和 Spark 的安裝 6-2 建立 slave1 虛擬機

6

點擊一下 slave1 ,確定 slave1 被選上(背景為藍色),接著點擊右上的「啟

動 (T) 」功能,開啟虛擬機 slave1 。

設定 slave1 的 IP 位址 請開啟「終端機」,輸入以下指令,並按「 Enter 」鍵。 sudo gedit /etc/network/interfaces

出現 gedit 的編輯畫面,將 IP 部分的 100 更新為 101 。完成後請按 Ctrl-S 存檔,並關閉 gedit 視窗,回到終端機畫面。

原為 100,更新為 101

編輯本機的名稱 請輸入以下指令,並按「 Enter 」鍵。 sudo gedit /etc/hostname

151


大數據分析與應用

將 主 機 名 稱 master 更 改 為 slave1 , 按 Ctrl-S 存 檔, 關 閉 gedit 視 窗, 回

到終端機畫面。

重新開機 請輸入以下指令,並按「 Enter 」鍵,重新開機,讓設定生效。 sudo reboot

檢查網路 IP 設定是否正確 開機完成後,啟動「終端機」,輸入以下指令,確認 IP 位址是否正確。 ifconf ig hostname

執行畫面如下圖。

正確喔!

152


Chapter 大數據平台 Hadoop 和 Spark 的安裝 6-2 建立 slave1 虛擬機

6

Step

3

設定 slave1 的 Hadoop 參數

slave1 所特有的設定主要跟 DataNode 所在的目錄有關。

設定 hdfs-site.xml

先建立 slave1 的 DataNode 目錄,請輸入以下指令,並按「 Enter 」鍵。 mkdir -p /usr/local/hadoop/data/hdfs/datanode

請輸入以下指令,並按「 Enter 」鍵,編輯 hdfs-site.xml 。 sudo gedit /usr/local/hadoop/etc/hadoop/hdfs-site.xml

在 <configuration> 和 </configuration> 之間,輸入以下內容。 <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.datanode.data.dir</name> <value> f ile:/usr/local/hadoop/data/hdfs/datanode</value> </property>

在 hdfs-site.xml 中,我們設定了二個重要參數,一個是 Hadoop 分散式檔

案系統備份的份數( dfs.replication );另一個是 DataNode 上資料的存放目錄。

如第四章所述, HDFS 存放檔案的時候,會先把檔案切割成固定大小的區塊

( block ), 然 後 再 由 dfs.replication 此 數 字 決 定 每 一 個 block 儲 存 進 HDFS

的份數。原 Hadoop 系統預設為 3 份,但本章中的安裝僅有一個 DataNode ,

所以我們將它簡化設定為 1 份。

事實上, core-site.xml 的參數相當多,在此僅設定我們所需要的參數,若 對 其 參 數 種 類 和 預 設 值 有 興 趣, 請 參 考 https://hadoop.apache.org/docs/

r2.6.4/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml 。

153


大數據分析與應用

6-3 繼續 master 的設定 透過虛擬機 master 的再製,我們以很快的速度完成了虛擬機 slave1 的建

立和設定,接下來再補上虛擬機 master 的些許設定,我們就可以邁向 Hadoop 電腦集群的啟動之路。

Step

1

啟動 master

再 製 虛 擬 機 slave1 時, master 是 進 入 關 閉 狀 態 的, 現 在 請 啟 動 它。 在

VirtualBox 主畫面中,點擊一下 master ,確定 master 被選上(背景為藍色),

接著點選右上的「啟動 (T) 」功能,開啟虛擬機。

2 1

啟動完畢後,請開啟「終端機」。

點擊「終端機」圖示

Step

2

測試 master 對 slave1 的遠端安全連線

在 安 裝 master 時, 我 們 安 裝 了 ssh 功 能, 也 對 本 機( master ) 進 行 安 全 連線測試。此功能最重要的是要對 Hadoop 電腦集群中的每一部僕人機都能正常

運作,才不至於造成 master 在啟動 Hadoop 時發生問題。 154


Chapter 大數據平台 Hadoop 和 Spark 的安裝 6-3 繼續 master 的設定

6

測試 slave1 基本連線 首先測試 master 對 slave1 的網路連線是否正常,請輸入以下指令,並按 「 Enter 」鍵。 ping slave1

執行畫面如下圖。 IP 正確!

連線正常!

請按 Ctrl-C 中 斷測試

透過前面步驟建立的主機名稱檔 /etc/hosts ,在 master 執行 ping slave1

指 令時, 可以 查 出 slave1 的 IP 位址 為 192.168.1.101 ,並 且看 到有正 常的回 應時間,代表 master 連通至 slave1 沒有問題。

拷貝授權檔案給 slave1

請輸入以下指令,並按「 Enter 」鍵。

scp ~/.ssh/authorized_keys mis@slave1:/home/mis/.ssh

執行畫面如下圖。

第一次連線 slave1, 請輸入 yes 拷貝成功!

155


大數據分析與應用

測試遠端安全連線至 slave1 請輸入以下指令,並按「 Enter 」鍵。 ssh slave1

執行畫面如下圖。 啟動安全連線 到 slave1

過程中沒有提 示需要鍵入密 碼,直接進入 slave1 主機 確定已經進入 slave1 主機了 輸入 exit,回 到 master

使用 ssh 指令登入 slave1 主機時,若過程中「沒有」要求輸入登入密碼,

表示 ssh 系統可以透過公鑰確認登入者身分而直接放行。這步驟若不正確(即每 次用 ssh 登入,都會被要求輸入密碼),將來啟動 Hadoop 集群時,只要遇到

主人機啟動僕人機的功能時,都會被要求輸入登入密碼,這將會造成啟動程序的 中斷和困擾。 Information

讀者若有多部僕人機(例如 slave2、slave3 等),請為每一部僕人機拷貝授權檔和 測試 ssh 功能。

Step

3

設定 master 的 hdfs-site.xml

針對 master 設定 NameNode 所在的目錄。

建立 master 的 NameNode 目錄

請輸入以下指令,並按「 Enter 」鍵。

mkdir -p /usr/local/hadoop/data/hdfs/namenode

156


Chapter 大數據平台 Hadoop 和 Spark 的安裝 6-3 繼續 master 的設定

6

設定 hdfs-site.xml 請輸入以下指令,並按「 Enter 」鍵,編輯 hdfs-site.xml 。 sudo gedit /usr/local/hadoop/etc/hadoop/hdfs-site.xml

在 <configuration> 和 </configuration> 之間,輸入以下內容。 <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>f ile:/usr/local/hadoop/data/hdfs/namenode</value> </property>

在 hdfs-site.xml 中,我們設定了二個重要參數,一個是 Hadoop 分散式檔 案系統存檔的份數( dfs.replication );另一個是 NameNode 上資料的存放目

錄。完成後請按 Ctrl-S 存檔,並關閉 gedit 視窗,回到終端機畫面。

Step

4

格式化 NameNode

首次建立的 Hadoop 集群,在第一次啟動前,必須先格式化 NameNode 。

請輸入以下指令,並按「 Enter 」鍵。 hdfs namenode -format

執行畫面如下圖。

NameNode 格式化成功!

157


大數據分析與應用

6-4 啟動 Hadoop 主機集群 Step

1

啟動 Hadoop

請輸入以下指令,並按「 Enter 」鍵,啟動 Hadoop 。 start-all.sh

執行畫面如下圖。 若有詢問是否繼續連線,請輸入 yes。 回答一次後,下次啟動時便不會再詢問

分別在 master 和 slave1 依序 啟動相關功能

輸入 start-all.sh ,由 master 啟動自身和所有僕人機的程序。 master 啟動

slave1 的程序時,不需要再輸入登入密碼,因為之前安全連線的 ssh 功能已經

建立。

分別查看在主人機和僕人機啟動了哪些程式 請輸入以下指令,並按「 Enter 」鍵,查看 master 已經啟動的程序。 jps

查看所有僕人機已經啟動的程序。 slaves.sh jps

158


Chapter 大數據平台 Hadoop 和 Spark 的安裝 6-4 啟動 Hadoop 主機集群

6

執行畫面如下圖。

指 令 jps 可 以 查 看 Java 的 運 行 程 序, 從 上 圖 中 可 以 看 到 master 已 經

有 三 個 程 序 在 運 行, 包 括 SecondaryNameNode 、 ResourceManager 和 NameNode 。 透 過 slaves.sh jps 指 令 則 可 以 查 看 slave1 已 經 運 行 了

DataNode 和 NodeManager 。 Step

2 Hadoop 的 Web UI

Hadoop 也提供了網頁介面,供查看 Hadoop 主機集群的連線狀態。

啟動 Firefox 瀏覽器

執行畫面如下圖。

點擊「Firefox」 瀏覽器,連上網 際網路

159


大數據分析與應用

查看 HDFS 的狀態 在 Firefox 瀏覽器網址列輸入以下網址。 http://master:50070/

執行畫面如下圖。

點擊「Live Nodes」, 查看 DataNodes

有一個「活著」的節點, 就是 slave1

點 擊 綠 色 導 航 條 可 以 查 看 Hadoop 的 狀 況。 在 Overview 的 頁 面, 可 以

看 到 已 經 連 結 並 在 運 作 中 的 DataNode ( 僕 人 機 ) 的 數 量。 點 擊 綠 色 導 航 條 「 DataNodes 」則可以查看僕人機的狀態,如下圖。

160


Chapter 大數據平台 Hadoop 和 Spark 的安裝 6-4 啟動 Hadoop 主機集群

6

1

2

slave1 的狀態。

點擊右上角的 Utilities 可以查看 logs (電腦日誌),如下圖。

161


大數據分析與應用

若 Hadoop 的啟動出現問題或無法正常運作,通常可以在這些 logs 中找到 問題所在。

查看資源管理狀態 在 Firefox 瀏覽器網址列輸入以下網址。 http://master:8088/

下圖畫面可以查看 Hadoop 電腦集群、各個僕人機的狀態,以及應用軟體的

執行狀態。此部分會在下一節執行完一個範例程式後再展示。

162


Chapter 大數據平台 Hadoop 和 Spark 的安裝 6-5 試玩 HDFS

6

6-5 試玩 HDFS 經歷了一段漫長的 Hadoop 安裝和設定過程,也正常啟動了 Hadoop 電腦

平台,是否此平台可以正確運作大數據分析的應用程式呢?接下來我們試著在

Hadoop 的分散式檔案系統上放置資料檔,並且執行 Hadoop 附帶的一個範例程

式( Word Count ,文字計數程式),運行後查看一下輸出的結果。

Step

1

在 HDFS 上,建一個 mis 的目錄

剛建置完成的 Hadoop 分散式檔案系統目前空無一物,我們試著在上面建一

個目錄,準備後續擺放資料檔。

在 /user 下建立一個目錄,名稱為 mis 。請啟動「終端機」,並輸入以下指

令,按「 Enter 」鍵。

hdfs dfs -mkdir -p /user/mis

行首的 hdfs 代表要對 Hadoop 分散式檔案系統下指令; dfs 代表檔案類的 指令;之後的 mkdir 等指令則類似於 Unix / Linux 操作指令。 Information

常用的 HDFS 操作指令,會在下一章中闡述。

欲 查 看 Hadoop 分 散 式 檔 案 系 統 目 錄 的 詳 情, 請 輸 入 以 下 指 令, 並 按 「 Enter 」鍵。

hdfs dfs -ls -R /

此指令會從 / (根目錄)開始顯示, -R 選項代表展示所有目錄、子目錄和檔 案名稱。

執行畫面如下圖。

上圖顯示目前根目錄下只有 user 一個目錄,而 user 之下也有一個 mis 的

目錄,目前並沒有一般檔案。

163


大數據分析與應用

Step

2

建立文字檔作為輸入

接下來我們要建立一個簡單的文字檔,由本地的鍵盤鍵入並儲存在 test.txt 中。請輸入以下指令,並按「 Enter 」鍵。

echo "To be or not to be that is the question" > test.txt

執行完畢後,本地電腦會存在一個文字檔 test.txt ,必須透過 HDFS 的拷貝 指令,將此檔案放到 HDFS 中。

Step

3

將文字檔拷貝至 HDFS

請輸入以下指令,並按「 Enter 」鍵。

hdfs dfs -copyFromLocal /home/mis/test.txt /user/mis

接著查看 HDFS 上是否已經有了 test.txt ,輸入以下指令,並按「 Enter 」鍵。 hdfs dfs -ls -R /

執行畫面如下圖。

由上圖可以發現, /user/mis 目錄下已經有一個檔案 test.txt 了。

目 前 test.txt 的 內 容 是 一 句 名 言: To be or not to be that is the

question ,我們要啟動一個 Hadoop 自帶的分析程式,用 MapReduce 的運作 架構(請參考第四章)來計算每一個英文單字出現的次數。

Step

4

執行 Word Count 程式

請輸入以下指令,並按「 Enter 」鍵。

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduceexamples-2.6.4.jar wordcount /user/mis/test.txt /user/mis/output

啟動的程式是 Java 壓縮包 hadoop-mapreduce-examples-2.6.4.jar 中的 164

wordcount ,由 /user/mis/test.txt 檔輸入,輸出到 /user/mis/output 目錄。


Chapter 大數據平台 Hadoop 和 Spark 的安裝 6-5 試玩 HDFS

6

LOOK! 在指令最後所指定的輸出目錄必須是「不存在」的目錄,若遇到已經存在的 目錄,Hadoop 的執行會產生錯誤。

執行畫面如下圖。

MapReduce 的執行過程

test.txt 的資料量很小,執行過程很快就完成。

輸入以下指令,並按「 Enter 」鍵,查看在 /user/mis 下產生哪些輸出資料。 hdfs dfs -ls -R /user/mis

執行畫面如下圖。

在 /user/mis 下, 除 了 剛 才 的 test.txt 外, 多 了 一 個 output 的 目 錄,

該 目 錄 下 有 二 個 檔 案, 其 中 part-r-00000 就 是 一 般 MapReduce 作 業 結 束 的

輸 出 檔。 該 檔 案 由 00000 開 始 編 號, 若 輸 出 的 結 果 資 料 量 很 大, 則 會 產 生 如

part-r-00001 、 part-r-00002 等檔案。

165


大數據分析與應用

Step

5

查看輸出結果

為了查看 part-r-00000 的內容,請輸入以下指令,並按「 Enter 」鍵。 hdfs dfs -cat /user/mis/output/part-r-00000

執行畫面如下圖。

輸出結果就是每個英文字後帶一個數字,表示該英文字在文章中出現的次數。

Step

6

查看應用程式執行狀態

啟 動 Firefox 瀏 覽 器, 輸 入 網 址 http://master:8088/ , 執 行 畫 面 如 下 圖。 其 顯 示 有 一 個 應 用 程 式 ID : application_1469860906402_0001 , 由

mis 提交,程式名稱為 word count ,使用 MAPREDUCE 框架運行,已經完成

( FINISHED ),而且作業執行成功( SUCCEEDED )。

Step

7

查看 HDFS

啟動 Firefox 瀏覽器,輸入網址 http://master:50070/ ,執行畫面如下圖。

166

點擊綠色導航條「 Utilities 」可以查看 Hadoop 分散式檔案系統的內容。


Chapter 大數據平台 Hadoop 和 Spark 的安裝 6-6 試玩 Spark

6

6-6 試玩 Spark 在此節中,我們試著以 Spark 優異的計算框架能力和它的彈性分散式資料集

RDD ( Resilient Distributed Dataset )操作,以十分之一的程式碼數量 40 完

成上節的 word count 程式功能。作法是先啟動 Spark 的一個交談式環境,透

過幾個簡單的 Scala 程式指令完成英文字計數工作。 Information

讀者可能對 Spark 的 RDD 概念和 Scala 程式語言比較陌生,本書將在第七章對

RDD 的操作進行說明,同時也會在第 8 章介紹新一代大數據程式語言 Scala 的基礎, 讓讀者具備現代大數據處理的基礎能力。

40

Hadoop 自 帶 的 word count 範 例 程 式 是 由 Java 所 撰 寫, 程 式 長 度 大 約 50 ~ 60 行。 請 參 考 https://hadoop.apache.org/docs/r2.6.4/hadoop-mapreduce-client/hadoopmapreduce-client-core/MapReduceTutorial.html , 若 改 由 Scala 來 撰 寫, 程 式 碼 量 可 以 大幅縮減。

167


大數據分析與應用

Step

1

啟動 Spark 的交談式環境 Spark-shell

請在「終端機」輸入以下指令,並按「 Enter 」鍵。 spark-shell

執行畫面如下圖。

啟動 Spark 的同時也 啟動 Scala 環境

Step

2

讀取 HDFS 中的 test.txt

在 scala> 提示字元之後,輸入以下指令,並按「 Enter 」鍵。

val textFile = sc.textFile("hdfs://master:9000/user/mis/test.txt")

指令的意義簡單說明如下:

val textFile :命名一個常數為 textFile ,將後面讀取的資料放置此處。

sc.textFile : 利 用 sc ( SparkContext , 即 Spark 的 環 境, 由 spark-shell 所創建)的功能 textFile 讀取文字檔。

hdfs://master:9000 :代表文字檔的出處是從 Hadoop 分散式檔案系統而

來。

168

/user/mis/test.txt :之前於 6-5 節「試玩 HDFS 」所建立的文字檔。


Chapter 大數據平台 Hadoop 和 Spark 的安裝 6-6 試玩 Spark

6

Step

3

讀取每行資料,並以空白字元做切割

在 scala> 提示字元之後,輸入以下指令,並按「 Enter 」鍵。 val stringRDD=textFile.flatMap(line => line.split(" "))

讀取每行資料,並以空白字元做切割,切割後的個別英文字資料存在常數

stringRDD 中。 Step

4

執行 MapReduce

在 scala> 提示字元之後,輸入以下指令,並按「 Enter 」鍵。

val countsRDD = stringRDD.map(word => (word, 1)).reduceByKey(_ + _)

將所有英文字 map 映射轉換成(英文字 , 1 )格式,並完成相同英文字的計 數加總在一起( reduce ),將結果存放在常數 countsRDD 中。

Step

5

結果排序並輸出

在 scala> 提示字元之後,輸入以下指令,並按「 Enter 」鍵。 countsRDD.sortByKey().collect.foreach(println)

將 countsRDD 的 內 容 根 據 英 文 字 排 序, 並 將 之 逐 行( foreach ) 印 出 ( println )。

執行畫面如下圖。

169


大數據分析與應用

Spark 的 輸 出 結 果 與 6-5 節 Step 5 中 Hadoop 自 帶 的 Java 程 式 word

count 輸出結果相同,但其程式碼僅有四行。

6-7 結束 Spark 和 Hadoop Step

1

結束 spark-shell

請輸入以下指令,並按「 Enter 」鍵。 :q

執行畫面如下圖。

Step

2

結束 Hadoop

請輸入以下指令,並按「 Enter 」鍵。 stop-all.sh

執行畫面如下圖。

以 jps 和 slaves.sh jps 檢 查 Hadoop 的 程 序, 發 現 所 有 Hadoop 和 Yarn 的程序都已經結束。

170


Chapter 大數據平台 Hadoop 和 Spark 的安裝 6-7 結束 Spark 和 Hadoop

6

Q &A 1. 除了利用公鑰免密碼遠端登入外,ssh 還有哪些功能?請上網搜尋 ssh 的相關資 料。 2. 本 章 所 建 立 的 大 數 據 分 析 電 腦 集 群 只 有 一 部 主 人 機 master 和 一 部 僕 人 機 slave1。若你的電腦硬體許可,請仿效本章的安裝方式增加一部僕人機 slave2, 讓大數據電腦集群具備二部 DataNode。

3. 請 參 考 密 技 檔 案「 第 6 章 大 數 據 平 台 Hadoop 和 Spark 的 安 裝 .docx」 中 的 「安裝單節點 Hadoop 環境」小節,建立 Hadoop 的假分散式架構,讓所有 Hadoop 程序都集中在 master 主機執行。用 jps 指令查詢的結果如下圖。

4. 在電腦教室的環境中,請學生分組嘗試在多台實體電腦上各建立一台虛擬機,並 安裝 Ubuntu 作業系統。選擇其中某一台 Ubuntu 電腦當主人機,其他電腦的 Ubuntu 當僕人機,將它們設置成多台電腦的 Hadoop 集群。

171


大數據分析與應用

172


附錄

參考文獻 1.

............................................................

Spark 亞太研究院( 2015 )。大數據 Spark 企業級實戰。電子工業出版社。

2.

王宏志( 2015 )。大數據演算法。機械工業出版社。

4.

江曉東( 2016 )。實戰大數據。中信出版社。

3. 5. 6. 7. 8. 9.

王曉華( 2015 )。 Spark MLlib 機器學習實踐。清華大學出版社。 李軍( 2014 )。大數據:從海量到精准。清華大學出版社。

李德偉、顧煜、王海平、徐立( 2014 )。大數據浪潮:探索 BIG DATA 之洶湧。找 出人潮、錢潮、資訊潮。上奇時代。

李濤( 2013 )。資料採擷的應用與實踐—大數據時代的案例分析。廈門大學出版社。 周蘇、王文( 2016 )。大數據導論。清華大學出版社。

林大貴( 2015 )。Hadoop+Spark 大數據巨量分析與機器學習整合開發實戰。博碩。

10. 城田真琴( 2013 )。 Big Data 大數據的獲利模式:圖解.案例.策略.實戰。經 濟新潮社。

11. 胡世忠( 2013 )。雲端時代的殺手級應用: Big Data 海量資料分析。天下雜誌。 12. 范東來( 2015 )。 Hadoop : Big Data 技術詳解與專案實作。博碩。

13. 夏俊鸞等人( 2015 )。大數據的下一步:用 Spark 玩轉活用。佳魁資訊。 14. 晁岳攀( 2016 )。 Scala 集合技術手冊。電子工業出版社。

15. 高彥傑、倪亞宇( 2016 )。 Spark 大數據分析實戰。機械工業出版社。 16. 陸嘉恒( 2012 )。 Hadoop 實戰(第 2 版)。機械工業出版社。

17. 麥爾荀伯格等人( 2014 )。大數據:教育篇:教學與學習的未來趨勢。天下文化。 18. 麥爾荀伯格等人( 2013 )。大數據。天下文化。

19. 麥爾荀伯格( 2015 )。大數據 : 隱私篇:數位時代。「刪去」是必要的美德。天下 文化。

20. 黃宜華( 2014 )。深入理解大數據:大數據處理與程式設計實踐。機械工業出版社。 21. 黃美靈( 2016 )。 Spark MLlib 機器學習:演算法、源碼及實戰詳解。電子工業出 版社。

22. 熊贇、朱揚勇、陳志淵( 2016 )。大數據挖掘。上海科學技術出版社。

387


大數據分析與應用

23. 趙勇等人( 2014 )。大數據革命—理論、模式與技術創新。電子工業出版社。 24. 趙國棟等人( 2014 )。大數據時代。五南。

25. 謝邦昌、鄭宇庭( 2016 )。大數據概論。新陸書局。

26. 譚磊( 2013 )。大數據挖掘:從巨量資料發現別人看不到的祕密。上奇時代。

27. Arun Murthy & Vinod Vavilapalli (2014). Moving beyond MapReduce and Batch Processing with Apache Hadoop 2. Addison-Wesley.

28. Bill Schmarzo (2013). Big Data: Understanding How Data Powers Big Business. Wile.

29. C a y H o r s t m a n n ( 2 0 1 2 ) . S c a l a f o r t h e I m p a t i e n t . A d d i s o n -We s l e y Professional. 30. Ian Ayres (2008). Super Crunchers: Why Thinking-By-Numbers is the New Way To Be Smart. Bantam.

31. Krishna Sankar & Holden Karau (2015). Fast Data Processing with Spark (2nd ed.). Packt Publishing. 32. Mahmoud Parsian (2015). Data Algorithms. O'Reilly Media, Inc.

33. Martin Odersky & Lex Spoon (2016). Programming in Scala: Updated for Scala 2.12. Artima Press. 34. Mohammed Guller (2015). Big Data Analytics with Spark. Apress.

35. Nathaniel Lin (2015). Applied Business Analytics: Integrating Business Process, Big Data, and Advanced Analytics. Pearson FT Press.

36. Nick Pentreath (2015). Machine Learning with Spark. Packt Publishing Ltd. 37. Paul Chiusano & Rúnar Bjarnason (2015). Functional Programming in Scala. Manning Publications Co. 38. Phil Simon (2015). Too Big to Ignore: The Business Case for Big Data. Wiley.

39. Rishi Yadav (2015). Spark Cookbook Paperback. Packt Publishing.

40. Sandy Ryza & Uri Laserson (2015). Advanced Analytics with Spark. O'Reilly Media, Inc. 41. Tom White (2015). Hadoop: The Definitive Guide (4th ed.). O'Reilly Media, Inc.

388

42. Vishal Layka & David Pollak (2015). Beginning Scala (2nd ed.). Apress.



http://certificate.jyic.net/ 前進專業.淬鍊身價

本書特色 1. 闡述大數據的重要觀念,包括正面的效用與負面的副作用,建立讀者對大數據正確的認知。 2. 說明大數據時代的因應與挑戰,其中有思維的轉變、大數據分析技術、大數據的應用模 式分類,也有大數據分析的流程。 3. 介紹各行各業的大數據經典應用案例,讓讀者體會大數據分析的應用精髓,有機會發揮

ICT 計算機綜合能力國際認證 • 最 新 計 算 機 概 論 -Office 2010 含 ICT 計算機綜合能力國際認 證 Essentials Level - 陳 恩 航・ 楊進雄 編著

創造力,開創自己的大數據應用。 4. 介紹大數據分析工具(Hadoop 和 Spark)的生態系統,期使讀者能充分掌握大數據的 技術發展和工具的應用藍圖。 5. 透過對大數據工具的實戰演練,包括安裝、設定、指令操作等,使讀者在具備大數據概 念正確理解的同時,還能擁有動手實現的功力。 6. 學習大數據程式語言 Scala,熟悉函數式程式設計(functional programming)的特

商務專業應用能力國際認證

點,以及它對於大數據的操作與處理,提升讀者對大數據分析演算法的開發能力。

• BAP Documents 文 書 處 理 Using Microsoft® Word 2010 商務專業應用能力國際認證 Essentials Level 通 關 寶 典 - 附

7. 使用 Spark 的機器學習程式庫(MLlib),應用在既有資料集的分析上,讓讀者迅速獲

大數據 (Big Data) 分析與應用 使用 Hadoop 與 Spark 劉勇志 編著

使用

得大數據的預測能力。

分) 析 與 應 用 (Big Data

商管群 國際認證叢書

最新版

贈 BAP 學評系統含教學影片 - JYiC 認證研究團隊 編著

Hadoop Spark

• BAP Spreadsheets 電 子 試 算 表 Using Microsoft® Excel® 2010 商務專業應用能力國際認 證 Essentials Level 通關寶典 -

Big Data Analysis and Applications-using Hadoop and Spark

附贈 BAP 學評系統含教學影片 - JYiC 認證研究團隊 編著

• BAP Presentations 商 業 簡 報 Using Microsoft® PowerPoint® 2010 商務專業應用能力國際認 證 Essentials Level 通關寶典 附贈 BAP 學評系統含教學影片 - JYiC 認證研究團隊 編著

最新版

劉 勇 志

FB030(28)

PVQC 專 業 英 文 詞 彙 能 力 國 際 認 證

建議售價:550 元

ISBN 978-986-455-377-8

編 著

• PVQC 計 算 機 專 業 英 文 詞 彙 能力通關寶典 - 附贈自我診斷系

統-戴建耘 e 檢研究團隊 編譯 ‧GLAD 全球學習與測評發展中心 指導

斷 系 統 - e 檢研究團隊 編譯 ‧GLAD 全球學習與測評發展中心 指導

台科大圖書股份有限公司 編印

基礎

進階

深入

FB030 FB030

• PVQC 商 業 與 管 理 專 業 英 文 詞彙能力通關寶典 - 附 贈 自 我 診

台科大圖書

勁園 Maker 教育

附範例光碟

.技 職 專 業 出 版 .Bube 創意文具

.空 間 .設 備 .教 具 .機器人

• 第 6~12 章範例指令

http://www.tiked.com.tw/

http://maker.jyic.net/

Big Data Analysis and Applications-using Hadoop and Spark

大數據

勁園國際認證


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.