Created 09-13-2017 02:20 PM
I want to enable NameNode high availability in my cluster but can't seem to find the right way to enable this from the blueprint I'm supplying to Cloudbreak.
Created 09-13-2017 02:29 PM
Hi,
Here's and example blueprint, below. In the cluster creation wizard you must disable blueprint validation (it's under the advanced options)(don't worry about the localhost references in the configuration, it will be resolved by Ambari)
{
  "configurations": [
    {
      "hdfs-site": {
        "properties": {
          "dfs.namenode.http-address": "localhost:50070",
          "dfs.namenode.https-address": "localhost:50470",
          "dfs.namenode.rpc-address": "localhost:8020",
          "dfs.namenode.secondary.http-address": "localhost:50090",
          "dfs.nameservices": "mycluster",
          "dfs.internal.nameservices": "mycluster",
          "dfs.ha.namenodes.mycluster": "nn1,nn2",
          "dfs.client.failover.proxy.provider.mycluster": "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider",
          "dfs.ha.fencing.methods": "shell(/bin/true)",
          "dfs.ha.automatic-failover.enabled": "true",
          "dfs.namenode.shared.edits.dir": "qjournal://localhost:8485/mycluster",
          "dfs.namenode.https-address.mycluster.nn1": "%HOSTGROUP::master1%:50470",
          "dfs.namenode.http-address.mycluster.nn1": "%HOSTGROUP::master1%:50070",
          "dfs.namenode.rpc-address.mycluster.nn1": "%HOSTGROUP::master1%:8020",
          "dfs.namenode.https-address.mycluster.nn2": "%HOSTGROUP::master2%:50470",
          "dfs.namenode.http-address.mycluster.nn2": "%HOSTGROUP::master2%:50070",
          "dfs.namenode.rpc-address.mycluster.nn2": "%HOSTGROUP::master2%:8020"
        }
      }
    },
    {
      "core-site": {
        "properties": {
          "fs.defaultFS": "hdfs://mycluster",
          "ha.zookeeper.quorum": "localhost:2181"
        }
      }
    }
  ],
  "host_groups": [
    {
      "name": "master1",
      "configurations": [],
      "components": [
        {
          "name": "ZOOKEEPER_SERVER"
        },
        {
          "name": "ZOOKEEPER_CLIENT"
        },
        {
          "name": "NAMENODE"
        },
        {
          "name": "DATANODE"
        },
        {
          "name": "JOURNALNODE"
        },
        {
          "name": "ZKFC"
        },
        {
          "name": "HDFS_CLIENT"
        },
        {
          "name": "YARN_CLIENT"
        },
        {
          "name": "MAPREDUCE2_CLIENT"
        }
      ],
      "cardinality": "1"
    },
    {
      "name": "master2",
      "configurations": [],
      "components": [
        {
          "name": "ZOOKEEPER_SERVER"
        },
        {
          "name": "ZOOKEEPER_CLIENT"
        },
        {
          "name": "NAMENODE"
        },
        {
          "name": "DATANODE"
        },
        {
          "name": "ZKFC"
        },
        {
          "name": "JOURNALNODE"
        },
        {
          "name": "RESOURCEMANAGER"
        },
        {
          "name": "HISTORYSERVER"
        },
        {
          "name": "APP_TIMELINE_SERVER"
        },
        {
          "name": "HDFS_CLIENT"
        },
        {
          "name": "YARN_CLIENT"
        }
      ],
      "cardinality": "1"
    },
    {
      "name": "master3",
      "configurations": [],
      "components": [
        {
          "name": "ZOOKEEPER_SERVER"
        },
        {
          "name": "ZOOKEEPER_CLIENT"
        },
        {
          "name": "DATANODE"
        },
        {
          "name": "JOURNALNODE"
        },
        {
          "name": "HDFS_CLIENT"
        },
        {
          "name": "NODEMANAGER"
        },
        {
          "name": "YARN_CLIENT"
        }
      ],
      "cardinality": "1"
    },
    {
      "name": "worker",
      "configurations": [],
      "components": [
        {
          "name": "DATANODE"
        },
        {
          "name": "HDFS_CLIENT"
        },
        {
          "name": "NODEMANAGER"
        },
        {
          "name": "YARN_CLIENT"
        },
        {
          "name": "MAPREDUCE2_CLIENT"
        }
      ],
      "cardinality": "1"
    }
  ],
  "Blueprints": {
    "blueprint_name": "nn-ha",
    "stack_name": "HDP",
    "stack_version": "2.5"
  } }
Created 09-13-2017 02:29 PM
Hi,
Here's and example blueprint, below. In the cluster creation wizard you must disable blueprint validation (it's under the advanced options)(don't worry about the localhost references in the configuration, it will be resolved by Ambari)
{
  "configurations": [
    {
      "hdfs-site": {
        "properties": {
          "dfs.namenode.http-address": "localhost:50070",
          "dfs.namenode.https-address": "localhost:50470",
          "dfs.namenode.rpc-address": "localhost:8020",
          "dfs.namenode.secondary.http-address": "localhost:50090",
          "dfs.nameservices": "mycluster",
          "dfs.internal.nameservices": "mycluster",
          "dfs.ha.namenodes.mycluster": "nn1,nn2",
          "dfs.client.failover.proxy.provider.mycluster": "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider",
          "dfs.ha.fencing.methods": "shell(/bin/true)",
          "dfs.ha.automatic-failover.enabled": "true",
          "dfs.namenode.shared.edits.dir": "qjournal://localhost:8485/mycluster",
          "dfs.namenode.https-address.mycluster.nn1": "%HOSTGROUP::master1%:50470",
          "dfs.namenode.http-address.mycluster.nn1": "%HOSTGROUP::master1%:50070",
          "dfs.namenode.rpc-address.mycluster.nn1": "%HOSTGROUP::master1%:8020",
          "dfs.namenode.https-address.mycluster.nn2": "%HOSTGROUP::master2%:50470",
          "dfs.namenode.http-address.mycluster.nn2": "%HOSTGROUP::master2%:50070",
          "dfs.namenode.rpc-address.mycluster.nn2": "%HOSTGROUP::master2%:8020"
        }
      }
    },
    {
      "core-site": {
        "properties": {
          "fs.defaultFS": "hdfs://mycluster",
          "ha.zookeeper.quorum": "localhost:2181"
        }
      }
    }
  ],
  "host_groups": [
    {
      "name": "master1",
      "configurations": [],
      "components": [
        {
          "name": "ZOOKEEPER_SERVER"
        },
        {
          "name": "ZOOKEEPER_CLIENT"
        },
        {
          "name": "NAMENODE"
        },
        {
          "name": "DATANODE"
        },
        {
          "name": "JOURNALNODE"
        },
        {
          "name": "ZKFC"
        },
        {
          "name": "HDFS_CLIENT"
        },
        {
          "name": "YARN_CLIENT"
        },
        {
          "name": "MAPREDUCE2_CLIENT"
        }
      ],
      "cardinality": "1"
    },
    {
      "name": "master2",
      "configurations": [],
      "components": [
        {
          "name": "ZOOKEEPER_SERVER"
        },
        {
          "name": "ZOOKEEPER_CLIENT"
        },
        {
          "name": "NAMENODE"
        },
        {
          "name": "DATANODE"
        },
        {
          "name": "ZKFC"
        },
        {
          "name": "JOURNALNODE"
        },
        {
          "name": "RESOURCEMANAGER"
        },
        {
          "name": "HISTORYSERVER"
        },
        {
          "name": "APP_TIMELINE_SERVER"
        },
        {
          "name": "HDFS_CLIENT"
        },
        {
          "name": "YARN_CLIENT"
        }
      ],
      "cardinality": "1"
    },
    {
      "name": "master3",
      "configurations": [],
      "components": [
        {
          "name": "ZOOKEEPER_SERVER"
        },
        {
          "name": "ZOOKEEPER_CLIENT"
        },
        {
          "name": "DATANODE"
        },
        {
          "name": "JOURNALNODE"
        },
        {
          "name": "HDFS_CLIENT"
        },
        {
          "name": "NODEMANAGER"
        },
        {
          "name": "YARN_CLIENT"
        }
      ],
      "cardinality": "1"
    },
    {
      "name": "worker",
      "configurations": [],
      "components": [
        {
          "name": "DATANODE"
        },
        {
          "name": "HDFS_CLIENT"
        },
        {
          "name": "NODEMANAGER"
        },
        {
          "name": "YARN_CLIENT"
        },
        {
          "name": "MAPREDUCE2_CLIENT"
        }
      ],
      "cardinality": "1"
    }
  ],
  "Blueprints": {
    "blueprint_name": "nn-ha",
    "stack_name": "HDP",
    "stack_version": "2.5"
  } }
Created 09-13-2017 02:44 PM
Thanks for the fast answer. If I used cloudbreakshell, is there a way to tell it to ignore the validation?
Created 09-13-2017 04:00 PM
In shell it is disabled by default: https://github.com/hortonworks/cloudbreak/blob/master/shell/src/main/java/com/sequenceiq/cloudbreak/...