1、遇到的问题2、修改3、遇到的坑4、资源
1、遇到的问题本人在学习 Hive 时想要使用 Tez 计算引擎,但是本人安装的Apache Hadoop 3.3.1和Apache Hive 3.1.2都是比较新的版本,导致从网上直接下载的 Tez 安装包或是压缩包都是没有支持Hadoop 3.3.1版的。所以只能自己下载修改源码,搭建环境再编译。
2、修改先是搭建环境:编译 Tez 的编译环境就是在网上很容易找到,重点就是protobuf-2.5.0版本要正确。
然后是pom.xml文件的修改:将hadoop.version修改成将要运行的Hadoop版本,将 tez-ui 注释掉。
3.3.1 ...
最后需要修改源码:
apache-tez-0.10.1-src/tez-plugins/tez-aux-services/src/main/java/org/apache/tez/auxservices目录下的ShuffleHandler.java
注释掉第156行: //import com.google.protobuf.ByteString; 将第800和801行的 .setIdentifier(ByteString.copyFrom(jobToken.getIdentifier())) .setPassword(ByteString.copyFrom(jobToken.getPassword())) 替换为 .setIdentifier(TokenProto.getDefaultInstance().getIdentifier().copyFrom(jobToken.getIdentifier())) .setPassword(TokenProto.getDefaultInstance().getPassword().copyFrom(jobToken.getPassword()))
和apache-tez-0.10.1-src/tez-plugins/tez-aux-services目录下的findbugs-exclude.xml
再去apache-tez-0.10.1-src目录下用maven打包就没有问题了
mvn clean package -DskipTests=true -Dmaven.javadoc.skip=true3、遇到的坑
在编译tez-aux-services时总是报错:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1: compile (default-compile) on project tez-aux-services: Compilation failure [ERROR] /opt/software/apache-tez-0.10.1-src/tez-plugins/tez-aux-services/src/main/java/org/apache/ tez/auxservices/ShuffleHandler.java:[800,48] 不兼容的类型: com.google.protobuf.ByteString 无法转换为org.apache.hadoop.thirdparty.protobuf.ByteString
在网上找了很久的解决方法,最终在ShuffleHandler 与 Hadoop 3.3.0 #129的源不兼容找到了解决办法,也就是上面的对ShuffleHandler.java和findbugs-exclude.xml的修改。在之后的版本中这个问题可能会被修复,之后的版本在重新打包 Tez 时可以先只修改pom.xml,如果不行再去修改源码。
4、资源编译好的 Tez 资源我已放在云盘,需要的可以自取。
链接:https://pan.baidu.com/s/11aRosG7nK9Rsx1YUP1isJA
提取码:ps45
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)