您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Hadoop有什么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
一、Hadoop簡介
A.什么是Hadoop
1.Hadoop是一個開源分布式計算平臺,以HDFS(Hadoop Distributed Filesystem,Hadoop分布式文件系統)和MapReduce為核心,為用戶提供了系統底層細節透明的分布式基礎架構
2.使用HDFS分布式存儲方式,提高了讀寫速度,擴大了存儲容量,采用MapReduce來整合分布式文件系統上的數據,可以保證分析和處理數據的高效,還采用存儲冗余數據的方式保證了數據的安全性;HDFS的高容錯特性,使得Hadoop可以部署在低廉的計算機集群中,同時不限于某個操作系統
3.Hadoop優勢:高可靠性、高擴展性、高效性、高容錯性
B.Hadoop項目及其結構
1.Core/Common,是為Hadoop其他子項目提供支持的常用工具,包括FileSystem、RPC和串行化庫
2.Avro,用于數據序列化的系統
3.MapReduce,是一種編程模型,用于大規模數據集(大于1TB)的并行去處
4.HDFS,分布式文件系統
5.Chukwa,開源的數據收集系統,用于監控和分析大型分布式系統的數據
6.Hive,是一個建立在Hadoop基礎之上的數據倉庫,提供了一些用于數據整理、特殊查詢和分析存儲在Hadoop文件中的數據集工具
7.HBase,分布式的、面向列的開源數據庫
8.Pig,是一個對大型數據集進行分析和評估的平臺
C.Hadoop的體系結構
1.HDFS采用了主從(Master/Slave)結構模型,一個集群由一個NameNode和若干個DataNode組成
NameNode:主服務器,管理文件系統的命名空間和客戶端對文件的訪問操作,執行文件系統的命名空間操作,也負責數據塊到具體DataNode的映射
DataNode:管理存儲的數據,文件被分成若干個數據塊,這些個數據塊存放在一組DataNode上,負責處理文件系統客戶端的文件讀寫請求
2.MapReduce是由一個單獨運行在主節點上的JobTracker和運行在每個集群從節點上的TaskTracker共同組成
D.Hadoop與分布式開發
1.Hadoop是分布式軟件系統中文件系統這一層的軟件,實現了分布式文件系統和部分分布式數據庫的功能
2.MapReduce編輯模型的原理是:利用一個輸入的key/value對集合來產生一個輸出的key/value對集合,三個主要函數:map、reduce、main
E.Hadoop計算模型——MapReduce
1.一個MapReduce作業(job)通常會把輸入的數據集切分為若干個獨立的數據塊,由map任務(task)以完全并行 的方式處理它們
F.Hadoop的數據管理
1.HDFS三個重要的組件:NameNode、DataNode、Client,Client是需要獲取分布式文件系統文件的應用程序
2.HBase在分布式集群上主要領先由HRegion、HMaster、HClient組成的體系結構從整體上管理數據
3.Hive是建立在Hadoop上的數據倉庫基礎架構,它提供了一系列的工具,用來進行數據提取、轉化、加載,這是一種可以存儲、查詢和分析存儲在Hadoop中的大規模數據的機制
二、Hadoop的安裝與配置
1.hadoop-3.0.0-alpha3,默認locahost:9870和localhost:50090
三、Hadoop應用案例分析
1.大規模的數據處理經常分為三個不同的任務:數據收集、數據準備和數據表示
數據準備,通常被認為是提取、轉換和加載(Extract Transform Load, ETL)數據的階段,或者認為這個階段是數據工廠
數據表示階段一般指的是數據倉庫,數據倉庫存儲了客戶所需要的產品,客戶會根據需要選取合適的產品
四、MapReduce計算模型
A.MapReduce計算模型
1.在Hadoop中,用于執行MapReduce任務的機器角色:一個是JobTracker,用于調度工作,一個集群中只有一臺;另一個是TaskTracker,用于執行工作;
2.JobTracker調度任務給TaskTracker,TaskTracker執行任務時,會返回進度報告。JobTracker則會記錄進度的進行狀況,如果某個TaskTracker上的任務執行失敗,那么JobTracker會把這個任務分配給另一臺TaskTracker,直到任務執行完成
B.Hadoop流
1.Hadoop流提供了一個API,允許用戶使用任何腳本語言編寫map函數或reduce函數,使用UNIX標準流作為程序與Hadoop之間的接口
2.Hadoop Pipes提供了一個在Hadoop上運行C++程序的方法,pipes使用的是Sockets
五、開發MapReduce應用程序
1.Hadoop自帶的網絡用戶界面:http://xxx:50030
2.性能調優:
輸入的文件盡量采用大文件,避免使用小文件
考慮壓縮文件
3.MapReduce工作流
Mapper通常用來處理輸入格式轉化、投影(選擇相關的字段)、過濾(去掉那些不感興趣的記錄)等
Hadoop工作流調度器(HWS)作為一個服務器,允許客戶端提交一個工作流給調度器
六、MapReduce引用案例
七、MapReduce工作機制
A.MapReduce作業的執行流程
1.MapReduce任務的執行總流程:代碼編寫->作業配置->作業提交->Map任務的分配和執行->處理中間結果->Reduce任務的分配和執行->作業完成,每個任務又包括輸入準備->任務執行->輸出結果
2.4個獨立實體:
客戶端(client):編寫MapReduce代碼,配置作業,提交作業
JobTracker:初始化作業,分配作業,與TaskTracker通信,協調整個作業的執行
TaskTracker:保持JobTracker的通信,在分配 的數據片段上執行Map或Reduce任務,可以包含多個TaskTracker
HDFS:保存作業的數據、配置信息,保存作業結果
B.錯誤處理機制
1.在集群中,任何時候都只有唯一一個JobTracker,所以JobTracker故障就是單點故障,一般是創建多個備用JobTracker節點
2.TaskTracker故障很正常,會由MapReduce處理
C.作業調度機制
1.Hadoop默認FIFO調度器,還提供了支持多用戶服務和集群資源公平共享的調度器,即公平調度器(Fair Scheduler Guide)和容量調度器(Capacity Scheduler Guide)
2.shuffle過程包含在map和reduce兩端中,map端是對map的結果進行劃分、排序和分割,然后將屬于同一個劃分的輸出合并在一起;reduce端又會將各個map送來的屬于同一個劃分 的輸出進行合并,然后對合并結果進行排序,最后交給reduce處理
D.任務執行
1.推測式執行,指當作業的所有任務都開始運行時,JobTracker會統計所有任務的平均進度,如果某個任務所在的TaskTracker節點由于配置比較低或CPU負載過高,導致任務執行的速度比總體任務的平均速度慢,此時JobTracker就會啟動一個新的備份任務,原有任務和新任務哪個先執行完就把另一個kill掉,缺點是對于代碼缺陷導致的問題,備份并不能解決
2.任務JVM重用、跳過壞記錄
八、Hadoop I/O操作
1.Hadoop采用CRC-32(Cyclic Redundancy Check,循環冗余校驗,其中的32指生成 的校驗和是32位的)的方式檢查數據完整性
2.Hadoop使用RPC來實現進程間通信,使用Writables序列化機制
九、HDFS詳解
A.HDFS簡介
1.特點:處理超大文件;流式訪問數據;運行于廉價的商用機器集群上;
2.局限性:不適合低延遲數據訪問;無法高效存儲大量小文件;不支持多用戶寫入及任意修改文件
B.HDFS體系結構
1.HDFS分布式文件系統中的文件也被劃分成塊進行存儲,它是文件存儲處理的單元,默認塊為64MB
2.NameNode就是Master管理集群中的執行調度,DataNode就是Worker具體任務的執行節點
3.一個HDFS集群是由一個NameNode和一定數目的DataNodes組成的,一個文件其實被分成了一個或多個數據塊,這些塊存儲在一組DataNode上
十、Hadoop的管理
1.監控工具:Metrics、Ganglia
2.備份工具:distcp
3.Hadoop管理命令:dfsadmin,獲取HDFS的狀態信息;fsck,檢測文件塊
十一、Hive詳解
1.Hive是一個基于Hadoop文件系統上的數據倉庫架構,它為數據倉庫提供了許多功能:數據ETL(抽取、轉換和加載)工具、數據存儲管理和大型數據集的查詢與分析能力,同時Hive還定義了類SQL語言——Hive QL
2.Hive中主要包含四類數據模型:表(Table)、外部表(External Table)、分區(Partition)、桶(Bucket)
十二、HBase詳解
A.HBase簡介
1.特點:向下提供了存儲,向上提供了運算
B.HBase的基本操作
1.單機模式可以直接運行,分布式模式需要Hadoop
C.HBase體系結構
1.HBase的服務器體系結構遵從簡單的主從服務器架構,由HRegion服務器群和HBase Master服務器構成。HBase Master服務器負責管理所有的HRegion服務器,而HBase中所有的服務器都是通過ZooKeeper來進行協調,并處理HBase服務器運行期間可能遇到的錯誤的。HBase Master Server本身并不存儲HBase中的任何數據,HBase邏輯上的表可能會被劃分成多個HRegion,然后存儲到HRegion Server群中。HBase Master Server中存儲的是從數據到HRegion Server的映射
D.HBase數據模型
1.HBase是一個類似Bigtable的分布式數據庫,它是一個稀疏的長期存儲的(存在硬盤上)、多維度的、排序的映射表。這張表的索引是行關鍵字、列關鍵字和時間戳。HBase中的數據都是字符串,沒有類型
2.列名字的格式是“<family>:<qualifier>”,都是由字符串組成的,每一張表有一個一列族(family)集合,這個集合是固定不變的,只能通過改變表結構來改變;寫操作是鎖行的;所有數據庫更新都有一個時間戳標記,每個更新都是一個新的版本,HBase會保留一定數量的版本
E.HBase與RDBMS
1.只有簡單的字符串類型
2.只有很簡單的插入、查詢、刪除、清空等操作,表和表之間是分離的,沒有復雜的表間關系
3.是基于列存儲的,每個列族都由幾個文件保存
4.更新操作會保留舊版本,不是傳統關系數據庫里的替換修改
5.能夠輕易地增加或減少硬件數量,對錯誤兼容性高
6.適應海量存儲和互聯網應用的需要,利用廉價的硬件設備組建數據倉庫,原本就是作為一個搜索引擎的一部分開發出來的
十三、Mahout詳解
A.Mahout簡介
1.Apache Mahout的主要目標是建立可伸縮的機器學習算法,這種可伸縮性是針對大規模的數據集而言的
B.Mahout中的聚類和分類
1.Mahout中三種向量:稠密向量(DenseVector)、隨機訪問向量(RandomAccessSparseVector)和序列訪問向量(SequentialAccessSparseVector)
十四、Pig詳解
A.Pig簡介
1.Pig包括用來描述數據分析程序的高級程序語言,以及對這些程序進行評估的基礎結構。突出的特點就是它的結構經得起大量并行 任務,使得它能夠對大規模數據集進行處理
2.Pig使用Pig Latin語言,類似SQL,偏重查詢
十五、Zookeeper詳解
A.ZooKeeper簡介
1.ZooKeeper是一個為分布式應用所設計的開源協調服務,可以為用戶提供同步、配置管理、分組和命名等服務
2.設計目標:
簡單化:允許分布式的進程通過共享體系的命名空間來進行協調,這個命名空間組織與標準的文件系統非常相似,它是由一些數據寄存器組成的
健壯性:組成ZooKeeper服務的服務器必須互相知道其他服務器的存在
有序性:可以為每一次更新操作賦予一個版本號,并且此版本號是全局有序的,不存在重復的情況
速度優勢:在上千臺機器節點上運行
B.ZooKeeper的Leader選舉
1.ZooKeeper需要在所有的服務(可以理解為服務器)中選舉出一個Leader,然后讓這個Leader來負責管理集群,其他為Follower。當Leader出現故障時,ZooKeeper要能夠快速地在Follower中選舉出下一個Leader,這就是ZooKeeper的Leader機制
C.ZooKeeper鎖服務
1.在ZooKeeper中,完全分布的鎖是全局同步的,也就是說,在同一時刻,不會有兩個不同的客戶端認為他們持有了相同的鎖
E.典型應用場景(網上找的)
1.統一命名服務
2.配置管理:配置信息完全可以交給 Zookeeper 來管理,將配置信息保存在 Zookeeper 的某個目錄節點中,然后將所有需要修改的應用機器監控配置信息的狀態,一旦配置信息發生變化,每臺應用機器就會收到 Zookeeper 的通知,然后從 Zookeeper 獲取新的配置信息應用到系統中
3.集群管理:實現方式都是在 Zookeeper 上創建一個 EPHEMERAL 類型的目錄節點,然后每個 Server 在它們創建目錄節點的父目錄節點上調用 getChildren(String path, boolean watch) 方法并設置 watch 為 true,由于是 EPHEMERAL 目錄節點,當創建它的 Server 死去,這個目錄節點也隨之被刪除,所以 Children 將會變化,這時 getChildren上的 Watch 將會被調用,所以其它 Server 就知道已經有某臺 Server 死去了。新增 Server 也是同樣的原理
4.共享鎖
5.隊列管理
十六、Avro詳解
A.Avro簡介
1.Avro是一個數據序列化的系統,可以將數據結構或對象轉化成便于存儲或傳輸的格式,特別是設計之初它可以用來支持數據密集型應用,適合于大規模數據的存儲和交換
2.Avro模式是用JSON定義的,提供與Thrift和Protocol Buffers等系統相似的功能
十七、Chukwa詳解
A.Chukwa簡介
1.Chukwa能通過擴展處理大量的客戶端請求,并且能匯聚多路客戶端的數據流,采用的是流水式數據處理方式和模塊化結構的收集系統,在每一個模塊中有一個簡單規范的接口
B.Chukwa架構
1.有三個主要組成部分:
客戶端(Agent):使內部進程通信協議能夠兼容處理本地的日志文件
收集器(Collector)和分離器(Demux):利用了Collectors策略
HICC(Hadoop Infrastructure Care Center):數據可視化頁面
十八、Hadoop的常用插件與開發
1.Hadoop Studio
2.Hadoop Eclipse
3.Hadoop Streaming:幫助用戶創建和運行一類特殊的MapReduce作業,這些作業由一些可執行文件或腳本文件充當mapper或reducer,也就是允許使用非Java語言
4.Hadoop Libhdfs:是一個基于C編程接口的為Hadoop分布式文件系統開發的JNI,提供了一個C語言接口以結合管理DFS文件和文件系統
關于“Hadoop有什么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。