Hadoop多Job并行處理的實(shí)例詳解
Hadoop多Job并行處理的實(shí)例詳解
有關(guān)Hadoop多Job任務(wù)并行處理,經(jīng)過(guò)測(cè)試,配置如下:
首先做如下配置:
1、修改mapred-site.xml添加調(diào)度器配置:
<property> <name>mapred.jobtracker.taskScheduler</name> <value>org.apache.hadoop.mapred.FairScheduler</value> </property>
2、添加jar文件地址配置:
<property> <name>hadoopTest.jar</name> <value>所生成jar的地址</value> </property>
Java基本代碼如下:
// 獲取各個(gè)Job,有關(guān)Job的創(chuàng)建,這里就不貼上來(lái)了。
Job job_base = (Job) 。。。;
Job job_avg = (Job) 。。。;
Job job_runCount = (Job) 。。。;
Job job_activeUser = (Job) ....;
job_base.setJarByClass(CapuseDateTimerTask.class);
job_avg.setJarByClass(CapuseDateTimerTask.class);
job_runCount.setJarByClass(CapuseDateTimerTask.class);
job_activeUser.setJarByClass(CapuseDateTimerTask.class);
// 執(zhí)行完job_base才開(kāi)始并行以下三個(gè)Job;
if (job_base.waitForCompletion(true)) {
FileUtil.hdfsFileHandle(jobBase);
// 并行Job
job_avg.submit();
job_runCount.submit();
job_activeUser.submit();
}
boolean bln1 = job_avg.isComplete();
boolean bln2 = job_runCount.isComplete();
boolean bln3 = job_activeUser.isComplete();
// 計(jì)算Job是否完成
while (!bln1 || !bln2 || !bln3) {
bln1 = job_avg.isComplete();
bln2 = job_runCount.isComplete();
bln3 = job_activeUser.isComplete();
}
最后將這些代碼組裝至Main方法,使用Hadoop執(zhí)行命令運(yùn)行:
hadoop jar jar包名稱 方法入口所在的類
如:
hadoop jar hadoopTest.jar ch03.test Test
可以通過(guò)50030端口來(lái)監(jiān)控Job的并行狀態(tài),這里就不多說(shuō)了?。?/p>
解釋:
1、配置Jar地址可以解決打包所生成的jar包后,運(yùn)行時(shí)出現(xiàn)ClassNotFound的問(wèn)題;
2、給多個(gè)Job設(shè)定setJarByClass,經(jīng)測(cè)試,如果不設(shè)定此類,運(yùn)行時(shí)會(huì)出現(xiàn)ClassNotFound錯(cuò)誤,其中CapuseDateTimerTask為Main方法所在的類名;
3、waitForCompletion與submit方法是有區(qū)別的,waitForCompletion是串行,而submit是并行,正是因?yàn)閟ubmit是并行所以后續(xù)的代碼操作需要取其執(zhí)行是否完成的狀態(tài)來(lái)做判斷處理即:isComplete();
4、以上Job采用的是:org.apache.hadoop.mapreduce.Job
以上代碼操作在單機(jī)/集群上測(cè)試都通過(guò)!
如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
Jmeter JDBC請(qǐng)求常見(jiàn)問(wèn)題解決方案
這篇文章主要介紹了Jmeter JDBC請(qǐng)求常見(jiàn)問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
簡(jiǎn)單了解Thymeleaf語(yǔ)法 數(shù)據(jù)延遲加載使用實(shí)例
這篇文章主要介紹了簡(jiǎn)單了解Thymeleaf語(yǔ)法 數(shù)據(jù)延遲加載使用實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2010-05-05
Mybatis中isNotNull與isNotEmpty的使用心得
這篇文章主要介紹了Mybatis中isNotNull與isNotEmpty的使用心得,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
簡(jiǎn)單說(shuō)說(shuō)JVM堆區(qū)的相關(guān)知識(shí)
今天給大家?guī)?lái)的是關(guān)于Java虛擬機(jī)的相關(guān)知識(shí),文章圍繞著JVM堆區(qū)展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06
關(guān)于log4j漏洞修復(fù)解決方案及源碼編譯
Log4j?是Apache為Java提供的日志管理工具。他與System.out.println()的作用相似,用來(lái)跟蹤、調(diào)試、維護(hù)程序。這篇文章主要介紹了關(guān)于log4j漏洞修復(fù)解決方案及源碼編譯,需要的朋友可以參考下2021-12-12
Java加載本地庫(kù)的方法之System.load與System.loadLibrary
最近在做的工作要用到本地方法,所以下面這篇文章主要介紹了Java加載本地庫(kù)的方法之System.load與System.loadLibrary的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-09-09

