import time
import calendar
import datetime
+import sys
+import getopt
+import socket
+
+base_url = "http://" + socket.getfqdn() + ":19888"
+begin_rel = 24 * 3600
+end_rel = 0
+
+try:
+ opts, args = getopt.getopt(sys.argv[1:], "hm:b:e:", ["help", "mapred-url=", "begin=", "end="])
+except getopt.GetoptError:
+ print 'Args error'
+ sys.exit(2)
+for opt, arg in opts:
+ if opt in ('-h', '--help'):
+ print('jobs.py [-h|--help] [-m|--mapred-url URL] [-b|--begin] [-e|--end]')
+ elif opt in ('-m', '--mapred-url'):
+ base_url = arg
+ elif opt in ('-b', '--begin'):
+ begin_rel = int(arg)
+ elif opt in ('-e', '--end'):
+ end_rel = int(arg)
+ else:
+ print 'Args error'
+ sys.exit(2)
# epoch time of local date
#now = datetime.date.today().strftime('%s')
now = calendar.timegm(datetime.datetime(now0.year, now0.month, now0.day, 0, 0).timetuple())
print '# ' + str(now0)
-begin = 1000 * (now - 24 * 3600)
-end = 1000 * now
-url = "<%= @_mapred_url -%>/ws/v1/history/mapreduce/jobs?finishedTimeBegin=" + str(begin) + "&finishedTimeEnd=" + str(end)
+begin = now - begin_rel
+end = now - end_rel
+url = base_url + "/ws/v1/history/mapreduce/jobs?finishedTimeBegin=" + str(1000 * begin) + "&finishedTimeEnd=" + str(1000 * end)
print '# ' + url
b = BytesIO()
# print '#[progress]', username, users[username].total, user.completed, user.wait, user.time
-print "INSERT INTO measure (name) VALUES ('jobs')"
+sql_begin = datetime.datetime.fromtimestamp(begin).strftime('%Y-%m-%d %H:%M:%S')
+sql_end = datetime.datetime.fromtimestamp(end).strftime('%Y-%m-%d %H:%M:%S')
+print "INSERT INTO measure (name, start, end) VALUES ('jobs', '%s', '%s');" % (sql_begin, sql_end)
for username, user in users.iteritems():
- print "INSERT INTO jobs (id_measure, user, jobs, done, fail, real_wait, real_time, wait_min, wait_max) VALUES (last_insert_id(), '%s', %d, %d, %d, %d, %d, %d, %d)" % (username, user.jobs, user.completed, user.total - user.completed, user.wait, user.time, user.wait_min, user.wait_max)
+ print "INSERT INTO jobs (id_measure, user, jobs, done, fail, real_wait, real_time, wait_min, wait_max) VALUES (last_insert_id(), '%s', %d, %d, %d, %d, %d, %d, %d);" % (username, user.jobs, user.completed, user.total - user.completed, user.wait, user.time, user.wait_min, user.wait_max)
--- /dev/null
+#! /bin/sh -e
+
+PREFIX='/usr/local'
+DEFAULTDIR='<%= scope.lookupvar('site_hadoop::defaultconfdir') -%>'
+export KRB5CCNAME='FILE:/tmp/krb5cc_accounting_jobs'
+KEYTAB='FILE:/etc/security/keytab/nn.service.keytab'
+PRINCIPAL="nn/`hostname -f`"
+MYSQL_DB='accounting'
+MYSQL_USER='accounting'
+MYSQL_PASSWORD=''
+
+if test -f ${DEFAULTDIR}/hadoop-accounting; then
+ . ${DEFAULTDIR}/hadoop-accounting
+fi
+
+if test -n "${PRINCIPAL}"; then
+ kinit -k -t ${KEYTAB} -l 60m ${PRINCIPAL}
+fi
+
+rm -f /tmp/accounting.jobs.sql
+${PREFIX}/share/hadoop/accounting-jobs.py --mapred-url '<%= @_mapred_url -%>' > /tmp/accounting.jobs.sql
+
+if test -n "${PRINCIPAL}"; then
+ kdestroy
+fi
+
+cat /tmp/accounting.jobs.sql | mysql --user ${MYSQL_USER} --password=${MYSQL_PASSWORD} ${MYSQL_DB}