设为首页 收藏本站
查看: 955|回复: 0

[经验分享] 使用hadoop编写mapreduce程序的注意点

[复制链接]

尚未签到

发表于 2016-12-8 11:03:44 | 显示全部楼层 |阅读模式
编程时需要注意:
  1、实例化job后,不要再使用原来的configuration,而需通过job.getCongfigure()来进行参数的配置

public static Job createSubmittableJob(Configuration conf, String[] args)
throws IOException {
String tableName = args[0];
conf.set(TableInputFormat.INPUT_TABLE, tableName);
conf.set(TableInputFormat.SCAN,
ScanAccessor.getTableInputFormatScan(conf, tableName));
Job job = new Job(conf,
Index.class.getSimpleName() + "_" + tableName + ":" + Utils.now());
job.setJarByClass(Index.class);
// conf.set(..., ...);
job.getConfiguration().set(...
  2、map输出的keyvalue与reduce的输出keyvalue对象不统一。但是还是把reduce作为combine类。

job.setMapperClass(TokenizerMapper.class);
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(FloatWritable.class);
job.setOutputKeyClass(Text.class);
//job.setOutputValueClass(FloatWritable.class);
job.setOutputValueClass(Text.class);
  这样的错误,出现后,如果不是认真的查看的话,还是比较难发现的!
  如果map和reduce的keyvalue类型不同时,不要把Reduce的类作为Combine的处理类!
  3、聚合类型的操作才使用reduce
  OK: sqoop导数据功能
  DAD: hadoop contrib index (详...)
  4、命令行参数的顺序
  -D参数,以及Hadoop内置的参数, 必须放在class后面,不能跟在args
  · ERROR
  % hadoop jar hadoop-*-examples.jar sort -r numbers.seq sorted \
-inFormat org.apache.hadoop.mapred.SequenceFileInputFormat \
-outFormat org.apache.hadoop.mapred.SequenceFileOutputFormat \
-outkey org.apache.hadoop.io.IntWritable \
-outvalue org.apache.hadoop.io.Text 
  · OK
  % hadoop jar hadoop-*-examples.jar sort -r \
-inFormat org.apache.hadoop.mapred.SequenceFileInputFormat \
-outFormat org.apache.hadoop.mapred.SequenceFileOutputFormat \
-outkey org.apache.hadoop.io.IntWritable \
-outvalue org.apache.hadoop.io.Text \
numbers.seq sorted

配置属性注意点:
  1、开启trash

<property>
<name>fs.trash.interval</name>
<value>720</value>
</property>
  2、去除mapreduce完成后"SUCCESS","history目录"
  3、共享jvm
  4、不要关闭mapreduce的超时

Configuration conf = ...
conf.set("hadoop.job.history.user.location", "none");
conf.setBoolean("mapreduce.fileoutputcommitter.marksuccessfuljobs", false);
conf.set("mapred.job.reuse.jvm.num.tasks", "-1");
// conf.set("mapred.task.timeout", "0");
  5、 pid的存放目录最好自定义。长期放置在tmp下的文件会被清除。
  http://winseclone.iyunv.com/blog/1772989

export HADOOP_PID_DIR=/var/hadoop/pids
  Hadoop入门资料:
  1 官网
  2 https://ccp.cloudera.com/display/DOC/Hadoop+Tutorial

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-311440-1-1.html 上篇帖子: 使用hadoop编写mapreduce程序的注意点 下篇帖子: 浅析 Hadoop 中的数据倾斜
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表