[ 
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)

Reply via email to