西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁西西教程軟件使用 → Hadoop系統(tǒng)中的CRC數(shù)據(jù)校驗(yàn)文件功能實(shí)現(xiàn)

Hadoop系統(tǒng)中的CRC數(shù)據(jù)校驗(yàn)文件功能實(shí)現(xiàn)

相關(guān)軟件相關(guān)文章發(fā)表評論 來源:本站整理時(shí)間:2011/1/26 21:04:52字體大。A-A+

作者:佚名點(diǎn)擊:128次評論:0次標(biāo)簽: CRC 校驗(yàn)

  • 類型:遠(yuǎn)程監(jiān)控大。4.6M語言:中文 評分:5.7
  • 標(biāo)簽:
立即下載
 Hadoop系統(tǒng)為了保證數(shù)據(jù)的一致性,會(huì)對文件生成相應(yīng)的校驗(yàn)文件,并在讀寫的時(shí)候進(jìn)行校驗(yàn),確保數(shù)據(jù)的準(zhǔn)確性。

比如我們遇到的這個(gè)Case:

執(zhí)行的命令:
hadoop jar dw-hadoop-2010_7_23.jar jobDriver -files tb_steps_url_path_dim.txt multisteps_output 2011-01-25


出錯(cuò)日志的提示:
org.apache.hadoop.fs.ChecksumException: Checksum error: file:tb_steps_url_path_dim.txt at 0

at org.apache.hadoop.fs.FSInputChecker.verifySum(FSInputChecker.java:277)

at org.apache.hadoop.fs.FSInputChecker.readChecksumChunk(FSInputChecker.java:241)

at org.apache.hadoop.fs.FSInputChecker.read1(FSInputChecker.java:189)

at org.apache.hadoop.fs.FSInputChecker.read(FSInputChecker.java:158)

at java.io.DataInputStream.read(DataInputStream.java:83)

at org.apache.hadoop.io.IOUtils.copyBytes(IOUtils.java:49)

at org.apache.hadoop.io.IOUtils.copyBytes(IOUtils.java:87)

at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:209)

at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:142)

at org.apache.hadoop.mapred.JobClient.copyRemoteFiles(JobClient.java:565)

at org.apache.hadoop.mapred.JobClient.configureCommandLineOptions(JobClient.java:627)

at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:802)

at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:771)

at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1290)

at jobDriver.run(jobDriver.java:85)

at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)

at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79)

at jobDriver.main(jobDriver.java:124)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

錯(cuò)誤原因:

啟動(dòng)任務(wù)的命令中包含一個(gè)參數(shù)“-files tb_steps_url_path_dim.txt”

Hadoop客戶端需要將機(jī)器本地磁盤中的tb_steps_url_path_dim.txt文件上傳到DFS中。

在上傳的過程中,Hadoop將通過FSInputChecker判斷需要上傳的文件是否存在進(jìn)行校驗(yàn)的crc文件,即.tb_steps_url_path_dim.txt.crc,如果存在crc文件,將會(huì)對其內(nèi)容一致性進(jìn)行校驗(yàn),如果校驗(yàn)失敗,則停止上傳該文件。最終導(dǎo)致整個(gè)MR任務(wù)無法執(zhí)行。

crc文件來源

DFS命令:hadoop fs -getmerge srcDir destFile

這類命令在執(zhí)行的時(shí)候,會(huì)將srcDir目錄下的所有文件合并成一個(gè)文件,保存在destFile中,同時(shí)會(huì)在本地磁盤生成一個(gè). destFile.crc的校驗(yàn)文件。

DFS命令:hadoop fs -get -crc src dest

這類命令在執(zhí)行的時(shí)候,會(huì)將src文件,保存在dest中,同時(shí)會(huì)在本地磁盤生成一個(gè). dest.crc的校驗(yàn)文件。

如何避免

在使用hadoop fs -getmerge srcDir destFile命令時(shí),本地磁盤一定會(huì)(沒有參數(shù)可以關(guān)閉)生成相應(yīng)的.crc文件。

所以如果需要修改getmerge獲取的文件的內(nèi)容,再次上傳到DFS時(shí),可以采取以下2種策略進(jìn)行規(guī)避:

1. 刪除.crc文件

2. 將getmerge獲取的文件修改后重新命名,如使用mv操作,再次上傳到DFS中。

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)