2010年以后,信息產(chǎn)業(yè)進入了大數(shù)據(jù)時代,Hadoop成為大數(shù)據(jù)分析的首選平臺和開發(fā)標準,數(shù)據(jù)分析軟件紛紛向 Hadoop靠攏。在Hadoop原有技術基礎之上,涌現(xiàn)了Hadoop家族產(chǎn)品,它們正在配合大數(shù)據(jù)概念不斷創(chuàng)新,推動科技進步。因此,新一代IT精英都必須順應潮流,抓住機遇,隨著 Hadoop一起發(fā)展和成長!
Hadoop是一個能夠對大量數(shù)據(jù)進行分布式處理的軟件框架。但Hadoop是以一種可靠、高效、可伸縮的方式進行處理的。Hadoop是可靠的,因為它假設計算元素和存儲會失敗,因此它維護多個工作數(shù)據(jù)副本,確保能夠針對失敗的節(jié)點重新分布處理。Hadoop是高效的,因為它以并行的方式工作,通過并行處理加快處理速度。
Hadoop體系下包含了一系列進行數(shù)據(jù)處理、分析的組件,其中常見的組件包括Hive、HBase、Pig、Sqoop等。
Hive是一種底層封裝了Hadoop的數(shù)據(jù)倉庫處理工具,使用類SQL的HiveQL 語言實現(xiàn)數(shù)據(jù)查詢,所有Hive的數(shù)據(jù)都存儲在Hadoop兼容的文件系統(tǒng)(例如,Amazon S3、HDFS)中。Hive在加載數(shù)據(jù)過程中不會對數(shù)據(jù)進行任何修改,只是將數(shù)據(jù)移動到HDFS中Hive設定的目錄下。Hive構建在基于靜態(tài)批處理的Hadoop之上,Hadoop通常都有較高的延遲并且在作業(yè)提交和調(diào)度的時候需要大量開銷。因此,Hive并不能夠在大規(guī)模數(shù)據(jù)集上實現(xiàn)低延遲快速的查詢。
作為NoSQL家庭的一員,HBase的出現(xiàn)彌補了Hadoop只能離線批處理的不足,同時能夠存儲小文件,提供海量數(shù)據(jù)的隨機檢索,并保證一定的性能。而這些特性也完善了整個Hadoop生態(tài)系統(tǒng),泛化了其大數(shù)據(jù)的處理能力,結合其高性能、穩(wěn)定、擴展性好的特性,給使用大數(shù)據(jù)的企業(yè)帶來了方便。
Pig是基于Hadoop的并行數(shù)據(jù)流處理開源引擎。通過Pig無須開發(fā)一個全功能的應用程序就可以在集群中進行數(shù)據(jù)批處理,這使得在新數(shù)據(jù)集上進行實驗變得更加容易。
Sqoop是一個用來將Hadoop和關系型數(shù)據(jù)庫中的數(shù)據(jù)進行相互轉移的工具,可以將一個關系型數(shù)據(jù)庫(例如,MySQL、Oracle、PostgreSQL等)中的數(shù)據(jù)導入Hadoop的HDFS中,也可以將HDFS的數(shù)據(jù)導入關系型數(shù)據(jù)庫中。對于某些NoSQL數(shù)據(jù)庫,它也提供了連接器。Sqoop使用元數(shù)據(jù)模型來判斷數(shù)據(jù)類型并在數(shù)據(jù)從數(shù)據(jù)源轉移到Hadoop時確保類型安全的數(shù)據(jù)處理。Sqoop專為大數(shù)據(jù)批量傳輸設計,能夠分割數(shù)據(jù)集并創(chuàng)建Hadoop任務來處理每個區(qū)塊。
本書針對Hadoop體系的基本技術方法進行了分析,并提供了相應的實例以幫助讀者進一步加深了解。通過本書的學習,相信大家會在很短暫的時間內(nèi)掌握Hadoop體系的相關技術,為以后的工作、學習提供指導與幫助。
本書特色
本書作者從實踐出發(fā),結合大量的教學經(jīng)驗以及工程案例,深入淺出地介紹大數(shù)據(jù)技術架構及相關組件。在章節(jié)的編排上,注重理論與實踐相結合。首先提出相關的理論背景,并進行深入分析、講解,然后著重介紹相關技術的環(huán)境搭建,最后通過實際操作,加深讀者對技術的掌握及應用。
通過項目實戰(zhàn)案例介紹相關組件在實際大數(shù)據(jù)處理中的關鍵應用,本書介紹的Hadoop組件包括HDFS、MapReduce、Hive、HBase、Pig、Sqoop。
為了方便讀者對內(nèi)容的理解以及滿足相關教學、工作的需要,本書配套提供了真實的樣本數(shù)據(jù)文件、PPT課件以及實驗視頻,讀者可以根據(jù)勘誤與支持中提供的聯(lián)系方式進行咨詢或者獲取。
本書適用對象
本書內(nèi)容由淺入深,既適合初學者入門,也適合有一定基礎的技術人員進一步提高技術水平。本書的讀者對象包括:
Hadoop初學者
Hadoop開發(fā)人員
Hadoop管理人員
高等院校計算機相關專業(yè)的老師、學生
具有Hadoop相關經(jīng)驗,并希望進一步提高技術水平的讀者
如何閱讀本書
本書在章節(jié)的安排上,著眼于引導讀者以最快的速度上手Hadoop,本書一共包括11章,分為3個部分: 基礎篇、高級篇、實戰(zhàn)篇。
基礎篇(第1~3章): 第1章的主要內(nèi)容包括Hadoop簡介、Hadoop項目及架構分析、Hadoop計算模型、Hadoop數(shù)據(jù)管理、Hadoop環(huán)境搭建; 第2章針對Hadoop分布式文件系統(tǒng)HDFS進行講解,包括HDFS基本操作、WebHDFS操作以及通過Java API進行HDFS文件操作; 第3章針對Hadoop分布式計算MapReduce進行講解,并通過實戰(zhàn)案例幫助讀者加深對相關知識的理解。
高級篇(第4~10章): 第4章針對Hadoop中的數(shù)據(jù)倉庫Hive進行分析,包括Hive環(huán)境搭建、Hive數(shù)據(jù)定義; 第5章介紹了Hive的使用,包括數(shù)據(jù)操作、數(shù)據(jù)查詢,并通過實戰(zhàn)案例幫助讀者進行深入的了解; 第6章針對HBase進行詳細的介紹,包括HBase的發(fā)展歷史、HBase的特性、HBase與Hadoop的關系等,并講解如何進行HBase環(huán)境的搭建; 第7章針對HBase數(shù)據(jù)操作進行講解,包括Shell工具的使用、基于HBase的Java客戶端的使用; 第8章介紹了Pig數(shù)據(jù)流引擎的使用,包括Pig概述、Pig的安裝與配置、Pig命令行交互工具的使用; 第9章針對Pig Latin進行講解,主要內(nèi)容包括Pig Latin介紹、關系操作和用戶自定義函數(shù)的使用; 第10章詳細講解Sqoop工具的使用,包括Sqoop概述、Sqoop安裝部署、Sqoop常用命令介紹和Sqoop數(shù)據(jù)操作。
實戰(zhàn)篇(第11章): 通過實際的大數(shù)據(jù)案例進行分析講解,幫助讀者進一步了解實際工程環(huán)境中Hadoop的應用,本章主要內(nèi)容包括實戰(zhàn)項目背景與數(shù)據(jù)源分析、環(huán)境搭建、數(shù)據(jù)清洗、數(shù)據(jù)統(tǒng)計分析以及定時任務處理。
致謝
在本書的編寫過程中,得到了許多企事業(yè)單位人員的大力支持; 在此謹向北京科技大學陳紅松教授致以深深的謝意。在本書的編輯和出版過程中還得到了清華大學出版社相關人員的無私幫助與支持,在此一并表示感謝。
編者
2021年12月
基礎篇
第1章Hadoop基礎
1.1Hadoop簡介
1.1.1什么是Hadoop
1.1.2Hadoop項目及其結構
1.1.3Hadoop體系結構
1.1.4Hadoop與分布式開發(fā)
1.1.5Hadoop計算模型MapReduce on Yarn
1.1.6Hadoop數(shù)據(jù)管理
1.1.7Hadoop集群安全策略
1.2Hadoop的安裝與配置
1.2.1安裝JDK 1.8與配置SSH免密碼登錄
1.2.2安裝并運行Hadoop
第2章Hadoop存儲: HDFS
2.1HDFS的基本操作
2.1.1HDFS的命令行操作
2.1.2HDFS的Web界面
2.1.3通過distcp進行并行復制
2.1.4使用Hadoop歸檔文件
2.2WebHDFS
2.2.1WebHDFS的配置
2.2.2WebHDFS命令
2.3HDFS常見的Java API介紹
2.3.1使用Hadoop URL讀取數(shù)據(jù)
2.3.2使用FileSystem API讀取數(shù)據(jù)
2.3.3創(chuàng)建目錄
2.3.4寫數(shù)據(jù)
2.3.5刪除數(shù)據(jù)
2.3.6文件系統(tǒng)查詢
第3章Hadoop計算: MapReduce
3.1MapReduce應用程序編寫
3.1.1實例描述
3.1.2設計思路
3.1.3代碼數(shù)據(jù)流
3.1.4程序代碼
3.1.5代碼解讀
3.1.6程序執(zhí)行
3.1.7代碼結果
3.2使用MapReduce求每年最低溫度
3.2.1作業(yè)描述
3.2.2程序代碼
3.2.3準備輸入數(shù)據(jù)
3.2.4運行程序
高級篇
第4章數(shù)據(jù)倉庫: Hive
4.1Hive的安裝和配置
4.1.1安裝詳細步驟
4.1.2Hive內(nèi)部是什么
4.2數(shù)據(jù)定義
4.2.1Hive中的數(shù)據(jù)庫
4.2.2修改數(shù)據(jù)庫
4.2.3創(chuàng)建表
4.2.4分區(qū)表
4.2.5刪除表
4.2.6修改表
第5章Hive數(shù)據(jù)操作與查詢
5.1數(shù)據(jù)操作
5.1.1向管理表中裝載數(shù)據(jù)
5.1.2通過查詢語句向表中插入數(shù)據(jù)
5.1.3單個查詢語句中創(chuàng)建表并加載數(shù)據(jù)
5.1.4導出數(shù)據(jù)
5.2數(shù)據(jù)查詢
5.2.1SELECT…FROM語句
5.2.2WHERE語句
5.2.3GROUP BY語句
5.2.4HAVING語句
5.2.5JOIN語句
5.2.6ORDER BY和SORT BY
5.2.7含有SORT BY 的DISTRIBUTE BY
5.2.8CLUSTER BY
5.2.9類型轉換
5.2.10抽樣查詢
5.2.11UNION ALL
5.3Hive實戰(zhàn)
5.3.1背景
5.3.2實戰(zhàn)數(shù)據(jù)及要求
5.3.3實驗步驟
第6章Hadoop數(shù)據(jù)庫: HBase
6.1HBase概述
6.1.1HBase的發(fā)展歷史
6.1.2HBase的發(fā)行版本
6.1.3HBase的特性
6.1.4HBase與Hadoop的關系
6.1.5HBase的核心功能模塊
6.2HBase的安裝和配置
6.2.1HBase的運行模式
6.2.2HBase的Web UI
6.2.3Hbase Shell工具使用
6.2.4停止HBase集群
第7章HBase數(shù)據(jù)操作
7.1Shell工具的使用
7.1.1命令分類
7.1.2常規(guī)命令
7.1.3DDL命令
7.1.4DML命令
7.1.5工具命令Tools
7.1.6復制命令
7.1.7安全命令
7.2Java客戶端的使用
7.2.1客戶端配置
7.2.2創(chuàng)建表
7.2.3刪除表
7.2.4插入數(shù)據(jù)
7.2.5查詢數(shù)據(jù)
7.2.6刪除數(shù)據(jù)
第8章并行數(shù)據(jù)流處理引擎: Pig
8.1Pig概述
8.1.1Pig是什么
8.1.2Pig的發(fā)展簡史
8.2Pig的安裝和使用
8.2.1下載和安裝Pig
8.2.2命令行使用以及配置選項介紹
8.2.3返回碼
8.3命令行交互工具
8.3.1Grunt概述
8.3.2在Grunt中輸入Pig Latin腳本
8.3.3在Grunt中使用HDFS命令
8.3.4在Grunt中控制Pig
第9章Pig Latin的使用
9.1Pig Latin概述
9.1.1基礎知識
9.1.2輸入和輸出
9.2關系操作
9.2.1foreach
9.2.2Filter
9.2.3Group
9.2.4Order by
9.2.5distinct
9.2.6Join
9.2.7Limit
9.2.8Sample
9.2.9Parallel
9.3用戶自定義函數(shù)UDF
9.3.1注冊UDF
9.3.2define命令和UDF
9.3.3調(diào)用靜態(tài)Java函數(shù)
第10章SQL to Hadoop: Sqoop
10.1Sqoop概述
10.1.1Sqoop的產(chǎn)生背景
10.1.2Sqoop是什么
10.1.3為什么選擇Sqoop
10.1.4Sqoop1和 Sqoop2的異同
10.1.5Sqoop1與Sqoop2的架構圖
10.1.6Sqoop1與Sqoop2的優(yōu)缺點
10.2Sqoop安裝部署
10.2.1下載Sqoop
10.2.2設置/etc/profile參數(shù)
10.2.3設置bin/configuresqoop配置文件
10.2.4設置conf/sqoopenv.sh配置文件
10.2.5驗證安裝完成
10.3Sqoop常用命令介紹
10.3.1如何列出幫助
10.3.2Export
10.3.3Import
10.3.4Job作業(yè)
10.4數(shù)據(jù)操作
10.4.1MySQL數(shù)據(jù)導入到HDFS中
10.4.2HDFS數(shù)據(jù)導入到MySQL中
實戰(zhàn)篇
第11章項目實戰(zhàn)
11.1項目背景與數(shù)據(jù)情況
11.1.1項目概述
11.1.2項目分析指標
11.1.3項目開發(fā)步驟
11.1.4表結構設計
11.2環(huán)境搭建
11.2.1MySQL的安裝
11.2.2Eclipse的安裝
11.3數(shù)據(jù)清洗
11.3.1數(shù)據(jù)分析
11.3.2數(shù)據(jù)清洗流程
11.4數(shù)據(jù)統(tǒng)計分析
11.4.1建立分區(qū)表
11.4.2使用HQL統(tǒng)計關鍵指標
11.4.3使用Sqoop將數(shù)據(jù)導入到MySQL數(shù)據(jù)表
11.5定時任務處理
11.5.1日志數(shù)據(jù)定時上傳
11.5.2日志數(shù)據(jù)定期清理
11.5.3數(shù)據(jù)定時統(tǒng)計分析
參考文獻