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对象所占的内存大小 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
父类私有变量是否被子类继承详细解说(答案:内存中存在,但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这两个属性设置成true,表示使用新的api接口。老的API接口的配置属性和新的配置属性是不一样的,mapreduce打头的属性都是新接口属性,老接口属性是mapred打头的。
下面用图形化的方式来描述如何创建一个workflow
1 新建一个workflow:
这里我们新建了一个workflow叫test5,然后点击保存。
2 查看一下这个workflow的工作目录在哪:
可以看到如图所示的工作目录,现在工作目录下面是空的,等提交了workflow后,在工作目录下面就会生成workflow.xml还有lib目录,里面存放相应的依赖包.
3 编辑这个workflow,拖一个mapreduce action到start和end之间:
转到mapreduce action的编辑界面,
Jar名称选择你自己编写的wordcount类打成的jar包,这个JAR包必须上传到HDFS上,我这里存放在HDFS的/sharelib目录下面。
准备阶段新增一个“添加删除”动作,填写删除的目录,因为mapreduce输出目录如果存在的话,提交JOB的时候会报错无法提交,所以在提交JOB之前需要删除输出目录,这里输出目录的写法是${outputDir},为EL表达式语言,即对输出目录进行了参数化,当你在提交workflow的时候,会弹出一个对话框让你填写这些参数。
job属性配置:
作业XML设置:
JOB属性配置会覆盖作业XML文件中的配置。作业XML一般都是配置一些通用的不长改变的属性,存成一个文件放到HDFS上去,经常变的就放到job属性配置中一个一个的配置。
3 配置好后,提交workflow,填写输入目录和输出目录两个参数,就job就开始运行了。
说明:oozie提交mapreduce job和传统的通过hadoop jar方式运行job不同,hadoop jar方式把该配置的属性都写在main方法里面了,而oozie提交mapreduce不能这样做,所以必须把传统的main方法里设置的属性,都作为job属性设置一项一项的设置上。至于具体的属性名,可以通过查看源代码来找到,比如job.setMapperClass(TokenizerMapper.class);可以点进这个方法里面去看到底设置的是哪个属性名,常用的属性名都定义在MRJobConfig这个类中,比如public static final String MAP_CLASS_ATTR = "mapreduce.job.map.class";定义的是将要使用的map类。
workflow提交后,我们再次去查看工作区,可以看到如下图:
工作区下面多了workflow.xml和lib目录,lib目录里存放的是我们刚才设置的jar文件:
workflow.xml内容就是本文开头描述的XML代码片段。
网友评论