0

如果这是一个愚蠢的问题,请事先道歉,我是 hadoop 环境的新手。

我有两个 hadoop 集群my-prod-clustermy-bcp-cluster。两者都可以通过同一网络访问。

有没有办法配置我的集群,当我处于 BCP 模式时,我的所有查询都my-prod-cluster被路由到my-bcp-cluster(基于一些配置参数或环境变量)

因此,当 flag=prod
hadoop fs -ls /my-prod-cluster/mydir 转换hadoop fs -ls /my-prod-cluster/mydir
并获取 /my-prod-cluster/mydir 中的数据时


当 flag=bcp
hadoop fs -ls /my-prod-cluster/mydir 转换为hadoop fs -ls /my-bcp-cluster/mydir
/my-bcp-cluster/mydir 并从中获取数据时



我正在使用 [mapr][1] 风格的 haddop(由 HP 提供),版本 6.1,以防万一
4

1 回答 1

1

您可以轻松制作一个 shell 包装脚本,将 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和XML 的单独变量。hdfs-site

于 2022-01-05T21:00:38.623 回答