hack Hadoop编译脚本突破版本兼容性限制
我们都知道Hadoop在内部各个节点通信的时候, 必须保证两者版本是一致的(0.19是这样, 0.20以上的不知道). 也就是说JobTracker和TaskTracker必须使用相同的编译版本, 如果不一致, 可能会出现如下错误:
2010-06-07 23:24:10,863 ERROR org.apache.hadoop.mapred.TaskTracker: Shutting down. Incompatible buildVersion.JobTracker's: 0.19.1-tmp from 79483 by dangyuan on Mon Jan 25 10:49:47 CST 2010TaskTracker's: 0.19.1-tmp from 79483 by dangyuan on Mon Jan 25 10:50:12 CST 2010
/* * Generated by src/saveVersion.sh */@HadoopVersionAnnotation(version="0.19.1-tmp", revision="79483", user="dangyuan", date="Mon Jan 25 10:49:47 CST 2010", url="http://svn.dangyuan.com/repos/trunk/hadoop-core")package org.apache.hadoop;
...mkdir -p build/src/org/apache/hadoop#cat << EOF | \# sed -e "s/VERSION/$version/" -e "s/USER/$user/" -e "s/DATE/$date/" \# -e "s|URL|$url|" -e "s/REV/$revision/" \# > build/src/org/apache/hadoop/package-info.java#/*# * Generated by src/saveVersion.sh# */#@HadoopVersionAnnotation(version="VERSION", revision="REV",# user="USER", date="DATE", url="URL")#package org.apache.hadoop;#EOF