default['hadoop']['archive_url'] = 'http://archive.apache.org/dist/hadoop/core'
default['hadoop']['with_security'] = false
## hadoop-env.sh
+default['hadoop']['HADOOP_PREFIX'] = "#{node['grid']['app_root']}/hadoop"
default['hadoop']['HADOOP_CLASSPATH'] = ''
default['hadoop']['HADOOP_USER_CLASSPATH_FIRST'] = false
## hadoop-policy.xml
}
log "This node active volumes: #{active_vol_nums}"
-hadoop_prefix = "#{node['grid']['app_root']}/hadoop-#{node['hadoop']['version']}"
+hadoop_install_root = "#{node['grid']['app_root']}/hadoop-#{node['hadoop']['version']}"
hadoop_tarball = "hadoop-#{node['hadoop']['version']}.tar.gz"
downloaded_hadoop_tarball = "#{Chef::Config[:file_cache_path]}/#{hadoop_tarball}"
-if ! FileTest.directory? hadoop_prefix then
+if ! FileTest.directory? hadoop_install_root then
remote_file downloaded_hadoop_tarball do
source "#{node['hadoop']['archive_url']}/hadoop-#{node['hadoop']['version']}/#{hadoop_tarball}"
action :create_if_missing
code <<-EOC
tar xvzf #{downloaded_hadoop_tarball} -C #{node['grid']['app_root']}
EOC
- creates hadoop_prefix
+ creates hadoop_install_root
end
- link "#{node['grid']['app_root']}/hadoop" do
- to hadoop_prefix
+ link node['hadoop']['HADOOP_PREFIX'] do
+ to hadoop_install_root
end
end
+limits_files = [
+ 'hdfs.conf',
+ 'yarn.conf',
+ 'mapreduce.conf'
+]
+
+limits_files.each {|limits_file|
+ if limits_file == 'yarn.conf' && hadoop_major_version.to_i < 2 then
+ next
+ end
+ template "/etc/security/limits.d/#{limits_file}" do
+ source "etc/security/limits.d/#{limits_file}"
+ owner 'root'
+ group 'root'
+ mode '0644'
+ end
+}
+
conf_files = [
'capacity-scheduler.xml',
'configuration.xsl',
action :install
end
- link "#{hadoop_prefix}/libexec/jsvc.i386" do
+ link "#{hadoop_install_root}/libexec/jsvc.i386" do
to '/usr/bin/jsvc'
end
end
--- /dev/null
+hdfs - nofile 32768
+hdfs - nproc 65536
--- /dev/null
+mapred - nofile 32768
+mapred - nproc 65536
--- /dev/null
+yarn - nofile 32768
+yarn - nproc 65536
default['grid']['etc_root'] = '/grid/etc'
default['grid']['app_root'] = '/grid/usr'
default['grid']['vol_root'] = '/grid/vol'
-default['grid']['max_vol_nums'] = '1'
# default: for pseudo-replicated
default['zookeeper']['install_flavor'] = 'apache'
default['zookeeper']['version'] = '3.4.5'
default['zookeeper']['archive_url'] = 'http://archive.apache.org/dist/zookeeper'
default['zookeeper']['colo_name'] = 'localhost'
+default['zookeeper']['member_of_hadoop'] = false
## run mode: standalone, pseudo-replicated, full-replicated
default['zookeeper']['run_mode'] = 'standalone'
default['zookeeper']['with_security'] = false
default['zookeeper']['realm'] = 'LOCALDOMAIN'
default['zookeeper']['keytab_dir'] = "#{node['grid']['etc_root']}/keytabs/#{node['zookeeper']['colo_name']}"
## zookeeper-env.sh
+default['zookeeper']['ZOOKEEPER_PREFIX'] = "#{node['grid']['app_root']}/zookeeper"
default['zookeeper']['ZOO_LOG_DIR_PREFIX'] = "#{node['grid']['vol_root']}/0/var/log/zookeeper"
## zoo.cfg
default['zookeeper']['dataDirPrefix'] = "#{node['grid']['vol_root']}/0/var/lib/zookeeper"
default['zookeeper']['clientPort'] = '2181'
default['zookeeper']['ensemble'] = {
}
+default['zookeeper']['tickTime'] = '2000'
+default['zookeeper']['initLimit'] = '10'
+default['zookeeper']['syncLimit'] = '5'
+### if with_security
+default['zookeeper']['authProvider'] = {
+ '0' => 'org.apache.zookeeper.server.auth.SASLAuthenticationProvider'
+}
+default['zookeeper']['jaasLoginRenew'] = '3600000'
+default['zookeeper']['kerberos.removeHostFromPrincipal'] = 'true'
+default['zookeeper']['kerberos.removeRealmFromPrincipal'] = 'true'
## extra settings
default['zookeeper']['extra_configs'] = {
# e.g. 'zoo.cfg' => {'k1' => 'v1', 'k2' => 'v2'},
end
}
-group users[:hadoop][:name] do
- gid users[:hadoop][:uid]
- members ['zookeeper']
- append true
- action :create
+if node['zookeeper']['member_of_hadoop'] then
+ group users[:hadoop][:name] do
+ gid users[:hadoop][:uid]
+ members ['zookeeper']
+ append true
+ action :create
+ end
end
directory node['grid']['app_root'] do
recursive true
end
-zookeeper_prefix = "#{node['grid']['app_root']}/zookeeper-#{node['zookeeper']['version']}"
+zookeeper_install_root = "#{node['grid']['app_root']}/zookeeper-#{node['zookeeper']['version']}"
zookeeper_tarball = "zookeeper-#{node['zookeeper']['version']}.tar.gz"
downloaded_zookeeper_tarball = "#{Chef::Config[:file_cache_path]}/#{zookeeper_tarball}"
-if ! FileTest.directory? zookeeper_prefix then
+if ! FileTest.directory? zookeeper_install_root then
remote_file downloaded_zookeeper_tarball do
source "#{node['zookeeper']['archive_url']}/zookeeper-#{node['zookeeper']['version']}/#{zookeeper_tarball}"
action :create_if_missing
code <<-EOC
tar xvzf #{downloaded_zookeeper_tarball} -C #{node['grid']['app_root']}
EOC
- creates zookeeper_prefix
+ creates zookeeper_install_root
end
- link "#{node['grid']['app_root']}/zookeeper" do
- to zookeeper_prefix
+ link "#{node['zookeeper']['ZOOKEEPER_PREFIX']}" do
+ to zookeeper_install_root
end
end
case node['zookeeper']['run_mode']
when 'standalone'
node_id = 'standalone'
- conf_dir = "#{zookeeper_prefix}/conf.#{node_id}"
+ conf_dir = "#{zookeeper_install_root}/conf.#{node_id}"
directory conf_dir do
owner 'root'
group 'root'
when 'pseudo-replicated'
clientPort = node['zookeeper']['clientPort'].to_i
3.times {|node_id|
- conf_dir = "#{zookeeper_prefix}/conf.#{node_id}"
+ conf_dir = "#{zookeeper_install_root}/conf.#{node_id}"
directory conf_dir do
owner 'root'
group 'root'
$ sudo -u zookeeper sh -c 'export ZOOCFGDIR=/grid/usr/zookeeper/conf.2;./bin/zkServer.sh start'
EOM
when 'full-replicated'
- conf_dir = "#{zookeeper_prefix}/conf"
+ conf_dir = "#{zookeeper_install_root}/conf"
%w{lib log}.each {|dir|
directory "#{node['grid']['vol_root']}/0/var/#{dir}/zookeeper" do
owner 'zookeeper'
# The number of milliseconds of each tick
-tickTime=2000
+tickTime=<%= node['zookeeper']['tickTime'] %>
# The number of ticks that the initial
# synchronization phase can take
-initLimit=10
+initLimit=<%= node['zookeeper']['initLimit'] %>
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
-syncLimit=5
+syncLimit=<%= node['zookeeper']['syncLimit'] %>
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
<% end %>
# the port at which the clients will connect
clientPort=<%= @clientPort %>
-<% if node['zookeeper']['with_security'] then %>
-authProvider.0=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
-jaasLoginRenew=3600000
-kerberos.removeHostFromPrincipal=true
-kerberos.removeRealmFromPrincipal=true
+<%
+if node['zookeeper']['with_security'] then
+ node['zookeeper']['authProvider'].each do |id, class_name|
+%>
+authProvider.<%= id %>=<%= class_name %>
+<%
+ end
+%>
+jaasLoginRenew=<%= node['zookeeper']['jaasLoginRenew'] %>
+kerberos.removeHostFromPrincipal=<%= node['zookeeper']['kerberos.removeHostFromPrincipal'] %>
+kerberos.removeRealmFromPrincipal=<%= node['zookeeper']['kerberos.removeRealmFromPrincipal'] %>
# available?!
#requireClientAuthScheme=sasl
#allowSaslFailedClients=false
{
"run_list": [
- "role[mocker]",
- "role[hadoop-pseudo-distributed-with-security]",
- "role[zookeeper-pseudo-replicated-with-security]"
+ "role[test-on-localhost]"
]
}
description 'Testing on local machine'
run_list(
- 'role[hadoop-pseudo-distributed-with-security]'
+ 'role[mocker]',
+ 'role[hadoop-pseudo-distributed-with-security]',
+ 'role[zookeeper-pseudo-replicated-with-security]'
)
#env_run_lists "prod" => ["recipe[apache2]"], "staging" => ["recipe[apache2::staging]"], "_default" => []
default_attributes(
'zookeeper' => {
'run_mode' => 'pseudo-replicated',
+ 'member_of_hadoop' => true,
'clientPort' => '2180'
}
)
default_attributes(
'zookeeper' => {
'run_mode' => 'standalone'
+ 'member_of_hadoop' => true
}
)