凤凰构建失败。找不到标志。凤凰 4.8.2 Hbase-1.2 cdh 5.9.1

Phoenix Build fail. Cannot find Symbol. Phoenix 4.8.2 Hbase-1.2 cdh 5.9.1

我在 Cloudera 的 Hadoop 和 Hbase 安装上安装 Apache Phoenix 4.8.2-Hbase-1.2(即,两者都是通过 cdh 5.9.1 安装的)

按照以下说明在其上构建 Phoenix:

现在当我运行sudo mvn install -DskipTests

我在 phoenix-core 编译中遇到这个错误:

[INFO] Reactor Summary:
[INFO] 
[INFO] Apache Phoenix .................................... SUCCESS [5.569s]
[INFO] Phoenix Core ...................................... FAILURE [2:30.148s]
[INFO] Phoenix - Flume ................................... SKIPPED
[INFO] Phoenix - Pig ..................................... SKIPPED
[INFO] Phoenix Query Server Client ....................... SKIPPED
[INFO] Phoenix Query Server .............................. SKIPPED
[INFO] Phoenix - Pherf ................................... SKIPPED
[INFO] Phoenix - Spark ................................... SKIPPED
[INFO] Phoenix - Hive .................................... SKIPPED
[INFO] Phoenix Client .................................... SKIPPED
[INFO] Phoenix Server .................................... SKIPPED
[INFO] Phoenix Assembly .................................. SKIPPED
[INFO] Phoenix - Tracing Web Application ................. SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2:37.862s
[INFO] Finished at: Fri Jan 20 13:02:44 IST 2017
[INFO] Final Memory: 68M/714M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.0:compile (default-compile) on project phoenix-core: Compilation failure: Compilation failure:
[ERROR] /opt/apache-phoenix-4.8.2-HBase-1.2-src-copy/phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixMRJobUtil.java:[222,29] cannot find symbol
[ERROR] symbol:   variable QUEUE_NAME
[ERROR] location: interface org.apache.hadoop.mapreduce.MRJobConfig
[ERROR] /opt/apache-phoenix-4.8.2-HBase-1.2-src-copy/phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixMRJobUtil.java:[226,32] cannot find symbol
[ERROR] symbol:   variable MAP_MEMORY_MB
[ERROR] location: interface org.apache.hadoop.mapreduce.MRJobConfig
[ERROR] /opt/apache-phoenix-4.8.2-HBase-1.2-src-copy/phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixMRJobUtil.java:[227,29] cannot find symbol
[ERROR] symbol:   variable MAP_JAVA_OPTS
[ERROR] location: interface org.apache.hadoop.mapreduce.MRJobConfig
[ERROR] /opt/apache-phoenix-4.8.2-HBase-1.2-src-copy/phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixMRJobUtil.java:[229,54] cannot find symbol
[ERROR] symbol:   variable QUEUE_NAME
[ERROR] location: interface org.apache.hadoop.mapreduce.MRJobConfig
[ERROR] /opt/apache-phoenix-4.8.2-HBase-1.2-src-copy/phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixMRJobUtil.java:[230,39] cannot find symbol
[ERROR] symbol:   variable MAP_MEMORY_MB
[ERROR] location: interface org.apache.hadoop.mapreduce.MRJobConfig
[ERROR] /opt/apache-phoenix-4.8.2-HBase-1.2-src-copy/phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixMRJobUtil.java:[231,39] cannot find symbol
[ERROR] symbol:   variable MAP_JAVA_OPTS
[ERROR] location: interface org.apache.hadoop.mapreduce.MRJobConfig
[ERROR] -> [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 :phoenix-core

无法在 org.apache.hadoop.mapreduce.MRJobConfig class 中找到 QUEUE_NAME MAP_MEMORY_MBMAP_JAVA_OPTS。 cloudera hadoop 2.6 不包含这些变量吗?

而且 PhoenixMRJobUtil.java 中只有这个 public static void updateCapacityQueueInfo(Configuration conf) 函数正在使用这些变量并导致编译失败。这是为容量调度程序提供信息的功能。评论此函数及其从 phoenix 代码的调用是否安全,因为我安装这些仅用于本地测试而不是用于生产环境。

否则还有什么解决办法? hadoop 2.6 和 phoenix 4.8.2 不兼容吗?

终于成功为cdh5.9.1(Hbase 1.2.0和Hadoop 2.6.0)构建了Phoenix 4.8.2。这些问题是由于 Phoenix 4.8.2 与 cdh5.9.1 不兼容造成的。

在尝试更改 phoenix 代码以成功编译它之后,我从这个 repo 中检查了 phoenix 4.8Hbase-1.2-cdh5.8 分支,其中大部分代码更改已经完成以使其兼容:

https://github.com/chiastic-security/phoenix-for-cloudera/branches

原来这个分支虽然适用于 cdh5.8,但也适用于我的 cdh5.9.1。刚刚更改了 pom.xml 文件中的 hbase 和 hadoop.two(包括 mr)版本并添加了这个:

</repository>
    <repository>
  <id>conjars.org</id>
  <url>http://conjars.org/repo</url>
</repository>
<repository>
  <id>apache snapshot</id>
  <url>https://repository.apache.org/content/repositories/snapshots/</url>
  <snapshots>
    <enabled>true</enabled>
  </snapshots>
</repository>
<repository>
  <id>sonatype-nexus-snapshots</id>
  <name>Sonatype Nexus Snapshots</name>
  <url>https://oss.sonatype.org/content/repositories/snapshots</url>
  <snapshots>
    <enabled>true</enabled>
  </snapshots>
</repository>

还将 pigjacksonslf4jflumespark 的版本信息替换为原始来源的 pom.xml 这里:

http://www-us.apache.org/dist/phoenix/apache-phoenix-4.8.2-HBase-1.2/src/