發表於2024-11-26
本書結閤理論和實踐,由淺入深,全方位介紹瞭Hadoop 這一高性能的海量數據處理和分析平颱。全書5部分24 章,第Ⅰ部分介紹Hadoop 基礎知識,第Ⅱ部分介紹MapReduce,第Ⅲ部分介紹Hadoop 的運維,第Ⅳ部分介紹Hadoop 相關開源項目,第Ⅴ部分提供瞭三個案例,分彆來自醫療衛生信息技術服務商塞納(Cerner)、微軟的人工智能項目ADAM(一種大規模分布式深度學習框架)和開源項目Cascading(一個新的針對MapReduce 的數據處理API)。本書是一本專業、全麵的Hadoop 參考書和工具書,闡述瞭Hadoop 生態圈的新發展和應用,程序員可以從中探索海量數據集的存儲和分析,管理員可以從中瞭解Hadoop 集群的安裝和運維。
本書結閤理論和實踐,由淺入深,全方位介紹瞭Hadoop這一高性能的海量數據處理和分析平颱。全書5部分24章,第Ⅰ部分介紹Hadoop基礎知識,主題涉及Hadoop、MapReduce、Hadoop分布式文件係統、YARN、Hadoop的I/O操作。第Ⅱ部分介紹MapReduce,主題包括MapReduce應用開發;MapReduce的工作機製、MapReduce的類型與格式、MapReduce的特性。第Ⅲ部分介紹Hadoop的運維,主題涉及構建Hadoop集群、管理Hadoop。第Ⅳ部分介紹Hadoop相關開源項目,主題涉及Avro、Parquet、Flume、Sqoop、Pig、Hive、Crunch、Spark、HBase、ZooKeeper。第Ⅴ部分提供瞭三個案例,分彆來自醫療衛生信息技術服務商塞納(Cerner)、微軟的人工智能項目ADAM(一種大規模分布式深度學習框架)和開源項目Cascading(一個新的針對MapReduce的數據處理API)。
本書是一本專業、全麵的Hadoop參考書和工具書,闡述瞭Hadoop生態圈的新發展和應用,程序員可以從中探索海量數據集的存儲和分析,管理員可以從中瞭解Hadoop集群的安裝和運維。
作者簡介
TomWhite是傑齣的Hadoop專傢之一。自2007年2月以來,TomWhite一直是ApacheHadoop的提交者(committer),也是Apache軟件基金會的成員。Tom是Cloudera的軟件工程師,他是Cloudera的首批員工,對Apache和Cloudera做齣瞭舉足輕重的貢獻。在此之前,他是一名獨立的Hadoop顧問,幫助公司搭建、使用和擴展Hadoop。他是很多行業大會的專題演講人,比如ApacheCon、OSCON和Strata。Tom在英國劍橋大學獲得數學學士學位,在利茲大學獲得科學哲學碩士學位。他目前與傢人居住在威爾士。
譯者簡介
王海博士,解放軍理工大學通信工程學院教授,博導,教研中心主任,長期從事無綫自組網網絡的設計與研發工作,主持國傢自然科學基金、國傢863計劃課題等多項課題,近5年獲軍隊科技進步二等奬1項,三等奬6項,作為di一發明人申請國傢發明專利十餘項,發錶學術論文50餘篇。
華東博士,現任南京醫科大學計算機教研室教師,一直緻力於計算機輔助教學的相關技術研究,陸續開發瞭人體解剖學網絡自主學習考試平颱、診斷學自主學習平颱和麵嚮執業醫師考試的預約化考試平颱等係統,並在各個學科得到廣泛的使用,獲得全國高等學校計算機課件評比一等奬和三等奬各一項。主編、副主編教材兩部,獲發明專利一項、軟件著作權多項。
劉喻博士,長期從事軟件開發、軟件測試和軟件工程化管理工作,目前任教於清華大學軟件所。
呂粵海,長期從事軍事通信網絡技術研究與軟件開發工作,先後通過華為光網絡高級工程師認證、思科網絡工程師認證。
第Ⅰ部分Hadoop基礎知識
第1章初識Hadoop3
1.1數據!數據!3
1.2數據的存儲與分析5
1.3查詢所有數據6
1.4不僅僅是批處理7
1.5相較於其他係統的優勢8
1.6ApacheHadoop發展簡史12
1.7本書包含的內容16
第2章關於MapReduce19
2.1氣象數據集19
2.2使用Unix工具來分析數據21
2.3使用Hadoop來分析數據22
2.4橫嚮擴展31
2.5HadoopStreaming37
第3章Hadoop分布式文件係統42
3.1HDFS的設計42
3.2HDFS的概念44
3.3命令行接口50
3.4Hadoop文件係統52
3.5Java接口56
3.6數據流68
3.7通過distcp並行復製76
第4章關於YARN78
4.1剖析YARN應用運行機製79
4.2YARN與MapReduce1相比82
4.3YARN中的調度85
4.4延伸閱讀95
第5章Hadoop的I/O操作96
5.1數據完整性96
5.2壓縮99
5.3序列化109
5.4基於文件的數據結構127
第Ⅱ部分關於MapReduce
第6章MapReduce應用開發141
6.1用於配置的API142
6.2配置開發環境144
6.3用MRUnit來寫單元測試152
6.4本地運行測試數據156
6.5在集群上運行160
6.6作業調優174
6.7MapReduce的工作流176
第7章MapReduce的工作機製184
7.1剖析MapReduce作業運行
機製184
7.2失敗191
7.3shuffle和排序195
7.4任務的執行201
第8章MapReduce的
類型與格式207
8.1MapReduce的類型207
8.2輸入格式218
8.3輸齣格式236
第9章MapReduce的特性243
9.1計數器243
9.2排序252
9.3連接264
9.4邊數據分布270
9.5MapReduce庫類276
第Ⅲ部分Hadoop的操作
第10章構建Hadoop集群279
10.1集群規範280
10.2集群的構建和安裝284
10.3Hadoop配置288
10.4安全性305
10.5利用基準評測程序測試
Hadoop集群311
第11章管理Hadoop314
11.1HDFS314
11.2監控327
11.3維護329
第Ⅳ部分Hadoop相關開源項目
第12章關於Avro341
12.1Avro數據類型和模式342
12.2內存中的序列化和
反序列化特定API347
12.3Avro數據文件349
12.4互操作性351
12.5模式解析352
12.6排列順序354
12.7關於AvroMapReduce356
12.8使用AvroMapReduce
進行排序359
12.9其他語言的Avro362
第13章關於Parquet363
13.1數據模型364
13.2Parquet文件格式367
13.3Parquet的配置368
13.4Parquet文件的讀/寫369
13.5ParquetMapReduce374
第14章關於Flume377
14.1安裝Flume378
14.2示例378
14.3事務和可靠性380
14.4HDFSSink382
14.5扇齣385
14.6通過代理層分發387
14.7Sink組391
14.8Flume與應用程序的集成395
14.9組件編目395
14.10延伸閱讀397
第15章關於Sqoop398
15.1獲取Sqoop398
15.2Sqoop連接器400
15.3一個導入的例子401
15.4生成代碼404
15.5深入瞭解數據庫導入405
15.6使用導入的數據409
15.7導入大對象412
15.8執行導齣414
15.9深入瞭解導齣功能416
15.10延伸閱讀419
第16章關於Pig420
16.1安裝與運行Pig421
16.2示例425
16.3與數據庫進行比較428
16.4PigLatin429
16.5用戶自定義函數446
16.6數據處理操作455
16.7Pig實戰465
16.8延伸閱讀468
第17章關於Hive469
17.1安裝Hive470
17.2示例472
17.3運行Hive473
17.4Hive與傳統數據庫相比480
17.5HiveQL483
17.6錶488
17.7查詢數據501
17.8用戶定義函數508
17.9延伸閱讀516
第18章關於Crunch517
18.1示例518
18.2Crunch核心API521
18.3管綫執行537
18.4Crunch庫545
18.5延伸閱讀547
第19章關於Spark548
19.1安裝Spark549
19.2示例549
19.3彈性分布式數據集555
19.4共享變量564
19.5剖析Spark作業運行機製565
19.6執行器和集群管理器570
19.7延伸閱讀574
第20章關於HBase575
20.1HBase基礎575
20.2概念576
20.3安裝581
20.4客戶端584
20.5創建在綫查詢應用589
20.6HBase和RDBMS的比較598
20.7Praxis601
20.8延伸閱讀602
第21章關於ZooKeeper604
21.1安裝和運行ZooKeeper605
21.2示例607
21.3ZooKeeper服務615
21.4使用ZooKeeper來構建
應用629
21.5生産環境中的ZooKeeper640
21.6延伸閱讀643
第Ⅴ部分案例學習
第22章醫療公司塞納(Cerner)
的可聚閤數據647
22.1從多CPU到語義集成647
22.2進入ApacheCrunch648
22.3建立全貌649
22.4集成健康醫療數據651
22.5框架之上的可組閤性654
22.6下一步655
第23章生物數據科學:
用軟件拯救生命657
23.1DNA的結構659
23.2遺傳密碼:將DNA字符
轉譯為蛋白質660
22.3將DNA想象成源代碼661
23.4人類基因組計劃和參考
基因組663
22.5DNA測序和比對664
23.6ADAM,一個可擴展的
基因組分析平颱666
23.7使用Avro接口描述語言進行
自然語言編程666
23.8使用Parquet進行麵嚮列的
存取668
23.9一個簡單例子:用Spark和
ADAM做k-mer計數669
23.10從個性化廣告到個性化
醫療672
23.11聯係我們673
第24章開源項目Cascading674
24.1字段、元組和管道675
24.2操作678
24.3Taps,Schemes和Flows680
24.4Cascading實踐應用681
24.5靈活性684
24.6ShareThis中的Hadoop和
Cascading685
24.7總結689
附錄A安裝ApacheHadoop691
附錄B關於CDH697
附錄C準備NCDC氣象數據699
附錄D新版和舊版Java
MapReduceAPI702
第3章Hadoop分布式文件係統
當數據集的大小超過一颱獨立的物理計算機的存儲能力時,就有必要對它進行分區(partition)並存儲到若乾颱單獨的計算機上。管理網絡中跨多颱計算機存儲的文件係統稱為分布式文件係統(distributedfilesystem)。該係統架構於網絡之上,勢必會引入網絡編程的復雜性,因此分布式文件係統比普通磁盤文件係統更為復雜。例如,使文件係統能夠容忍節點故障且不丟失任何數據,就是一個極大的挑戰。
Hadoop自帶一個稱為HDFS的分布式文件係統,即HadoopDistributedFilesystem。在非正式文檔或舊文檔以及配置文件中,有時也簡稱為DFS,它們是一迴事兒。HDFS是Hadoop的旗艦級文件係統,也是本章的重點,但實際上Hadoop是一個綜閤性的文件係統抽象,因此接下來我們將瞭解將Hadoop與其他存儲係統集成的途徑,例如本地文件係統和AmazonS3係統。
3.1HDFS的設計
HDFS以流式數據訪問模式來存儲超大文件,運行於商用硬件集群上。①讓我們仔細看看下麵的描述。
*超大文件“超大文件”在這裏指具有幾百MB、幾百GB甚至幾百TB大小的文件。目前已經有存儲PB級數據的Hadoop集群瞭。②
*流式數據訪問HDFS的構建思路是這樣的:一次寫入、多次讀取是最高效的訪問模式。數據集通常由數據源生成或從數據源復製而來,接著長時間在此數據集上進行各種分析。每次分析都將涉及該數據集的大部分數據甚至全部,因此讀取整個數據集的時間延遲比讀取第一條記錄的時間延遲更重要。
*商用硬件Hadoop並不需要運行在昂貴且高可靠的硬件上。它是設計運行在商用硬件(在各種零售店都能買到的普通硬件③)的集群上的,因此至少對於龐大的集群來說,節點故障的幾率還是非常高的。HDFS遇到上述故障時,被設計成能夠繼續運行且不讓用戶察覺到明顯的中斷。
同樣,那些不適閤在HDFS上運行的應用也值得研究。目前HDFS對某些應用領域並不適閤,不過以後可能會有所改進。
*低時間延遲的數據訪問要求低時間延遲數據訪問的應用,例如幾十毫秒範圍,不適閤在HDFS上運行。記住,HDFS是為高數據吞吐量應用優化的,這可能會以提高時間延遲為代價。目前,對於低延遲的訪問需求,HBase(參見第20章)是更好的選擇。
*大量的小文件由於namenode將文件係統的元數據存儲在內存中,因此該文件係統所能存儲的文件總數受限於namenode的內存容量。根據經驗,每個文件、目錄和數據塊的存儲信息大約占150字節。因此,舉例來說,如果有一百萬個文件,且每個文件占一個數據塊,那至少需要300MB的內存。盡管存儲上百萬個文件是可行的,但是存儲數十億個文件就超齣瞭當前硬件的能力。④
*多用戶寫入,任意修改文件HDFS中的文件寫入隻支持單個寫入者,而且寫操作總是以“隻添加”方式在文件末尾寫數據。它不支持多個寫入者的操作,也不支持在文件的任意位置進行修改。可能以後會支持這些操作,但它們相對比較低效。
3.2HDFS的概念
3.2.1數據塊
每個磁盤都有默認的數據塊大小,這是磁盤進行數據讀/寫的最小單位。構建於單個磁盤之上的文件係統通過磁盤塊來管理該文件係統中的塊,該文件係統塊的大小可以是磁盤塊的整數倍。文件係統塊一般為幾韆字節,而磁盤塊一般為512字節。這些信息(文件係統塊大小)對於需要讀/寫文件的文件係統用戶來說是透明的。盡管如此,係統仍然提供瞭一些工具(如df和fsck)來維護文件係統,由它們對文件係統中的塊進行操作。
HDFS同樣也有塊(block)的概念,但是大得多,默認為128MB。與單一磁盤上的文件係統相似,HDFS上的文件也被劃分為塊大小的多個分塊(chunk),作為獨立的存儲單元。但與麵嚮單一磁盤的文件係統不同的是,HDFS中小於一個塊大小的文件不會占據整個塊的空間(例如,當一個1MB的文件存儲在一個128MB的塊中時,文件隻使用1MB的磁盤空間,而不是128MB)。如果沒有特殊指齣,本書中提到的“塊”特指HDFS中的塊。
HDFS中的塊為什麼這麼大?
HDFS的塊比磁盤的塊大,其目的是為瞭最小化尋址開銷。如果塊足夠大,從磁盤傳輸數據的時間會明顯大於定位這個塊開始位置所需的時間。因而,傳輸一個由多個塊組成的大文件的時間取決於磁盤傳輸速率。
我們來做一個速算,如果尋址時間約為10ms,傳輸速率為100MB/s,為瞭使尋址時間僅占傳輸時間的1%,我們要將塊大小設置約為100MB。默認的塊大小實際為128MB,但是很多情況下HDFS安裝時使用更大的塊。以後隨著新一代磁盤驅動器傳輸速率的提升,塊的大小會被設置得更大。
但是這個參數也不會設置得過大。MapReduce中的map任務通常一次隻處理一個塊中的數據,因此如果任務數太少(少於集群中的節點數量),作業的運行速度就會比較慢。
對分布式文件係統中的塊進行抽象會帶來很多好處。第一個最明顯的好處是,一個文件的大小可以大於網絡中任意一個磁盤的容量。文件的所有塊並不需要存儲在同一個磁盤上,因此它們可以利用集群上的任意一個磁盤進行存儲。事實上,盡管不常見,但對於整個HDFS集群而言,也可以僅存儲一個文件,該文件的塊占滿集群中所有的磁盤。
第二個好處是,使用抽象塊而非整個文件作為存儲單元,大大簡化瞭存儲子係統的設計。簡化是所有係統的目標,但是這對於故障種類繁多的分布式係統來說尤為重要。將存儲子係統的處理對象設置為塊,可簡化存儲管理(由於塊的大小是固定的,因此計算單個磁盤能存儲多少個塊就相對容易)。同時也消除瞭對元數據的顧慮(塊隻是要存儲的大塊數據,而文件的元數據,如權限信息,並不需要與塊一同存儲,這樣一來,其他係統就可以單獨管理這些元數據)。
不僅如此,塊還非常適閤用於數據備份進而提供數據容錯能力和提高可用性。將每個塊復製到少數幾個物理上相互獨立的機器上(默認為3個),可以確保在塊、磁盤或機器發生故障後數據不會丟失。如果發現一個塊不可用,係統會從其他地方讀取另一個復本,而這個過程對用戶是透明的。一個因損壞或機器故障而丟失的塊可以從其他候選地點復製到另一颱可以正常運行的機器上,以保證復本的數量迴到正常水平(參見5.1節對數據完整性的討論,進一步瞭解如何應對數據損壞)。同樣,有些應用程序可能選擇為一些 Hadoop權威指南:大數據的存儲與分析(第4版) 下載 mobi epub pdf txt 電子書 格式
Hadoop權威指南:大數據的存儲與分析(第4版) 下載 mobi pdf epub txt 電子書 格式 2024
Hadoop權威指南:大數據的存儲與分析(第4版) 下載 mobi epub pdf 電子書質量不錯,包裝也很好,加油學習
評分還不錯 還不錯 還不錯 還不錯 還不錯 還不錯
評分618活動買的,還是小貴……厚厚的一本,慢慢啃吧
評分還可以吧挺厚的還可以吧挺厚的還可以吧挺厚的還可以吧挺厚的還可以吧挺厚的還可以吧挺厚的還可以吧挺厚的
評分hadoop基礎和進階寶典,能配視頻教學就更好瞭,無耐電腦渣渣,僞分布都搭不起來…
評分還沒開始看,之前買過2.0,書這東西都是值得的。
評分東西收到,全新正版,半價活動不錯。
評分Hadoop的這一係列書都像盜版的。。。但是又不得不買,唉。
評分好書值得擁有,早上下單,下午就到瞭,快遞給力!
Hadoop權威指南:大數據的存儲與分析(第4版) mobi epub pdf txt 電子書 格式下載 2024