2010年以后,信息產業進入了大數據時代,Hadoop成為大數據分析的首選平臺和開發標準,數據分析軟件紛紛向 Hadoop靠攏。在Hadoop原有技術基礎之上,涌現了Hadoop家族產品,它們正在配合大數據概念不斷創新,推動科技進步。因此,新一代IT精英都必須順應潮流,抓住機遇,隨著 Hadoop一起發展和成長!
Hadoop是一個能夠對大量數據進行分布式處理的軟件框架。但Hadoop是以一種可靠、高效、可伸縮的方式進行處理的。Hadoop是可靠的,因為它假設計算元素和存儲會失敗,因此它維護多個工作數據副本,確保能夠針對失敗的節點重新分布處理。Hadoop是高效的,因為它以并行的方式工作,通過并行處理加快處理速度。
Hadoop體系下包含了一系列進行數據處理、分析的組件,其中常見的組件包括Hive、HBase、Pig、Sqoop等。
Hive是一種底層封裝了Hadoop的數據倉庫處理工具,使用類SQL的HiveQL 語言實現數據查詢,所有Hive的數據都存儲在Hadoop兼容的文件系統(例如,Amazon S3、HDFS)中。Hive在加載數據過程中不會對數據進行任何修改,只是將數據移動到HDFS中Hive設定的目錄下。Hive構建在基于靜態批處理的Hadoop之上,Hadoop通常都有較高的延遲并且在作業提交和調度的時候需要大量開銷。因此,Hive并不能夠在大規模數據集上實現低延遲快速的查詢。
作為NoSQL家庭的一員,HBase的出現彌補了Hadoop只能離線批處理的不足,同時能夠存儲小文件,提供海量數據的隨機檢索,并保證一定的性能。而這些特性也完善了整個Hadoop生態系統,泛化了其大數據的處理能力,結合其高性能、穩定、擴展性好的特性,給使用大數據的企業帶來了方便。
Pig是基于Hadoop的并行數據流處理開源引擎。通過Pig無須開發一個全功能的應用程序就可以在集群中進行數據批處理,這使得在新數據集上進行實驗變得更加容易。
Sqoop是一個用來將Hadoop和關系型數據庫中的數據進行相互轉移的工具,可以將一個關系型數據庫(例如,MySQL、Oracle、PostgreSQL等)中的數據導入Hadoop的HDFS中,也可以將HDFS的數據導入關系型數據庫中。對于某些NoSQL數據庫,它也提供了連接器。Sqoop使用元數據模型來判斷數據類型并在數據從數據源轉移到Hadoop時確保類型安全的數據處理。Sqoop專為大數據批量傳輸設計,能夠分割數據集并創建Hadoop任務來處理每個區塊。
本書針對Hadoop體系的基本技術方法進行了分析,并提供了相應的實例以幫助讀者進一步加深了解。通過本書的學習,相信大家會在很短暫的時間內掌握Hadoop體系的相關技術,為以后的工作、學習提供指導與幫助。
本書特色
本書作者從實踐出發,結合大量的教學經驗以及工程案例,深入淺出地介紹大數據技術架構及相關組件。在章節的編排上,注重理論與實踐相結合。首先提出相關的理論背景,并進行深入分析、講解,然后著重介紹相關技術的環境搭建,最后通過實際操作,加深讀者對技術的掌握及應用。
通過項目實戰案例介紹相關組件在實際大數據處理中的關鍵應用,本書介紹的Hadoop組件包括HDFS、MapReduce、Hive、HBase、Pig、Sqoop。
為了方便讀者對內容的理解以及滿足相關教學、工作的需要,本書配套提供了真實的樣本數據文件、PPT課件以及實驗視頻,讀者可以根據勘誤與支持中提供的聯系方式進行咨詢或者獲取。
本書適用對象
本書內容由淺入深,既適合初學者入門,也適合有一定基礎的技術人員進一步提高技術水平。本書的讀者對象包括:
Hadoop初學者
Hadoop開發人員
Hadoop管理人員
高等院校計算機相關專業的老師、學生
具有Hadoop相關經驗,并希望進一步提高技術水平的讀者
如何閱讀本書
本書在章節的安排上,著眼于引導讀者以最快的速度上手Hadoop,本書一共包括11章,分為3個部分: 基礎篇、高級篇、實戰篇。
基礎篇(第1~3章): 第1章的主要內容包括Hadoop簡介、Hadoop項目及架構分析、Hadoop計算模型、Hadoop數據管理、Hadoop環境搭建; 第2章針對Hadoop分布式文件系統HDFS進行講解,包括HDFS基本操作、WebHDFS操作以及通過Java API進行HDFS文件操作; 第3章針對Hadoop分布式計算MapReduce進行講解,并通過實戰案例幫助讀者加深對相關知識的理解。
高級篇(第4~10章): 第4章針對Hadoop中的數據倉庫Hive進行分析,包括Hive環境搭建、Hive數據定義; 第5章介紹了Hive的使用,包括數據操作、數據查詢,并通過實戰案例幫助讀者進行深入的了解; 第6章針對HBase進行詳細的介紹,包括HBase的發展歷史、HBase的特性、HBase與Hadoop的關系等,并講解如何進行HBase環境的搭建; 第7章針對HBase數據操作進行講解,包括Shell工具的使用、基于HBase的Java客戶端的使用; 第8章介紹了Pig數據流引擎的使用,包括Pig概述、Pig的安裝與配置、Pig命令行交互工具的使用; 第9章針對Pig Latin進行講解,主要內容包括Pig Latin介紹、關系操作和用戶自定義函數的使用; 第10章詳細講解Sqoop工具的使用,包括Sqoop概述、Sqoop安裝部署、Sqoop常用命令介紹和Sqoop數據操作。
實戰篇(第11章): 通過實際的大數據案例進行分析講解,幫助讀者進一步了解實際工程環境中Hadoop的應用,本章主要內容包括實戰項目背景與數據源分析、環境搭建、數據清洗、數據統計分析以及定時任務處理。
致謝
在本書的編寫過程中,得到了許多企事業單位人員的大力支持; 在此謹向北京科技大學陳紅松教授致以深深的謝意。在本書的編輯和出版過程中還得到了清華大學出版社相關人員的無私幫助與支持,在此一并表示感謝。
編者
2021年12月
基礎篇
第1章Hadoop基礎
1.1Hadoop簡介
1.1.1什么是Hadoop
1.1.2Hadoop項目及其結構
1.1.3Hadoop體系結構
1.1.4Hadoop與分布式開發
1.1.5Hadoop計算模型MapReduce on Yarn
1.1.6Hadoop數據管理
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讀取數據
2.3.2使用FileSystem API讀取數據
2.3.3創建目錄
2.3.4寫數據
2.3.5刪除數據
2.3.6文件系統查詢
第3章Hadoop計算: MapReduce
3.1MapReduce應用程序編寫
3.1.1實例描述
3.1.2設計思路
3.1.3代碼數據流
3.1.4程序代碼
3.1.5代碼解讀
3.1.6程序執行
3.1.7代碼結果
3.2使用MapReduce求每年最低溫度
3.2.1作業描述
3.2.2程序代碼
3.2.3準備輸入數據
3.2.4運行程序
高級篇
第4章數據倉庫: Hive
4.1Hive的安裝和配置
4.1.1安裝詳細步驟
4.1.2Hive內部是什么
4.2數據定義
4.2.1Hive中的數據庫
4.2.2修改數據庫
4.2.3創建表
4.2.4分區表
4.2.5刪除表
4.2.6修改表
第5章Hive數據操作與查詢
5.1數據操作
5.1.1向管理表中裝載數據
5.1.2通過查詢語句向表中插入數據
5.1.3單個查詢語句中創建表并加載數據
5.1.4導出數據
5.2數據查詢
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實戰
5.3.1背景
5.3.2實戰數據及要求
5.3.3實驗步驟
第6章Hadoop數據庫: HBase
6.1HBase概述
6.1.1HBase的發展歷史
6.1.2HBase的發行版本
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數據操作
7.1Shell工具的使用
7.1.1命令分類
7.1.2常規命令
7.1.3DDL命令
7.1.4DML命令
7.1.5工具命令Tools
7.1.6復制命令
7.1.7安全命令
7.2Java客戶端的使用
7.2.1客戶端配置
7.2.2創建表
7.2.3刪除表
7.2.4插入數據
7.2.5查詢數據
7.2.6刪除數據
第8章并行數據流處理引擎: Pig
8.1Pig概述
8.1.1Pig是什么
8.1.2Pig的發展簡史
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用戶自定義函數UDF
9.3.1注冊UDF
9.3.2define命令和UDF
9.3.3調用靜態Java函數
第10章SQL to Hadoop: Sqoop
10.1Sqoop概述
10.1.1Sqoop的產生背景
10.1.2Sqoop是什么
10.1.3為什么選擇Sqoop
10.1.4Sqoop1和 Sqoop2的異同
10.1.5Sqoop1與Sqoop2的架構圖
10.1.6Sqoop1與Sqoop2的優缺點
10.2Sqoop安裝部署
10.2.1下載Sqoop
10.2.2設置/etc/profile參數
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作業
10.4數據操作
10.4.1MySQL數據導入到HDFS中
10.4.2HDFS數據導入到MySQL中
實戰篇
第11章項目實戰
11.1項目背景與數據情況
11.1.1項目概述
11.1.2項目分析指標
11.1.3項目開發步驟
11.1.4表結構設計
11.2環境搭建
11.2.1MySQL的安裝
11.2.2Eclipse的安裝
11.3數據清洗
11.3.1數據分析
11.3.2數據清洗流程
11.4數據統計分析
11.4.1建立分區表
11.4.2使用HQL統計關鍵指標
11.4.3使用Sqoop將數據導入到MySQL數據表
11.5定時任務處理
11.5.1日志數據定時上傳
11.5.2日志數據定期清理
11.5.3數據定時統計分析
參考文獻