Beeline中设置Tez作业自定义名称并在YARN中显示的方法
我之前也碰到过一模一样的问题!Hive on Tez下hive.query.name确实只会在Tez专属UI里显示,YARN那边根本不认这个参数。要让YARN的活跃应用列表里显示自定义的易读名称,得用Tez自身的配置参数来搞定,具体方案如下:
两种可行配置方式
方式一:统一Hive查询名与Tez应用名
如果希望同时在Tez UI和YARN里看到一致的自定义名称,可以把两个参数绑定起来:
-- 先设置Hive层面的查询标识(会在Tez UI显示) SET hive.query.name=My_User_Data_Load_Job; -- 让Tez的ApplicationMaster把这个名称传给YARN SET tez.am.app.name=${hive.query.name}; -- 接下来执行你的加载脚本 LOAD DATA INPATH '/user/data/new_users' INTO TABLE user_info;
方式二:直接设置Tez应用名
如果不需要在Tez UI里同步名称,也可以直接配置Tez的应用名称参数:
SET tez.am.app.name=My_User_Data_Load_Job; -- 执行加载脚本 LOAD DATA INPATH '/user/data/new_users' INTO TABLE user_info;
原理说明
Tez作业在向YARN注册时,会使用tez.am.app.name的值作为应用名称,而hive.query.name只是Hive内部的查询标识,不会自动传递给YARN。所以之前只设置hive.query.name时,YARN还是会显示默认的HIVE-<UUID>格式名称。
配置完成后,运行你的加载脚本,再执行yarn application -list就能看到自定义的作业名称了。
内容的提问来源于stack exchange,提问作者ram_23




