最近准备学习使用Tez,因此从官网下载了最新的Tez 0.8.3源码,按照安装教程编译使用。平时使用的集群环境是离线的,本打算这一次也进行离线编译,无奈一编译就开始报缺少jar包的错,即使手动下载jar包复制到目录、尝试使用Maven的包安装命令,还是无法消除错误。只得尝试在联网环境下先进行编译(环境与离线集群环境相同),再看编译得到的jar包是否可以在Hadoop离线集群上正常使用了。

  之前从没接触过Maven,网上资料也多是和Eclipse放在一起,作为Eclipse的一个插件来说明的。时间紧张,这次编译过程中我也没有花特别多时间去研究Maven原理和复杂操作,一切遇到的报错,都以编译成功Tez为首要目标,所幸编译过程中遇到的几个问题都是网络传输问题,稍微了解了下pom.xml文件的作用,读懂报错信息多做尝试就解决了。本文主要记录编译过程中的报错和尝试并最终成功解决的方法,以作备案,对错误的原因和解决背后原理不做深究。

编译环境:

CentOS  6.5, Maven 3.0.5, protobuf 2.5.0, Apache Tez源码0.8.3

1. 无法从中央仓库(Central Repository)传输(url)jar包,Return code is: 405 , ReasonPhrase:Not Allowed.”

  报错信息没有保存完整,大致意思就是无法下载某一jar包,并提示了一个错误返回码。最初以为该错误码是Maven的错误码,搜了好久未有所得,后来才发现405是尝试下载Jar包时服务器返回的HTTP错误码,即无法按报错信息中的url下载到jar包。

  需要更改POM文件中的仓库设置,增加新的有效的远程仓库地址,这样即可成功下载jar包并继续编译过程。

  在Tez文件夹下的pom.xml的<repositories> 标签下照已有的标签复制粘贴一组新的<repository>,id和name随便起一下,然后在url处粘新的repository网站地址。
在一篇文章里看到了一个搜mvn组件很有用的网站,可以直接从搜索结果里下载jar包,根据jar包的下载地址一级域名即可得到新的有效的repository地址,该搜索网站为http://search.maven.org/

2. [ERROR] Failed to execute goal com.github.eirslett:frontend-maven-plugin:0.0.22:install-node-and-npm (install node and npm) on project tez-ui: Could not download Node.js: Got error code 404 from the server.

[ERROR] Failed to execute goal com.github.eirslett:frontend-maven-plugin:0.0.22:install-node-and-npm (install node and npm) on project tez-ui: Could not download Node.js: Got error code 404 from the server. -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn <goals> -rf :tez-ui

  无法下载nodejs安装文件,在tez文件夹下运行mvn时,无法得到完整的报错信息。注意到该报错是编译子project tez-ui时的错误,进入tez-ui文件夹,再次执行 mvn clean package -DskipTests=true -Dmaven.javadoc.skip=true

  

  从INFO部分,可以看到是在尝试下载node时发生了错误。复制下载链接在浏览器中打开是可以下载的,但是在虚拟机中的浏览器中尝试下载却返回了404(明明同个文件夹下其他文件都可以正常下载,诡异的很)。该下载链接改为https也可以正常下载,无奈搜索tez-ui文件夹下的文章也没找到node下载链接是哪里设置的,故无法更改下载方式和下载链接。

  转换思路,尝试下载其他版本的node是可以的。尝试更改tez-ui目录下的pom.xml中node的版本,从0.12.2改成0.12.3,回到tez目录下再次执行编译,报错解决。

  tez-ui2也有类似问题,同理需要改tez-ui2文件夹下的pom.xml文件中node的版本,从0.12.2改为0.12.3

3.[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.3.2:exec (Bower install) on project tez-ui: Command execution failed. Process exited with an error: 1 (Exit value: 1) -> [Help 1]

[DEBUG] Executing command line: [/home/joy/tez/apache-tez-0.8.3-src/tez-ui/src/main/webapp/node/node, node_modules/bower/bin/bower, install, --remove-unnecessary-resolutions=false]
bower FileSaver.js#24b303f49213b905ec9062b708f7cd43d56a5dde ENOGIT git is not installed or not in the PATH
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 41.785s
[INFO] Finished at: Sat Jun 11 05:09:35 PDT 2016
[INFO] Final Memory: 9M/22M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.3.2:exec (Bower install) on project tez-ui: Command execution failed. Process exited with an error: 1 (Exit value: 1) -> [Help 1]

  根据INFO上一行的最后输出

bower FileSaver.js#24b303f49213b905ec9062b708f7cd43d56a5dde ENOGIT git is not installed or not in the PATH

  是系统中没有安装git,使用yum install git安装git即可

  最终编译成功,现在还没有部署到离线环境看能不能成功运行,找了篇安装博客,如果出现问题之后再记录解决过程。

CentOS 6.5 Maven 编译 Apache Tez 0.8.3 踩坑/报错解决记录的更多相关文章

  1. 使用自编译的Emacs26.0.50build10版本,helm报错(已解决)

    使用自编译的Emacs26.0.50build10版本,helm报错(已解决) */--> code {color: #FF0000} pre.src {background-color: #0 ...

  2. Maven package 报错解决记录以及编译scala的pom.xml

    可以打包的pom.xml: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:/ ...

  3. centos 7.0运行docker出现内核报错解决方法

    目前我这里docker是运行在centos 7.0系统里,使用1.5版本docker,最近一台服务器总是不定期死机,通过查看日志发现属于内核bug导致,报错信息如下 1 2 3 4 5 6 7 8 9 ...

  4. android 5.0以下版本使用atof报错解决

    经过测试,如果手机系统在5.0之下,项目project.properties的target若在5.0以上(android-20), NDK 使用atof就会报错: cannot locate symb ...

  5. 关于nested exception is org.apache.ibatis.binding.BindingException:Parameter '***' not found报错解决

    几天晚上遇到的奇怪的问题  传入的参数名一直没有变   但是从mapper到xml似乎有一个找不到参数的报错,实际上只要在Mapper接口形参前加“@Param(“形参名称”)”就可以了

  6. eclipse创建的maven项目,pom.xml文件报错解决方法

    [错误一:]maven 编译级别过低 [解决办法:] 使用 maven-compiler-plugin 将 maven 编译级别改为 jdk1.6 以上: <!-- java编译插件 --> ...

  7. 导入Maven 工程pom.xml首行报错解决方法

    1.利用IDE导入一个Maven工程,但是pom.xml文件首行报错,发现是maven版本需要升级 2.在pom.xml文件 增加配置 <properties> <maven-jar ...

  8. Android Studio support 26.0.0-alpha1 Failed to resolve: com.android.support:appcompat-v7:27.+ 报错解决方法

    AS下如何生成自定义的.jks签名文件, 以及如何生成数字签名 链接:http://www.cnblogs.com/smyhvae/p/4456420.html 链接:http://blog.csdn ...

  9. HDP 3.1.0 集成 Sqoop2 踩坑问题记录

    HDP 3.1.0 集成 Sqoop2 踩坑问题记录 本文原始地址:https://sitoi.cn/posts/65261.html 问题一 $ sqoop:000> start job -n ...

随机推荐

  1. bzoj3034: Heaven Cow与God Bull

    Description __int64 ago,there's a heaven cow called sjy...A god bull named wzc fell in love with her ...

  2. Saltstack系列1:安装配置

    安装 安装EPEL作为安装Ansible的yum源(CentOS6.4) rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel-release ...

  3. C基础--函数指针的使用

    之前在看代码的时候,看了函数指针的使用,大体分为如下几类: 做一个function list,通过指针索引调用,使得处理功能类似的函数看起来更加清晰: 函数指针作为另一个函数的参数,用作回调: lin ...

  4. 347. Top K Frequent Elements

    Given a non-empty array of integers, return the k most frequent elements. For example,Given [1,1,1,2 ...

  5. 黄聪:VS2010开发T4模版引擎之基础入门

    原文:http://www.cnblogs.com/lzrabbit/archive/2012/07/15/2591085.html 额,T4好陌生的名字,和NuGet一样很悲催,不为世人所熟知,却又 ...

  6. 在指定路径下查找并打印mdb类型文件

    1 #encoding:utf8 import os fpath = 'D:\Download\LP传奇-麒麟传说\Date' rfile = '' files = [] mdbFiles = [] ...

  7. 单实例Singleton

    单实例Singleton设计模式可能是被讨论和使用的最广泛的一个设计模式了,这可能也是面试中问得最多的一个设计模式了.这个设计模式主要目的是想在 整个系统中只能出现一个类的实例.这样做当然是有必然的, ...

  8. CF109 C. Lucky Tree 并查集

    Petya loves lucky numbers. We all know that lucky numbers are the positive integers whose decimal re ...

  9. JAVA break终止循环,与continue进入下一次循环

    一.break终止循环 在循环中,遇到break;将会跳出循环,继续往下执行代码 public class Test{ public static void main(String[] args){ ...

  10. mysql 实现oracle start with connect by递归

    在Oracle 中我们知道有一个 Hierarchical Queries 通过CONNECT BY 我们可以方便的查了所有当前节点下的所有子节点.但很遗憾,在MySQL的目前版本中还没有对应的功能. ...