private static void ConfigHBaseComponent(HBaseComponent hbase, HDInsight.ClusterCreateParameters inputs)
        {
            hbase.HBaseConfXmlProperties.AddRange(
                inputs.HBaseConfiguration.ConfigurationCollection.Select(prop => new Property { Name = prop.Key, Value = prop.Value }));

            if (inputs.HBaseConfiguration.AdditionalLibraries != null)
            {
                hbase.AdditionalLibraries = new BlobContainerCredentialBackedResource()
                {
                    AccountDnsName = inputs.HBaseConfiguration.AdditionalLibraries.Name,
                    BlobContainerName = inputs.HBaseConfiguration.AdditionalLibraries.Container,
                    Key = inputs.HBaseConfiguration.AdditionalLibraries.Key
                };
            }
        }
        /// <summary>
        /// Generate ClusterCreateParameters object for 3.X cluster with Hadoop and HBase.
        /// </summary>
        /// <param name="inputs">Cluster creation parameter inputs.</param>
        /// <returns>The corresponding ClusterCreateParameter object.</returns>
        internal static ClusterCreateParameters Create3XClusterForMapReduceAndHBaseTemplate(HDInsight.ClusterCreateParameters inputs)
         {
            if (inputs == null)
            {
                throw new ArgumentNullException("inputs");
            }

            var cluster = Create3XClusterFromMapReduceTemplate(inputs);

            var hbaseMasterRole = cluster.Components.OfType<ZookeeperComponent>().Single().ZookeeperRole;

            hbaseMasterRole.VMSize = VmSize.Medium;

            //Add HBase component
            HBaseComponent hbase = new HBaseComponent
            {
                MasterServerRole = hbaseMasterRole,
                RegionServerRole = cluster.Components.OfType<HdfsComponent>().Single().WorkerNodeRole
            };
            ConfigHBaseComponent(hbase, inputs);
            cluster.Components.Add(hbase);

            return cluster;
         }