为什么在 Ambari 从 1.6.0 迁移到 2.0.0 时调用 hive Metatool updatelocation 以将位置移动到不需要的地方?
Why is hive Metatool updatelocation called upon Ambari migration from 1.6.0 to 2.0.0 to move locations to unwanted places?
我正在将我的 HDP2.1 hadoop 集群迁移到 HDP2.2.4。第一步是将 ambari 从 1.6.0 迁移到 2.0.0。
完成这一步后,我重新启动了我的服务。
通过 Ambari 2.0 启动 "HiveServer2" 失败,而 sudo service hive-server2 start
、后续 Hive 请求和 Ambari Hive 服务检查有效。
它失败了,因为它试图在 python 配置步骤中使用如下命令将我的非默认数据库位置迁移到 apps/hive/warehouse
:
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 }
)
查看此 JIRA 是否有助于解决您遇到的问题...
我正在将我的 HDP2.1 hadoop 集群迁移到 HDP2.2.4。第一步是将 ambari 从 1.6.0 迁移到 2.0.0。
完成这一步后,我重新启动了我的服务。
通过 Ambari 2.0 启动 "HiveServer2" 失败,而 sudo service hive-server2 start
、后续 Hive 请求和 Ambari Hive 服务检查有效。
它失败了,因为它试图在 python 配置步骤中使用如下命令将我的非默认数据库位置迁移到 apps/hive/warehouse
:
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 }
)
查看此 JIRA 是否有助于解决您遇到的问题...