【问题标题】:Avoid user from overriding default mapred property in hadoop 2避免用户覆盖 hadoop 2 中的默认 mapred 属性
【发布时间】:2016-06-06 11:44:01
【问题描述】:

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

示例:

mapred-site.xml:

<property>
    <name>mapreduce.job.heap.memory-mb.ratio</name>
    <value>0.8</value>
  </property>

用户在 hive 作业中使用以下属性来覆盖

set mapreduce.job.heap.memory-mb.ratio=0.9 

【问题讨论】:

    标签: hadoop hive hbase hive-configuration


    【解决方案1】:

    来自Hadoop documentation

    配置参数可以声明为final。一旦资源 声明一个值 final,任何后续加载的资源都不能改变它 value (...) 管理员通常在 core-site.xml 中将参数定义为 final,用于用户应用程序可能不会更改的值。

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

    因此,如果您的用户通过 JDBC 连接,您只需修改配置。 HiveServer2 用于使某些道具“最终”的文件。

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

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

    【讨论】:

      猜你喜欢
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-03
      • 2013-08-03
      相关资源
      最近更新 更多