溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Hadoop有什么用

發(fā)布時間:2021-12-08 10:37:48 來源:億速云 閱讀:119 作者:小新 欄目:大數(shù)據(jù)

這篇文章將為大家詳細(xì)講解有關(guān)Hadoop有什么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

一、Hadoop簡介

A.什么是Hadoop

1.Hadoop是一個開源分布式計算平臺,以HDFS(Hadoop Distributed Filesystem,Hadoop分布式文件系統(tǒng))和MapReduce為核心,為用戶提供了系統(tǒng)底層細(xì)節(jié)透明的分布式基礎(chǔ)架構(gòu)

2.使用HDFS分布式存儲方式,提高了讀寫速度,擴(kuò)大了存儲容量,采用MapReduce來整合分布式文件系統(tǒng)上的數(shù)據(jù),可以保證分析和處理數(shù)據(jù)的高效,還采用存儲冗余數(shù)據(jù)的方式保證了數(shù)據(jù)的安全性;HDFS的高容錯特性,使得Hadoop可以部署在低廉的計算機(jī)集群中,同時不限于某個操作系統(tǒng)

3.Hadoop優(yōu)勢:高可靠性、高擴(kuò)展性、高效性、高容錯性

B.Hadoop項目及其結(jié)構(gòu)

1.Core/Common,是為Hadoop其他子項目提供支持的常用工具,包括FileSystem、RPC和串行化庫

2.Avro,用于數(shù)據(jù)序列化的系統(tǒng)

3.MapReduce,是一種編程模型,用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行去處

4.HDFS,分布式文件系統(tǒng)

5.Chukwa,開源的數(shù)據(jù)收集系統(tǒng),用于監(jiān)控和分析大型分布式系統(tǒng)的數(shù)據(jù)

6.Hive,是一個建立在Hadoop基礎(chǔ)之上的數(shù)據(jù)倉庫,提供了一些用于數(shù)據(jù)整理、特殊查詢和分析存儲在Hadoop文件中的數(shù)據(jù)集工具

7.HBase,分布式的、面向列的開源數(shù)據(jù)庫

8.Pig,是一個對大型數(shù)據(jù)集進(jìn)行分析和評估的平臺

C.Hadoop的體系結(jié)構(gòu)

1.HDFS采用了主從(Master/Slave)結(jié)構(gòu)模型,一個集群由一個NameNode和若干個DataNode組成

  • NameNode:主服務(wù)器,管理文件系統(tǒng)的命名空間和客戶端對文件的訪問操作,執(zhí)行文件系統(tǒng)的命名空間操作,也負(fù)責(zé)數(shù)據(jù)塊到具體DataNode的映射

  • DataNode:管理存儲的數(shù)據(jù),文件被分成若干個數(shù)據(jù)塊,這些個數(shù)據(jù)塊存放在一組DataNode上,負(fù)責(zé)處理文件系統(tǒng)客戶端的文件讀寫請求

2.MapReduce是由一個單獨運行在主節(jié)點上的JobTracker和運行在每個集群從節(jié)點上的TaskTracker共同組成

D.Hadoop與分布式開發(fā)

1.Hadoop是分布式軟件系統(tǒng)中文件系統(tǒng)這一層的軟件,實現(xiàn)了分布式文件系統(tǒng)和部分分布式數(shù)據(jù)庫的功能

2.MapReduce編輯模型的原理是:利用一個輸入的key/value對集合來產(chǎn)生一個輸出的key/value對集合,三個主要函數(shù):map、reduce、main

E.Hadoop計算模型——MapReduce

1.一個MapReduce作業(yè)(job)通常會把輸入的數(shù)據(jù)集切分為若干個獨立的數(shù)據(jù)塊,由map任務(wù)(task)以完全并行 的方式處理它們

F.Hadoop的數(shù)據(jù)管理

1.HDFS三個重要的組件:NameNode、DataNode、Client,Client是需要獲取分布式文件系統(tǒng)文件的應(yīng)用程序

2.HBase在分布式集群上主要領(lǐng)先由HRegion、HMaster、HClient組成的體系結(jié)構(gòu)從整體上管理數(shù)據(jù)

3.Hive是建立在Hadoop上的數(shù)據(jù)倉庫基礎(chǔ)架構(gòu),它提供了一系列的工具,用來進(jìn)行數(shù)據(jù)提取、轉(zhuǎn)化、加載,這是一種可以存儲、查詢和分析存儲在Hadoop中的大規(guī)模數(shù)據(jù)的機(jī)制

二、Hadoop的安裝與配置

1.hadoop-3.0.0-alpha3,默認(rèn)locahost:9870和localhost:50090

三、Hadoop應(yīng)用案例分析

1.大規(guī)模的數(shù)據(jù)處理經(jīng)常分為三個不同的任務(wù):數(shù)據(jù)收集、數(shù)據(jù)準(zhǔn)備和數(shù)據(jù)表示

  • 數(shù)據(jù)準(zhǔn)備,通常被認(rèn)為是提取、轉(zhuǎn)換和加載(Extract Transform Load, ETL)數(shù)據(jù)的階段,或者認(rèn)為這個階段是數(shù)據(jù)工廠

  • 數(shù)據(jù)表示階段一般指的是數(shù)據(jù)倉庫,數(shù)據(jù)倉庫存儲了客戶所需要的產(chǎn)品,客戶會根據(jù)需要選取合適的產(chǎn)品

四、MapReduce計算模型

A.MapReduce計算模型

1.在Hadoop中,用于執(zhí)行MapReduce任務(wù)的機(jī)器角色:一個是JobTracker,用于調(diào)度工作,一個集群中只有一臺;另一個是TaskTracker,用于執(zhí)行工作;

2.JobTracker調(diào)度任務(wù)給TaskTracker,TaskTracker執(zhí)行任務(wù)時,會返回進(jìn)度報告。JobTracker則會記錄進(jìn)度的進(jìn)行狀況,如果某個TaskTracker上的任務(wù)執(zhí)行失敗,那么JobTracker會把這個任務(wù)分配給另一臺TaskTracker,直到任務(wù)執(zhí)行完成

B.Hadoop流

1.Hadoop流提供了一個API,允許用戶使用任何腳本語言編寫map函數(shù)或reduce函數(shù),使用UNIX標(biāo)準(zhǔn)流作為程序與Hadoop之間的接口

2.Hadoop Pipes提供了一個在Hadoop上運行C++程序的方法,pipes使用的是Sockets

五、開發(fā)MapReduce應(yīng)用程序

1.Hadoop自帶的網(wǎng)絡(luò)用戶界面:http://xxx:50030

2.性能調(diào)優(yōu):

  • 輸入的文件盡量采用大文件,避免使用小文件

  • 考慮壓縮文件

3.MapReduce工作流

  • Mapper通常用來處理輸入格式轉(zhuǎn)化、投影(選擇相關(guān)的字段)、過濾(去掉那些不感興趣的記錄)等

  • Hadoop工作流調(diào)度器(HWS)作為一個服務(wù)器,允許客戶端提交一個工作流給調(diào)度器

六、MapReduce引用案例

七、MapReduce工作機(jī)制

A.MapReduce作業(yè)的執(zhí)行流程

1.MapReduce任務(wù)的執(zhí)行總流程:代碼編寫->作業(yè)配置->作業(yè)提交->Map任務(wù)的分配和執(zhí)行->處理中間結(jié)果->Reduce任務(wù)的分配和執(zhí)行->作業(yè)完成,每個任務(wù)又包括輸入準(zhǔn)備->任務(wù)執(zhí)行->輸出結(jié)果

2.4個獨立實體:

  • 客戶端(client):編寫MapReduce代碼,配置作業(yè),提交作業(yè)

  • JobTracker:初始化作業(yè),分配作業(yè),與TaskTracker通信,協(xié)調(diào)整個作業(yè)的執(zhí)行

  • TaskTracker:保持JobTracker的通信,在分配 的數(shù)據(jù)片段上執(zhí)行Map或Reduce任務(wù),可以包含多個TaskTracker

  • HDFS:保存作業(yè)的數(shù)據(jù)、配置信息,保存作業(yè)結(jié)果

B.錯誤處理機(jī)制

1.在集群中,任何時候都只有唯一一個JobTracker,所以JobTracker故障就是單點故障,一般是創(chuàng)建多個備用JobTracker節(jié)點

2.TaskTracker故障很正常,會由MapReduce處理

C.作業(yè)調(diào)度機(jī)制

1.Hadoop默認(rèn)FIFO調(diào)度器,還提供了支持多用戶服務(wù)和集群資源公平共享的調(diào)度器,即公平調(diào)度器(Fair Scheduler Guide)和容量調(diào)度器(Capacity Scheduler Guide)

2.shuffle過程包含在map和reduce兩端中,map端是對map的結(jié)果進(jìn)行劃分、排序和分割,然后將屬于同一個劃分的輸出合并在一起;reduce端又會將各個map送來的屬于同一個劃分 的輸出進(jìn)行合并,然后對合并結(jié)果進(jìn)行排序,最后交給reduce處理

D.任務(wù)執(zhí)行

1.推測式執(zhí)行,指當(dāng)作業(yè)的所有任務(wù)都開始運行時,JobTracker會統(tǒng)計所有任務(wù)的平均進(jìn)度,如果某個任務(wù)所在的TaskTracker節(jié)點由于配置比較低或CPU負(fù)載過高,導(dǎo)致任務(wù)執(zhí)行的速度比總體任務(wù)的平均速度慢,此時JobTracker就會啟動一個新的備份任務(wù),原有任務(wù)和新任務(wù)哪個先執(zhí)行完就把另一個kill掉,缺點是對于代碼缺陷導(dǎo)致的問題,備份并不能解決

2.任務(wù)JVM重用、跳過壞記錄

八、Hadoop I/O操作

1.Hadoop采用CRC-32(Cyclic Redundancy Check,循環(huán)冗余校驗,其中的32指生成 的校驗和是32位的)的方式檢查數(shù)據(jù)完整性

2.Hadoop使用RPC來實現(xiàn)進(jìn)程間通信,使用Writables序列化機(jī)制

九、HDFS詳解

A.HDFS簡介

1.特點:處理超大文件;流式訪問數(shù)據(jù);運行于廉價的商用機(jī)器集群上;

2.局限性:不適合低延遲數(shù)據(jù)訪問;無法高效存儲大量小文件;不支持多用戶寫入及任意修改文件

B.HDFS體系結(jié)構(gòu)

1.HDFS分布式文件系統(tǒng)中的文件也被劃分成塊進(jìn)行存儲,它是文件存儲處理的單元,默認(rèn)塊為64MB

2.NameNode就是Master管理集群中的執(zhí)行調(diào)度,DataNode就是Worker具體任務(wù)的執(zhí)行節(jié)點

3.一個HDFS集群是由一個NameNode和一定數(shù)目的DataNodes組成的,一個文件其實被分成了一個或多個數(shù)據(jù)塊,這些塊存儲在一組DataNode上

十、Hadoop的管理

1.監(jiān)控工具:Metrics、Ganglia

2.備份工具:distcp

3.Hadoop管理命令:dfsadmin,獲取HDFS的狀態(tài)信息;fsck,檢測文件塊

十一、Hive詳解

1.Hive是一個基于Hadoop文件系統(tǒng)上的數(shù)據(jù)倉庫架構(gòu),它為數(shù)據(jù)倉庫提供了許多功能:數(shù)據(jù)ETL(抽取、轉(zhuǎn)換和加載)工具、數(shù)據(jù)存儲管理和大型數(shù)據(jù)集的查詢與分析能力,同時Hive還定義了類SQL語言——Hive QL

2.Hive中主要包含四類數(shù)據(jù)模型:表(Table)、外部表(External Table)、分區(qū)(Partition)、桶(Bucket)

十二、HBase詳解

A.HBase簡介

1.特點:向下提供了存儲,向上提供了運算

B.HBase的基本操作

1.單機(jī)模式可以直接運行,分布式模式需要Hadoop

C.HBase體系結(jié)構(gòu)

1.HBase的服務(wù)器體系結(jié)構(gòu)遵從簡單的主從服務(wù)器架構(gòu),由HRegion服務(wù)器群和HBase Master服務(wù)器構(gòu)成。HBase Master服務(wù)器負(fù)責(zé)管理所有的HRegion服務(wù)器,而HBase中所有的服務(wù)器都是通過ZooKeeper來進(jìn)行協(xié)調(diào),并處理HBase服務(wù)器運行期間可能遇到的錯誤的。HBase Master Server本身并不存儲HBase中的任何數(shù)據(jù),HBase邏輯上的表可能會被劃分成多個HRegion,然后存儲到HRegion Server群中。HBase Master Server中存儲的是從數(shù)據(jù)到HRegion Server的映射

D.HBase數(shù)據(jù)模型

1.HBase是一個類似Bigtable的分布式數(shù)據(jù)庫,它是一個稀疏的長期存儲的(存在硬盤上)、多維度的、排序的映射表。這張表的索引是行關(guān)鍵字、列關(guān)鍵字和時間戳。HBase中的數(shù)據(jù)都是字符串,沒有類型

2.列名字的格式是“<family>:<qualifier>”,都是由字符串組成的,每一張表有一個一列族(family)集合,這個集合是固定不變的,只能通過改變表結(jié)構(gòu)來改變;寫操作是鎖行的;所有數(shù)據(jù)庫更新都有一個時間戳標(biāo)記,每個更新都是一個新的版本,HBase會保留一定數(shù)量的版本

E.HBase與RDBMS

1.只有簡單的字符串類型

2.只有很簡單的插入、查詢、刪除、清空等操作,表和表之間是分離的,沒有復(fù)雜的表間關(guān)系

3.是基于列存儲的,每個列族都由幾個文件保存

4.更新操作會保留舊版本,不是傳統(tǒng)關(guān)系數(shù)據(jù)庫里的替換修改

5.能夠輕易地增加或減少硬件數(shù)量,對錯誤兼容性高

6.適應(yīng)海量存儲和互聯(lián)網(wǎng)應(yīng)用的需要,利用廉價的硬件設(shè)備組建數(shù)據(jù)倉庫,原本就是作為一個搜索引擎的一部分開發(fā)出來的

十三、Mahout詳解

A.Mahout簡介

1.Apache Mahout的主要目標(biāo)是建立可伸縮的機(jī)器學(xué)習(xí)算法,這種可伸縮性是針對大規(guī)模的數(shù)據(jù)集而言的

B.Mahout中的聚類和分類

1.Mahout中三種向量:稠密向量(DenseVector)、隨機(jī)訪問向量(RandomAccessSparseVector)和序列訪問向量(SequentialAccessSparseVector)

十四、Pig詳解

A.Pig簡介

1.Pig包括用來描述數(shù)據(jù)分析程序的高級程序語言,以及對這些程序進(jìn)行評估的基礎(chǔ)結(jié)構(gòu)。突出的特點就是它的結(jié)構(gòu)經(jīng)得起大量并行 任務(wù),使得它能夠?qū)Υ笠?guī)模數(shù)據(jù)集進(jìn)行處理

2.Pig使用Pig Latin語言,類似SQL,偏重查詢

十五、Zookeeper詳解

A.ZooKeeper簡介

1.ZooKeeper是一個為分布式應(yīng)用所設(shè)計的開源協(xié)調(diào)服務(wù),可以為用戶提供同步、配置管理、分組和命名等服務(wù)

2.設(shè)計目標(biāo):

  • 簡單化:允許分布式的進(jìn)程通過共享體系的命名空間來進(jìn)行協(xié)調(diào),這個命名空間組織與標(biāo)準(zhǔn)的文件系統(tǒng)非常相似,它是由一些數(shù)據(jù)寄存器組成的

  • 健壯性:組成ZooKeeper服務(wù)的服務(wù)器必須互相知道其他服務(wù)器的存在

  • 有序性:可以為每一次更新操作賦予一個版本號,并且此版本號是全局有序的,不存在重復(fù)的情況

  • 速度優(yōu)勢:在上千臺機(jī)器節(jié)點上運行

B.ZooKeeper的Leader選舉

1.ZooKeeper需要在所有的服務(wù)(可以理解為服務(wù)器)中選舉出一個Leader,然后讓這個Leader來負(fù)責(zé)管理集群,其他為Follower。當(dāng)Leader出現(xiàn)故障時,ZooKeeper要能夠快速地在Follower中選舉出下一個Leader,這就是ZooKeeper的Leader機(jī)制

C.ZooKeeper鎖服務(wù)

1.在ZooKeeper中,完全分布的鎖是全局同步的,也就是說,在同一時刻,不會有兩個不同的客戶端認(rèn)為他們持有了相同的鎖

E.典型應(yīng)用場景(網(wǎng)上找的)

1.統(tǒng)一命名服務(wù)

2.配置管理:配置信息完全可以交給 Zookeeper 來管理,將配置信息保存在 Zookeeper 的某個目錄節(jié)點中,然后將所有需要修改的應(yīng)用機(jī)器監(jiān)控配置信息的狀態(tài),一旦配置信息發(fā)生變化,每臺應(yīng)用機(jī)器就會收到 Zookeeper 的通知,然后從 Zookeeper 獲取新的配置信息應(yīng)用到系統(tǒng)中

3.集群管理:實現(xiàn)方式都是在 Zookeeper 上創(chuàng)建一個 EPHEMERAL 類型的目錄節(jié)點,然后每個 Server 在它們創(chuàng)建目錄節(jié)點的父目錄節(jié)點上調(diào)用 getChildren(String path, boolean watch) 方法并設(shè)置 watch 為 true,由于是 EPHEMERAL 目錄節(jié)點,當(dāng)創(chuàng)建它的 Server 死去,這個目錄節(jié)點也隨之被刪除,所以 Children 將會變化,這時 getChildren上的 Watch 將會被調(diào)用,所以其它 Server 就知道已經(jīng)有某臺 Server 死去了。新增 Server 也是同樣的原理

4.共享鎖

5.隊列管理

十六、Avro詳解

A.Avro簡介

1.Avro是一個數(shù)據(jù)序列化的系統(tǒng),可以將數(shù)據(jù)結(jié)構(gòu)或?qū)ο筠D(zhuǎn)化成便于存儲或傳輸?shù)母袷剑貏e是設(shè)計之初它可以用來支持?jǐn)?shù)據(jù)密集型應(yīng)用,適合于大規(guī)模數(shù)據(jù)的存儲和交換

2.Avro模式是用JSON定義的,提供與Thrift和Protocol Buffers等系統(tǒng)相似的功能

十七、Chukwa詳解

A.Chukwa簡介

1.Chukwa能通過擴(kuò)展處理大量的客戶端請求,并且能匯聚多路客戶端的數(shù)據(jù)流,采用的是流水式數(shù)據(jù)處理方式和模塊化結(jié)構(gòu)的收集系統(tǒng),在每一個模塊中有一個簡單規(guī)范的接口

B.Chukwa架構(gòu)

1.有三個主要組成部分:

客戶端(Agent):使內(nèi)部進(jìn)程通信協(xié)議能夠兼容處理本地的日志文件

收集器(Collector)和分離器(Demux):利用了Collectors策略

HICC(Hadoop Infrastructure Care Center):數(shù)據(jù)可視化頁面

十八、Hadoop的常用插件與開發(fā)

1.Hadoop Studio

2.Hadoop Eclipse

3.Hadoop Streaming:幫助用戶創(chuàng)建和運行一類特殊的MapReduce作業(yè),這些作業(yè)由一些可執(zhí)行文件或腳本文件充當(dāng)mapper或reducer,也就是允許使用非Java語言

4.Hadoop Libhdfs:是一個基于C編程接口的為Hadoop分布式文件系統(tǒng)開發(fā)的JNI,提供了一個C語言接口以結(jié)合管理DFS文件和文件系統(tǒng)

關(guān)于“Hadoop有什么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI