前边总结 了些hue下sqoop1,oozie,hbase的一些坑,今日项目到期,必定要搞定oozie工做流和定时调度执行,以是skr skr skr ....html
1.前边 的sqoop mysql 导入出的坑已都踩过了,后来发现除了cdh(5.15)没有自动配置好sqoop1以外也可有可无,手动配置后,按装sharelib后在拷些不全的包(如 sqoop,hbase,mysql,oozie等),基本是也能够在hue里跑的(hue 用oozie跑sqoop ,python写的xml 转义bug不能带引号之类),开始一直找不到驱动,后边按网上OOZIE 下各lib libext libtools 和其它sqoop lib的目录下加了mysql驱动后依然不行,后来改了下hdfs 下的 core-site.xml 的代理用户后就行了:java
<property><name>hadoop.proxyuser.hue.hosts</name><value>*</value></property> <property><name>hadoop.proxyuser.hue.groups</name><value>*</value></property> <property><name>hadoop.proxyuser.oozie.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.ozzie.groups</name><value>*</value></property>
sqoop1手动配置:node
Sqoop 1 Client 服务环境高级配置代码段(安全阀):python
SQOOP_CONF_DIR=/etc/sqoop/conf HADOOP_COMMON_HOME=/opt/cloudera/parcels/CDH/lib/hadoop HADOOP_MAPRED_HOME=/opt/cloudera/parcels/CDH/lib/hadoop-mapreduce HBASE_HOME=/opt/cloudera/parcels/CDH/lib/hbase HIVE_HOME=/opt/cloudera/parcels/CDH/lib/hive ZOOCFGDIR=/opt/cloudera/parcels/CDH/lib/zookeeper
sqoop-conf/sqoop-env.sh 的 Sqoop 1 Client 客户端高级配置代码段(安全阀):mysql
#Set path to where bin/hadoop is available export HADOOP_COMMON_HOME=/opt/cloudera/parcels/CDH/lib/hadoop #Set path to where hadoop-*-core.jar is available export HADOOP_MAPRED_HOME=/opt/cloudera/parcels/CDH/lib/hadoop-mapreduce #set the path to where bin/hbase is available export HBASE_HOME=/opt/cloudera/parcels/CDH/lib/hbase #Set the path to where bin/hive is available export HIVE_HOME=/opt/cloudera/parcels/CDH/lib/hive #Set the path for where zookeper config dir is export ZOOCFGDIR=/opt/cloudera/parcels/CDH/lib/zookeeper export HADOOP_CLASSPATH=$HADOOP_CLASSPATH::/opt/cloudera/parcels/SQOOP_TERADATA_CONNECTOR1.7c5//lib/tdgssconfig.jar:/opt/cloudera/parcels/SQOOP_TERADATA_CONNECTOR-1.7c5//lib/terajdbc4.jar: export SQOOP_CONF_DIR=/etc/sqoop/conf
2.导入由于是关系数据库有修改,因此导到hbase解决数据修改后增量同步过来的数据重复,保证数据一致性,而后有些类型转化,如int float(11,2)datetime 要转成java类型,特别是int ,有的关系数据库是tinyint 不转到hbase会变成true false,后在hive数仓,还不报错, 到impala下才提示sql
3.数据 有了,hive建hbase外表入仓,后开始计算,因要增量计算因此要定时删除建立表并导出到Mysql,导出的坑也说 了,-columns 类型 null转化参数,和完全解决类型问题自定义class,另外一坑是因导出表在hdfs ,各人在hue 操做权限不一样,虽hue 里有share 功能,但只能脚本共享,不能正确执行,还报hdfs权限错误,后来和上边同样core-site。xml加全部组员为代理用户,虽不报错了,但仍是有问题,如dorp table ,因别人建立的hive里删了,hdfs 下目录并无删,数据建立等都有问题,结论是hue 仍是本身跑本身的程序和脚本,上线用一个账号所有拷到一块儿在跑就没问题了,不能真正协做,只能过程当中脚本共享查看,并不能一块在一流里,相互调用,因权限不一样,一些临时目录建立,代理用户操做不了的数据库
4.导入计算输出脚本sql都有了,要作成流并定时调用,但oozie开始一直只能在命令行可跑和sqoop1 同样,后来测试可跑Workflow,按上说的在workspase下改配置后跑并不起做用,并且配置又还原了,了解到HUE里的好多配置并不像开源安装的同样直接能够改配置文件,因它可能就不是用的那个配置,而本身有本身的目录,一些关键的参数都有默认值 ,如:oozie.wf.application.path oozie.coord.application.path等,且从workflow设计页的菜单里生成的cornd调度根本提交不了,提示undefined --! 以下是截图:安全
后来排除以上全部其它问题后,从头去跑OOZIE-examples,结果命令行下依然能够,拷上来的examples 在hue里也不能跑,试了各类方式,后埋头看了几遍OOZIE 原理操做,有几只得提下:http://shiyanjun.cn/archives/684.html https://www.cnblogs.com/en-heng/p/5581331.html,最后了解workflow 和cornd是等同的不是包含从属关系,后就从hue菜单建了个新的cornd 后再选workflow,结果 居然能够跑定时了,我擦 ,那work flow里的cornd 调整就是坑货,网上一些哪贴根本没能在hue 里跑,只是在hue里按命令行下写workflow 文件,而实测hue4.1 (cdh5.15.1)里根本不让跑,不是参数重了, 就 是提交后会还原你的配置app
正确姿式截图:oop
注意这里的workflow-1是在SCHCDULE后选的,就 是个顺序的问题,而后提交经过啦--!
5.其它还有些小坑,时区大都网上仍是utc,然而按官网改oozie-site.xml 的 Oozie Server 高级配置代码段(安全阀)
<property><name>oozie.processing.timezone</name><value>GMT+0800</value></property>
cornd里变成上海时间:
<coordinator-app name="MY_APP" frequency="${coord:minutes(2)}" start="${start}" end="${end}" timezone="Asia/Shanghai" xmlns="uri:oozie:coordinator:0.2"> <action> <workflow> <app-path>${workflowAppUri}</app-path> </workflow> </action> </coordinator-app>
而提交时,提示格式不对要加 +0800 --!
Error: E1003 : E1003: Invalid coordinator application attributes, parameter [start] = [2018-09-19T16:35] must be Date in GMT+08:00 format (yyyy-MM-dd'T'HH:mm+0800). Parsing error java.text.ParseException: Could not parse [2018-09-19T16:35] using [yyyy-MM-dd'T'HH:mm+0800] mask
因而job.properties:
oozie.use.system.libpath=true security_enabled=False dryrun=False send_email=False jobTracker=master:8032 start=2018-09-27T16:35+0800 nameNode=hdfs://master:8020 end=2018-09-27T18:35+0800 workflowAppUri=${nameNode}/user/hue/oozie/apps/sqoop#自生成的wf根本不写这两行 oozie.coord.application.path=${nameNode}/user/hue/oozie/apps/sqoop#自生成的wf根本不写这两行
<workflow-app name="My Workflow" xmlns="uri:oozie:workflow:0.5"> <start to="sqoop-ace0"/> <kill name="Kill"> <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message> </kill> <action name="sqoop-ace0"> <sqoop xmlns="uri:oozie:sqoop-action:0.2"> <job-tracker>${jobTracker}</job-tracker> <name-node>${nameNode}</name-node> <command> list-databases --connect jdbc:mysql://master:3306/ --username bigdata --password xxxxx </command> </sqoop> <ok to="End"/> <error to="Kill"/> </action> <end name="End"/> </workflow-app>
hue里建立的workflow 和job.properties
<workflow-app name="Workflow-1" xmlns="uri:oozie:workflow:0.5"> <start to="hive-d593"/> <kill name="Kill"> <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message> </kill> <action name="hive-d593" cred="hive2"> <hive2 xmlns="uri:oozie:hive2-action:0.1"> <job-tracker>${jobTracker}</job-tracker> <name-node>${nameNode}</name-node> <jdbc-url>jdbc:hive2://master:10000/default</jdbc-url> <script>${wf:appPath()}/hive-d593.sql</script> </hive2> <ok to="hive-9e6a"/> <error to="Kill"/> </action> <action name="hive-9e6a" cred="hive2"> <hive2 xmlns="uri:oozie:hive2-action:0.1"> <job-tracker>${jobTracker}</job-tracker> <name-node>${nameNode}</name-node> <jdbc-url>jdbc:hive2://master:10000/default</jdbc-url> <script>${wf:appPath()}/hive-9e6a.sql</script> </hive2> <ok to="hive-016c"/> <error to="Kill"/> </action> <action name="hive-016c" cred="hive2"> <hive2 xmlns="uri:oozie:hive2-action:0.1"> <job-tracker>${jobTracker}</job-tracker> <name-node>${nameNode}</name-node> <jdbc-url>jdbc:hive2://master:10000/default</jdbc-url> <script>${wf:appPath()}/hive-016c.sql</script> </hive2> <ok to="hive-02ec"/> <error to="Kill"/> </action> <action name="hive-3c77" cred="hive2"> <hive2 xmlns="uri:oozie:hive2-action:0.1"> <job-tracker>${jobTracker}</job-tracker> <name-node>${nameNode}</name-node> <jdbc-url>jdbc:hive2://master:10000/default</jdbc-url> <script>${wf:appPath()}/hive-3c77.sql</script> </hive2> <ok to="hive-6ffa"/> <error to="Kill"/> </action> <action name="hive-02ec" cred="hive2"> <hive2 xmlns="uri:oozie:hive2-action:0.1"> <job-tracker>${jobTracker}</job-tracker> <name-node>${nameNode}</name-node> <jdbc-url>jdbc:hive2://master:10000/default</jdbc-url> <script>${wf:appPath()}/hive-02ec.sql</script> </hive2> <ok to="hive-3c77"/> <error to="Kill"/> </action> <action name="hive-6ffa" cred="hive2"> <hive2 xmlns="uri:oozie:hive2-action:0.1"> <job-tracker>${jobTracker}</job-tracker> <name-node>${nameNode}</name-node> <jdbc-url>jdbc:hive2://master:10000/default</jdbc-url> <script>${wf:appPath()}/hive-6ffa.sql</script> </hive2> <ok to="hive-bbd4"/> <error to="Kill"/> </action> <action name="hive-bbd4" cred="hive2"> <hive2 xmlns="uri:oozie:hive2-action:0.1"> <job-tracker>${jobTracker}</job-tracker> <name-node>${nameNode}</name-node> <jdbc-url>jdbc:hive2://master:10000/default</jdbc-url> <script>${wf:appPath()}/hive-bbd4.sql</script> </hive2> <ok to="End"/> <error to="Kill"/> </action> <end name="End"/> </workflow-app>
oozie.use.system.libpath=True security_enabled=False dryrun=False start_date=2018-09-27T17:28 end_date=2018-09-27T18:28
还有自动生的cornd
<coordinator-app name="Schedule-1" frequency="0,33,40 * * * *" start="${start_date}" end="${end_date}" timezone="Asia/Shanghai" xmlns="uri:oozie:coordinator:0.2" > <controls> <execution>FIFO</execution> </controls> <action> <workflow> <app-path>${wf_application_path}</app-path> <configuration> <property> <name>oozie.use.system.libpath</name> <value>True</value> </property> <property> <name>start_date</name> <value>${start_date}</value> </property> <property> <name>end_date</name> <value>${end_date}</value> </property> </configuration> </workflow> </action> </coordinator-app>
oozie.use.system.libpath | True |
security_enabled | False |
oozie.coord.application.path | hdfs://master:8020/user/hue/oozie/deployments/_hue_-oozie-3509-1538040624.53 |
dryrun | False |
end_date | 2018-09-27T18:28+0800 |
jobTracker | master:8032 |
mapreduce.job.user.name | hue |
user.name | hue |
hue-id-c | 3509 |
nameNode | hdfs://master:8020 |
wf_application_path | hdfs://master:8020/user/hue/oozie/workspaces/hue-oozie-1537954075.59 |
start_date | 2018-09-27T17:28+0800 |
6.其它线上安装集群遇到的坑
hiveserver2 CM里看起来了但10000端口没有,缘由很坑 用的tmp目录临时文件目录权限 不够:
7.hbase 不稳定,zookeeper也是报安全检测问题, 一会master 不见了,一下子zk node 不能写,一下子60000端口被占了,实际master进程都在,但hbase不能访问,或报连zk有问题,其实就是zk监测时常问题,hbase最终增长以下配置稳定多了: