精品欧美一区二区三区在线观看 _久久久久国色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)

亚洲美女屁股眼交| 亚洲精品孕妇| 91精品国产综合久久久久 | 国产成人精品三级高清久久91| 欧美午夜xxx| 日韩视频在线免费播放| 午夜激情小视频| 国内精品伊人久久久久av影院| 国内成人精品一区| 99热99这里只有精品| 丁香综合av| 4438亚洲最大| 久久久久久久久久久福利| 伦xxxx在线| 91视频免费播放| 亚洲xxx大片| 黄色网址中文字幕| 亚洲日韩成人| 蜜月aⅴ免费一区二区三区| 波多野结衣办公室33分钟| 精品国产亚洲一区二区三区在线| 日韩欧美在线视频免费观看| 欧美a级免费视频| 欧美成人精品一区二区男人看| 99国产一区二区三精品乱码| 91色视频在线观看| 最近中文字幕在线免费观看| 国产亚洲网站| 欧美激情国产精品| 国产探花在线视频| 欧美久久综合网| 亚洲精品一区久久久久久| 初高中福利视频网站| 免费人成视频在线播放| 午夜精品久久久久久久爽 | 人人精品视频| 日韩欧美亚洲国产另类| 亚洲一区日韩精品| 国产成人精品亚洲日本在线观看| 午夜视频一区二区三区| 美女黄色免费看| 欧美videossex| 亚洲激情图片一区| 人人妻人人澡人人爽精品欧美一区| 大乳在线免费观看| 国产日本欧美一区二区| 欧美综合77777色婷婷| 外国精品视频在线观看 | 伊人www22综合色| 7799精品视频| 天天av天天操| 欧美一级大片在线视频| 欧美一区三区二区| 成人在线短视频| 99a精品视频在线观看| 日韩限制级电影在线观看| 亚洲欧美日韩网站| 精品一区二区三区中文字幕视频| 欧美精品三级在线观看| 欧美视频亚洲图片| 亚洲精品不卡在线观看| 精品国产乱码久久久久久1区2区| 原创真实夫妻啪啪av| 欧美电影在线观看一区| 精品久久久久久久久久久久久久久久久 | 久久久久一区| 国产精品午夜视频| 欧美性视频在线播放| 国产精品免费无遮挡无码永久视频| 国产精品一页| 国产v综合v亚洲欧美久久| 日韩精品在线一区二区三区| 久久精品国产77777蜜臀| 91免费国产网站| 亚洲精品中文字幕成人片| 高清不卡一区二区| 免费久久99精品国产自| h视频在线播放| 亚洲精品一卡二卡| 日韩五码在线观看| 日韩视频网站在线观看| 欧美三区在线观看| 亚洲av无码久久精品色欲| 精品三级av在线导航| 日韩激情在线视频| 波多野结衣欲乱| 亚洲国产激情| 日本国产高清不卡| 国产精品一二三四五区| 不卡的av电影| 一区二区三区四区国产| 欧美xxx黑人xxx水蜜桃| 在线精品视频一区二区| 黄色片免费网址| 色婷婷久久久| 久久艳片www.17c.com| 久草视频在线观| 激情五月婷婷综合网| 好吊色欧美一区二区三区四区| 国产三级视频在线| 樱花草国产18久久久久| 热久久精品国产| 日韩视频一区二区三区四区| 亚洲小视频在线观看| 国产高潮流白浆| 丝袜a∨在线一区二区三区不卡| 亚洲www在线| 嫩草精品影院| 亚洲国产另类av| mm131亚洲精品| 欧美亚洲色图校园春色| 麻豆国产va免费精品高清在线| 999这里只有精品| 国产精品乡下勾搭老头1| 日韩一本精品| 日韩av影片| 精品对白一区国产伦| 天天鲁一鲁摸一摸爽一爽| 男人天堂欧美日韩| 国产精品一区二区三区四区五区 | 国产亚洲美州欧州综合国| 日本a级片在线播放| 欧美性生活一级| 一本色道久久88精品综合| 国产精品黄色大片| 风流少妇一区二区| 水蜜桃在线免费观看| 成人精品高清在线视频| 日韩高清有码在线| 国产无遮挡免费视频| 国产精品2024| 欧洲金发美女大战黑人| 99精品国产九九国产精品| 伊人伊成久久人综合网站| 天天干天天干天天干天天| 成人一级黄色片| 国产一级做a爰片久久毛片男| av国产精品| 久久精视频免费在线久久完整在线看| 日韩熟女一区二区| www.爱久久.com| 免费看av软件| 91欧美精品| 中文字幕亚洲图片| 在线观看免费黄色小视频| 国产精品免费av| 亚洲精品综合在线观看| 99久久99久久精品国产片桃花| 国产精品27p| jyzzz在线观看视频| 欧美在线999| 久久久久麻豆v国产| 看片的网站亚洲| 自拍偷拍亚洲色图欧美| 国模大尺度视频一区二区| 久热在线中文字幕色999舞| 精品国产乱码一区二区三| 一区二区三区四区视频精品免费 | 91蝌蚪porny成人天涯| 无码人妻精品一区二区三区在线| 日韩深夜福利| 国产精品盗摄久久久| 天堂а√在线官网| 日韩一级在线观看| 国产亚洲精品成人| 99精品黄色片免费大全| 中文字幕第80页| 久久久久久久久丰满| 91中文字精品一区二区| 国模雨婷捆绑高清在线| 日韩精品免费在线视频观看| 日韩一级片中文字幕| 国产精品久久久久婷婷| 99热这里只有精品2| 国产欧美二区| 亚洲成人精品电影在线观看| 亚洲免费资源| 久久久免费精品视频| 男人天堂资源在线| 欧美日本一区二区| 国产精品theporn动漫| 久久综合网色—综合色88| 99re精彩视频| 亚洲性图久久| 神马影院一区二区| 999精品视频在这里| 国产激情综合五月久久| a级片国产精品自在拍在线播放| 亚洲激情国产精品| 亚洲天堂aaa| 精品av在线播放| 免费在线观看黄色小视频| 99精品偷自拍| 又色又爽又黄视频| 亚洲专区一区| 成人手机在线播放| 精品一区亚洲| 国产精品v欧美精品v日韩精品 | 91美女片黄在线观看游戏| 黄色漫画在线免费看| 波霸ol色综合久久| 蜜桃视频在线观看网站| 欧美不卡在线视频| 一区精品在线观看| 黑人精品xxx一区| avove在线播放| 国产日韩成人精品| yjizz视频| 国产美女视频91| 亚洲 中文字幕 日韩 无码| 国产精品分类| 免费看啪啪网站| av永久不卡| 欧美人xxxxx| 国产精品国产| 91超碰在线电影| 国产人妖一区| 日产日韩在线亚洲欧美| www在线看| 欧美日本高清视频| 求av网址在线观看| 一区二区日韩精品| 青青免费在线视频| 亚洲激情小视频| 欧美性猛交 xxxx| 日韩一区二区精品葵司在线| 中文字幕a级片| 色婷婷久久久亚洲一区二区三区| 日韩精品视频免费播放| 一区二区欧美国产| 青青操视频在线播放| 亚洲欧洲综合另类| 久久久久久久久久97| 国产精品久久久久久久浪潮网站| 欧美黄色激情视频| 久久精品视频一区二区三区| 日本xxx在线播放| 久久综合久久99| 三级男人添奶爽爽爽视频| www.欧美色图| 青青草成人免费视频| a美女胸又www黄视频久久| 亚洲欧美日韩色| 99精品视频免费在线观看| 国产一级免费片| 99在线热播精品免费| 国产高清成人久久| 99久久精品一区二区| xxxxxx黄色| 久久综合久色欧美综合狠狠| 亚洲熟妇无码av| 久久久噜噜噜久噜久久综合| 日韩人妻无码精品综合区| 欧美国产日本韩| www.97视频| 亚洲一区二区偷拍精品| 日本中文字幕免费观看| 色综合色狠狠天天综合色| 免费一级a毛片| 欧美乱熟臀69xxxxxx| 国产v在线观看| 亚洲福利视频在线| 日韩福利一区二区| 中文字幕一区电影| 污视频在线看网站| 1769国产精品| 久久精品嫩草影院| 2022国产精品| 网友自拍区视频精品| 日韩在线观看电影完整版高清免费| 日韩一区二区三区免费播放| 在线观看av的网址| 亚洲一区自拍| 国产三级三级看三级| 国产黄色91视频| a视频免费观看| 国产精品伦理一区二区| 久草免费在线观看视频| 色综合一区二区三区| 国产精品羞羞答答在线| 亚洲国产精品美女| 亚洲s色大片| 久久久亚洲国产| av在线网址导航| 久久综合亚州| 亚洲精品一二三四| 久久久久久久久久看片| 日韩精品久久久久久久的张开腿让| 一区二区三区小说| 国产在线观看第一页| 精品日韩一区二区三区| 国产天堂在线| 欧美极品美女视频网站在线观看免费| 中文字幕乱码在线播放| 亚洲va欧美va国产综合剧情| 深爱激情综合网| 男人添女荫道口喷水视频| 欧美a级一区二区| 久久久无码人妻精品无码| 欧美激情一区二区三区在线| 国产真实乱偷精品视频| 69av一区二区三区| 免费黄网站在线观看| 久久久久中文字幕2018| 亚洲欧美久久精品| 欧美一区1区三区3区公司| 红桃视频国产一区| 九一精品久久久| 久久久亚洲国产美女国产盗摄| 久久综合亚洲色hezyo国产| 欧美日韩中文国产| 欧美日韩影视| 国产+人+亚洲| 日韩在线观看一区二区三区| 午夜精品亚洲一区二区三区嫩草 | 欧美国产一区二区| 色网站在线播放| 欧美一区二区高清| 在线观看a视频| 国产极品jizzhd欧美| 欧美a大片欧美片| 日韩在线视频在线| 国内精品久久久久影院薰衣草| 一区二区三区久久久久| 精品久久久久久亚洲精品 | 亚洲欧洲视频在线| a√中文在线观看| 99re在线| 欧美激情一级片一区二区| 女同激情久久av久久| 亚洲国产精品成人综合| 无码人妻丰满熟妇区五十路 | 久久人人爽人人人人片| 一级女性全黄久久生活片免费| 97人妻精品一区二区三区| 在线日韩第一页| 日韩制服一区| 天堂资源在线亚洲视频| 日本91福利区| 手机毛片在线观看| 欧美午夜精品久久久久久超碰| 欧美午夜黄色| 日韩av成人在线观看| 国产一区99| 粉嫩虎白女毛片人体| 国产欧美一区二区精品性色超碰| 天天操夜夜操视频| 亚洲欧洲在线观看| 超薄肉色丝袜脚交一区二区| 日韩色妇久久av| 久久99这里只有精品| 欧美大片xxxx| 日韩欧美国产三级| 不卡av免费观看| 精品久久一区二区三区蜜桃| 99热这里只有精品8| 精品人妻少妇嫩草av无码| 91国产成人在线| 亚洲天天影视| 亚洲自拍偷拍色片视频| 狠狠爱成人网| 一级性生活大片| 欧美久久久久中文字幕| 日本在线观看高清完整版| 精品视频高清无人区区二区三区| 午夜一级久久| 女人18毛片毛片毛片毛片区二| 欧美一区日韩一区| 欧美aa在线| 亚洲欧美日韩另类精品一区二区三区| 久久99精品网久久| 激情综合网五月婷婷| 亚洲欧美另类自拍| 日韩专区视频网站| 亚洲国产精品无码观看久久| 久久久精品人体av艺术| 国产精品国产精品国产专区| 久久99精品国产99久久6尤物| 欧美电影免费网站| 永久免费的av网站| 亚洲成av人片观看| 高清在线观看av| www国产亚洲精品| 老司机一区二区三区| 无码黑人精品一区二区| 亚洲精品第一国产综合精品| 成人av集中营| 亚洲 自拍 另类小说综合图区| 国产日本欧美一区二区| 成人免费公开视频| 国产精品视频xxxx| 激情综合久久| 免费一级suv好看的国产网站| 精品1区2区在线观看| jizz久久久久久| 国产九九九九九| 亚洲欧美色一区| 触手亚洲一区二区三区| 国产欧美日韩伦理| 国内精品免费在线观看|