SIGs/bigdata/packaging/Ambari

From FedoraProject

< SIGs | bigdata | packaging(Difference between revisions)
Jump to: navigation, search
Line 22: Line 22:
 
{{admon/note|This is a module of powermock which is already packaged in Fedora, however the powermock package disables the easymock module.  According to the powermock documentation it supports easymock 3.1, which is what is currently packaged in F19.  It is likely the easymock module is disabled due to problems with multiple easymock versions in Fedora.}}
 
{{admon/note|This is a module of powermock which is already packaged in Fedora, however the powermock package disables the easymock module.  According to the powermock documentation it supports easymock 3.1, which is what is currently packaged in F19.  It is likely the easymock module is disabled due to problems with multiple easymock versions in Fedora.}}
  
== Python Version ==
+
== Dependency Version Mismatches ==
 +
=== Python ===
 
The ambari build/runtime is hard coded to use python2.6.  This needs to be cleaned up.  There are 2 ([https://issues.apache.org/jira/browse/AMBARI-1790 AMBARI-1790], [https://issues.apache.org/jira/browse/AMBARI-1779 AMBARI-1779]) upstream jiras with patches to address these issues, but they have bit rotted some.
 
The ambari build/runtime is hard coded to use python2.6.  This needs to be cleaned up.  There are 2 ([https://issues.apache.org/jira/browse/AMBARI-1790 AMBARI-1790], [https://issues.apache.org/jira/browse/AMBARI-1779 AMBARI-1779]) upstream jiras with patches to address these issues, but they have bit rotted some.
  
== Jetty Version ==
+
=== Jetty ===
 
The current version of jetty in Fedora is jetty 9, but ambari is asing for jetty 7.  Ambari will need to be updated to support jetty 9.
 
The current version of jetty in Fedora is jetty 9, but ambari is asing for jetty 7.  Ambari will need to be updated to support jetty 9.
  
== Postgres Version ==
+
=== Postgres ===
 
The version of postgres in Fedora may require updates to the database initialization done by ambari.  There is an upstream [https://issues.apache.org/jira/browse/AMBARI-1792 patch] to address this.
 
The version of postgres in Fedora may require updates to the database initialization done by ambari.  There is an upstream [https://issues.apache.org/jira/browse/AMBARI-1792 patch] to address this.
  
== Multiple Versions of Easymock in Fedora ==
+
=== Easymock ===
 
In F19 there are currently 3 easymock packages, one for 1.x, one for 2.x, and one for 3.x.  ambari actually needs the newer 3.x line of easymock.  Unfortunately the jar resolver is non-deterministic when multiple jars have the same gid:aid, as is the case with the 3 easymock packages.  The easymock2 package seems to get top billing which causes the ambari and the powermock easymock module builds to fail.
 
In F19 there are currently 3 easymock packages, one for 1.x, one for 2.x, and one for 3.x.  ambari actually needs the newer 3.x line of easymock.  Unfortunately the jar resolver is non-deterministic when multiple jars have the same gid:aid, as is the case with the 3 easymock packages.  The easymock2 package seems to get top billing which causes the ambari and the powermock easymock module builds to fail.
  

Revision as of 15:06, 24 September 2013

This is an evaluation by the Big Data SIG of the issues that need to be addressed in order to get Ambari into Fedora. All of this work has been done on the 1.2.5 branch, which doesn't support hadoop 2.x.

Contents

Issues To Be Resolved

Missing node.js Dependencies

The ambari build uses brunch and other node.js parts to generate static web content. A significant portion of the dependency chain for the node.js parts are not in Fedora and would need to be packaged. There are a few ways to handle the node.js dependency chain:

  1. Package all the node.js dependencies as individual rpms
  2. Package all the node.js dependencies as a single rpm
  3. Note.png
    This is at best a stop-gap solution that may not pass Fedora packaging review. If this is a feasible path, a process will need to be established to break out these bundled dependencies over time. The long time goal for brining all of these node.js bits into Fedora should be individual packages
  4. Work with upstream to remove the need to generate the static web content
  5. Note.png
    For example, this could be done by upstream including the generated web content as part of a release
  6. Re-implement the node.js parts in source native to ambari
  7. Find similar functionality that is already packaged in Fedora and provide support for its use in the ambari build
  8. Abandon packaging ambari for Fedora

Missing Java Dependencies

There are only 2 java dependencies that aren't in Fedora that ambari needs, with a 3rd existing package needing modification.

  1. org.xerial:sqlite-jdbc
  2. org.springframework:spring-mock
  3. org.powermock:powermock-api-easymock
Note.png
This is a module of powermock which is already packaged in Fedora, however the powermock package disables the easymock module. According to the powermock documentation it supports easymock 3.1, which is what is currently packaged in F19. It is likely the easymock module is disabled due to problems with multiple easymock versions in Fedora.

Dependency Version Mismatches

Python

The ambari build/runtime is hard coded to use python2.6. This needs to be cleaned up. There are 2 (AMBARI-1790, AMBARI-1779) upstream jiras with patches to address these issues, but they have bit rotted some.

Jetty

The current version of jetty in Fedora is jetty 9, but ambari is asing for jetty 7. Ambari will need to be updated to support jetty 9.

Postgres

The version of postgres in Fedora may require updates to the database initialization done by ambari. There is an upstream patch to address this.

Easymock

In F19 there are currently 3 easymock packages, one for 1.x, one for 2.x, and one for 3.x. ambari actually needs the newer 3.x line of easymock. Unfortunately the jar resolver is non-deterministic when multiple jars have the same gid:aid, as is the case with the 3 easymock packages. The easymock2 package seems to get top billing which causes the ambari and the powermock easymock module builds to fail.

The fact that none of the easymock packages have been updated to the latest packaging guidelines complicates a resolution because none of them are being registered as compatibility packages and each of them is claiming to be the primary version of easymock. This apparently means Fedora's mechanism for resolving compatibility packages (which requires the build to query for the exact version in the compatibility package) won't work.

On F19 easymock2 gets top billing over eaymock3 when easymock is resolved. easymock2 is supposed to be retired in F20, and the long term goal seems to be to get rid of the easymock3 package and have a single easymock package on the 3.x stream. It is possible this could get done for F21.

It is possible that F20 will be a "good enough" solution to remove the easymock road block for ambari and powermock.

Compilation Errors

There are various compilation issues due to newer/different version of java dependencies. These should be resolved with upstream if possible.

Open Issues

Hadoop 2.x Support

The current ambari release (1.2) does not support the hadoop 2.x series, which is the version of hadoop packaged in Fedora. A timeline for hadoop 2.x support from upstream would be helpful. Related jira here.