日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Hadoop Streaming框架使用(一)

發(fā)布時(shí)間:2025/7/14 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hadoop Streaming框架使用(一) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

Streaming簡(jiǎn)介?

link:http://www.cnblogs.com/luchen927/archive/2012/01/16/2323448.html

Streaming框架允許任何程序語(yǔ)言實(shí)現(xiàn)的程序在Hadoop MapReduce中使用,方便已有程序向Hadoop平臺(tái)移植。因此可以說(shuō)對(duì)于hadoop的擴(kuò)展性意義重大,今天簡(jiǎn)單說(shuō)一下。

Streaming的原理是用Java實(shí)現(xiàn)一個(gè)包裝用戶程序的MapReduce程序,該程序負(fù)責(zé)調(diào)用MapReduce Java接口獲取key/value對(duì)輸入,創(chuàng)建一個(gè)新的進(jìn)程啟動(dòng)包裝的用戶程序,將數(shù)據(jù)通過(guò)管道傳遞給包裝的用戶程序處理,然后調(diào)用MapReduce Java接口將用戶程序的輸出切分成key/value對(duì)輸出。?

?

Streaming優(yōu)點(diǎn)

1 開(kāi)發(fā)效率高,便于移植

只要按照標(biāo)準(zhǔn)輸入輸出格式進(jìn)行編程,就可以滿足hadoop要求。因此單機(jī)程序稍加改動(dòng)就可以在集群上進(jìn)行使用。?同樣便于測(cè)試

只要按照 cat input | mapper | sort | reducer > output 進(jìn)行單機(jī)測(cè)試即可。

如果單機(jī)測(cè)試通過(guò),大多數(shù)情況是可以在集群上成功運(yùn)行的,只要控制好內(nèi)存就好了。

?? ?2 提高程序效率

有些程序?qū)?nèi)存要求較高,如果用java控制內(nèi)存畢竟不如C/C++。

Streaming不足

? ? 1?Hadoop Streaming默認(rèn)只能處理文本數(shù)據(jù),無(wú)法直接對(duì)二進(jìn)制數(shù)據(jù)進(jìn)行處理?

? ? 2?Streaming中的mapper和reducer默認(rèn)只能向標(biāo)準(zhǔn)輸出寫數(shù)據(jù),不能方便地處理多路輸出?

具體參數(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ì)輸出模式

?

?下面是對(duì)各個(gè)參數(shù)的詳細(xì)說(shuō)明:

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

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

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

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

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

l?-numReduceTasks:指定reducer的個(gè)數(shù),如果設(shè)置-numReduceTasks 0或者-reducer NONE則沒(méi)有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)先級(jí),使用-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ù)。

常見(jiàn)的作業(yè)配置參數(shù)如下表所示:?

mapred.job.name

作業(yè)名

mapred.job.priority

作業(yè)優(yōu)先級(jí)

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ù)沒(méi)有響應(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輸出分隔符

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

l?-partitioner:指定partitioner Java類,Streaming提供了一些實(shí)用的partitioner實(shí)現(xiàn),參考KeyBasedFiledPartitoner和IntHashPartitioner。

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

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

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

l?-verbose:指定輸出詳細(xì)信息,例如分發(fā)哪些文件,實(shí)際作業(yè)配置參數(shù)值等,可以用于調(diào)試。

總結(jié)

以上是生活随笔為你收集整理的Hadoop Streaming框架使用(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。