Hadoop configure cluter запрашивает на основе параметра flag/env
Заранее извиняюсь, если это окажется глупым вопросом, я новичок в среде hadoop.
У меня есть два кластера hadoop: my-prod-cluster и my-bcp-cluster . Оба доступны по одной сети.
Есть ли способ настроить мои кластеры таким образом, чтобы, когда я нахожусь в режиме BCP, все мои запросы к
my-prod-cluster
направляется к
my-bcp-cluster
(на основе некоторого параметра конфигурации или переменной среды)
Итак, когда flag= prod
переводит
и извлекает данные в / my-prod-cluster / mydir
когда флаг = bcp
hadoop fs -ls /my-prod-cluster/mydir
переводится на
hadoop fs -ls /my-bcp-cluster/mydir
и получает данные из / my-bcp-cluster / mydir
Я использую [mapr][1] хаддоп (предоставленный HP) версии 6.1, если это имеет значение.
1 ответ
Вы можете легко создать сценарий-оболочку, который добавляет адрес NameNode к каждому запросу.
Например, полностью квалифицированная команда будет выглядеть так
hdfs dfs -ls hdfs://my-prod-cluster.domain.com/path/to/mydir
Итак, проведя рефакторинг, вы могли бы получить такой скрипт, как
#!/bin/sh
if [ $1 -eq "prod" ]; then
NAMENODE=hdfs://my-prod-cluster.domain.com
fi
# TODO: error handling and more clusters
PATH=$2
hdfs dfs -ls "${NAMENODE}${PATH}"
Затем выполните что-то вроде
my-hdfs-ls prod /mydir
Если вам нужно что-то более сложное, например, билеты Kerberos и тому подобное, то создание отдельного
HADOOP_CONF_DIR
переменная с уникальным
core-site
а также
hdfs-site
Рекомендуется использовать XML для каждого кластера.