乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      streaming實(shí)現(xiàn)mapreduce

       mumuxd 2011-08-09

      1、reduce處理數(shù)據(jù)量盡量分段處理,如統(tǒng)計(jì)某個(gè)地區(qū)的用戶數(shù)(用戶出現(xiàn)N次都算1次),map輸出key為地區(qū),reduce根據(jù)key做處理時(shí),

        避免將所有記錄放到一個(gè)map中,待全部數(shù)據(jù)處理完后再統(tǒng)計(jì)次數(shù)。 自己總結(jié)的做法時(shí),一個(gè)Key處理一次,如浙江省的,如福建省所

        有的記錄都處理完這后就馬上統(tǒng)計(jì)結(jié)果,避免存放太多明細(xì)數(shù)據(jù)消耗內(nèi)存。 提高處理效率,減少內(nèi)存使用情況

      2、reduce輸出結(jié)果時(shí),如果涉及到輸出結(jié)果至其他接口,如數(shù)據(jù)庫,hbase等。避免在處理完所有stdin之后循環(huán)外處理這些數(shù)據(jù),原因?yàn)椋?/p>

        a.進(jìn)度不可見。mapred管理界面上的進(jìn)度是以stdin處理完的結(jié)果,所以在循環(huán)stdin處理之后的操作,不會在進(jìn)度中顯示。 

         b.如果循環(huán)外的處理很耗時(shí),可能會導(dǎo)至作業(yè)的超時(shí)完收到完成消息而發(fā)生異常。

         解決辦法:利用第一條的方法,處理完一條結(jié)果寫入一條記錄,即使寫入速度慢也不會出現(xiàn)超時(shí)的情況

      3、stdin循環(huán)中,不要出現(xiàn)break,我的理解是(沒看過源碼實(shí)現(xiàn)):mapred框架在調(diào)用reduce時(shí),如果reduce自己break退出程序,mapred框

        架仍然往reduce作業(yè)寫數(shù)據(jù),導(dǎo)致異常

      streaming 參數(shù)說明

      -input <path> 輸入數(shù)據(jù)路徑

      -output <path> 輸出數(shù)據(jù)路徑

      -mapper <cmd|JavaClassName>mapper可執(zhí)行程序或Java類

      -reducer <cmd|JavaClassName>reducer可執(zhí)行程序或Java類

      -file <file> Optional 分發(fā)本地文件

      -cacheFile <file> Optional 分發(fā)HDFS文件

      -cacheArchive <file> Optional 分發(fā)HDFS壓縮文件

      -numReduceTasks <num> Optional reduce任務(wù)個(gè)數(shù)

      -jobconf | -D NAME
      =VALUE Optional 作業(yè)配置參數(shù)

      -combiner <JavaClassName> Optional Combiner Java類

      -partitioner <JavaClassName> Optional Partitioner Java類

      -inputformat <JavaClassName> Optional InputFormat Java類

      -outputformat <JavaClassName> Optional OutputFormat Java類

      -inputreader <spec> Optional InputReader配置

      -cmdenv <n>
      =<v> Optional 傳給mapper和reducer的環(huán)境變量

      -mapdebug <path> Optional mapper失敗時(shí)運(yùn)行的debug程序

      -reducedebug <path> Optional reducer失敗時(shí)運(yùn)行的debug程序

      -verbose Optional 詳細(xì)輸出模式

      命令參數(shù)詳解下面是對各個(gè)參數(shù)的詳細(xì)說明:

      -input <path>:指定作業(yè)輸入,path可以是文件或者目錄,可以使用*通配符,-input選項(xiàng)可以使用多次指定多個(gè)文件或目錄作為輸入。

      -output <path>:指定作業(yè)輸出目錄,path必須不存在,而且執(zhí)行作業(yè)的用戶必須有創(chuàng)建該目錄的權(quán)限,-output只能使用一次。

      -mapper:指定mapper可執(zhí)行程序或Java類,必須指定且唯一。

      -reducer:指定reducer可執(zhí)行程序或Java類,必須指定且唯一。

      -file
      , -cacheFile, -cacheArchive:分別用于向計(jì)算節(jié)點(diǎn)分發(fā)本地文件、HDFS文件和HDFS壓縮文件

      -numReduceTasks:指定reducer的個(gè)數(shù),如果設(shè)置-numReduceTasks 0或者-reducer NONE則沒有reducer程序,
         mapper的輸出直接作為整個(gè)作業(yè)的輸出。 -jobconf | -D NAME=VALUE:指定作業(yè)參數(shù),NAME是參數(shù)名,VALUE
         是參數(shù)值,可以指定的參數(shù)參考hadoop-default.xml。特別建議用-jobconf mapred.job.name=’My Job Name’
         設(shè)置作業(yè)名,使用-jobconf mapred.job.priority=VERY_HIGH | HIGH | NORMAL | LOW | VERY_LOW設(shè)置
         作業(yè)優(yōu)先級,使用-jobconf mapred.job.map.capacity=M設(shè)置同時(shí)最多運(yùn)行M個(gè)map任務(wù),使用
         -jobconf mapred.job.reduce.capacity=N設(shè)置同時(shí)最多運(yùn)行N個(gè)reduce任務(wù)。
         常見的作業(yè)配置參數(shù)如下表所示:
        mapred.job.name 作業(yè)名
         mapred.job.priority 作業(yè)優(yōu)先級
         mapred.job.map.capacity 最多同時(shí)運(yùn)行map任務(wù)數(shù)
         mapred.job.reduce.capacity 最多同時(shí)運(yùn)行reduce任務(wù)數(shù)
         hadoop.job.ugi 作業(yè)執(zhí)行權(quán)限
         mapred.map.tasks map任務(wù)個(gè)數(shù)
         mapred.reduce.tasks reduce任務(wù)個(gè)數(shù)
         mapred.job.groups 作業(yè)可運(yùn)行的計(jì)算節(jié)點(diǎn)分組
        mapred.task.timeout 任務(wù)沒有響應(yīng)(輸入輸出)的最大時(shí)間
         mapred.compress.map.output map的輸出是否壓
         mapred.map.output.compression.codec map的輸出壓縮方式
         mapred.output.compress reduce的輸出是否壓
         mapred.output.compression.codec reduce的輸出壓縮方式
         stream.map.output.field.separator map輸出分隔符

      -combiner:指定combiner Java類,對應(yīng)的Java類文件打包成jar文件后用-file分發(fā)。

      -partitioner:指定partitioner Java類,Streaming提供了一些實(shí)用的partitioner實(shí)現(xiàn)

      -inputformat
      , -outputformat:指定inputformat和outputformat Java類,用于讀取輸入數(shù)據(jù)和寫入輸出數(shù)據(jù),
        分別要實(shí)現(xiàn)InputFormat和OutputFormat接口。如果不指定,默認(rèn)使用TextInputFormat和TextOutputFormat。

      -cmdenv NAME
      =VALUE:給mapper和reducer程序傳遞額外的環(huán)境變量,NAME是變量名,VALUE是變量值。

      -mapdebug
      , -reducedebug:分別指定mapper和reducer程序失敗時(shí)運(yùn)行的debug程序。

      -verbose:指定輸出詳細(xì)信息,例如分發(fā)哪些文件,實(shí)際作業(yè)配置參數(shù)值等,可以用于調(diào)試。
        注意事項(xiàng)
        1).mapper或reducer程序盡量輸出一些重要的錯(cuò)誤日志到標(biāo)準(zhǔn)錯(cuò)誤,不要寫本地文件,因?yàn)槌绦驁?zhí)行完以后本地文件就會被刪
          除,但是輸出到標(biāo)準(zhǔn)錯(cuò)誤的日志會被保存,有利于出現(xiàn)問題定位程序問題。但是量不要太大,否則會影響性能。
         2).注意mapper和reducer程序的返回值,Streaming框架默認(rèn)認(rèn)為程序返回值為0時(shí)用戶程序正常,非0時(shí)用戶程序異常從而
          導(dǎo)致任務(wù)失敗,多次任務(wù)失敗導(dǎo)致作業(yè)失敗。
         3).mapper或reducer程序在遇到從標(biāo)準(zhǔn)輸入讀到EOF,讀標(biāo)準(zhǔn)輸入異常,pipe broken異常,寫標(biāo)準(zhǔn)輸出異常,寫標(biāo)準(zhǔn)錯(cuò)誤異
          常時(shí),應(yīng)該主動退出。
         4).mapper或reducer程序可以在當(dāng)前目錄下創(chuàng)建臨時(shí)文件進(jìn)行讀寫,但是不允許向它的上層目錄,或者在cacheArchive解壓
          后的目錄中創(chuàng)建或?qū)懳募?/span>
         5).zip壓縮包中不能有中文字符的文件名,否則Java解壓會出現(xiàn)異常。如果使用新版本命令格式,命令行中參數(shù)要先指定
          genericOptions如-D,然后指定commandOptions如-mapper

        本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多