[
https://issues.apache.org/jira/browse/BIGTOP-1422?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14122035#comment-14122035
]
Konstantin Boudnik commented on BIGTOP-1422:
--------------------------------------------
Appreciate the comments, guys! I see a bunch of meaningful objections here, so
lemme briefly share an implementation idea, before going into any design doc
effort. If the consensus would be "Yes, makes sense" - I will move to the
design doc production. So, here it goes:
# UPS is an archive. For better platform coverage let's make it a zip file
# UPS is versioned via the artifact name
# UPS is a vehicle to deliver the code and the functionality (aka services)
# code is delivered in a form of pre-provisioned directories tree without
leading '/' so it can be unpacked anywhere
# functionality are coming in a form of a bash script that is responsible for
## preparing the environment, dealing with alternatives and whatnots
## managing the application life-cycle (aren't Linux init scripts a bitch?)
## cleaning after itself in case of un-installs
# all functionality has a fixed entry point, called {{manage.sh}} and takes one
argument {{install|uninstall}}
# an aux orchestration layer, i.e. Puppet, would just call {{manage.sh}} with
correct argument and wait for the completion
Benefits (just a few):
# you don't need to learn how to create relocatable packages (not a very easy
task, apparently)
# easy integration into any cluster management facility: one interface to
implement
# you can choose the composition of the UPS and deliver everything as a single
archive or just some updates to it. The {{manage.sh}} will have the logic to do
what needs to be done. Which, in my opinion, fits the separation of concerns
paradigm.
# one can choose to bundle up _all_ system dependencies together to avoid
potential need to update your system before-hand. Just think how cool this is
to drop in a giant Hadoop UPS, that also delivers all required versions of
libc, etc.
# creation and/or installation of an UPS doesn't require anything but a {{zip}}
application (widely available)
# distribution is incredibly simple: wget, or scp to the target node, unpack
and start the script
# I am sure there's more
Things to solve:
# security: how to prevent potentially malicious code from getting executed as
a part of {{manage.sh}}. But I am pretty sure that will be easy to solve, so
let's not focus on this right now.
# getting buy-in from Ambari: I don't see how they won't follow the lead with
all the benefits I just laid out (and more)
Seems like a good idea overall. Thoughts?
> Introduce Universal Packaging System for Hadoop distribution
> ------------------------------------------------------------
>
> Key: BIGTOP-1422
> URL: https://issues.apache.org/jira/browse/BIGTOP-1422
> Project: Bigtop
> Issue Type: New Feature
> Components: build, deployment
> Affects Versions: 0.8.0
> Reporter: Konstantin Boudnik
> Priority: Blocker
> Fix For: 1.0.0
>
>
> Looks like the time comes where Bigtop needs to step up and champion new
> revolutionary format for packaging of the Hadoop.
> New UPS provides completely relocatable archive-like media of distribution
> for the content and the services alike. Preparation of an UPS deliverables
> shouldn't require any special development tools nor particular SDL: only
> cross-platform archives and widely available command-line interpreters would
> be a per-requisite for the creation and installation.
> In our opinion, the separation of the services and content of the
> applications, e.g. .deb and .rpm, are an outdated paradigm, which complicates
> the deployment processes, upgrades, and overall system orchestration.
> Architectural proposal will follow shortly.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)