auser-poolparty-extensions 0.0.7 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +15 -0
- data/Rakefile +2 -2
- data/VERSION.yml +2 -2
- data/lib/extensions/bash_alias.rb +3 -0
- data/lib/extensions/convenience_helpers.rb +89 -0
- data/lib/extensions/development_gem_package.rb +3 -2
- data/lib/extensions/ganglia/ganglia.rb +219 -0
- data/lib/extensions/ganglia/templates/bin/gmetad.erb +38 -0
- data/lib/extensions/ganglia/templates/bin/gmond.erb +38 -0
- data/lib/extensions/ganglia/templates/ganglia-web-conf.php.erb +191 -0
- data/lib/extensions/ganglia/templates/gmetad.conf.erb +116 -0
- data/lib/extensions/ganglia/templates/gmond.conf.erb +426 -0
- data/lib/extensions/ganglia/templates/hadoop-metrics.properties.erb +65 -0
- data/lib/extensions/hadoop/hadoop.rb +427 -0
- data/lib/extensions/hadoop/templates/core-site.xml.erb +62 -0
- data/lib/extensions/hadoop/templates/hadoop-env.sh +4 -0
- data/lib/extensions/hadoop/templates/hadoop-site.xml.erb +9 -0
- data/lib/extensions/hadoop/templates/hadoop_hosts.erb +0 -0
- data/lib/extensions/hadoop/templates/hdfs-site.xml.erb +48 -0
- data/lib/extensions/hadoop/templates/init.d/hadoop-datanode +125 -0
- data/lib/extensions/hadoop/templates/init.d/hadoop-jobtracker +125 -0
- data/lib/extensions/hadoop/templates/init.d/hadoop-namenode +124 -0
- data/lib/extensions/hadoop/templates/init.d/hadoop-secondarynamenode +124 -0
- data/lib/extensions/hadoop/templates/init.d/hadoop-tasktracker +124 -0
- data/lib/extensions/hadoop/templates/jvm.conf +12 -0
- data/lib/extensions/hadoop/templates/log4j.properties.erb +94 -0
- data/lib/extensions/hadoop/templates/mapred-site.xml.erb +70 -0
- data/lib/extensions/hive/hive.rb +138 -0
- data/lib/poolparty-extensions.rb +5 -2
- metadata +28 -4
@@ -0,0 +1,124 @@
|
|
1
|
+
#! /bin/sh
|
2
|
+
#
|
3
|
+
# skeleton example file to build /etc/init.d/ scripts.
|
4
|
+
# This file should be used to construct scripts for /etc/init.d.
|
5
|
+
#
|
6
|
+
# Written by Miquel van Smoorenburg <miquels@cistron.nl>.
|
7
|
+
# Modified for Debian
|
8
|
+
# by Ian Murdock <imurdock@gnu.ai.mit.edu>.
|
9
|
+
# Further changes by Javier Fernandez-Sanguino <jfs@debian.org>
|
10
|
+
#
|
11
|
+
# Version: @(#)skeleton 1.9 26-Feb-2001 miquels@cistron.nl
|
12
|
+
#
|
13
|
+
### BEGIN INIT INFO
|
14
|
+
# Provides: hadoop-secondarynamenode
|
15
|
+
# Required-Start: $network $local_fs
|
16
|
+
# Required-Stop:
|
17
|
+
# Should-Start: $named
|
18
|
+
# Should-Stop:
|
19
|
+
# Default-Start: 2 3 4 5
|
20
|
+
# Default-Stop: 0 1 6
|
21
|
+
# Short-Description: Hadoop secondarynamenode daemon
|
22
|
+
### END INIT INFO
|
23
|
+
|
24
|
+
set -e
|
25
|
+
|
26
|
+
# Include hadoop defaults if available
|
27
|
+
if [ -f /usr/local/hadoop/conf/hadoop-env.sh ] ; then
|
28
|
+
. /usr/local/hadoop/conf/hadoop-env.sh
|
29
|
+
fi
|
30
|
+
|
31
|
+
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
|
32
|
+
DAEMON_SCRIPT=$HADOOP_HOME/bin/hadoop-daemon.sh
|
33
|
+
NAME=hadoop-secondarynamenode
|
34
|
+
DESC="Hadoop secondarynamenode daemon"
|
35
|
+
|
36
|
+
test -x $DAEMON_SCRIPT || exit 0
|
37
|
+
|
38
|
+
LOGDIR=$HADOOP_LOG_DIR
|
39
|
+
PIDFILE=/var/run/hadoop/secondarynamenode.pid
|
40
|
+
DODTIME=3 # Time to wait for the server to die, in seconds
|
41
|
+
# If this value is set too low you might not
|
42
|
+
# let some servers to die gracefully and
|
43
|
+
# 'restart' will not work
|
44
|
+
|
45
|
+
get_running_pid() {
|
46
|
+
pid=$(ps axw -eo pid,command | tr 'A-Z' 'a-z' | grep org.apache.hadoop | grep secondarynamenode | grep java | awk '{print $1}')
|
47
|
+
}
|
48
|
+
|
49
|
+
running() {
|
50
|
+
get_running_pid
|
51
|
+
[ -z "$pid" ] && return 1
|
52
|
+
return 0
|
53
|
+
}
|
54
|
+
|
55
|
+
start() {
|
56
|
+
su -s /bin/sh root -c "$HADOOP_HOME/bin/hadoop-daemon.sh start secondarynamenode"
|
57
|
+
}
|
58
|
+
stop() {
|
59
|
+
su -s /bin/sh root -c "$HADOOP_HOME/bin/hadoop-daemon.sh stop secondarynamenode"
|
60
|
+
}
|
61
|
+
|
62
|
+
|
63
|
+
case "$1" in
|
64
|
+
start)
|
65
|
+
echo -n "Starting $DESC: "
|
66
|
+
if running ; then
|
67
|
+
echo "$NAME."
|
68
|
+
echo "Already running."
|
69
|
+
else
|
70
|
+
start
|
71
|
+
if running ; then
|
72
|
+
echo "$NAME."
|
73
|
+
else
|
74
|
+
echo "ERROR."
|
75
|
+
fi
|
76
|
+
fi
|
77
|
+
;;
|
78
|
+
stop)
|
79
|
+
echo -n "Stopping $DESC: "
|
80
|
+
stop
|
81
|
+
if ! running ; then
|
82
|
+
echo 'ERROR'
|
83
|
+
else
|
84
|
+
echo "$NAME."
|
85
|
+
fi
|
86
|
+
;;
|
87
|
+
force-stop)
|
88
|
+
echo -n "Forcefully stopping $DESC: "
|
89
|
+
get_running_pid
|
90
|
+
kill -9 $pid
|
91
|
+
if ! running ; then
|
92
|
+
echo "$NAME."
|
93
|
+
else
|
94
|
+
echo " ERROR."
|
95
|
+
fi
|
96
|
+
;;
|
97
|
+
force-reload)
|
98
|
+
# check wether $DAEMON is running. If so, restart
|
99
|
+
running && $0 restart
|
100
|
+
;;
|
101
|
+
restart)
|
102
|
+
echo -n "Restarting $DESC: "
|
103
|
+
stop
|
104
|
+
[ -n "$DODTIME" ] && sleep $DODTIME
|
105
|
+
$0 start
|
106
|
+
;;
|
107
|
+
status)
|
108
|
+
echo -n "$NAME is "
|
109
|
+
if running ; then
|
110
|
+
echo "running"
|
111
|
+
else
|
112
|
+
echo "not running."
|
113
|
+
exit 1
|
114
|
+
fi
|
115
|
+
;;
|
116
|
+
*)
|
117
|
+
N=/etc/init.d/$NAME
|
118
|
+
# echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
|
119
|
+
echo "Usage: $N {start|stop|restart|force-reload|status|force-stop}" >&2
|
120
|
+
exit 1
|
121
|
+
;;
|
122
|
+
esac
|
123
|
+
|
124
|
+
exit 0
|
@@ -0,0 +1,124 @@
|
|
1
|
+
#! /bin/sh
|
2
|
+
#
|
3
|
+
# skeleton example file to build /etc/init.d/ scripts.
|
4
|
+
# This file should be used to construct scripts for /etc/init.d.
|
5
|
+
#
|
6
|
+
# Written by Miquel van Smoorenburg <miquels@cistron.nl>.
|
7
|
+
# Modified for Debian
|
8
|
+
# by Ian Murdock <imurdock@gnu.ai.mit.edu>.
|
9
|
+
# Further changes by Javier Fernandez-Sanguino <jfs@debian.org>
|
10
|
+
#
|
11
|
+
# Version: @(#)skeleton 1.9 26-Feb-2001 miquels@cistron.nl
|
12
|
+
#
|
13
|
+
### BEGIN INIT INFO
|
14
|
+
# Provides: hadoop-tasktracker
|
15
|
+
# Required-Start: $network $local_fs
|
16
|
+
# Required-Stop:
|
17
|
+
# Should-Start: $named
|
18
|
+
# Should-Stop:
|
19
|
+
# Default-Start: 2 3 4 5
|
20
|
+
# Default-Stop: 0 1 6
|
21
|
+
# Short-Description: Hadoop tasktracker daemon
|
22
|
+
### END INIT INFO
|
23
|
+
|
24
|
+
set -e
|
25
|
+
|
26
|
+
# Include hadoop defaults if available
|
27
|
+
if [ -f /usr/local/hadoop/conf/hadoop-env.sh ] ; then
|
28
|
+
. /usr/local/hadoop/conf/hadoop-env.sh
|
29
|
+
fi
|
30
|
+
|
31
|
+
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
|
32
|
+
DAEMON_SCRIPT=$HADOOP_HOME/bin/hadoop-daemon.sh
|
33
|
+
NAME=hadoop-tasktracker
|
34
|
+
DESC="Hadoop tasktracker daemon"
|
35
|
+
|
36
|
+
test -x $DAEMON_SCRIPT || exit 0
|
37
|
+
|
38
|
+
LOGDIR=$HADOOP_LOG_DIR
|
39
|
+
PIDFILE=/var/run/hadoop/tasktracker.pid
|
40
|
+
DODTIME=3 # Time to wait for the server to die, in seconds
|
41
|
+
# If this value is set too low you might not
|
42
|
+
# let some servers to die gracefully and
|
43
|
+
# 'restart' will not work
|
44
|
+
|
45
|
+
get_running_pid() {
|
46
|
+
pid=$(ps axw -eo pid,command | tr 'A-Z' 'a-z' | grep org.apache.hadoop | grep tasktracker | grep java | awk '{print $1}')
|
47
|
+
}
|
48
|
+
|
49
|
+
running() {
|
50
|
+
get_running_pid
|
51
|
+
[ -z "$pid" ] && return 1
|
52
|
+
return 0
|
53
|
+
}
|
54
|
+
|
55
|
+
start() {
|
56
|
+
su -s /bin/sh root -c "$HADOOP_HOME/bin/hadoop-daemon.sh start tasktracker"
|
57
|
+
}
|
58
|
+
stop() {
|
59
|
+
su -s /bin/sh root -c "$HADOOP_HOME/bin/hadoop-daemon.sh stop tasktracker"
|
60
|
+
}
|
61
|
+
|
62
|
+
|
63
|
+
case "$1" in
|
64
|
+
start)
|
65
|
+
echo -n "Starting $DESC: "
|
66
|
+
if running ; then
|
67
|
+
echo "$NAME."
|
68
|
+
echo "Already running."
|
69
|
+
else
|
70
|
+
start
|
71
|
+
if running ; then
|
72
|
+
echo "$NAME."
|
73
|
+
else
|
74
|
+
echo "ERROR."
|
75
|
+
fi
|
76
|
+
fi
|
77
|
+
;;
|
78
|
+
stop)
|
79
|
+
echo -n "Stopping $DESC: "
|
80
|
+
stop
|
81
|
+
if ! running ; then
|
82
|
+
echo 'ERROR'
|
83
|
+
else
|
84
|
+
echo "$NAME."
|
85
|
+
fi
|
86
|
+
;;
|
87
|
+
force-stop)
|
88
|
+
echo -n "Forcefully stopping $DESC: "
|
89
|
+
get_running_pid
|
90
|
+
kill -9 $pid
|
91
|
+
if ! running ; then
|
92
|
+
echo "$NAME."
|
93
|
+
else
|
94
|
+
echo " ERROR."
|
95
|
+
fi
|
96
|
+
;;
|
97
|
+
force-reload)
|
98
|
+
# check wether $DAEMON is running. If so, restart
|
99
|
+
running && $0 restart
|
100
|
+
;;
|
101
|
+
restart)
|
102
|
+
echo -n "Restarting $DESC: "
|
103
|
+
stop
|
104
|
+
[ -n "$DODTIME" ] && sleep $DODTIME
|
105
|
+
$0 start
|
106
|
+
;;
|
107
|
+
status)
|
108
|
+
echo -n "$NAME is "
|
109
|
+
if running ; then
|
110
|
+
echo "running"
|
111
|
+
else
|
112
|
+
echo "not running."
|
113
|
+
exit 1
|
114
|
+
fi
|
115
|
+
;;
|
116
|
+
*)
|
117
|
+
N=/etc/init.d/$NAME
|
118
|
+
# echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
|
119
|
+
echo "Usage: $N {start|stop|restart|force-reload|status|force-stop}" >&2
|
120
|
+
exit 1
|
121
|
+
;;
|
122
|
+
esac
|
123
|
+
|
124
|
+
exit 0
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# /etc/jvm
|
2
|
+
#
|
3
|
+
# This file defines the default system JVM search order. Each
|
4
|
+
# JVM should list their JAVA_HOME compatible directory in this file.
|
5
|
+
# The default system JVM is the first one available from top to
|
6
|
+
# bottom.
|
7
|
+
|
8
|
+
/usr/lib/jvm/java-6-sun
|
9
|
+
/usr/lib/jvm/java-gcj
|
10
|
+
/usr/lib/jvm/ia32-java-1.5.0-sun
|
11
|
+
/usr/lib/jvm/java-1.5.0-sun
|
12
|
+
/usr
|
@@ -0,0 +1,94 @@
|
|
1
|
+
# Define some default values that can be overridden by system properties
|
2
|
+
hadoop.root.logger=INFO,console
|
3
|
+
hadoop.log.dir=.
|
4
|
+
hadoop.log.file=hadoop.log
|
5
|
+
|
6
|
+
# Define the root logger to the system property "hadoop.root.logger".
|
7
|
+
log4j.rootLogger=${hadoop.root.logger}, EventCounter
|
8
|
+
|
9
|
+
# Logging Threshold
|
10
|
+
log4j.threshhold=ALL
|
11
|
+
|
12
|
+
#
|
13
|
+
# Daily Rolling File Appender
|
14
|
+
#
|
15
|
+
|
16
|
+
log4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender
|
17
|
+
log4j.appender.DRFA.File=${hadoop.log.dir}/${hadoop.log.file}
|
18
|
+
|
19
|
+
# Rollver at midnight
|
20
|
+
log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
|
21
|
+
|
22
|
+
# 30-day backup
|
23
|
+
#log4j.appender.DRFA.MaxBackupIndex=30
|
24
|
+
log4j.appender.DRFA.layout=org.apache.log4j.PatternLayout
|
25
|
+
|
26
|
+
# Pattern format: Date LogLevel LoggerName LogMessage
|
27
|
+
log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
|
28
|
+
# Debugging Pattern format
|
29
|
+
#log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n
|
30
|
+
|
31
|
+
|
32
|
+
#
|
33
|
+
# console
|
34
|
+
# Add "console" to rootlogger above if you want to use this
|
35
|
+
#
|
36
|
+
|
37
|
+
log4j.appender.console=org.apache.log4j.ConsoleAppender
|
38
|
+
log4j.appender.console.target=System.err
|
39
|
+
log4j.appender.console.layout=org.apache.log4j.PatternLayout
|
40
|
+
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n
|
41
|
+
|
42
|
+
#
|
43
|
+
# TaskLog Appender
|
44
|
+
#
|
45
|
+
|
46
|
+
#Default values
|
47
|
+
hadoop.tasklog.taskid=null
|
48
|
+
hadoop.tasklog.noKeepSplits=4
|
49
|
+
hadoop.tasklog.totalLogFileSize=100
|
50
|
+
hadoop.tasklog.purgeLogSplits=true
|
51
|
+
hadoop.tasklog.logsRetainHours=12
|
52
|
+
|
53
|
+
log4j.appender.TLA=org.apache.hadoop.mapred.TaskLogAppender
|
54
|
+
log4j.appender.TLA.taskId=${hadoop.tasklog.taskid}
|
55
|
+
log4j.appender.TLA.totalLogFileSize=${hadoop.tasklog.totalLogFileSize}
|
56
|
+
|
57
|
+
log4j.appender.TLA.layout=org.apache.log4j.PatternLayout
|
58
|
+
log4j.appender.TLA.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
|
59
|
+
|
60
|
+
#
|
61
|
+
# Rolling File Appender
|
62
|
+
#
|
63
|
+
|
64
|
+
#log4j.appender.RFA=org.apache.log4j.RollingFileAppender
|
65
|
+
#log4j.appender.RFA.File=${hadoop.log.dir}/${hadoop.log.file}
|
66
|
+
|
67
|
+
# Logfile size and and 30-day backups
|
68
|
+
#log4j.appender.RFA.MaxFileSize=1MB
|
69
|
+
#log4j.appender.RFA.MaxBackupIndex=30
|
70
|
+
|
71
|
+
#log4j.appender.RFA.layout=org.apache.log4j.PatternLayout
|
72
|
+
#log4j.appender.RFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} - %m%n
|
73
|
+
#log4j.appender.RFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n
|
74
|
+
|
75
|
+
#
|
76
|
+
# FSNamesystem Audit logging
|
77
|
+
# All audit events are logged at INFO level
|
78
|
+
#
|
79
|
+
log4j.logger.org.apache.hadoop.fs.FSNamesystem.audit=WARN
|
80
|
+
|
81
|
+
# Custom Logging levels
|
82
|
+
|
83
|
+
log4j.logger.org.apache.hadoop.mapred.JobTracker=DEBUG
|
84
|
+
log4j.logger.org.apache.hadoop.mapred.TaskTracker=DEBUG
|
85
|
+
#log4j.logger.org.apache.hadoop.fs.FSNamesystem=DEBUG
|
86
|
+
|
87
|
+
# Jets3t library
|
88
|
+
log4j.logger.org.jets3t.service.impl.rest.httpclient.RestS3Service=ERROR
|
89
|
+
|
90
|
+
#
|
91
|
+
# Event Counter Appender
|
92
|
+
# Sends counts of logging messages at different severity levels to Hadoop Metrics.
|
93
|
+
#
|
94
|
+
log4j.appender.EventCounter=org.apache.hadoop.metrics.jvm.EventCounter
|
@@ -0,0 +1,70 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
|
3
|
+
|
4
|
+
<!-- Put site-specific property overrides in this file. -->
|
5
|
+
|
6
|
+
<configuration>
|
7
|
+
|
8
|
+
<property>
|
9
|
+
<name>mapred.job.tracker</name>
|
10
|
+
<value><%= @node[:poolparty][:current_master] %>:54311</value>
|
11
|
+
<description>The host and port that the MapReduce job tracker runs
|
12
|
+
at. If "local", then jobs are run in-process as a single map
|
13
|
+
and reduce task.
|
14
|
+
</description>
|
15
|
+
</property>
|
16
|
+
|
17
|
+
|
18
|
+
<property>
|
19
|
+
<name>mapred.task.tracker.report.address</name>
|
20
|
+
<value><%= @node[:poolparty][:hadoop_this_nodes_ip] %>:0</value>
|
21
|
+
<description>The interface and port that task tracker server listens on.
|
22
|
+
Since it is only connected to by the tasks, it uses the local interface.
|
23
|
+
EXPERT ONLY. Should only be changed if your host does not have the loopback
|
24
|
+
interface.</description>
|
25
|
+
</property>
|
26
|
+
|
27
|
+
<property>
|
28
|
+
<name>mapred.local.dir</name>
|
29
|
+
<value><%= @node[:poolparty][:hadoop_data_dir] %>/mapred/local</value>
|
30
|
+
</property>
|
31
|
+
|
32
|
+
<property>
|
33
|
+
<name>mapred.system.dir</name>
|
34
|
+
<value><%= @node[:poolparty][:hadoop_data_dir] %>/mapred/system</value>
|
35
|
+
</property>
|
36
|
+
|
37
|
+
<property>
|
38
|
+
<name>mapred.tasktracker.dns.interface</name>
|
39
|
+
<value>eth0</value>
|
40
|
+
</property>
|
41
|
+
|
42
|
+
<property>
|
43
|
+
<name>mapred.job.tracker.persist.jobstatus.active</name>
|
44
|
+
<value>true</value>
|
45
|
+
</property>
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
<property>
|
52
|
+
<name>mapred.child.java.opts</name>
|
53
|
+
<value>-Xmx200m -Djava.net.preferIPv4Stack=true</value>
|
54
|
+
<description>Java opts for the task tracker child processes.
|
55
|
+
The following symbol, if present, will be interpolated: @taskid@ is replaced
|
56
|
+
by current TaskID. Any other occurrences of '@' will go unchanged.
|
57
|
+
For example, to enable verbose gc logging to a file named for the taskid in
|
58
|
+
/tmp and to set the heap maximum to be a gigabyte, pass a 'value' of:
|
59
|
+
-Xmx1024m -verbose:gc -Xloggc:/tmp/@taskid@.gc
|
60
|
+
|
61
|
+
TaskManager.VMFlags=-Djava.net.preferIPv6Addresses=true -Djava.net.preferIPv4Stack=false
|
62
|
+
|
63
|
+
The configuration variable mapred.child.ulimit can be used to control the
|
64
|
+
maximum virtual memory of the child processes.
|
65
|
+
</description>
|
66
|
+
</property>
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
</configuration>
|
@@ -0,0 +1,138 @@
|
|
1
|
+
=begin rdoc
|
2
|
+
In
|
3
|
+
=end
|
4
|
+
|
5
|
+
module PoolParty
|
6
|
+
module Plugin
|
7
|
+
class Hive < Plugin
|
8
|
+
def before_load(o={}, &block)
|
9
|
+
do_once do
|
10
|
+
# install_from_bin
|
11
|
+
install_from_src
|
12
|
+
set_environment_variables
|
13
|
+
create_hdfs_directories
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def loaded(o={}, &block)
|
18
|
+
do_once do
|
19
|
+
has_file :name => "#{hive_home}/conf/hive-default.xml", :template => "hive-default.xml.erb"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def install_from_bin
|
24
|
+
has_exec "wget #{hive_dist} -O /usr/local/src/hive-0.3.0-hadoop-0.19.0-dev.tar.gz",
|
25
|
+
:not_if => "test -e /usr/local/src/hive-0.3.0-hadoop-0.19.0-dev.tar.gz"
|
26
|
+
has_exec "cd /usr/local/src && tar -xvvf /usr/local/src/hive-0.3.0-hadoop-0.19.0-dev.tar.gz",
|
27
|
+
:not_if => "test -e #{hive_home}"
|
28
|
+
has_exec "mv /usr/local/src/hive-0.3.0-hadoop-0.19.0-dev #{hive_home}",
|
29
|
+
:not_if => "test -e #{hive_home}"
|
30
|
+
end
|
31
|
+
|
32
|
+
# doesn't really work
|
33
|
+
def install_from_src
|
34
|
+
install_dependent_packages
|
35
|
+
download_and_build_src
|
36
|
+
end
|
37
|
+
|
38
|
+
def install_dependent_packages
|
39
|
+
has_package :name => "subversion"
|
40
|
+
has_package :name => "ant"
|
41
|
+
end
|
42
|
+
|
43
|
+
def download_and_build_src
|
44
|
+
has_exec "svn co #{hive_repo} #{src_dir} -r#{hive_revision}",
|
45
|
+
:not_if => "test -e #{src_dir}/build.xml"
|
46
|
+
has_exec "cd #{src_dir} && wget --no-check-certificate https://issues.apache.org/jira/secure/attachment/12409779/hive-487.3.patch",
|
47
|
+
:not_if => "test -e #{src_dir}/hive-487.3.patch"
|
48
|
+
has_exec "cd #{src_dir} && patch -p0 < hive-487.3.patch && mv hive-487.3.patch hive-487.3.patch.applied",
|
49
|
+
:not_if => "test -e #{src_dir}/hive-487.3.patch.applied"
|
50
|
+
has_exec "cd #{src_dir} && ant -Dhadoop.version=\\\"#{hadoop_version}\\\" package",
|
51
|
+
:not_if => "test -e #{hive_home}/README.txt"
|
52
|
+
has_exec "mv #{src_dir}/build/dist #{hive_home}",
|
53
|
+
:not_if => "test -e #{hive_home}"
|
54
|
+
end
|
55
|
+
|
56
|
+
# todo, pull from parent
|
57
|
+
def set_environment_variables
|
58
|
+
has_file :name => "/root/.hadoop-etc-env.sh", :content => <<-EOF
|
59
|
+
export HADOOP_HOME=#{hadoop_home}
|
60
|
+
export HADOOP=$HADOOP_HOME/bin/hadoop
|
61
|
+
export HIVE_HOME=#{hive_home}
|
62
|
+
export PATH=$HADOOP_HOME/bin:$HIVE_HOME/bin:$PATH
|
63
|
+
EOF
|
64
|
+
has_line_in_file :file => "/root/.profile", :line => "source /root/.hadoop-etc-env.sh"
|
65
|
+
end
|
66
|
+
|
67
|
+
def create_hdfs_directories
|
68
|
+
has_exec "#{hadoop_home}/bin/hadoop fs -mkdir /tmp",
|
69
|
+
:not_if => "#{hadoop_home}/bin/hadoop fs -ls /tmp",
|
70
|
+
:only_if => "test -e #{hadoop_data_dir}/dfs && (ps aux | grep org.apache.hadoop.hdfs.server.namenode.NameNode | grep -v grep)"
|
71
|
+
|
72
|
+
has_exec "#{hadoop_home}/bin/hadoop fs -mkdir /user/hive/warehouse",
|
73
|
+
:not_if => "#{hadoop_home}/bin/hadoop fs -ls /user/hive/warehouse",
|
74
|
+
:only_if => "test -e #{hadoop_data_dir}/dfs && (ps aux | grep org.apache.hadoop.hdfs.server.namenode.NameNode | grep -v grep)"
|
75
|
+
|
76
|
+
has_exec "#{hadoop_home}/bin/hadoop fs -chmod g+w /tmp",
|
77
|
+
:not_if => "#{hadoop_home}/bin/hadoop fs -ls /tmp", # todo, check perms
|
78
|
+
:only_if => "test -e #{hadoop_data_dir}/dfs && (ps aux | grep org.apache.hadoop.hdfs.server.namenode.NameNode | grep -v grep)"
|
79
|
+
|
80
|
+
has_exec "#{hadoop_home}/bin/hadoop fs -chmod g+w /user/hive/warehouse",
|
81
|
+
:not_if => "#{hadoop_home}/bin/hadoop fs -ls /user/hive/warehouse",
|
82
|
+
:only_if => "test -e #{hadoop_data_dir}/dfs && (ps aux | grep org.apache.hadoop.hdfs.server.namenode.NameNode | grep -v grep)"
|
83
|
+
end
|
84
|
+
|
85
|
+
# you can also pass 'host:port' for host
|
86
|
+
def use_mysql(host, user, pass)
|
87
|
+
has_exec "wget http://mysql.mirrors.pair.com/Downloads/Connector-J/mysql-connector-java-5.0.8.tar.gz -O /usr/local/src/mysql-connector-java-5.0.8.tar.gz",
|
88
|
+
:not_if => "test -e /usr/local/src/mysql-connector-java-5.0.8.tar.gz"
|
89
|
+
has_exec "cd /usr/local/src && tar -xvvf /usr/local/src/mysql-connector-java-5.0.8.tar.gz",
|
90
|
+
:not_if => "test -e /usr/local/src/mysql-connector-java-5.0.8"
|
91
|
+
has_exec "mv /usr/local/src/mysql-connector-java-5.0.8/mysql-connector-java-5.0.8-bin.jar #{hive_home}/lib",
|
92
|
+
:not_if => "test -e #{hive_home}/lib/mysql-connector-java-5.0.8-bin.jar"
|
93
|
+
has_variable :name => "hive_mysql_enabled", :value => "true"
|
94
|
+
has_variable :name => "hive_mysql_host", :value => host
|
95
|
+
has_variable :name => "hive_mysql_user", :value => user
|
96
|
+
has_variable :name => "hive_mysql_pass", :value => pass
|
97
|
+
end
|
98
|
+
|
99
|
+
private
|
100
|
+
|
101
|
+
def hive_dist
|
102
|
+
"http://www.apache.org/dist/hadoop/hive/hive-0.3.0/hive-0.3.0-hadoop-0.19.0-dev.tar.gz"
|
103
|
+
end
|
104
|
+
|
105
|
+
def src_dir
|
106
|
+
"/usr/local/src/hive"
|
107
|
+
end
|
108
|
+
|
109
|
+
def hive_home
|
110
|
+
"/usr/local/hive"
|
111
|
+
end
|
112
|
+
|
113
|
+
def hive_repo
|
114
|
+
# "http://svn.apache.org/repos/asf/hadoop/hive/tags/release-0.3.0/"
|
115
|
+
"http://svn.apache.org/repos/asf/hadoop/hive/trunk"
|
116
|
+
end
|
117
|
+
|
118
|
+
def hive_revision
|
119
|
+
"781069"
|
120
|
+
end
|
121
|
+
|
122
|
+
### TODO the values below should pull from parent e.g. the hadoop plugin
|
123
|
+
def hadoop_home
|
124
|
+
"/usr/local/hadoop"
|
125
|
+
end
|
126
|
+
|
127
|
+
def hadoop_data_dir
|
128
|
+
"/mnt/hadoop-data"
|
129
|
+
end
|
130
|
+
|
131
|
+
def hadoop_version
|
132
|
+
"0.20.0"
|
133
|
+
end
|
134
|
+
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|