我正在将我的 HDP2.1 hadoop 集群迁移到 HDP2.2.4。第一步是将 ambari 从 1.6.0 迁移到 2.0.0。
完成此步骤后,我重新启动了我的服务。
通过 Ambari 2.0 启动“HiveServer2”失败sudo service hive-server2 start
,而随后的配置单元请求和 Ambari Hive 服务检查工作。
它失败了,因为它尝试使用以下命令将我的非默认数据库位置迁移到apps/hive/warehouse
python 配置步骤中:
hive --config /etc/hive/conf.server --service metatool -updateLocation hdfs://cluster/apps/hive/warehouse hdfs://cluster/user/foo/DATABASE
该命令由于不明原因而失败(见下文),但关键是我不希望这种情况发生,因为 HDFS 文件没有移动我看不到重新定位表的意义!
为什么 Ambari 会这样做,我该如何防止这种情况发生(除了编辑 python ambari 文件)?
更新位置无法记录以下行:
-bash: line 1: hdfs://cluster/apps/hive/warehouse
: No such file or directory
但列出的目录确实存在。
此更新由 ambari 完成/var/lib/ambari-agent/cache/common-services/HIVE/0.12.0.2.0/package/scripts/hive_service.py
(没有评论解释目的):
def check_fs_root():
import params
fs_root_url = format("{fs_root}{hive_apps_whs_dir}")
metatool_cmd = format("hive --config {hive_server_conf_dir} --service metatool")
cmd = as_user(format("{metatool_cmd} -listFSRoot 2>/dev/null", env={'PATH' : params.execute_path }), params.hive_user) + " | grep hdfs:// | grep -v '.db$'"
code, out = shell.call(cmd)
if code == 0 and fs_root_url.strip() != out.strip():
cmd = format("{metatool_cmd} -updateLocation {fs_root}{hive_apps_whs_dir} {out}")
Execute(cmd,
user=params.hive_user,
environment= {'PATH' : params.execute_path }
)