hadoop - 避免用户覆盖 hadoop 2 中的默认 mapred 属性

标签 hadoop hive hbase hive-configuration

如何避免用户在提交hive作业时覆盖hadoop配置文件的默认属性?

例子:

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 documentation :

Configuration parameters may be declared final. Once a resource declares a value final, no subsequently-loaded resource can alter that value (...) Administrators typically define parameters as final in core-site.xml for values that user applications may not alter.

<property>
  <name>dfs.hosts.include</name>
  <value>/etc/hadoop/conf/hosts.include</value>
  <final>true</final>
</property>

因此,如果您的用户通过 JDBC 连接,您只需要修改配置即可。 HiveServer2 用来使一些 Prop “最终”的文件。

如果您的用户连接到旧版 hive CLI,他们不是黑客,您只需要(a) 修补 Hadoop 客户端的全局配置,或者 (b) 修补“hive”启动器脚本以便它在非默认目录中选择特定的配置文件(通常通过在标准 Hadoop CLASSPATH 之前强制自定义目录来完成)。

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

关于hadoop - 避免用户覆盖 hadoop 2 中的默认 mapred 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37656572/

相关文章:

scala - scala/spark 代码不允许在 hive 中添加列

hadoop - 分桶表上的 Hive 查询很慢

hadoop - 如何通过从 sqlserver 捕获表来迭代 sqoop 作业?

hadoop - BigSQL-HBase 集成

hadoop - 基于数据大小的Hadoop数据节点

shell - 如何自动将zipfile从本地文件系统复制到HDFS

database-design - HBase 列限定符限制

hadoop - 使用Hadoop FileNotFoundError运行Mahout

hadoop - 使用Hive插入hbase表(Hadoop)

hadoop - 根据时间戳从 Hive 访问 HBase 表数据