http://yueyemaitian.iteye.com/blog/2033046
http://www.cnblogs.com/niurougan/p/4196048.html
http://www.cnblogs.com/magialmoon/p/3757767.html
http://www.cnblogs.com/merru/articles/4626907.html
如何查看java對(duì)象所占的內(nèi)存大小 http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380146d96864968d4e414c42246141a38b5ec7b764b4589c677640ab21a1cacab672c601e76e0dd9bd3149ca6992b298e20347308c31c528516f7980276d621e04d99af0e90b1e742e7b9a2d5c85523dd23016df6f69c2b7403be6ee71541f4d79f5f632c07caeb2712fb4e7659885547a13788f7446f10f0f7&p=8b2a975486cc42a95dad8268460e9c&newp=98759a46d0c61df20be2963c5c5d8f231610db2151d7d5136b82c825d7331b001c3bbfb42324120ed9cf7d6107af4f5ceafb34763d0923a3dda5c91d9fb4c57479d47a&user=baidu&fm=sc&query=java%B2%E9%BF%B4%B6%D4%CF%F3%C4%DA%B4%E6%D5%BC%D3%C3&qid=c1616f830003af61&p1=4
父類私有變量是否被子類繼承詳細(xì)解說(答案:內(nèi)存中存在,但sun公司定義為不繼承)
所以這才是真正的繼承!? 以下為原理圖,作參考!
? ? ? ? ? ? ? ? ? ? ? ? ? ? ${jobTracker}? ? ? ? ? ? ${nameNode}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /shareScripts/xxmapred-site.xml? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mapreduce.job.map.class? ? ? ? ? ? ? ? ? ? com.besttone.hbase.demo.WordCount$TokenizerMapper? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mapreduce.job.reduce.class? ? ? ? ? ? ? ? ? ? com.besttone.hbase.demo.WordCount$IntSumReducer? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mapreduce.job.combine.class? ? ? ? ? ? ? ? ? ? com.besttone.hbase.demo.WordCount$IntSumReducer? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mapreduce.job.output.key.class? ? ? ? ? ? ? ? ? ? org.apache.hadoop.io.Text? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mapreduce.job.output.value.class? ? ? ? ? ? ? ? ? ? org.apache.hadoop.io.IntWritable? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mapreduce.input.fileinputformat.inputdir? ? ? ? ? ? ? ? ? ? ${inputDir}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mapreduce.output.fileoutputformat.outputdir? ? ? ? ? ? ? ? ? ? ${outputDir}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mapred.mapper.new-api? ? ? ? ? ? ? ? ? ? true? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mapred.reducer.new-api? ? ? ? ? ? ? ? ? ? true? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mapreduce.job.reduces? ? ? ? ? ? ? ? ? ? 1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]? ? ? ?
配置文件要注意的地方:
mapred.mapper.new-api和mapred.reducer.new-api這兩個(gè)屬性設(shè)置成true,表示使用新的api接口。老的API接口的配置屬性和新的配置屬性是不一樣的,mapreduce打頭的屬性都是新接口屬性,老接口屬性是mapred打頭的。
下面用圖形化的方式來描述如何創(chuàng)建一個(gè)workflow
1 新建一個(gè)workflow:
這里我們新建了一個(gè)workflow叫test5,然后點(diǎn)擊保存。
2 查看一下這個(gè)workflow的工作目錄在哪:
可以看到如圖所示的工作目錄,現(xiàn)在工作目錄下面是空的,等提交了workflow后,在工作目錄下面就會(huì)生成workflow.xml還有l(wèi)ib目錄,里面存放相應(yīng)的依賴包.
3 編輯這個(gè)workflow,拖一個(gè)mapreduce action到start和end之間:
轉(zhuǎn)到mapreduce action的編輯界面,
Jar名稱選擇你自己編寫的wordcount類打成的jar包,這個(gè)JAR包必須上傳到HDFS上,我這里存放在HDFS的/sharelib目錄下面。
準(zhǔn)備階段新增一個(gè)“添加刪除”動(dòng)作,填寫刪除的目錄,因?yàn)閙apreduce輸出目錄如果存在的話,提交JOB的時(shí)候會(huì)報(bào)錯(cuò)無法提交,所以在提交JOB之前需要?jiǎng)h除輸出目錄,這里輸出目錄的寫法是${outputDir},為EL表達(dá)式語言,即對(duì)輸出目錄進(jìn)行了參數(shù)化,當(dāng)你在提交workflow的時(shí)候,會(huì)彈出一個(gè)對(duì)話框讓你填寫這些參數(shù)。
job屬性配置:
作業(yè)XML設(shè)置:
JOB屬性配置會(huì)覆蓋作業(yè)XML文件中的配置。作業(yè)XML一般都是配置一些通用的不長(zhǎng)改變的屬性,存成一個(gè)文件放到HDFS上去,經(jīng)常變的就放到j(luò)ob屬性配置中一個(gè)一個(gè)的配置。
3 配置好后,提交workflow,填寫輸入目錄和輸出目錄兩個(gè)參數(shù),就job就開始運(yùn)行了。
說明:oozie提交mapreduce job和傳統(tǒng)的通過hadoop jar方式運(yùn)行job不同,hadoop jar方式把該配置的屬性都寫在main方法里面了,而oozie提交mapreduce不能這樣做,所以必須把傳統(tǒng)的main方法里設(shè)置的屬性,都作為job屬性設(shè)置一項(xiàng)一項(xiàng)的設(shè)置上。至于具體的屬性名,可以通過查看源代碼來找到,比如job.setMapperClass(TokenizerMapper.class);可以點(diǎn)進(jìn)這個(gè)方法里面去看到底設(shè)置的是哪個(gè)屬性名,常用的屬性名都定義在MRJobConfig這個(gè)類中,比如public static final String MAP_CLASS_ATTR = "mapreduce.job.map.class";定義的是將要使用的map類。
workflow提交后,我們?cè)俅稳ゲ榭垂ぷ鲄^(qū),可以看到如下圖:
工作區(qū)下面多了workflow.xml和lib目錄,lib目錄里存放的是我們剛才設(shè)置的jar文件:
workflow.xml內(nèi)容就是本文開頭描述的XML代碼片段。