24.Azkaban调度脚本的编写
启动azkaban
在启动了server和excutor之后,在浏览器打开azkaban,会发现不能打开,日志报这个错误

at sun.security.ssl.InputRecord.handleUnknownRecord(InputRecord.java:)
at sun.security.ssl.InputRecord.read(InputRecord.java:)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:)
at org.mortbay.jetty.security.SslSocketConnector$SslConnection.run(SslSocketConnector.java:)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:)
// ::24.499 + WARN [log] [Azkaban] EXCEPTION
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
at sun.security.ssl.InputRecord.handleUnknownRecord(InputRecord.java:)
at sun.security.ssl.InputRecord.read(InputRecord.java:)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:)
at org.mortbay.jetty.security.SslSocketConnector$SslConnection.run(SslSocketConnector.java:)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:)
// ::24.680 + WARN [log] [Azkaban] EXCEPTION
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
at sun.security.ssl.InputRecord.handleUnknownRecord(InputRecord.java:)
at sun.security.ssl.InputRecord.read(InputRecord.java:)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:)
at org.mortbay.jetty.security.SslSocketConnector$SslConnection.run(SslSocketConnector.java:)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:)
// ::24.809 + WARN [log] [Azkaban] EXCEPTION
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
at sun.security.ssl.InputRecord.handleUnknownRecord(InputRecord.java:)
at sun.security.ssl.InputRecord.read(InputRecord.java:)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:)
at org.mortbay.jetty.security.SslSocketConnector$SslConnection.run(SslSocketConnector.java:)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:)
// ::14.746 + WARN [log] [Azkaban] EXCEPTION
javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:)
at org.mortbay.jetty.security.SslSocketConnector$SslConnection.run(SslSocketConnector.java:)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:)
Caused by: java.io.EOFException: SSL peer shut down incorrectly
at sun.security.ssl.InputRecord.read(InputRecord.java:)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:)
... more
其实这个问题不难解决,在打开的时候建议用谷歌浏览器:地址是 https://192.168.86.131:8443/(https://你的ip:8433)
注意了,之前一直不能打开是因为使用了http,这里强调一下,一定不能用http,必须用https,然后选择高级选项,运行访问不安全的地址,因为这个地址被默认为不安全的
编写upload.job脚本
# upload.job
type=command
command=bash uploadFile2Hdfs.sh
编写uploadFile2Hdfs.sh脚本
#!/bin/bash #set java env
export JAVA_HOME=/opt/modules/jdk1..0_65
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH #set hadoop env
export HADOOP_HOME=/opt/modules/hadoop-2.6.
export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH #版本1的问题:
#虽然上传到Hadoop集群上了,但是原始文件还在。如何处理?
#日志文件的名称都是xxxx.log1,再次上传文件时,因为hdfs上已经存在了,会报错。如何处理? #如何解决版本1的问题
# 、先将需要上传的文件移动到待上传目录
# 、在讲文件移动到待上传目录时,将文件按照一定的格式重名名
# /export/software/hadoop.log1 /export/data/click_log/xxxxx_click_log_{date} #日志文件存放的目录
log_src_dir=/home/hadoop/logs/log/ #待上传文件存放的目录
log_toupload_dir=/home/hadoop/logs/toupload/ day_01=`date -d'-1 day' +%Y-%m-%d`
syear=`date --date=$day_01 +%Y`
smonth=`date --date=$day_01 +%m`
sday=`date --date=$day_01 +%d` #echo $day_01
#echo $syear
#echo $smonth
#echo $sday #日志文件上传到hdfs的根路径
hdfs_root_dir=/data/clickLog/$syear/$smonth/$sday hadoop fs -mkdir -p $hdfs_root_dir #打印环境变量信息
echo "envs: hadoop_home: $HADOOP_HOME" #读取日志文件的目录,判断是否有需要上传的文件
echo "log_src_dir:"$log_src_dir
ls $log_src_dir | while read fileName
do
if [[ "$fileName" == access.log ]]; then
# if [ "access.log" = "$fileName" ];then
date=`date +%Y_%m_%d_%H_%M_%S`
#将文件移动到待上传目录并重命名
#打印信息
echo "moving $log_src_dir$fileName to $log_toupload_dir"xxxxx_click_log_$fileName"$date"
mv $log_src_dir$fileName $log_toupload_dir"xxxxx_click_log_$fileName"$date
#将待上传的文件path写入一个列表文件willDoing
echo $log_toupload_dir"xxxxx_click_log_$fileName"$date >> $log_toupload_dir"willDoing."$date
fi done
#找到列表文件willDoing
ls $log_toupload_dir | grep will |grep -v "_COPY_" | grep -v "_DONE_" | while read line
do
#打印信息
echo "toupload is in file:"$line
#将待上传文件列表willDoing改名为willDoing_COPY_
mv $log_toupload_dir$line $log_toupload_dir$line"_COPY_"
#读列表文件willDoing_COPY_的内容(一个一个的待上传文件名),此处的line 就是列表中的一个待上传文件的path
cat $log_toupload_dir$line"_COPY_" |while read line
do
#打印信息
echo "puting...$line to hdfs path.....$hdfs_root_dir"
hadoop fs -put $line $hdfs_root_dir
done
mv $log_toupload_dir$line"_COPY_" $log_toupload_dir$line"_DONE_"
done
然后把这两个脚本打包

进入azkaban的登录页面



选择刚刚打包的upflow.zip



这个时候把日志文件上传到集群上





查看HDFS目录,证明文件上传成功

本地集群的日志文件也不在了


编写脚本clean.job
# clean.job
type=command
dependencies=upload
command=bash clean.sh
编写clean.sh脚本
#!/bin/bash
export JAVA_HOME=/opt/modules/jdk1..0_65
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
#set hadoop env
export HADOOP_HOME=/opt/modules/hadoop-2.6.
export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH log_local_dir=/home/hadoop/flume/ #log_hdfs_dir=/test/// day_01=`date -d'-1 day' +%Y-%m-%d`
syear=`date --date=$day_01 +%Y`
smonth=`date --date=$day_01 +%m`
sday=`date --date=$day_01 +%d` #echo $day_01
#echo $syear
#echo $smonth
#echo $sday log_hdfs_dir=/data/clickLog/$syear/$smonth/$sday
#echo $log_hdfs_dir
click_log_clean=com.it19gong.clickLog.AccessLogDriver clean_dir=/cleaup/$syear/$smonth/$sday echo "hadoop jar /home/hadoop/hivedome/hiveaad.jar $click_log_clean $log_hdfs_dir $clean_dir"
hadoop fs -rm -r -f $clean_dir
hadoop jar /home/hadoop/hivedome/mrclick.jar $click_log_clean $log_hdfs_dir $clean_dir
编写upload.job脚本
# upload.job
type=command
command=bash uploadFile2Hdfs.sh
然后将这四个脚本进行打包







上传数据文件






编写脚本hivesql.sh
#!/bin/bash
export JAVA_HOME=/opt/modules/jdk1..0_65
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
#set hadoop env
export HADOOP_HOME=/opt/modules/hadoop-2.6.
export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH export HIVE_HOME=/opt/modules/hive
export PATH=${HIVE_HOME}/bin:$PATH log_local_dir=/home/hadoop/flume/ #log_hdfs_dir=/test/// day_01=`date -d'-1 day' +%Y-%m-%d`
syear=`date --date=$day_01 +%Y`
smonth=`date --date=$day_01 +%m`
sday=`date --date=$day_01 +%d` #echo $day_01
#echo $syear
#echo $smonth
#echo $sday log_hdfs_dir=/data/clickLog/$syear/$smonth/$sday
#echo $log_hdfs_dir
click_log_clean=com.it19gong.clickLog.AccessLogDriver clean_dir=/cleaup/$syear/$smonth/$sday
HQL_origin="load data inpath '$clean_dir' into table mydb2.access"
#HQL_origin="create external table db2.access(ip string,day string,url string,upflow string) row format delimited fields terminated by ',' location '$clean_dir'"
#echo $HQL_origin hive -e "$HQL_origin"
编写脚本hivesqljob.job
# hivesql.job
type=command
dependencies=clean
command=bash hivesql.sh
编写脚本ip.sh
#!/bin/bash
export JAVA_HOME=/opt/modules/jdk1..0_65
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
#set hadoop env
export HADOOP_HOME=/opt/modules/hadoop-2.6.
export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH export HIVE_HOME=/opt/modules/hive
export PATH=${HIVE_HOME}/bin:$PATH log_local_dir=/home/hadoop/flume/ #log_hdfs_dir=/test/// day_01=`date -d'-1 day' +%Y-%m-%d`
syear=`date --date=$day_01 +%Y`
smonth=`date --date=$day_01 +%m`
sday=`date --date=$day_01 +%d` #echo $day_01
#echo $syear
#echo $smonth
#echo $sday log_hdfs_dir=/data/clickLog/$syear/$smonth/$sday
#echo $log_hdfs_dir
click_log_clean=com.it19gong.clickLog.AccessLogDriver clean_dir=/cleaup/$syear/$smonth/$sday HQL_origin="insert into mydb2.upflow select ip,sum(upflow) as sum from mydb2.access group by ip order by sum desc "
#echo $HQL_origin hive -e "$HQL_origin"
编写脚本ipjob.job
# ip.job
type=command
dependencies=hivesqljob
command=bash ip.sh
编写脚本mysql.sh
#!/bin/bash
export JAVA_HOME=/opt/modules/jdk1..0_65
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
#set hadoop env
export HADOOP_HOME=/opt/modules/hadoop-2.6.
export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH export HIVE_HOME=/opt/modules/hive
export PATH=${HIVE_HOME}/bin:$PATH
export SQOOP_HOME=/opt/modules/sqoop
export PATH=${SQOOP_HOME}/bin:$PATH
sqoop export --connect \
jdbc:mysql://node1:3306/userdb \
--username sqoop --password sqoop --table upflow --export-dir \
/user/hive/warehouse/mydb2.db/upflow --input-fields-terminated-by ','
编写脚本mysqljob.job
# mysql.job
type=command
dependencies=ipjob
command=bash mysql.sh
打包成job.zip




上传日志文件





打开本地安装的phpsudy

在浏览器打开网页http://www.echart.com/

24.Azkaban调度脚本的编写的更多相关文章
- azkaban调度
azkaban调度 1.概述 azkaban是一套调度系统,常用大数据作业调度.azkaban包括web和executor两套程序,web主要完成展示和交互,executor上完成调度和作业提交执行. ...
- 第2节 azkaban调度:16、azkaban的介绍以及azkaban的soloserver的安装使用
2. 工作流调度器azkaban 2.1 概述 azkaban官网: https://azkaban.github.io/ 2.1.1为什么需要工作流调度系统 l 一个完整的数据分析系统通常都是由大 ...
- [改善Java代码]易变业务使用脚本语言编写
建议16: 易变业务使用脚本语言编写 Java世界一直在遭受着异种语言的入侵,比如PHP.Ruby.Groovy.JavaScript等,这些“入侵者”都有一个共同特征:全是同一类语言—脚本语言,它们 ...
- Tsung脚本中使用动态参数(一)---直接在脚本里编写Erlang代码
杀死一个程序猿,只要改三次需求.同理,杀死一个接口自动化测试人员,只要改三次接口数据处理方式.我目前的状态,改了一次接口数据处理方式,有一种胸闷的感觉. 因为改需求,所以,要改脚本.T_T.所以,才有 ...
- selenium从入门到应用 - 2,简单线性脚本的编写
本系列所有代码 https://github.com/zhangting85/simpleWebtest 本文将介绍一个Java+TestNG+Maven+Selenium的web自动化测试脚本环境下 ...
- 24 道 shell 脚本面试题
想要成为中高级phper, shell 脚本是需要掌握的,它有助于你在工作环境中自动完成很多任务. 如下是一些面试过程中,经常会遇到的 shell 脚本面试问题及解答: Q:1 Shell脚本是什么. ...
- 工程师技术(五):Shell脚本的编写及测试、重定向输出的应用、使用特殊变量、编写一个判断脚本、编写一个批量添加用户脚本
一.Shell脚本的编写及测 目标: 本例要求两个简单的Shell脚本程序,任务目标如下: 1> 编写一个面世问候 /root/helloworld.sh 脚本,执行后显示出一段话“Hello ...
- Shell脚本的编写及测试
Shell脚本的编写及测试 1.1问题 本例要求两个简单的Shell脚本程序,任务目标如下: 编写一 ...
- (转)mysql5.6.7多实例安装、配置的详细讲解分析及shell启动脚本的编写
一.mysql安装 1.下载mysql数据库源码包: wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.27.tar.gz 2.安装mys ...
随机推荐
- iis大文件上传
IS出于安全考虑限制了大文件的上传,而网上百度到的大部分解决方法都是用一个管理员权限的记事本打开一个文件修改参数,但是我发现里面根本没有网上所说的那些参数,最后自己找到了修改发布文件的webconfi ...
- [Luogu] 程序自动分析
题面:https://www.luogu.org/problemnew/show/P1955 题解:https://www.zybuluo.com/wsndy-xx/note/1143858
- ie中打印的问题
一般正常的情况下使用window.print();各个浏览器都可以调用出打印功能来但是ie有个坑就是如果页面在iframe里的话打印出来就是错的页面所以在这里要这样写: var agent = nav ...
- fatal: unable to access 'https://github.com/Homebrew/brew/'
最近安装 Homebrew 遇到的坑,总结一下. 我的 Mac 版本是 10.13.6. 首先安装 Homebrew /usr/bin/ruby -e "$(curl -fsSL https ...
- pwn学习日记Day11 《程序员的自我修养》读书笔记
阅读基础 计算机系统软件体系结构采用一种层的结构--计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决. 多线程的优势: 1.某个操作可能会陷入长时间等待,等待的线程会进入睡眠状态,无法继续 ...
- mybatis+mysql批量插入和批量更新、存在及更新
mybatis+mysql批量插入和批量更新 一.批量插入 批量插入数据使用的sql语句是: insert into table (字段一,字段二,字段三) values(xx,xx,xx),(oo, ...
- Linux设备驱动程序 之 vmalloc
vmalloc()函数的工作方式类似于kmalloc(),只不过在前者分配的内存虚拟地址是连续的,而物理地址则无须连续:这也是用户空间分配函数的工作方式:由malloc()返回的页在进程的虚拟地址空间 ...
- MATLAB实现模糊控制
一.简介 MATLAB软件有提供一个模糊推理系统编辑器,利用模糊工具箱在matlab命令窗口输入Fuzzy命令进入模糊控制编辑环境 二.主要步骤 1.接受输入变量 2.输入变量模糊化 3.利用模糊规则 ...
- COM组件双接口对象模型
模型如下: 这里COM对象一共实现了三个接口,IUnknown,IDispatch, Ixxx. 每个COM都必须实现IUnknown,不考虑在内的话共实现了IDispatch和自定义接口Ixxx两个 ...
- HearthBuddy Ai 调试实战2 在使用海巨人的时候,少召唤了一个图腾(费用是对的)
问题 游戏面板 8是青玉之爪13是海巨人17是恐狼前锋 64是萨满 66是圣骑士63,99,46,是微型木乃伊[其中99和46都是2血3攻,63是2血1攻]57是鱼人木乃伊 微型木乃伊 "L ...