如何避免用户在提交配置单元作业时覆盖hadoop配置文件的默认属性?
Exmaple:
mapred-site.xml:
<property>
<name>mapreduce.job.heap.memory-mb.ratio</name>
<value>0.8</value>
</property>
用户在配置单元作业中使用以下属性来覆盖
set mapreduce.job.heap.memory-mb.ratio=0.9
来自Hadoop文档:
配置参数可能被宣布为最终参数。曾经是一种资源声明了一个值final,随后加载的任何资源都不能更改value(…)管理员通常在core-site.xml中为用户应用程序可能不会更改的值定义最终参数。
<property>
<name>dfs.hosts.include</name>
<value>/etc/hadoop/conf/hosts.include</value>
<final>true</final>
</property>
因此,如果您的用户通过JDBC连接,您只需要修改配置即可。HiveServer2用于使某些道具"最终"的文件。
如果你的用户连接到传统的hive
CLI,并且他们不是黑客,你只需要(a)修改Hadoop客户端的全局conf,或者。
如果您的用户是黑客,并且他们可以访问旧版hive
CLI,他们可以自己覆盖配置文件,因此从技术上讲,您无法强制执行<final>
属性。但无论如何,如果有人能做到这一点,那么他/她很可能会得到你的工作;-)