[ 
https://issues.apache.org/jira/browse/FALCON-634?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14131186#comment-14131186
 ] 

Srikanth Sundarrajan commented on FALCON-634:
---------------------------------------------

+*Recipe*+
Objective of the recipe is to solve a standard data management function. To 
this effect we should allow recipe to have a RecipeBuilder which will generate 
one or more processes and any intermediate feeds if necessary to implement the 
functionality. A standard vanilla recipe builder may choose to use template and 
substitutes parameters in the template to build the process definitions. Each 
recipe then is a directory archive (directory name could be trivially the name 
of the recipe) which has the implementation of RecipeBuilder and all required 
support libraries necessary. Support libraries would again be of two 
categories, ones required to build the recipe and the ones required at run time 
to realize the recipe's objective.

+*Recipe deployment*+
List of recipes can be maintained in the server in a shared location 
(preferably HDFS) and the prism server can be configured to point to the 
correct recipe repository folder

+*Recipe creation*+
Author of a recipe can build the recipe archive and drop this in the location 
that Prism is pointing to and the recipe should be available for use 
immediately. A recipe may be structured as follows
{noformat}
RecipeRoot =====> Prism server is pointing to this
|-- Recipe1
    |-- README
    |-- META
    |-- libs
        |-- build
        |-- runtime
    |-- resources
        |-- build
        |-- runtime
{noformat}

+*Recipe Listing*+
A GET method may be added to the Prism server on a new Jersey resource to list 
recipes and their corresponding root location on recipe repository. 
Corresponding CLI methods to be present

{noformat}
falcon recipe -list
{noformat}

+*Recipe Description*+
A GET method may be added to the Prism server to echo the README as 
documentation for the users. This may contain brief on the functionality 
offered by the recipe and any operability notes of importance
{noformat}
falcon recipe -name dr-replication -describe
{noformat}

+*Cooking a recipe*+
falcon recipe -name dr-replication -prepare[AndSchedule] <<location>> 
<<Variable arguments as accepted by the RecipeBuilder, which is documented in 
the respective README>>
This should essentially download all the build and runtime libraries hosted on 
the path provided by the listing api, pass the arguments to the recipe builder 
and build the falcon process and feed artefacts in the output location or 
optionally schedule in the live system.



> Add recipes in Falcon
> ---------------------
>
>                 Key: FALCON-634
>                 URL: https://issues.apache.org/jira/browse/FALCON-634
>             Project: Falcon
>          Issue Type: Improvement
>    Affects Versions: 0.6
>            Reporter: Venkatesh Seetharam
>              Labels: recipes
>
> Falcon offers many services OOTB and caters to a wide array of use cases. 
> However, there has been many asks that does not fit the functionality offered 
> by Falcon. I'm proposing that we add recipes to Falcon which is similar to 
> recipes in Whirr and other management solutions such as puppet and chef.
> Overview:
> A recipe essentially is a static process template with parameterized workflow 
> to realize a specific use case. For example:
> * replicating directories from one HDFS cluster to another (not timed 
> partitions)
> * replicating hive metadata (database, table, views, etc.)
> * replicating between HDFS and Hive - either way
> * anonymization of data based on schema
> * data masking
> * etc.
> Proposal:
> Falcon provides a Process abstraction that encapsulates the configuration 
> for a user workflow with scheduling controls. All recipes can be modeled 
> as a Process with in Falcon which executes the user workflow 
> periodically. The process and its associated workflow are parameterized. The 
> user will provide a properties file with name value pairs that are 
> substituted by falcon before scheduling it.
> This is a client side concept. The server does not know about a recipe but 
> only accepts the cooked recipe as a process entity. 
> The CLI would look something like this:
> falcon -recipe $recipe_name -properties $properties_file
> Recipes will reside inside addons (contrib) with source code and will have an 
> option to package 'em.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to