tez如何设置job name【appName】

本文详细介绍了在Hive中使用MapReduce和Tez执行引擎时如何设置作业名称。对于MapReduce,可通过mapred.job.name进行配置;而Tez则需通过hive.session.id设置appName,且必须在启动Hive时指定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题背景

    在hive中,MapReduce我们可以使用 mapred.job.name 来设置job name,以便在YARN的Web UI界面查看对应任务,或者使用使用 yarn application -list | grep appName 查看任务运行情况。但是Tez,不支持 mapred.job.name 设置job name,在Tez中,作业名称叫appName,我们可以通过设置tez的session.id来设置appName。

设置作业名称

执行引擎job name
Tezhive.session.id
MapReducemapred.job.name

MR设置job name

设置 mapred.job.name

set mapred.job.name=job_name;

Tez设置appName

设置 session id

Tez是通过设置session.id来设置appName的

hive --hiveconf hive.session.id=appName.id

在YARN 的Web UI界面查看到的appName和使用yarn application -list查看到的appName一样,如下:
前缀:HIVE-
后缀:设置的session id

[root@hadoop ~]$ yarn application -list
Application-Id      					Application-Name    Application-Type          	User      Queue                   State             Final-State             Progress                               Tracking-URL
application_1545291048056_1013012       HIVE-appName.id     TEZ       					root      rootqueue               ACCEPTED           UNDEFINED                    0%                                 N/A

    切记:必须在hive启动的时候设置,如果进入hive里面设置 hive.session.id,YARN的Web UI界面和yarn application -list查看的结果是不生效的。

Tez不设置 session id

在YARN 的Web UI界面查看到的appName和使用yarn application -list查看到的appName一样,如下:
前缀:HIVE-
后缀:默认的session id,每次进入hive,都会自动分配一个

[root@hadoop ~]$ yarn application -list
Application-Id      					Application-Name        						Application-Type          	User      Queue                   State             Final-State             Progress                               Tracking-URL
application_1545291048056_1013012       HIVE-a788de76-0db8-4419-9dfa-8a85ff0abcf6       TEZ       					root      rootqueue               ACCEPTED           UNDEFINED                    0%                                 N/A
### 设置或查看 Hive 使用 Tez 引擎时的作业名称 在使用 Apache Hive 并配置其基于 Apache Tez 执行引擎的情况下,可以通过多种方法设置和查看 Tez 作业的名称。Tez 是一种高效的分布式计算框架,通常用于替代传统的 MapReduce 来提升复杂查询的性能。 #### 设置 Tez Job 名称 为了便于管理和跟踪提交到集群中的 Tez 任务,可以显式地为每个 Hive 查询关联一个可读性强的应用程序名。这一目标可通过如下两种主要途径达成: 1. **通过 CLI 参数指定** 当借助 Beeline 工具向远程 HiveServer 发送请求时,可以在启动会话前或者执行具体语句之前加入相应的环境变量声明。例如: ```bash beeline -u jdbc:hive2://<host>:<port> --hivevar TEZ_JOB_NAME="MyCustomTezJob" ``` 此处定义了一个名为 `TEZ_JOB_NAME` 的宏,并赋予它期望显示的文字串作为后续生成日志记录的一部分[^3]。 2. **内部 Session 变量调节** 更加灵活的方式是在进入交互界面之后即时更改当前上下文中涉及的相关参数值。即运行以下命令之一即可生效直至退出连接为止: ```sql SET tez.session.name='Descriptive_Tez_Session_Name'; ``` 或者更通用的形式适用于单次独立调用而非整个生命周期范围内的重命名需求: ```sql SET mapreduce.job.name='Explicitly_Named_Hive_Query_via_Tez'; ``` 值得注意的是尽管后者语法形式沿用了旧版 MR API 风格但它同样兼容现代 Tez 实现路径下正常解析传递给底层调度组件加以体现最终呈现效果一致[^4]。 #### 查看已有的 Tez Job 名称 一旦成功设置了个性化的标签描述符后,在任何支持标准 Hadoop/YARN 架构监控平台之上均能够轻松定位对应条目并获取详尽统计资料反馈信息。常规做法包括但不限于以下几个方面: - 登录至 ResourceManager WebUI 页面浏览 Active Applications 列表查找匹配词条; - 利用 command-line utilities 如 `yarn application -list` 输出筛选符合条件的结果集合; - 结合 Ambari/Ganglia 等第三方运维套件图形化仪表板直观展现资源分配状况分布趋势图表等等[^5]。 另外值得一提的小技巧在于如果仅仅关心最近一段时间范围内产生的活动痕迹则可以直接附加时间戳限定条件缩小搜索空间从而加快响应速度减少冗余干扰项影响程度达到事半功倍的效果。 ```bash yarn application -list -appStates RUNNING -timeTaken 60m | grep "Your_Custom_Pattern" ``` --- ### 示例代码展示 这里给出一段完整的示范脚本帮助理解上述概念的实际运用场景: ```sql -- 开启 Tez 模式 SET hive.execution.engine=tez; -- 自定义本次操作对应的标识字符串 SET tez.session.name='Batch_Processing_of_Sales_Data'; -- 创建临时测试表格结构 DROP TABLE IF EXISTS sales_data; CREATE EXTERNAL TABLE IF NOT EXISTS sales_data ( transaction_id BIGINT, product_name STRING, quantity INT, price DOUBLE ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION '/tmp/sales/'; -- 加载模拟样本文件内容填充进去 LOAD DATA INPATH '/example/input/sample-sales.txt' OVERWRITE INTO TABLE sales_data; -- 计算总销售额排名前十的商品清单 SELECT product_name, SUM(quantity * price) AS total_sales FROM sales_data GROUP BY product_name ORDER BY total_sales DESC LIMIT 10; ``` ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值