Return-Path: X-Original-To: apmail-incubator-ambari-dev-archive@minotaur.apache.org Delivered-To: apmail-incubator-ambari-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 370FF96DE for ; Tue, 17 Jan 2012 06:09:20 +0000 (UTC) Received: (qmail 26977 invoked by uid 500); 17 Jan 2012 06:09:19 -0000 Delivered-To: apmail-incubator-ambari-dev-archive@incubator.apache.org Received: (qmail 26942 invoked by uid 500); 17 Jan 2012 06:09:15 -0000 Mailing-List: contact ambari-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: ambari-dev@incubator.apache.org Delivered-To: mailing list ambari-dev@incubator.apache.org Received: (qmail 26933 invoked by uid 99); 17 Jan 2012 06:09:11 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 17 Jan 2012 06:09:11 +0000 X-ASF-Spam-Status: No, hits=-0.5 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of eric818@gmail.com designates 209.85.216.54 as permitted sender) Received: from [209.85.216.54] (HELO mail-qw0-f54.google.com) (209.85.216.54) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 17 Jan 2012 06:09:03 +0000 Received: by qaea17 with SMTP id a17so190842qae.6 for ; Mon, 16 Jan 2012 22:08:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; bh=vm67tw1UVecD5p8Xj5ythUm+1/tpxsZt5sgOXmC1dfI=; b=lrWpe1yixmb84/t4Sjdh5hQUDlK3i1TlqBDScpIhScfPm2nMkbm80ds3OLQXYodfuq YIwkkGIEKYNIX2+Ca16A3+ihyQC7/G0gJ04/IfX3Mgaub5SXLWC38txfTZg94dZWyMS7 hxqDM/6M+ZzCCNHTCKuwDE+T0qtKgEQP/JozA= MIME-Version: 1.0 Received: by 10.224.216.74 with SMTP id hh10mr18253564qab.45.1326780523239; Mon, 16 Jan 2012 22:08:43 -0800 (PST) Received: by 10.229.77.22 with HTTP; Mon, 16 Jan 2012 22:08:43 -0800 (PST) Date: Mon, 16 Jan 2012 22:08:43 -0800 Message-ID: Subject: stack definition and component plugin From: Eric Yang To: ambari-dev@incubator.apache.org Content-Type: text/plain; charset=ISO-8859-1 X-Virus-Checked: Checked by ClamAV on apache.org Hi all, The current hierarchical stack definition is confusing to me. Supposedly, the definition can be expanded and flatten configuration key value pair, and an example of defining namenode url and get inherited in hbase configuration would look like this: { ... "components": { "hdfs": { "roles": { "namenode": { /* override one value on the namenode */ "hadoop/hdfs-site": { "dfs.https.enable": "true", "fs.default.name": "hdfs://${namenode}:${port}/" } } } }, "hbase": { "roles": { "region-server": { "hbase/hbase-site": { "hbase.rootdir": "${components.hdfs.namenode.hadoop/hdfs-site.fs.default.name}/hbase" } } } } } hbase.rootdir is a key for hbase-site.xml, and it should contain key of "fs.default.name" plus additional path for hbase to store data. In my interpretation of the macro would look like ${components.hdfs.namenode.hadoop/hdfs-site.fs.default.name}/hbase. This seems like a utterly awkward method of describing inheritance. Why don't we use a flat name space to remove additional logistics imposed by Ambari. I agree that the syntax is fully accurate, but it is a larger headache to maintain this hierarchical structure. The second problem is the component plugin architecture sounds good in theory. I see some scalability issues with this approach. Each component describes the components that it depends on. This could interfere with introducing new components. i.e. Mapreduce component depends on HDFS. A new component is introduced, and name HBase. Now, the Mapreduce component needs to update it's dependency to HDFS and HBase and ZooKeeper. For introducing new component, there is a lot of plugins updates to make the new version work. The plugin writer also needs to make theoretical assumption that if components X is installed do Y, otherwise do Z. Conditional assumption in plugin introduces uncertainty and corner cases into the deployment system. The number of permutation can greatly exceed the logics that is required to handle by the plugin. Instead of using plugin architecture to manage deployment, it would be safer to use a scripting approach to enable power administrator to deploy a stack of software by writing shell script like script to accomplish the deployment tasks. The recipes scripts can be shared by the community to automate software stack deployment. This will ensure the scope of Ambari deployment is focus on cross nodes orchestration without having to build bell and whistles which does not scale well in the long term. What do you guys think? regards, Eric