这两天让PM给烦死了,这边是python跑mapreduce回溯任务,已经做好平台自动化方面,但出点小问题,先前是因为数据做迁移,运行环境又有所不同,所以自动化跑任务出点小问题。 今上午,自动化都解决后,又………..
下面这是跑mapreduce回溯作业时返回的错误,mapreduce如果有一个map任务失败,最后的结果也是无意思的。 所以我们要避免这样的情况发生,我这边是直接在java代码里面调整了timeout参数。 下面的还有个 Error: Java heap space的错误 ,这是内存不够用引起的,默认是800m内存,我调整了好几次,显示1.5G,但还是会报错,现在调整到2G … …
15/08/04 11:41:25 INFO mapreduce.Job: Running job: job_1434436132792_528525
15/08/04 11:41:50 INFO mapreduce.Job: Job job_1434436132792_528525 running in uber mode : false
15/08/04 11:41:50 INFO mapreduce.Job: map 0% reduce 0%
15/08/04 11:56:48 INFO mapreduce.Job: Task Id : attempt_1434436132792_528525_m_000314_0, Status : FAILED
AttemptID:attempt_1434436132792_528525_m_000314_0 Timed out after 600 secs
15/08/04 12:00:59 INFO mapreduce.Job: map 1% reduce 0%
15/08/04 12:01:42 INFO mapreduce.Job: Task Id : attempt_1434436132792_528525_m_000371_0, Status : FAILED
Error: Java heap space
15/08/04 12:05:37 INFO mapreduce.Job: map 2% reduce 0%
关于hbase跑mapreduce问题的文章,原文地址 http://xiaorui.cc/?p=1825
在下面的mapreduce代码中,我增加了timeout超时的时间,以及内存的使用,可以看到我调整到了2000m。 因为hbase属于公共服务,不能调节的太大,这样会影响别的业务的正常运行,尤其那种每天的日报。
conf.setLong(HConstants.HBASE_REGIONSERVER_LEASE_PERIOD_KEY, 6000000); conf.setInt("mapred.task.timeout", 1800000); conf.set("mapred.child.java.opts","-XX:+UseParallelGC -XX:ParallelGCThreads=4 -XX:GCTimeRatio=10 -XX:YoungGenerationSizeIncrement=20 -XX:TenuredGenerationSizeIncrement=20 -XX:AdaptiveSizeDecrementScaleFactor=2 -Xmx2000m");
我们再来看看调整超时和内存大小后,最终的结果.
15/08/04 16:08:58 INFO mapreduce.Job: map 99% reduce 0% 15/08/04 16:18:20 INFO mapreduce.Job: map 100% reduce 0% 15/08/04 16:23:15 INFO mapreduce.Job: map 100% reduce 33% 15/08/04 16:23:18 INFO mapreduce.Job: map 100% reduce 100% 15/08/04 16:23:19 INFO mapreduce.Job: Job job_1434436132792_529857 completed successfully 15/08/04 16:23:19 INFO mapreduce.Job: Counters: 60 File System Counters FILE: Number of bytes read=5053 FILE: Number of bytes written=95786204 FILE: Number of read operations=0 FILE: Number of large read operations=0 FILE: Number of write operations=0 HDFS: Number of bytes read=137106 HDFS: Number of bytes written=4841 HDFS: Number of read operations=1707 HDFS: Number of large read operations=0 HDFS: Number of write operations=2 Job Counters Launched map tasks=852
对于我这python当来说,java实在是闹腾的东西,每次修改个东西,还要用IDE来调整,好在我们这跑mapreduce的逻辑简单。
对于数据不严谨的情况,可以把计算好的数据扔到kafka
一般不都在配置里面指明内存大小么?