1. 部署hadoop 2.2.0版本。注意修改tez的”pom.xml”中”hadoop.version”为当前环境下的版本号,默认情况下无需修改。
2. 在tez主文件下采用“mvn clean install -DskipTests=true -Dmaven.javadoc.skip=true”建立tez,下载jar包。先安装maven,然后需保证在联网情况下安装。
问题: protoc版本过低,需由2.4变为2.5:
解决方案:下载protoc2.5.0.bin.tar.gz2,解压然后进入,安装前先安装g++,
make clean,接着./configure –prefix=/opt/protoc/,make check然后make && make install。
3. 拷贝tez jars和他们的依赖包到HDFS中
i. 如果运行第二步中提到的命令,将在tez-dist/target/tez-0.2.0-full/tez-0.2.0-full中找到tez jars和他们的依赖包。
ii. 假设要将tez.jars放在了HDFS中的/apps/中,命令为:
hdfs dfs -mkdir /apps
hdfs dfs -ls /
hdfs dfs -put tez-dist/target/tez-0.2.0-full/tez-0.2.0-full /apps/
4. 配置tez-site.xml文件(若无则自行创建)将tez.lib.uris设置为指向HDFS中包含jars的路径。假设遵循第3步,值将是:"${fs.default.name}/apps/tez-0.2.0-full,${fs.default
.name}/apps/tez-0.2.0-full/lib/",将tez-site.xml复制到/etc/hadoop/文件夹下。
5. 修改mapred-site.xml,将“mapreduce.framework.name”的默认值“yarn”改为“yarn-tez”。
6. 设置HADOOP_CLASSPATH包含以下路径:
i. TEZ_CONF_DIR - tez-site.xml的位置
ii. TEZ_JARS和TEZ_JARS/libs - tez jars和依赖包的位置
具体如下,在hadoop_env.sh中修改:
export TEZ_CONF_DIR=/home/cloud/tez-0.2.0-incubating/tez-site.xml
export TEZ_JARS=/home/cloud/tez-0.2.0-incubating/tez-dist/target/tez-0.2.0-full/tez-0.2.0-full
for f in $TEZ_JARS/lib/*.jar; do
if [ "$HADOOP_CLASSPATH" ]; then
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$f
else
export HADOOP_CLASSPATH=$f
fi
done
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$TEZ_JARS/tez-api-0.2.0.jar
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$TEZ_CONF_DIR
7. 提交一个MR任务通常采用以下方式:
$HADOOP_PREFIX/bin/hadoop jar hadoop-mapreduce-client-jobclient-3.0.0-SNAPSHOT-tests.jar sleep -mt 1 -rt 1 -m 1 -r 1
这将使用TEZ DAG ApplicationMaster来运行MAP任务。这将能通过YARN的resourceManager UI的AM的log来验证。
8. 利用tez-mapreduce-examples.jar中的MRR任务有一种基本实例。参考源码中的OrderedWordCount.java。来运行以下实例:
$HADOOP_PREFIX/bin/hadoop jar tez-mapreduce-examples.jar orderedwordcount <input> <output>