避免用户重写hadoop 2中的默认mapred属性



如何避免用户在提交配置单元作业时覆盖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用于使某些道具"最终"的文件。

如果你的用户连接到传统的hiveCLI,并且他们不是黑客,你只需要(a)修改Hadoop客户端的全局conf,或者

如果您的用户是黑客,并且他们可以访问旧版hiveCLI,他们可以自己覆盖配置文件,因此从技术上讲,您无法强制执行<final>属性。但无论如何,如果有人能做到这一点,那么他/她很可能会得到你的工作;-)

最新更新