精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何將數(shù)據(jù)移入和移出Hadoop?

大數(shù)據(jù) 存儲(chǔ)軟件 Hadoop
本文是《Hadoop從入門(mén)到精通》大型專(zhuān)題的第5章,將完全解答上述問(wèn)題,讓企業(yè)走上無(wú)憂(yōu)數(shù)據(jù)移動(dòng)之路。本章,我們將首先介紹如何將不同位置和不同格式的數(shù)據(jù)移動(dòng)到Hadoop,之后將講解如何將數(shù)據(jù)移出Hadoop。

企業(yè)在項(xiàng)目中完全使用Hadoop之前,數(shù)據(jù)移動(dòng)是必須解決的事情之一。如何將數(shù)千臺(tái)主機(jī)日志數(shù)據(jù)放入Hadoop?從關(guān)系型或者No/NewSQL系統(tǒng)以及Hadoop中獲取數(shù)據(jù)的最有效方法是什么?如何將Hadoop中生成的Lucene索引輸出到服務(wù)器?這些流程如何實(shí)現(xiàn)自動(dòng)化?

本文是《Hadoop從入門(mén)到精通》大型專(zhuān)題的第5章,將完全解答上述問(wèn)題,讓企業(yè)走上無(wú)憂(yōu)數(shù)據(jù)移動(dòng)之路。本章,我們將首先介紹如何將不同位置和不同格式的數(shù)據(jù)移動(dòng)到Hadoop,之后將講解如何將數(shù)據(jù)移出Hadoop。

5.1 數(shù)據(jù)移動(dòng)的關(guān)鍵要素

將大量數(shù)據(jù)移入和移出Hadoop面臨很多挑戰(zhàn),包括數(shù)據(jù)一致性和資源對(duì)數(shù)據(jù)源和目標(biāo)的影響。然而,在深入研究這些技術(shù)之前,我們需要討論在處理數(shù)據(jù)移動(dòng)時(shí)應(yīng)該注意的因素。

冪等

在編程中,一個(gè)冪等操作的特點(diǎn)是其任意多次執(zhí)行所產(chǎn)生的影響均與一次執(zhí)行的影響相同。換句話(huà)說(shuō),冪等操作無(wú)論執(zhí)行多少次都會(huì)產(chǎn)生相同的結(jié)果。在關(guān)系數(shù)據(jù)庫(kù)中,插入通常不是冪等的,因?yàn)槎啻螆?zhí)行不會(huì)產(chǎn)生相同的結(jié)果數(shù)據(jù)庫(kù)狀態(tài)。或者,更新通常是冪等的,因?yàn)樗鼈儗a(chǎn)生相同的最終結(jié)果。

無(wú)論何時(shí)寫(xiě)入數(shù)據(jù),都應(yīng)該考慮冪等性,Hadoop中的數(shù)據(jù)入口和出口沒(méi)有很大區(qū)別。分布式日志收集框架如何處理數(shù)據(jù)重傳?如何在多個(gè)任務(wù)并行插入數(shù)據(jù)庫(kù)的MapReduce作業(yè)中確保冪等行為?

聚合

數(shù)據(jù)聚合過(guò)程組合了多個(gè)數(shù)據(jù)元素。在數(shù)據(jù)入口的上下文中,這將大量小文件移動(dòng)到HDFS。在實(shí)際操作中,我們可能會(huì)面臨NameNode內(nèi)存以及MapReduce執(zhí)行時(shí)間慢等問(wèn)題,將文件或數(shù)據(jù)聚合在一起可以緩解此類(lèi)問(wèn)題,這是一個(gè)需要考慮的功能。

數(shù)據(jù)格式轉(zhuǎn)換

數(shù)據(jù)格式轉(zhuǎn)換將一種數(shù)據(jù)轉(zhuǎn)換為另一種格式的操作。通常,源數(shù)據(jù)格式不適合在MapReduce等工具中進(jìn)行處理。例如,如果源數(shù)據(jù)采用多行XML或JSON格式,則可能需要考慮預(yù)處理步驟。這會(huì)將數(shù)據(jù)轉(zhuǎn)換為可以拆分的形式,例如每行一個(gè)JSON或XML元素,或者將其轉(zhuǎn)換為Avro等格式。

數(shù)據(jù)壓縮

數(shù)據(jù)壓縮不僅有助于減少靜態(tài)數(shù)據(jù)的占用空間,而且在讀取和寫(xiě)入數(shù)據(jù)時(shí)也具有I/O優(yōu)勢(shì)。

可用性和可恢復(fù)性

可恢復(fù)性允許入口或出口工具在操作失敗時(shí)重試。由于任何數(shù)據(jù)源,接收器或Hadoop本身都不可能100%可用,因此在發(fā)生故障時(shí)可重試非常重要。

可靠的數(shù)據(jù)傳輸和數(shù)據(jù)驗(yàn)證

在數(shù)據(jù)傳輸中,檢查正確性的方法是驗(yàn)證數(shù)據(jù)在傳輸過(guò)程中是否發(fā)生損壞。當(dāng)使用異構(gòu)系統(tǒng)(如Hadoop數(shù)據(jù)入口和出口)時(shí),數(shù)據(jù)通過(guò)不同主機(jī),網(wǎng)絡(luò)和協(xié)議傳輸只會(huì)增加數(shù)據(jù)傳輸過(guò)程中出現(xiàn)問(wèn)題的可能性。檢查原始數(shù)據(jù)(如存儲(chǔ)設(shè)備)正確性的常用方法是循環(huán)冗余校驗(yàn)(CRC),這是HDFS內(nèi)部用于維護(hù)塊級(jí)完整性的常用方法。

此外,由于生成數(shù)據(jù)的軟件存在錯(cuò)誤,源數(shù)據(jù)本身可能存在問(wèn)題。在入口時(shí)執(zhí)行數(shù)據(jù)驗(yàn)證允許進(jìn)行一次性檢查,而不是在發(fā)生問(wèn)題時(shí)處理數(shù)據(jù)的所有下游消費(fèi)者,強(qiáng)迫這些消費(fèi)者必須更新以處理數(shù)據(jù)中的錯(cuò)誤。

資源消耗和性能

資源消耗和性能分別是系統(tǒng)資源利用率和系統(tǒng)效率的度量。入口和出口工具通常不會(huì)對(duì)系統(tǒng)施加大量負(fù)載(資源消耗),除非有非常可觀的數(shù)據(jù)量。對(duì)于性能,要考慮的問(wèn)題包括工具是否并行執(zhí)行操作,如果是,提供了什么機(jī)制來(lái)調(diào)整并行度。如果數(shù)據(jù)源是生產(chǎn)數(shù)據(jù)庫(kù)并且正在使用MapReduce提取該數(shù)據(jù),請(qǐng)不要使用大量并發(fā)map任務(wù)來(lái)導(dǎo)入數(shù)據(jù)。

監(jiān)控

監(jiān)控確保功能在自動(dòng)化系統(tǒng)中按預(yù)期執(zhí)行。對(duì)于數(shù)據(jù)入口和出口,監(jiān)控分為兩部分:確保入口和出口中涉及的進(jìn)程存活,并驗(yàn)證源和目標(biāo)數(shù)據(jù)是否按預(yù)期生成。監(jiān)控還應(yīng)包括驗(yàn)證正在移動(dòng)的數(shù)據(jù)量是否達(dá)到預(yù)期水平; 數(shù)據(jù)中意外的下降或高電流將提醒潛在的系統(tǒng)問(wèn)題或軟件錯(cuò)誤。

推測(cè)執(zhí)行

MapReduce具有一個(gè)稱(chēng)為推測(cè)(Speculative)執(zhí)行的功能,可以在作業(yè)結(jié)束時(shí)為仍在執(zhí)行的任務(wù)啟動(dòng)備份,這有助于防止緩慢的硬件影響作業(yè)執(zhí)行時(shí)間。但是,這種做法也可能有問(wèn)題,如果使用map任務(wù)執(zhí)行插入關(guān)系數(shù)據(jù)庫(kù),你應(yīng)該知道可以有兩個(gè)并行進(jìn)程插入相同的數(shù)據(jù)。

補(bǔ)充:推測(cè)執(zhí)行(Speculative Execution)是指在集群環(huán)境下運(yùn)行MapReduce,可能是程序Bug,負(fù)載不均或者其他的一些問(wèn)題,導(dǎo)致在一個(gè)JOB下的多個(gè)TASK速度不一致,比如有的任務(wù)已經(jīng)完成,有的卻只跑了10%,根據(jù)木桶原理,這些任務(wù)將成為整個(gè)JOB的短板,如果集群?jiǎn)?dòng)了推測(cè)執(zhí)行,這時(shí)為了***限度的提高短板,Hadoop會(huì)為該task啟動(dòng)備份任務(wù),讓speculative task與原始task同時(shí)處理一份數(shù)據(jù),哪個(gè)先運(yùn)行完,則將哪個(gè)結(jié)果作為最終結(jié)果,并且在運(yùn)行完成后Kill掉另外一個(gè)任務(wù)。

5.2 將數(shù)據(jù)移入Hadoop

在Hadoop中處理數(shù)據(jù)的***步是將其提供給Hadoop。有兩種主要方法可用于將數(shù)據(jù)移入Hadoop:在HDFS層(數(shù)據(jù)推送)寫(xiě)入外部數(shù)據(jù),或在MapReduce層讀取外部數(shù)據(jù)(更像是拉取)。在MapReduce中讀取數(shù)據(jù)具有以下優(yōu)點(diǎn):操作可以輕松并行并具有容錯(cuò)能力。然而,并非所有數(shù)據(jù)都可以使用MapReduce訪問(wèn),例如在日志文件下,其他系統(tǒng)需要依賴(lài)傳輸,包括用于最終數(shù)據(jù)hop的HDFS。

本節(jié),我們將介紹將源數(shù)據(jù)移動(dòng)到Hadoop的方法,將使用上一節(jié)中的設(shè)計(jì)注意事項(xiàng)作為檢查和理解不同工具的標(biāo)準(zhǔn)。

5.2.1 HDFS命令行

Hadoop捆綁了許多方法來(lái)將數(shù)據(jù)導(dǎo)入HDFS。本節(jié)將介紹這些內(nèi)置工具如何滿(mǎn)足數(shù)據(jù)移動(dòng)中的各種需求,可以使用的***個(gè)也是最簡(jiǎn)單的工具是HDFS命令行。

為作業(yè)選擇正確的數(shù)據(jù)獲取工具

本節(jié)中的低級(jí)工具適用于一次性文件移動(dòng),或者處理基于文件的舊數(shù)據(jù)源和目標(biāo)。但是,以這種方式移動(dòng)數(shù)據(jù)很輕易就會(huì)被Flume和Kafka(本章稍后介紹)等工具所淘汰,這些工具提供了自動(dòng)數(shù)據(jù)移動(dòng)管道。

注:Kafka是一個(gè)更好的平臺(tái),用于從A到B(B可以是Hadoop集群)移動(dòng)數(shù)據(jù),而不是老式的“復(fù)制文件”。使用Kafka,只需將數(shù)據(jù)泵入其中,就擁有了實(shí)時(shí)(例如通過(guò)Storm)或離線(xiàn)/批量作業(yè)(例如通過(guò)Camus)消費(fèi)數(shù)據(jù)。這種方法將在之后的章節(jié)中介紹。

使用CLI加載文件

如果需要手動(dòng)執(zhí)行,那么HDFS命令行界面(CLI)就是最合適的工具。它允許執(zhí)行在常規(guī)Linux文件系統(tǒng)上可執(zhí)行的大多數(shù)操作。本節(jié),我們將重點(diǎn)介紹如何將數(shù)據(jù)從本地文件系統(tǒng)復(fù)制到HDFS中。

問(wèn)題

使用shell將文件復(fù)制到HDFS。

解決方案

HDFS命令行界面可用于一次性移動(dòng),或者可以將其合并到腳本中以進(jìn)行一系列移動(dòng)。

討論

使用hadoop命令將文件從本地磁盤(pán)復(fù)制到HDFS:

  1. $ hadoop fs -put local-file.txt hdfs-file.txt 

Hadoop -put命令的行為與Linux中的Linux cp命令不同,如果目標(biāo)已存在,則會(huì)被覆蓋; 在Hadoop中,副本失敗并顯示錯(cuò)誤:

  1. put: `hdfs-file.txt': File exists 

必須添加-f選項(xiàng)以強(qiáng)制覆蓋文件:

  1. $ hadoop fs -put -f local-file.txt hdfs-file.txt 

與Linux cp命令非常相似,可以使用相同的命令復(fù)制多個(gè)文件。在這種情況下,***一個(gè)參數(shù)必須是HDFS中復(fù)制本地文件的目錄:

  1. $ hadoop fs -put local-file1.txt local-file2.txt /hdfs/dest/ 

可以使用Linux管道將命令輸出傳遞到HDFS文件——使用相同的-put命令并在其后添加單獨(dú)的連字符,這告訴Hadoop從標(biāo)準(zhǔn)輸入讀取:

  1. $ echo "the cat sat on the mat" | hadoop fs -put - hdfs-file.txt 

要測(cè)試文件或目錄是否存在,請(qǐng)使用-test命令和-e或-d選項(xiàng)分別測(cè)試文件或目錄是否存在。如果文件或目錄存在,則命令的代碼為0;如果不存在,則為1:

 

  1. $ hadoop fs -test -e hdfs-file.txt  
  2. $ echo $?  
  3.  
  4. $ hadoop fs -touchz hdfs-file.txt  
  5. $ hadoop fs -test -e hdfs-file.txt  
  6. $ echo $?  
  7. $ hadoop fs -test -d hdfs-file.txt  
  8. $ echo $?  

如果只想在HDFS中“touch”文件(創(chuàng)建一個(gè)新的空文件),那么touchz選項(xiàng)可以完成該工作:

 

 

CLI專(zhuān)為交互式HDFS活動(dòng)而設(shè)計(jì),它也可以合并到腳本中,以用于自動(dòng)執(zhí)行某些任務(wù)。CLI的缺點(diǎn)是級(jí)別較低,并且沒(méi)有內(nèi)置任何自動(dòng)化機(jī)制。它需要為每個(gè)命令分配一個(gè)fork,如果在bash腳本中使用可能沒(méi)問(wèn)題,但如果試圖將HDFS功能集成到Python或Java應(yīng)用程序中,可能就會(huì)出現(xiàn)問(wèn)題。在這種情況下,為每個(gè)命令啟動(dòng)外部進(jìn)程的開(kāi)銷(xiāo)可能也是想要避免的。

使用REST加載文件

CLI便于快速運(yùn)行命令和編寫(xiě)腳本。但是,它會(huì)產(chǎn)生為每個(gè)命令分配一個(gè)單獨(dú)進(jìn)程的開(kāi)銷(xiāo),這可能是想要避免的,特別是編程語(yǔ)言與HDFS連接時(shí)。

問(wèn)題

沒(méi)有HDFS本機(jī)接口的編程語(yǔ)言如何與HDFS交互。

解決方案

使用Hadoop的WebHDFS接口,該接口為HDFS操作提供全功能的REST API。

討論

在開(kāi)始之前,需要確保在集群上啟用WebHDFS(默認(rèn)不啟動(dòng)),這由dfs.webhdfs.enabled屬性控制。如果未啟用,則需要更新hdfs-site.xml并添加以下內(nèi)容:

 

在這種技術(shù)中,我們將介紹在不安全的Hadoop集群上運(yùn)行WebHDFS.3的情況。如果正在使用安全的Hadoop集群,則不會(huì)提供user.name參數(shù)。

相反,我們將在與WebHDFS交互之前使用kinit對(duì)Kerberos進(jìn)行身份驗(yàn)證,然后在curl命令行中提供-negotiate -u:youruser。

警告:如果為已經(jīng)關(guān)閉了安全性的集群?jiǎn)⒂肳ebHDFS,則可以輕松地將其用作集群中任意用戶(hù)命令(只需將URL中的用戶(hù)名更改為簇)。建議僅在打開(kāi)安全性的情況下運(yùn)行WebHDFS。

要想在此技術(shù)中使用HTTP與NameNode進(jìn)行通信,需要知道運(yùn)行NameNode RPC服務(wù)的主機(jī)和端口,這是使用dfs.namenode.http-address屬性配置的。在偽分布式設(shè)置中,這很可能設(shè)置為0.0.0.0:50070。我們假設(shè)其余技術(shù)的偽分布式——替換適當(dāng)?shù)闹鳈C(jī)和端口進(jìn)行設(shè)置。

首先使用CLI在HDFS中創(chuàng)建文件:

  1. $ echo "the cat sat on the mat" | hadoop fs -put - /tmp/hdfs-file.txt 

使用WebHDFS獲取有關(guān)該文件的各種有趣的元數(shù)據(jù)(用戶(hù)名替換為以下URL中的aholmes):

 

命令語(yǔ)法由兩部分組成:一是路徑;二是正在執(zhí)行的操作。但是,需要提供執(zhí)行操作的用戶(hù)名,否則HDFS將假定你是一個(gè)訪問(wèn)受限的匿名用戶(hù)。

 


圖5.1 解析WebHDFS URL路徑

從HDFS讀取文件只需將OPEN指定為operation:

 

使用WebHDFS編寫(xiě)文件分為兩步:***步通知NameNode創(chuàng)建新文件的意圖,可以使用HTTP PUT命令執(zhí)行此操作:

 

此時(shí),文件尚未寫(xiě)入。只是讓NameNode有機(jī)會(huì)確定要寫(xiě)入哪個(gè)DataNode,這是在“Location”標(biāo)頭中指定的。需要獲取該URL,然后發(fā)出第二個(gè)HTTP PUT執(zhí)行實(shí)際寫(xiě)入:

 

可以通過(guò)讀取文件來(lái)驗(yàn)證寫(xiě)入是否成功:

 

WebHDFS支持可以使用常規(guī)命令行執(zhí)行所有HDFS操作,它更有用,因?yàn)樗梢栽L問(wèn)結(jié)構(gòu)化JSON表單中的元數(shù)據(jù),從而更容易解析數(shù)據(jù)。

值得一提的是WebHDFS提供的一些附加功能。首先,文件的***個(gè)塊存放數(shù)據(jù)位置。NameNode將客戶(hù)端重定向到承載***個(gè)塊的DataNode,提供強(qiáng)大的數(shù)據(jù)位置。對(duì)于文件中的后續(xù)塊,DataNode充當(dāng)代理,并將數(shù)據(jù)流入保存塊數(shù)據(jù)的節(jié)點(diǎn)或從中保存數(shù)據(jù)。

WebHDFS還與Hadoop的安全身份驗(yàn)證集成,這意味著可以啟用Kerberos并在HTTP請(qǐng)求中使用委派令牌。此外,API將保持跨Hadoop版本的兼容性,這意味著目前發(fā)布的命令將適用于未來(lái)版本的Hadoop(反之亦然)。 這是一個(gè)有用的工具,用于訪問(wèn)運(yùn)行不同Hadoop版本的多個(gè)集群。

 


表5.1 WebHDFS庫(kù)

當(dāng)客戶(hù)端可以訪問(wèn)所有NameNode和DataNode時(shí),WebHDFS非常有用。在鎖定環(huán)境中,情況可能并非如此,可能需要查看HttpFS。

從防火墻后面訪問(wèn)HDFS

生產(chǎn)Hadoop環(huán)境通常被鎖定以保護(hù)這些集群中的數(shù)據(jù)。部分安全程序可能包括將集群置于防火墻之后,如果嘗試從防火墻外部讀取或?qū)懭際DFS,這將是一件麻煩事。 這種技術(shù)著眼于HttpFS網(wǎng)關(guān),它可以使用HTTP(通常在防火墻上打開(kāi))提供HDFS訪問(wèn)。

問(wèn)題

想要寫(xiě)入HDFS,但有一個(gè)防火墻限制對(duì)NameNode或DataNode的訪問(wèn)。

解決方案

使用HttpFS網(wǎng)關(guān),它是一個(gè)獨(dú)立的服務(wù)器,可通過(guò)HTTP提供對(duì)HDFS的訪問(wèn)。因?yàn)樗且粋€(gè)單獨(dú)的服務(wù)而且是HTTP,所以可以配置為在任何可以訪問(wèn)Hadoop節(jié)點(diǎn)的主機(jī)上運(yùn)行,并且可以打開(kāi)防火墻規(guī)則以允許流量到服務(wù)。

討論

HttpFS非常有用,因?yàn)樗粌H允許使用REST訪問(wèn)HDFS,而且具有完整的Hadoop文件系統(tǒng)實(shí)現(xiàn),這意味著可以使用CLI和本機(jī)HDFS Java客戶(hù)端與HDFS進(jìn)行通信,如圖5.2所示。

 


圖5.2 HttpFS網(wǎng)關(guān)架構(gòu)

要啟動(dòng)并運(yùn)行HttpFS,必須指定代理用戶(hù)。這是將運(yùn)行HttpFS進(jìn)程的用戶(hù),此用戶(hù)也將在Hadoop中配置為代理用戶(hù)。假設(shè)有一個(gè)名為foxyproxy的用戶(hù),你將其指定為代理用戶(hù)。你用以下代碼更新core-site.xml:

 

基本上,這表明Hadoop應(yīng)該只接受來(lái)自主機(jī)localhost的代理請(qǐng)求,并且foxyproxy可以冒充任何用戶(hù)(你可以通過(guò)提供以逗號(hào)分隔的組列表來(lái)鎖定可以模擬的用戶(hù)集名)。更改用戶(hù)名,主機(jī)和組值,以便它們?cè)诃h(huán)境中有意義。

在對(duì)core-site.xml進(jìn)行更改后,我們需要啟動(dòng)HttpFS進(jìn)程:

  1. $ sbin/httpfs.sh start 

現(xiàn)在,可以使用WebHDFS發(fā)出與之前技術(shù)中相同的curl命令。這是關(guān)于HttpFS網(wǎng)關(guān)的好處之一 :語(yǔ)法完全相同。要在根目錄上執(zhí)行目錄列表,需要執(zhí)行以下操作:

 

此curl命令與先前技術(shù)中使用的curl命令的唯一區(qū)別是端口號(hào)。默認(rèn)情況下,HttpFS在端口14000上運(yùn)行,但可以通過(guò)編輯httpfs-env.sh來(lái)更改。表5.2中顯示了可以在文件中更改的一些有趣屬性。

 


表5.2 HttpFS屬性

可以在httpfs-site.xml中配置其他Kerberos以及用戶(hù)和組級(jí)別設(shè)置。

WebHDFS和HttpFS之間的差異

WebHDFS和HttpFS之間的主要區(qū)別在于客戶(hù)端對(duì)所有數(shù)據(jù)節(jié)點(diǎn)的可訪問(wèn)性。如果客戶(hù)端可以訪問(wèn)所有數(shù)據(jù)節(jié)點(diǎn),那么WebHDFS將正常工作,因?yàn)樽x取和寫(xiě)入文件涉及客戶(hù)端直接與數(shù)據(jù)節(jié)點(diǎn)通信以進(jìn)行數(shù)據(jù)傳輸。另一方面,如果位于防火墻之后,客戶(hù)端可能無(wú)法訪問(wèn)所有數(shù)據(jù)節(jié)點(diǎn),在這種情況下,HttpFS選項(xiàng)最適合。使用HttpFS,服務(wù)器將與數(shù)據(jù)節(jié)點(diǎn)通信,客戶(hù)端只需要與單個(gè)HttpFS服務(wù)器通信。

如果可以,請(qǐng)選擇WebHDFS,因?yàn)榭蛻?hù)端直接與數(shù)據(jù)節(jié)點(diǎn)通信具有固有的優(yōu)勢(shì):這允許輕松擴(kuò)展多個(gè)主機(jī)并發(fā)客戶(hù)端數(shù)量,而不會(huì)遇到通過(guò)HttpFS流式傳輸數(shù)據(jù)的網(wǎng)絡(luò)瓶頸。如果客戶(hù)端本身在數(shù)據(jù)節(jié)點(diǎn)上運(yùn)行,則更是如此,因?yàn)閷⑼ㄟ^(guò)直接從本地文件系統(tǒng)而不是網(wǎng)絡(luò)流式傳輸本地托管的HDFS數(shù)據(jù)塊來(lái)使用WebHDFS的優(yōu)勢(shì)。

使用NFS掛載Hadoop

通常,如果Hadoop數(shù)據(jù)可以作為文件系統(tǒng)的常規(guī)安裝來(lái)訪問(wèn),那么使用Hadoop數(shù)據(jù)要容易得多。這允許使用現(xiàn)有腳本,工具和編程語(yǔ)言,并與HDFS中的數(shù)據(jù)進(jìn)行交互。本節(jié)介紹如何使用NFS掛載輕松地將數(shù)據(jù)復(fù)制到HDFS中和從HDFS復(fù)制數(shù)據(jù)。

問(wèn)題

將HDFS視為常規(guī)Linux文件系統(tǒng),并使用標(biāo)準(zhǔn)Linux工具與HDFS進(jìn)行交互。

解決方案

使用Hadoop的NFS實(shí)現(xiàn)來(lái)訪問(wèn)HDFS中的數(shù)據(jù)。

討論

在Hadoop 2.1之前,NFS安裝HDFS的唯一方法是使用FUSE。由于各種性能和可靠性問(wèn)題,不建議將其用于一般用途。它還引入了額外的負(fù)擔(dān),要求在任何客戶(hù)端計(jì)算機(jī)上安裝驅(qū)動(dòng)程序(換句話(huà)說(shuō),它沒(méi)有提供NFS網(wǎng)關(guān))。

Hadoop中的新NFS實(shí)現(xiàn)解決了舊的基于FUSE系統(tǒng)的所有缺點(diǎn)。這是一個(gè)合適的NFSv3實(shí)現(xiàn),允許運(yùn)行一個(gè)或多個(gè)NFS網(wǎng)關(guān)以提高可用性和吞吐量。

要啟動(dòng)并運(yùn)行NFS服務(wù),首先需要停止在主機(jī)上運(yùn)行的NFS服務(wù)。在Linux系統(tǒng)上,可以使用以下命令實(shí)現(xiàn):

 

 


圖5.3 Hadoop NFS

接下來(lái),需要啟動(dòng)Hadoop NFS服務(wù)。啟動(dòng)的***個(gè)服務(wù)是portmap,它為協(xié)議及其關(guān)聯(lián)的傳輸和端口提供注冊(cè)服務(wù)。在受限的端口上運(yùn)行,因此需要以root用戶(hù)身份啟動(dòng):

  1. $ sudo hadoop-daemon.sh start portmap 

接下來(lái),你需要啟動(dòng)實(shí)際的NFS服務(wù),運(yùn)行此服務(wù)的用戶(hù)一定要與運(yùn)行HDFS的用戶(hù)相同,這一點(diǎn)非常重要:

  1. $ hadoop-daemon.sh start nfs3 

通過(guò)運(yùn)行rpcinfo和showmount來(lái)驗(yàn)證服務(wù)是否正在運(yùn)行,應(yīng)該看到類(lèi)似于以下的輸出:

 

現(xiàn)在,需要在主機(jī)目錄上安裝HDFS。以下示例選擇/hdfs作為安裝目錄。第二個(gè)mount命令驗(yàn)證是否已創(chuàng)建安裝:

 

現(xiàn)在,可以使用掛載的文件系統(tǒng)直接操作HDFS。

使用NFS網(wǎng)關(guān)時(shí)需要考慮以下幾點(diǎn):

  • HDFS是僅附加文件系統(tǒng)。可以附加到文件,但不能執(zhí)行隨機(jī)寫(xiě)入。如果需要使用支持隨機(jī)寫(xiě)入的文件系統(tǒng)來(lái)使用Hadoop,那么應(yīng)該看看MapR的Hadoop distribution。
  • Hadoop 2.2版不支持Hadoop安全驗(yàn)證(Kerberos),并且有一個(gè)添加該支持的開(kāi)放票證。
  • 在Hadoop 2.4(或3.0)之前,不支持代理用戶(hù)。這實(shí)質(zhì)上意味著以前版本的Hadoop將以超級(jí)用戶(hù)身份執(zhí)行所有命令,因?yàn)橐驨FS網(wǎng)關(guān)作為與HDFS本身相同的用戶(hù)運(yùn)行。

由于這些限制,建議將NFS網(wǎng)關(guān)保留用于實(shí)驗(yàn)用途,或者用于不考慮用戶(hù)級(jí)安全性的單租戶(hù)集群。

使用DistCp在集群內(nèi)和集群間復(fù)制數(shù)據(jù)

如果移入或移出Hadoop的數(shù)據(jù)量很大,通過(guò)單個(gè)主機(jī)匯集數(shù)據(jù),一定要盡可能優(yōu)化數(shù)據(jù)移動(dòng)。DistCp可以在Hadoop集群之間以及進(jìn)出NFS安裝的數(shù)據(jù)之間高效復(fù)制數(shù)據(jù)。

問(wèn)題

在Hadoop集群之間高效復(fù)制大量數(shù)據(jù),并且進(jìn)行增量復(fù)制。

解決方案

使用DistCp,一種內(nèi)置于Hadoop中的并行文件復(fù)制工具。

討論

本節(jié),我們將首先介紹DistCp的重要配置。之后,我們將繼續(xù)查看使用DistCp的特定方案,以及配置和運(yùn)行DistCp的***方法。

此技術(shù)涵蓋了Hadoop 2中可用的DistCp新版本,名為DistCp 2。此代碼被反向移植到Hadoop 1.2.0中,可通過(guò)使用distcp2作為命令啟用Hadoop 2來(lái)替換現(xiàn)有的DistCp,然后就可以正常使用distcp命令。

DistCp 2支持與DistCp的舊版本相同的命令行參數(shù)集,并帶來(lái)了許多有用的優(yōu)勢(shì):

  • 使用大量文件時(shí)減少了設(shè)置和執(zhí)行時(shí)間,因?yàn)轵?qū)動(dòng)程序不再需要預(yù)處理所有輸入(現(xiàn)在這已推遲到mapper)。
  • 具有功能齊全的Java接口,無(wú)需Java客戶(hù)端將參數(shù)序列化為字符串。
  • 原子提交允許全部復(fù)制語(yǔ)義。
  • 使用-update跳過(guò)目標(biāo)中已存在的文件,如果文件屬性與源文件不同,將導(dǎo)致文件屬性發(fā)生更改。
  • 作為副本的一部分,不再跳過(guò)空目錄。

DistCp使用僅map的MapReduce作業(yè)來(lái)執(zhí)行復(fù)制。以下是一個(gè)非常簡(jiǎn)單的示例,在單個(gè)Hadoop集群中用于將源目錄,/ hello,復(fù)制到目標(biāo)目錄,/world:

  1. $ hadoop distcp /hello /world 

如果/ world目錄尚不存在,則此命令將創(chuàng)建/ world目錄,然后將/ hello(其所有文件和目錄遞歸)的內(nèi)容復(fù)制到/ world。

處理已存在的目標(biāo)文件

目標(biāo)中已存在的文件和目錄保持不變(即使文件不同)。

可以通過(guò)查看作業(yè)完成時(shí)轉(zhuǎn)儲(chǔ)到標(biāo)準(zhǔn)輸出的SKIP計(jì)數(shù)器來(lái)查看跳過(guò)的文件數(shù):

 

-update和-overwrite參數(shù)巧妙地改變了復(fù)制內(nèi)容的行為。如果沒(méi)有這些選項(xiàng),如果源是目錄,則在目標(biāo)目錄下創(chuàng)建該目錄。使用-update或-overwrite參數(shù),僅復(fù)制文件和子目錄,而不復(fù)制源目錄。通過(guò)一個(gè)例子證明這一點(diǎn):

 

忽略錯(cuò)誤

當(dāng)使用DistCp復(fù)制大量文件時(shí),使用-i標(biāo)志執(zhí)行命令以忽略錯(cuò)誤是明智的。這樣,單個(gè)錯(cuò)誤不會(huì)導(dǎo)致整個(gè)復(fù)制過(guò)程失敗,可以通過(guò)使用-update選項(xiàng)重新發(fā)出相同的DistCp命令來(lái)再次嘗試復(fù)制失敗文件。

動(dòng)態(tài)復(fù)制策略

DistCp的默認(rèn)行為是通過(guò)均勻地傳播所有文件以使所有mapper復(fù)制大致相同的字節(jié)數(shù)來(lái)為每個(gè)mapper預(yù)分配工作。從理論上講,這聽(tīng)起來(lái)像是一種公平分配工作的好方法,但實(shí)際上,諸如硬件,硬件錯(cuò)誤和配置不良等因素往往導(dǎo)致長(zhǎng)尾工作執(zhí)行,少數(shù)落后的mapper占用時(shí)間比其他要長(zhǎng)。

使用DistCp 2,可以使用替代策略,其中mapper直接接收工作而不是預(yù)先分配,這被稱(chēng)為動(dòng)態(tài)復(fù)制策略,使用-strategy動(dòng)態(tài)參數(shù)激活,添加此參數(shù)的效果是改進(jìn)復(fù)制時(shí)間。

原子提交

DistCp 2的另一個(gè)有用功能是原子提交。DistCp默認(rèn)將每個(gè)文件寫(xiě)入臨時(shí)文件,然后移動(dòng)到最終目標(biāo)。這意味著無(wú)法撤消在作業(yè)中遇到錯(cuò)誤之前復(fù)制的文件。

因此,原子提交允許在復(fù)制所有文件時(shí)將實(shí)際的“提交”推遲到作業(yè)結(jié)束,這樣如果遇到錯(cuò)誤,你將看不到任何部分寫(xiě)入,可以使用-atomic參數(shù)啟用此功能。

并行性和mapper數(shù)量

目前,DistCp最細(xì)的工作單元是文件級(jí)別。因此,無(wú)論文件多大,都只使用一個(gè)mapper來(lái)復(fù)制,提高作業(yè)的mapper數(shù)量對(duì)提高復(fù)制速度沒(méi)有任何影響。

默認(rèn)情況下,DistCp使用20個(gè)mapper運(yùn)行,每個(gè)mapper副本對(duì)應(yīng)的文件由選擇的復(fù)制策略確定。Hadoop開(kāi)發(fā)人員考慮了mapper數(shù)量的默認(rèn)設(shè)置,選擇正確的值是想要使用多少網(wǎng)絡(luò)帶寬以及希望在復(fù)制期間占用多少任務(wù)的函數(shù),可以通過(guò)指定-m后跟的值來(lái)更改mapper的數(shù)量。

帶寬

***一個(gè)考慮因素是復(fù)制期間使用的網(wǎng)絡(luò)帶寬。大型副本可能會(huì)使集群之間的網(wǎng)絡(luò)飽和。企業(yè)中網(wǎng)絡(luò)運(yùn)營(yíng)人員保持運(yùn)行良好的一種方法是使用-bandwidth參數(shù)來(lái)指定每個(gè)map任務(wù)在復(fù)制期間消耗的帶寬量上限。此參數(shù)的值以兆字節(jié)/秒(MBps)為單位。

其他

到目前為止,我們已經(jīng)看到了DistCp中一些更有趣的選項(xiàng)。要查看完整的選項(xiàng)列表,可以運(yùn)行distcp命令,或者查看Hadoop文檔。

責(zé)任編輯:未麗燕 來(lái)源: IT168
相關(guān)推薦

2011-07-14 12:56:45

SQL Server SWITCH操作符

2018-10-22 14:48:39

KafkaHadoop代碼

2018-10-15 13:57:38

Hadoop數(shù)據(jù)庫(kù)MySQL

2023-02-17 12:07:45

ChatGPTPython

2010-07-29 09:14:57

DB2數(shù)據(jù)庫(kù)表

2018-07-30 15:05:26

Hadoop大數(shù)據(jù)集群

2017-11-21 08:36:00

MongoDB關(guān)系型數(shù)據(jù)庫(kù)數(shù)據(jù)導(dǎo)入

2022-10-10 11:00:29

數(shù)據(jù)分析云戰(zhàn)略

2018-12-23 21:15:54

大數(shù)據(jù)splunk數(shù)據(jù)

2023-05-30 08:00:00

PandasQuestDBPython

2022-03-10 15:57:03

物聯(lián)網(wǎng)工業(yè)4.0大數(shù)據(jù)

2009-08-26 18:05:25

ViewState持久

2013-03-06 16:18:30

云數(shù)據(jù)中心效率密度

2016-10-26 09:04:50

大數(shù)據(jù)洞察力行動(dòng)力

2024-02-27 10:04:58

邊緣計(jì)算人工智能數(shù)據(jù)中心

2021-01-28 09:00:00

SQL數(shù)據(jù)庫(kù)NoSQL

2012-06-20 11:17:02

MemSQL

2011-07-28 15:53:06

SQL Server數(shù)合并查詢(xún)

2018-06-12 15:07:57

IT

2011-05-18 14:51:43

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

日本a√在线观看| 国产99在线免费| 夜夜春很很躁夜夜躁| 999色成人| 亚洲成人av资源| 日本一区二区三区免费看| 91亚洲精品国偷拍自产在线观看 | 最新的欧美黄色| 老女人性生活视频| 欧美一区 二区 三区| 国产精品国产三级国产| 国产伦精品一区二区三| 中文字幕+乱码+中文乱码www| 欧美一区二区三区久久精品茉莉花 | 无码人妻精品一区二区三区在线 | 国产精品久久久久久久蜜臀| 动漫一区二区在线| 国产精华7777777| 亚洲第一黄网| 爱福利视频一区| 午夜久久久久久久| 精品国产三区在线| 91国产精品成人| 日韩伦理在线免费观看| 成人免费网址| 国产视频911| 国产综合18久久久久久| 国产女人高潮时对白| 天堂在线亚洲视频| 午夜精品在线观看| 欧美三级 欧美一级| 日本欧美肥老太交大片| 日韩精品一区二区视频| www.欧美com| 亚洲精品成a人ⅴ香蕉片| 狠狠躁18三区二区一区| 日本久久久网站| 久久综合网导航| 国产欧美精品在线观看| 欧美xxxx黑人又粗又长精品| 国产成人手机在线| 高清久久久久久| 91香蕉电影院| 一级aaaa毛片| 免费av成人在线| 国产精品69久久| 日本一区二区三区精品| 亚洲经典三级| 久久全球大尺度高清视频| 一区视频免费观看 | 国产情侣第一页| av在线播放观看| 亚洲美腿欧美偷拍| 日韩精品一区二区三区电影| 老司机福利在线视频| 国产精品初高中害羞小美女文| 日韩欧美一区二区在线观看| 精品影院一区| 国产亚洲短视频| 亚洲黄色成人久久久| 9色在线视频网站| 亚洲国产精品激情在线观看| 亚洲看片网站| 欧美边添边摸边做边爱免费| 综合亚洲深深色噜噜狠狠网站| 亚洲日本欧美在线| 日本高清在线观看wwwww色| 国产精品剧情在线亚洲| 自拍视频一区二区三区| 成年人网站在线| 亚洲综合色婷婷| 黄色片网址在线观看| 亚洲午夜天堂| 欧美日韩国产综合一区二区三区| 国产精品999.| 国产欧美自拍一区| 亚洲人成电影在线播放| 人人艹在线视频| 国产一区日韩欧美| 欧美一级电影在线| 在线观看国产成人| 国产精品资源在线观看| 精品欧美国产| av在线播放网| 亚洲美女视频在线| 久久久久久久久久久99| www.久久| 精品国产三级电影在线观看| 三上悠亚ssⅰn939无码播放| 久久大综合网| 午夜精品久久久久久久白皮肤 | 日韩视频免费观看高清在线视频| 国产精品成人无码专区| 凹凸成人精品亚洲精品密奴| 另类色图亚洲色图| 可以免费在线观看的av| 久久er精品视频| 精品久久精品久久| 888av在线| 亚洲成人激情综合网| 国产精品人人妻人人爽人人牛| 国产成人视屏| 亚洲免费电影在线观看| 国产一二三区精品| 久久午夜影视| 国产91一区二区三区| аⅴ资源新版在线天堂| 亚洲一二三四在线| 久热精品在线观看视频| 啪啪国产精品| 欧美精品一区二区免费| 在线免费观看国产精品| 成熟亚洲日本毛茸茸凸凹| 亚洲精品久久区二区三区蜜桃臀| 爱福利在线视频| 欧美男人的天堂一二区| 女人又爽又黄免费女仆| 狠狠爱综合网| 成人h视频在线观看播放| 欧洲成人av| 亚洲午夜免费电影| 国产精品探花在线播放| 欧美色女视频| 日本韩国欧美精品大片卡二| 丰满人妻一区二区三区四区53| 国产精品妹子av| 国产xxxxx视频| 欧美深夜视频| 久久久免费精品视频| 国产乱码久久久久| 国产精品白丝在线| av在线无限看| 国产成人精品999在线观看| 97在线观看视频国产| 国产成人精品无码高潮| 中文字幕一区二区三中文字幕| 日本在线视频www| 欧美人妖在线观看| 久久久免费电影| 亚洲精品网站在线| 亚洲一二三区在线观看| 无码国产精品久久一区免费| 亚洲欧美色图| 91黄色国产视频| 91三级在线| 日韩精品一区二区三区在线| 青青青在线免费观看| 国产伦精品一区二区三区视频青涩| 亚洲三区四区| 亚洲男人在线| 欧美伦理91i| 超碰在线观看av| 一区二区三区在线观看视频| 国产精品一级无码| 好看的日韩av电影| 久久99导航| 成人教育av| 夜夜嗨av色一区二区不卡| 日韩欧美国产另类| 国产精品乱人伦中文| 欧美美女一级片| 亚洲国产精品久久久天堂 | 97人妻精品一区二区三区软件| 国产精品女主播av| 久久久久久国产精品日本| 亚洲午夜视频| 欧美日韩精品免费观看视一区二区| 桃花岛成人影院| 中文字幕日韩综合av| 国产又粗又猛视频| 亚洲一二三四区不卡| 国产白嫩美女无套久久| 日韩精品欧美精品| 黄色网址在线免费看| 亚洲国产一区二区三区网站| 69视频在线免费观看| 国产一区电影| 欧美一卡在线观看| 欧美日韩精品区| 国产精品理论在线观看| 三大队在线观看| 香蕉久久夜色精品国产| 亚洲三区四区| 精品人人人人| 国产精选久久久久久| 欧美videosex性极品hd| 亚洲人成电影在线观看天堂色| 国产精品伦一区二区三区| 亚洲大片在线观看| 欧美丰满老妇熟乱xxxxyyy| 国产精品99久久久久久似苏梦涵 | 日韩久久在线| 日本高清精品| 国产精品678| a毛片不卡免费看片| 中文国产成人精品| 亚洲精品一级片| 欧美日韩综合色| 日韩成人av毛片| 中文字幕一区二区三区四区不卡 | 手机看片福利在线| 欧美在线观看你懂的| 国产亚洲色婷婷久久99精品| 日本一区二区三区久久久久久久久不 | 中文字幕视频网站| 国产精品第四页| 实拍女处破www免费看| 国产精品99久久久久| 国产视频在线视频| 在线成人亚洲| 亚洲免费视频播放| 久久国产影院| 欧美综合77777色婷婷| 亚洲五码在线| 成人伊人精品色xxxx视频| 超碰一区二区| 69av在线视频| 欧美xxxx性xxxxx高清| 中文字幕国产精品久久| 少妇性bbb搡bbb爽爽爽欧美| 亚洲激情成人在线| 天天综合网 天天综合色| 熟女性饥渴一区二区三区| 国产精品videosex性欧美| 欧美一进一出视频| 欧美成人一区在线观看| 亚洲一区二区三区视频| 粉嫩91精品久久久久久久99蜜桃 | 青青草精品在线视频| 欧美激情一区在线| 黄色aaa视频| 91免费视频观看| 少妇一级淫片免费放播放| 国产福利91精品一区二区三区| 日本www.色| 视频一区视频二区中文| 日韩精品视频一区二区在线观看| 国内一区二区三区| 国产911在线观看| 一级毛片免费高清中文字幕久久网| 三区精品视频| 成人免费在线观看av| 日本一区二区三区免费看| 久久爱www成人| 欧美日韩最好看的视频| 国产99亚洲| 日本在线观看一区| 日韩极品一区| 在线观看成人av电影| 午夜欧美在线| 91国在线高清视频| 黄色亚洲在线| 国产精品丝袜久久久久久消防器材| 妖精视频成人观看www| 1024精品视频| 久久一本综合频道| 日本人视频jizz页码69| 麻豆成人久久精品二区三区红| 亚洲精品自拍网| 精品一区中文字幕| 人妻精油按摩bd高清中文字幕| 国产美女一区二区| 特级特黄刘亦菲aaa级| www.亚洲激情.com| 天天躁夜夜躁狠狠是什么心态| 国产欧美一区二区精品仙草咪| 欧美xxxx精品| 一区二区三区四区五区视频在线观看 | 一区二区在线电影| 国产精品第九页| 日韩欧美黄色动漫| 在线观看免费视频一区| 日韩一区二区精品在线观看| 亚洲伦理在线观看| 日韩久久免费视频| 91在线视频| 欧美日韩国产二区| 少妇在线看www| 国产美女被下药99| 爱爱精品视频| 日本亚洲欧洲精品| 中文在线播放一区二区| 激情伊人五月天| 久久精品国产在热久久| 91精品又粗又猛又爽| 日本一区二区三区四区在线视频| 日本精品人妻无码77777| 性感美女极品91精品| 黄色av一区二区| 精品国产网站在线观看| av在线女优影院| 久久久亚洲国产| 国产成人精选| 黑人另类av| 久久久久免费av| 日本在线不卡视频一二三区| 成人av在线播放观看| 久久国产精品毛片| 91pony九色| 久久久影院官网| 日韩欧美中文字幕视频| 色综合久久久久网| 国产成人a人亚洲精品无码| 亚洲人成毛片在线播放| 福利小视频在线| 国产精品一区二区三区久久| 国产色噜噜噜91在线精品| 亚洲一区二区三区免费看| 日韩网站在线| 永久看看免费大片| 亚洲国产精品v| 黄色大片网站在线观看| 日韩三级精品电影久久久| 国产在线观看免费网站| 91国内免费在线视频| 精品国产鲁一鲁****| 亚洲春色综合另类校园电影| 中文精品在线| 免费观看一区二区三区| 国产精品美女久久久久久久久| 日韩欧美a级片| 日韩欧美一级二级三级久久久| eeuss影院在线播放| 欧美性受xxxx白人性爽| 盗摄牛牛av影视一区二区| 偷拍盗摄高潮叫床对白清晰| 日韩黄色免费电影| 人妻丰满熟妇av无码久久洗澡 | 中日韩午夜理伦电影免费| 无遮挡在线观看| 91丨porny丨蝌蚪视频| 强制高潮抽搐sm调教高h| 欧美在线高清视频| 欧美新色视频| 91av国产在线| 看全色黄大色大片免费久久久| 国产 国语对白 露脸| 国产专区欧美精品| 国产精品99久久久久久成人| 欧美日韩综合不卡| av片在线看| 国产精品爽爽爽爽爽爽在线观看| 欧美美女在线观看| 欧美日韩在线不卡视频| 久久免费的精品国产v∧| 男女视频免费看| 日韩av在线网页| 男人的天堂免费在线视频| 国产日韩在线一区二区三区| 精品9999| 久久一区二区电影| 狠狠躁夜夜躁人人躁婷婷91| 天堂av在线播放| 日本乱人伦a精品| 国产在视频线精品视频www666| 日本在线观看a| 国产性做久久久久久| 久久久999久久久| 中文字幕在线看视频国产欧美在线看完整 | 欧美牲交a欧美牲交aⅴ免费下载| 99国产欧美另类久久久精品| 久久黄色精品视频| 亚洲人成亚洲人成在线观看| 日韩网站中文字幕| 一区二区三区视频| 国产一区二区在线影院| 九九热视频精品| 亚洲精品短视频| 精品成人av| 中文精品视频一区二区在线观看| 国产在线播放一区二区三区| 国产亚洲精品成人| 亚洲欧美视频在线| 日本成人一区二区| 国产爆乳无码一区二区麻豆 | 日韩一级在线观看| av在线播放资源| 日韩精品电影网站| 国产一区二区三区免费观看| 久久精品视频久久| 国产一区二区三区在线播放免费观看| 黄色成人在线观看网站| 国产 欧美 日本| 久久久不卡网国产精品一区| 国产又粗又猛又黄又爽无遮挡| 欧美激情一二区| 欧美理论视频| 国产成人精品综合久久久久99| 色综合久久久久久久久久久| 乱人伦中文视频在线| 激情小说综合网| 毛片av一区二区| 国产精品黄色网| 久久精品国产成人精品| 久久精品福利| 亚洲三级在线观看视频| 欧美午夜久久久| 2024最新电影免费在线观看| 欧美三日本三级少妇三99| 国产精品69久久久久水密桃|