blob: 8216eb4adc2bddf50acd32407d60af3e7ffd71e4 [file] [log] [blame]
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Licensed to the Apache Software Foundation (ASF) under one or more -->
<!-- contributor license agreements. See the NOTICE file distributed with -->
<!-- this work for additional information regarding copyright ownership. -->
<!-- The ASF licenses this file to You under the Apache License, Version 2.0 -->
<!-- (the "License"); you may not use this file except in compliance with -->
<!-- the License. You may obtain a copy of the License at -->
<!-- -->
<!-- http://www.apache.org/licenses/LICENSE-2.0 -->
<!-- -->
<!-- Unless required by applicable law or agreed to in writing, software -->
<!-- distributed under the License is distributed on an "AS IS" BASIS, -->
<!-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -->
<!-- See the License for the specific language governing permissions and -->
<!-- limitations under the License. -->
<% namenode_hosts = Array(@hadoop_namenode_host) -%>
<configuration>
<% if @ha != "disabled" -%>
<!-- HA -->
<% if @ha == "auto" -%>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<% end -%>
<property>
<name>dfs.nameservices</name>
<value><%= @nameservice_id %></value>
</property>
<property>
<name>dfs.ha.namenodes.<%= @nameservice_id %></name>
<value><%= (1..namenode_hosts.length).map { |n| "nn#{n}" }.join(",") %></value>
</property>
<% namenode_hosts.each_with_index do |host,idx| -%>
<property>
<name>dfs.namenode.rpc-address.<%= @nameservice_id %>.nn<%= idx+1 %></name>
<value><%= host %>:<%= @hadoop_namenode_port %></value>
</property>
<property>
<name>dfs.namenode.http-address.<%= @nameservice_id %>.nn<%= idx+1 %></name>
<value><%= host %>:<%= @hadoop_namenode_http_port %></value>
</property>
<property>
<name>dfs.namenode.https-address.<%= @nameservice_id %>.nn<%= idx+1 %></name>
<value><%= host %>:<%= @hadoop_namenode_https_port %></value>
</property>
<% end -%>
<% if @shared_edits_dir -%>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value><%= @shared_edits_dir %></value>
</property>
<% end -%>
<property>
<name>dfs.client.failover.proxy.provider.<%= @nameservice_id %></name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<% if @sshfence_privkey -%>
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence(<%= @sshfence_user %>)</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value><%= @sshfence_keypath %></value>
</property>
<% else -%>
<property>
<name>dfs.ha.fencing.methods</name>
<value></value>
</property>
<% end -%>
<% elsif @hadoop_security_authentication == "kerberos" -%>
<property>
<name>dfs.block.access.token.enable</name>
<value>true</value>
</property>
<!-- NameNode security config -->
<property>
<name>dfs.https.address</name>
<value><%= namenode_hosts[0] %>:50475</value>
</property>
<property>
<name>dfs.https.port</name>
<value>50475</value>
</property>
<property>
<name>dfs.namenode.keytab.file</name>
<value>/etc/hdfs.keytab</value> <!-- path to the HDFS keytab -->
</property>
<property>
<name>dfs.namenode.kerberos.principal</name>
<value>hdfs/_HOST@<%= @kerberos_realm %></value>
</property>
<property>
<name>dfs.namenode.kerberos.https.principal</name>
<value>host/_HOST@<%= @kerberos_realm %></value>
</property>
<property>
<name>dfs.web.authentication.kerberos.keytab</name>
<value>/etc/hdfs.keytab</value> <!-- path to the HDFS keytab -->
</property>
<property>
<name>dfs.web.authentication.kerberos.principal</name>
<value>HTTP/_HOST@<%= @kerberos_realm %></value>
</property>
<!-- Secondary NameNode security config -->
<property>
<name>dfs.secondary.http.address</name>
<value><%= namenode_hosts[0] %>:0</value>
</property>
<property>
<name>dfs.secondary.https.address</name>
<value><%= namenode_hosts[0] %>:50495</value>
</property>
<property>
<name>dfs.secondary.https.port</name>
<value>50495</value>
</property>
<property>
<name>dfs.secondary.namenode.keytab.file</name>
<value>/etc/hdfs.keytab</value> <!-- path to the HDFS keytab -->
</property>
<property>
<name>dfs.secondary.namenode.kerberos.principal</name>
<value>hdfs/_HOST@<%= @kerberos_realm %></value>
</property>
<property>
<name>dfs.secondary.namenode.kerberos.https.principal</name>
<value>host/_HOST@<%= @kerberos_realm %></value>
</property>
<!-- DataNode security config -->
<property>
<name>dfs.datanode.data.dir.perm</name>
<value>700</value>
</property>
<property>
<name>dfs.datanode.address</name>
<value>0.0.0.0:1004</value>
</property>
<property>
<name>dfs.datanode.http.address</name>
<value>0.0.0.0:1006</value>
</property>
<property>
<name>dfs.datanode.keytab.file</name>
<value>/etc/hdfs.keytab</value> <!-- path to the HDFS keytab -->
</property>
<property>
<name>dfs.datanode.kerberos.principal</name>
<value>hdfs/_HOST@<%= @kerberos_realm %></value>
</property>
<property>
<name>dfs.datanode.kerberos.https.principal</name>
<value>host/_HOST@<%= @kerberos_realm %></value>
</property>
<% end -%>
<property>
<name>dfs.datanode.data.dir</name>
<value><%= @hdfs_data_dirs.map { |dir| "file://#{dir}" }.join(",") %></value>
</property>
<% if @hdfs_support_append %>
<property>
<name>dfs.support.append</name>
<value><%= @hdfs_support_append %></value>
</property>
<% end %>
<% if @hdfs_shortcut_reader %>
<property>
<name>dfs.client.read.shortcircuit</name>
<value>true</value>
</property>
<property>
<name>dfs.domain.socket.path</name>
<value>/var/lib/hadoop-hdfs/dn_socket</value>
</property>
<% end %>
<property>
<name>dfs.namenode.name.dir</name>
<value><%= @namenode_data_dirs.map { |dir| "file://#{dir}" }.join(",") %></value>
</property>
<property>
<name>dfs.permissions.superusergroup</name>
<value>hadoop</value>
<description>The name of the group of super-users.</description>
</property>
<!-- Enable Hue plugins -->
<% if @hadoop_dfs_namenode_plugins -%>
<property>
<name>dfs.namenode.plugins</name>
<value><%= @hadoop_dfs_namenode_plugins %></value>
<description>Comma-separated list of namenode plug-ins to be activated.
</description>
</property>
<% end -%>
<% if @hadoop_dfs_datanode_plugins -%>
<property>
<name>dfs.datanode.plugins</name>
<value><%= @hadoop_dfs_datanode_plugins %></value>
<description>Comma-separated list of datanode plug-ins to be activated.
</description>
</property>
<% end -%>
<!-- increase the number of datanode transceivers way above the default of 256
- this is for hbase -->
<property>
<name>dfs.datanode.max.xcievers</name>
<value>4096</value>
</property>
<!-- Configurations for large cluster -->
<% if @hadoop_config_dfs_block_size -%>
<property>
<name>dfs.block.size</name>
<value><%= @hadoop_config_dfs_block_size %></value>
</property>
<% end -%>
<% if @hadoop_config_namenode_handler_count -%>
<property>
<name>dfs.namenode.handler.count</name>
<value><%= @hadoop_config_namenode_handler_count %></value>
</property>
<% end -%>
<property>
<name>dfs.webhdfs.enabled</name>
<value><%= @hdfs_webhdfs_enabled %></value>
</property>
<% if @hdfs_datanode_fsdataset_volume_choosing_policy -%>
<property>
<name>dfs.datanode.fsdataset.volume.choosing.policy</name>
<value><%= @hdfs_datanode_fsdataset_volume_choosing_policy %></value>
</property>
<% end -%>
<% if @hdfs_replication -%>
<property>
<name>dfs.replication</name>
<value><%= @hdfs_replication %></value>
</property>
<% end -%>
<% if @shared_edits_dir.start_with?("qjournal://") -%>
<% if @journalnode_edits_dir -%>
<property>
<name>dfs.journalnode.edits.dir</name>
<value><%= @journalnode_edits_dir %></value>
</property>
<% end -%>
<% if @journalnode_host -%>
<property>
<name>dfs.journalnode.rpc-address</name>
<value><%= @journalnode_host %>:<%= @journalnode_port %></value>
</property>
<property>
<name>dfs.journalnode.http-address</name>
<value><%= @journalnode_host %>:<%= @journalnode_http_port %></value>
</property>
<property>
<name>dfs.journalnode.https-address</name>
<value><%= @journalnode_host %>:<%= @journalnode_https_port %></value>
</property>
<% end -%>
<% end -%>
<property>
<name>dfs.namenode.datanode.registration.ip-hostname-check</name>
<value><%= @namenode_datanode_registration_ip_hostname_check %></value>
</property>
</configuration>