這篇文章主要講解了“怎么將日志文件和二進(jìn)制文件快速導(dǎo)入HDFS”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“怎么將日志文件和二進(jìn)制文件快速導(dǎo)入HDFS”吧!
延川網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站設(shè)計等網(wǎng)站項目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)成立于2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運(yùn)維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
首選數(shù)據(jù)移動方法
如果在舊版Hadoop環(huán)境中運(yùn)行,我們可能需要一些工具來移動數(shù)據(jù),這些工具都會在本章介紹。如果使用Kafka作為數(shù)據(jù)傳輸機(jī)制,則允許將生產(chǎn)者與消費(fèi)者分離,同時使多個消費(fèi)者能夠以不同的方式對數(shù)據(jù)進(jìn)行操作。在這種情況下,我們可以使用Kafka在Hadoop上存儲數(shù)據(jù),并為實時數(shù)據(jù)流系統(tǒng)(如Storm或Spark Streaming)提供數(shù)據(jù),然后使用它執(zhí)行近實時計算。比如,Lambda架構(gòu)允許以小增量實時計算聚合數(shù)據(jù),并使用批處理層執(zhí)行糾錯和添加新數(shù)據(jù)點(diǎn)等,從而發(fā)揮實時和批處理系統(tǒng)的優(yōu)勢 。
實踐:使用Flume將系統(tǒng)日志消息推送到HDFS
面對跨多個服務(wù)器的多個應(yīng)用程序和系統(tǒng)生成的一堆日志文件,我們可能手忙腳亂。毫無疑問,從這些日志中可以挖掘出有價值的信息,但第一大挑戰(zhàn)是將這些日志移動到Hadoop集群以便可以執(zhí)行某些分析。
版本注意事項
此處的Flume使用版本1.4。與所有軟件一樣,不保證此處介紹的技術(shù),代碼和配置可以使用不同版本的Flume開箱即用。此外,F(xiàn)lume 1.4需要一些更新才能使其與Hadoop 2一起使用。
問題
希望將所有生產(chǎn)服務(wù)器的系統(tǒng)日志文件推送到HDFS。
解決方案
使用Flume(一種數(shù)據(jù)收集系統(tǒng))將Linux日志文件推送到HDFS。
討論
Flume的核心是日志文件收集和分發(fā),收集系統(tǒng)日志并傳輸?shù)紿DFS。此技術(shù)的第一步涉及捕獲附加到/var/log/messages的所有數(shù)據(jù)并將其傳輸?shù)紿DFS。我們將運(yùn)行一個Flume agent(稍后詳細(xì)介紹),這將完成所有工作。
Flume agent需要配置文件指明該做什么,以下代碼為用例定義了一個:
要讓示例起作用,需要確保正在使用可以訪問Hadoop集群的主機(jī),以及 HADOOP_HOME配置正確,還需要下載并安裝Flume并將FLUME_HOME設(shè)置為指向安裝目錄。
使用文件名tail-hdfspart1.conf將前面的文件復(fù)制到Flume conf目錄中。完成后,就可以啟動Flume agent實例了:
這應(yīng)該會產(chǎn)生很多輸出,但最終應(yīng)該看到類似于以下的輸出,表明一切都好了:
此時,應(yīng)該看到HDFS中出現(xiàn)的一些數(shù)據(jù):
.tmp后綴表示Flume打開文件并繼續(xù)寫入。一旦完成,這將重命名文件并刪除后綴:
可以捕獲此文件以檢查其內(nèi)容,內(nèi)容應(yīng)與tail/var/log/messages對齊。
到目前為止,我們已經(jīng)用Flume完成了第一次數(shù)據(jù)移動!
解析Flume agent
讓我們回過頭來檢查一下做了什么。主要有兩個部分:定義Flume配置文件,以及運(yùn)行Flume agent。Flume配置文件包含有關(guān)源,通道和接收器的詳細(xì)信息,這些都是影響Flume數(shù)據(jù)流不同部分的概念。圖5.4顯示了Flume agent中的這些概念。
讓我們逐步介紹這些概念,包括用途以及工作原理。
Sources
Flume sources負(fù)責(zé)從外部客戶端或其他Flume接收器讀取數(shù)據(jù)。Flume中的數(shù)據(jù)單元被定義為一個事件,本質(zhì)上是一個有效載荷和可選元數(shù)據(jù)集。Flume源將這些事件發(fā)送到一個或多個Flume通道,這些通道處理存儲和緩沖。
圖5.4 agent上下文中的Flume組件說明
Flume有一組廣泛的內(nèi)置源,包括HTTP,JMS和RPC。讓我們來看看你設(shè)置的特定于源的配置屬性:
exec source允許執(zhí)行Unix命令,標(biāo)準(zhǔn)輸出中發(fā)出的每一行都被捕獲為事件(默認(rèn)情況下會忽略常見錯誤)。在前面的示例中,tail -F命令用于在生成系統(tǒng)消息時捕獲它們。如果可以更好地控制文件(例如,如果可以在完成所有寫入后將它們移動到目錄中),考慮使用Flume的假脫機(jī)目錄源(稱為spooldir),因為它提供了exec source無法獲得的可靠性語義。
僅使用tail進(jìn)行測試
不鼓勵使用tail進(jìn)行測試以外的任何操作。
此配置中突出顯示的另一個功能是攔截器,它允許向事件添加元數(shù)據(jù)?;叵胍幌?,HDFS中的數(shù)據(jù)是根據(jù)時間戳組織的:第一部分是日期,第二部分是時間:
之所以能這樣做,是因為使用時間戳攔截器修改了每個事件,時間戳攔截器將源處理事件的時間(以毫秒為單位)插入到事件頭。然后,F(xiàn)lume HDFS接收器使用此時間戳來確定事件寫入位置。
為了總結(jié)Flume sources,讓我們介紹一下其提供的功能:
事務(wù)語義,允許以至少一次語義可靠地移動數(shù)據(jù),并非所有數(shù)據(jù)源都支持此功能。
攔截器,提供修改或刪除事件的功能。對于使用主機(jī),時間和唯一標(biāo)識符來注釋事件非常有用,這對于重復(fù)數(shù)據(jù)刪除非常有用。
選擇器,允許以各種方式扇出或多路復(fù)用事件,可以通過將事件復(fù)制到多個通道來扇出事件,也可以根據(jù)事件頭將事件路由到不同通道。
通道
Flume通道在agent內(nèi)部提供數(shù)據(jù)存儲設(shè)施。源將事件添加到通道,并從通道中刪除事件。Flume內(nèi)部的通道提供高可用性,可以根據(jù)應(yīng)用所需的容量和吞吐量選擇。
Flume捆綁了三個通道:
內(nèi)存通道將事件存儲在內(nèi)存隊列中。這對于高吞吐數(shù)據(jù)流非常有用,但其沒有持久性保證,這意味著如果agent發(fā)生故障,用戶將丟失數(shù)據(jù)。
文件通道將事件持久保存到磁盤。該實現(xiàn)使用高效的日志并具有強(qiáng)大的持久性。
JDBC通道將事件存儲在數(shù)據(jù)庫中。這提供了最強(qiáng)的可用性和可恢復(fù)性,但是以性能為代價。
在前面的示例中,我們使用了內(nèi)存通道,并將其存儲事件數(shù)限制為100,000。一旦內(nèi)存通道達(dá)到最大事件數(shù),將開始拒絕來自源的其他請求以添加更多事件。根據(jù)源的類型,這意味著源將重試或刪除事件(exec源將丟棄事件):
Sinks
Flume接收器從一個或多個Flume通道中接收事件,并將這些事件轉(zhuǎn)發(fā)到另一個Flume源(在多hop流程中),或以特定于接收器的方式處理事件。Flume內(nèi)置了許多接收器,包括HDFS,HBase,Solr和Elasticsearch。
在前面的示例中,我們將流配置為使用HDFS接收器:
我們將接收器配置為根據(jù)時間戳寫入文件(請注意%y和其他時間戳別名)。我們可以這樣做,因為使用exec源中的時間戳攔截器標(biāo)記事件。實際上,可以使用任何header值來確定事件輸出位置(例如,可以添加主機(jī)攔截器,然后根據(jù)生成事件的主機(jī)來寫入文件)。
可以通過各種方式配置HDFS接收器,以確定文件的滾動方式。當(dāng)接收器讀取第一個事件時,它將打開一個新文件(如果尚未打開)并寫入該文件。默認(rèn)情況下,接收器將繼續(xù)保持文件打開并將事件寫入其中,大約需要30秒,之后文件將被關(guān)閉,可以使用表5.5中的屬性更改滾動行為。
表5.5 Flume HDFS接收器的rollover屬性
默認(rèn)HDFS接收器設(shè)置不應(yīng)在生產(chǎn)中使用,因為它們會導(dǎo)致大量可能很小的文件。建議升級value或使用下游壓縮作業(yè)來合并這些小文件。
HDFS接收器允許指定在寫入文件時如何序列化事件。默認(rèn)情況下,它們以文本格式序列化,沒有攔截器添加任何header。 例如,如果要在Avro中寫入數(shù)據(jù)(也包括事件頭),則可以使用序列化程序配置來執(zhí)行此操作。這樣做時,還可以指定Avro內(nèi)部用于壓縮數(shù)據(jù)的Hadoop壓縮編解碼器:
總結(jié)
Flume中的可靠性取決于使用的通道類型,數(shù)據(jù)源是否具有重新傳輸事件的能力,以及是否將事件多路復(fù)用到多個源以減輕不可恢復(fù)的節(jié)點(diǎn)故障。在該技術(shù)中,使用了存儲器通道和執(zhí)行器源,但是在面對故障時都不提供可靠性。添加可靠性的一種方法是用假脫機(jī)目錄源替換exec源,并用磁盤通道替換內(nèi)存通道。
我們可以使用單個源,通道和接收器運(yùn)行單個agent的單臺計算機(jī)上使用Flume,但Flume可以支持完全分布式設(shè)置,可以在多個主機(jī)上運(yùn)行agent,在源和最終目標(biāo)之間有多個agent hop。圖5.5顯示了Flume如何在分布式環(huán)境中運(yùn)行。
此技術(shù)的目標(biāo)是將數(shù)據(jù)移動到HDFS中。但是,F(xiàn)lume可以支持各種數(shù)據(jù)接收器,包括HBase,文件roll,Elasticsearch和Solr。使用Flume寫入Elasticsearch或Solr可實現(xiàn)強(qiáng)大的近實時索引。
因此,F(xiàn)lume是一個非常強(qiáng)大的數(shù)據(jù)移動工具,可以輕松支持將數(shù)據(jù)移動到HDFS以及許多其他位置。它可以持續(xù)移動數(shù)據(jù)并支持各種級別的彈性,以解決系統(tǒng)故障,這是一個只需簡單配置就可運(yùn)行的系統(tǒng)。
圖5.5 使用負(fù)載平衡和 fan-in將log4j日志移動到HDFS的Flume設(shè)置
Flume沒有真正優(yōu)化的是使用二進(jìn)制數(shù)據(jù)。它可以支持移動二進(jìn)制數(shù)據(jù),但會將整個二進(jìn)制事件加載到內(nèi)存中,因此移動大小為GB或更大的文件將無法正常工作。
實踐:一種將文件復(fù)制到HDFS的自動機(jī)制
你可能已經(jīng)學(xué)會了如何使用像Flume這樣的日志收集工具自動將數(shù)據(jù)移動到HDFS中。但是,這些工具不支持使用半結(jié)構(gòu)化或二進(jìn)制數(shù)據(jù)輸出。在該實踐中,我們將了解如何自動將這些文件移動到HDFS中。
企業(yè)實際生產(chǎn)環(huán)境通常具有網(wǎng)絡(luò)孤島,Hadoop集群可以遠(yuǎn)離其他生產(chǎn)應(yīng)用程序進(jìn)行細(xì)分。在這種情況下,Hadoop集群可能無法從其他數(shù)據(jù)源提取數(shù)據(jù),因此無需將數(shù)據(jù)推送到Hadoop。
需要一種機(jī)制來自動化將任何格式的文件復(fù)制到HDFS的過程,類似于Linux工具rsync。該機(jī)制應(yīng)該能夠壓縮用HDFS編寫的文件,并提供一種動態(tài)確定HDFS目的地的方法以進(jìn)行數(shù)據(jù)分區(qū)。
現(xiàn)有的文件傳輸機(jī)制,如Flume,Scribe和Chukwa,都是為了支持日志文件。如果文件格式不同,例如semistructured或binary,該怎么辦?如果文件以Hadoop從屬節(jié)點(diǎn)無法直接訪問的方式被孤立,那么也無法使用Oozie來幫助進(jìn)行文件輸入。
問題
需要自動執(zhí)行將遠(yuǎn)程服務(wù)器上的文件復(fù)制到HDFS的過程。
解決方案
開源HDFS File Slurper項目可以將任何格式的文件復(fù)制到HDFS或從中復(fù)制出來。該技術(shù)涵蓋了如何配置和使用它來將數(shù)據(jù)復(fù)制到HDFS中。
討論
可以使用HDFS File Slurper來幫助實現(xiàn)自動化(https://github.com/alexholmes/hdfs-file-slurper)。HDFS File Slurper是一個簡單的實用程序,支持將文件從本地目錄復(fù)制到HDFS,反之亦然。
圖5.6提供了Slurper的高級概述,以及如何使用它來復(fù)制文件的示例。Slurper讀取源目錄中存在的所有文件,并可選擇查詢腳本以確定目標(biāo)目錄中的文件位置。然后,它將文件寫入目標(biāo),之后有一個可選的驗證步驟。在成功完成所有步驟后,Slurper將源文件移動到對應(yīng)文件夾。
圖5.6 用于復(fù)制文件的HDFS File Slurper數(shù)據(jù)流
使用這種技術(shù),需要確保解決以下幾個挑戰(zhàn):
如何有效地將寫入分區(qū)到HDFS,以便不將所有內(nèi)容整合到一個目錄?
如何確定HDFS中的數(shù)據(jù)是否已準(zhǔn)備好進(jìn)行處理(以避免讀取中間復(fù)制的文件)?
如何自動定期執(zhí)行實用程序?
第一步是從https://github.com/alexholmes/hdfs-file-slurper/releases下載最新的HDFS File Slurper tarball,并將其安裝在可以訪問Hadoop集群和本地Hadoop安裝的主機(jī)上:
組件
在運(yùn)行代碼之前,需要編輯/usr/local/hdfs-slurper/conf/slurper-env.sh并設(shè)置hadoop腳本的位置。以下代碼是slurper-eng.sh文件的示例,如果遵循Hadoop安裝說明:
Slurper捆綁了/usr/local/hdfs-slurper/conf/slurper.conf文件,其中包含源和目標(biāo)目錄的詳細(xì)信息以及其他選項。該文件包含以下默認(rèn)設(shè)置,你可以更改:
讓我們仔細(xì)看看這些設(shè)置:
DATASOURCE_NAME—指定要傳輸?shù)臄?shù)據(jù)名稱。當(dāng)通過Linux init守護(hù)程序管理系統(tǒng)啟動時,該名稱用于日志文件名。
SRC_DIR—指定源目錄。移動到此處的任何文件都會自動復(fù)制到目標(biāo)目錄(使用中間hop到目標(biāo)目錄)。
WORK_DIR—這是工作目錄。在復(fù)制到目標(biāo)之前,源目錄中的文件將移動到此處。
COMPLETE_DIR—指定完整目錄。復(fù)制完成后,文件將從工作目錄移動到此目錄中?;蛘撸梢允褂?-remove-after-copy選項刪除源文件,在這種情況下,不應(yīng)提供--complete-dir選項。
ERROR_DIR—這是錯誤目錄。復(fù)制期間遇到的任何錯誤都會導(dǎo)致源文件移動到此目錄中。
DEST_DIR—設(shè)置源文件的最終目標(biāo)目錄。
DEST_STAGING_DIR—指定目標(biāo)目錄。首先將文件復(fù)制到此目錄中,一旦復(fù)制成功,Slurper就會將副本移動到目標(biāo)位置,以避免目標(biāo)目錄包含部分寫入文件(如果發(fā)生故障)。
你會注意到所有目錄名稱都是HDFS URI。HDFS以這種方式區(qū)分不同的文件系統(tǒng)。file:/URI本地文件系統(tǒng)上的路徑,hdfs:/URI表示HDFS中的路徑。事實上,只要正確配置Hadoop,Slurper就支持任何Hadoop文件系統(tǒng)。
運(yùn)行
創(chuàng)建一個名為/tmp/slurper/in的本地目錄,在其中寫入一個空文件,然后運(yùn)行Slurper:
Slurper設(shè)計的一個關(guān)鍵特性是不能與部分寫入文件一起使用。文件必須以原子方式移動到源目錄中(Linux和HDFS文件系統(tǒng)中的文件移動都是原子的)?;蛘撸梢詫懭胍跃潼c(diǎn)(.)開頭的文件名,Slurper會忽略該文件名,文件寫入完成后,可以將文件重命名為不帶句點(diǎn)前綴的名稱。
請注意,復(fù)制具有相同文件名的多個文件將導(dǎo)致目標(biāo)被覆蓋,用戶有責(zé)任確保文件是唯一的,以防止這種情況發(fā)生。
動態(tài)目標(biāo)路由
如果每天將少量文件移動到HDFS中,則上一種方法很有效。但是,如果正在處理大量文件,你會想到將它們分成不同的目錄。這樣做的好處是可以對MapReduce作業(yè)的輸入數(shù)據(jù)進(jìn)行更細(xì)粒度的控制,并有助于在文件系統(tǒng)中整體組織數(shù)據(jù)(如果不希望計算機(jī)上的所有文件都在單個目錄)。
如何對目標(biāo)目錄和Slurper使用的文件名進(jìn)行更多動態(tài)控制?Slurper配置文件具有SCRIPT選項(與DEST_DIR選項互斥),可以在其中指定一個腳本,該腳本提供源文件到目標(biāo)文件的動態(tài)映射。
假設(shè)正在使用的文件包含文件名中的日期,并且已決定要按日期在HDFS中組織數(shù)據(jù)。那么,可以編寫腳本來執(zhí)行此映射活動。以下示例是執(zhí)行此操作的Python腳本:
現(xiàn)在可以更新/usr/local/hdfs-slurper/conf/slurper.conf,設(shè)置SCRIPT,并注釋掉DEST_DIR,這會在文件中生成以下條目:
如果再次運(yùn)行Slurper,會注意到目標(biāo)路徑現(xiàn)在由Python腳本按日期分區(qū):
數(shù)據(jù)壓縮和驗證
如果要在HDFS中壓縮輸出文件并驗證副本是否正確,該怎么辦?需要使用COMPRESSION_CODEC選項,其值是實現(xiàn)CompressionCodec接口的類。如果壓縮編解碼器是LZO或LZOP,還可以添加CREATE_LZO_INDEX選項,以便創(chuàng)建LZOP索引。 (具體內(nèi)容請閱讀第四章,鏈接見文末)
驗證功能會在復(fù)制完成后重新讀取目標(biāo)文件,并確保目標(biāo)文件的校驗和與源文件匹配。這導(dǎo)致處理時間更長,但增加了復(fù)制成功的額外保證。
以下配置片段顯示了LZOP編解碼器,LZO索引和啟用的文件驗證:
讓我們再次運(yùn)行Slurper:
連續(xù)運(yùn)轉(zhuǎn)
現(xiàn)在,你已經(jīng)掌握了基本機(jī)制,最后一步是將該工具作為守護(hù)程序運(yùn)行,以便不斷查找要傳輸?shù)奈募?。為此,可以使用名為bin/slurper-inittab.sh的腳本,該腳本旨在與inittab respawn一起使用。
此腳本不會創(chuàng)建PID文件或執(zhí)行nohup-在respawn的上下文中都沒有意義,因為inittab正在管理進(jìn)程。使用DATASOURCE_NAME配置值來創(chuàng)建日志文件名,這意味著可以使用記錄到不同日志文件的不同配置文件來啟動多個Slurper實例。
總結(jié)
Slurper是一個很方便的工具,用于從本地文件系統(tǒng)到HDFS的數(shù)據(jù)輸入,還通過從HDFS復(fù)制到本地文件系統(tǒng)來支持?jǐn)?shù)據(jù)輸出。在MapReduce無法訪問文件系統(tǒng)并且正在傳輸?shù)奈募问讲贿m用于Flume等工具的情況下,它非常有用。
實踐:使用Oozie安排定期數(shù)據(jù)提取
如果數(shù)據(jù)位于文件系統(tǒng)、Web服務(wù)器或可從Hadoop集群訪問的任何其他系統(tǒng)上,我們將需要一種定期將該數(shù)據(jù)提取到Hadoop的方法。目前,有一些推送日志文件和從數(shù)據(jù)庫中提取的工具可供選擇,但如果需要與其他系統(tǒng)進(jìn)行交互,則可能需要自己處理數(shù)據(jù)輸入過程。
此技術(shù)使用Oozie 4.0.0版。
此數(shù)據(jù)入口分為兩部分:將數(shù)據(jù)從另一系統(tǒng)導(dǎo)入Hadoop以及定期進(jìn)行數(shù)據(jù)傳輸。
問題
自動執(zhí)行每日任務(wù),以將內(nèi)容從HTTP服務(wù)器下載到HDFS。
解決方案
Oozie可用于將數(shù)據(jù)移動到HDFS,還可用于執(zhí)行發(fā)布,例如啟動MapReduce作業(yè)以處理獲取的數(shù)據(jù)。Oozie現(xiàn)在是Apache項目,管理數(shù)據(jù)處理活動的Hadoop工作流引擎。Oozie還有一個協(xié)調(diào)器引擎,可以根據(jù)數(shù)據(jù)和時間觸發(fā)器啟動工作流程。
討論
在此實踐中,我們將每24小時從多個URL執(zhí)行下載,使用Oozie管理工作流程和日程安排。該技術(shù)的流程如圖5.7所示,我們將使用Oozie觸發(fā)功能每24小時啟動一次MapReduce作業(yè)。
圖5.7 Oozie技術(shù)的數(shù)據(jù)流
第一步是查看協(xié)調(diào)器XML配置文件。Oozie的協(xié)調(diào)引擎使用此文件來確定何時應(yīng)啟動工作流程。Oozie使用模板引擎和表達(dá)式語言來執(zhí)行參數(shù)化,如下代碼所示。使用以下內(nèi)容創(chuàng)建名為coordinator.xml的文件:
代碼5.1 使用模板引擎通過Oozie執(zhí)行參數(shù)化
Oozie調(diào)度可能會讓人困惑的是,開始和結(jié)束時間與作業(yè)執(zhí)行的實際時間無關(guān)。相反,它們指的是每個工作流程執(zhí)行創(chuàng)建的日期,這在定期生成數(shù)據(jù)并且希望能夠及時返回某個點(diǎn)并對該數(shù)據(jù)執(zhí)行某些操作的情況下非常有用。在這個例子中,你希望每24小時執(zhí)行一份工作。所以,你可以將開始日期設(shè)置為昨天,將結(jié)束日期設(shè)置為將來的某個日期。
接下來,我們需要定義實際工作流程,該工作流程將在每個固定時間間隔執(zhí)行,并且在到達(dá)間隔時繼續(xù)執(zhí)行。為此,創(chuàng)建一個名為workflow.xml的文件,其中包含下一個代碼中顯示的內(nèi)容。
代碼5.2 使用Oozie協(xié)調(diào)器定義工作流程
Oozie希望map和reduce類使用“舊的”MapReduce API。如果要使用“新”API,則需要指定其他屬性:
最后一步是定義屬性文件,該文件指定如何獲取HDFS,MapReduce以及之前在HDFS中標(biāo)識的兩個XML文件的位置。創(chuàng)建一個名為job.properties的文件,如以下代碼所示:
不同Hadoop版本的JobTracker屬性
如果使用Hadoop 1.X版本,則應(yīng)使用jobTracker屬性中的JobTracker RPC端口(默認(rèn)值為8021)。否則使用YARN ResourceManager RPC端口(默認(rèn)為8032)。
在上一個代碼段中,HDFS中的位置指示本章前面編寫的coordinator.xml和workflow.xml文件的位置?,F(xiàn)在,需要將XML文件,輸入文件和包含MapReduce代碼的JAR文件復(fù)制到HDFS中:
最后,在Oozie中運(yùn)行作業(yè):
可以使用作業(yè)ID獲取有關(guān)作業(yè)的一些信息:
此輸出導(dǎo)致作業(yè)的一次運(yùn)行,可以看到運(yùn)行時間。整體狀態(tài)為RUNNING,這意味著作業(yè)正在等待下一個間隔發(fā)生。當(dāng)整個作業(yè)完成時(到結(jié)束日期之后),狀態(tài)將轉(zhuǎn)換為SUCCEEDED。
可以確認(rèn)HDFS中的輸出目錄對應(yīng)于具體日期:
只要作業(yè)正在運(yùn)行,它將繼續(xù)執(zhí)行直到日期結(jié)束,在此示例中已將其設(shè)置為2026年。如果要停止作業(yè),請使用-suspend選項:
Oozie還可以分別使用-resume和-kill選項恢復(fù)暫停的作業(yè)以及殺死工作流程。
感謝各位的閱讀,以上就是“怎么將日志文件和二進(jìn)制文件快速導(dǎo)入HDFS”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對怎么將日志文件和二進(jìn)制文件快速導(dǎo)入HDFS這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!
標(biāo)題名稱:怎么將日志文件和二進(jìn)制文件快速導(dǎo)入HDFS
標(biāo)題URL:http://www.rwnh.cn/article40/igpoeo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、網(wǎng)站內(nèi)鏈、搜索引擎優(yōu)化、網(wǎng)站維護(hù)、網(wǎng)站營銷、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)