StreamSets小白踩过的一些坑

  由于公司业务上的需求,需要实时监控mysql数据库的数据的增长,并将数据同步到另一个平台,所以就问老大使用什么工具比较好,老大推荐使用StreamSets,还说在测试环境都已经部署好了StreamSets,所以就开始写了第一个测试。

  数据库版本:5.6.35 MySQL Community Server (GPL)

  jdbc版本:5.1.6

  StreamSets版本:3.3.0

  由于我要监控mysql,所以这里选择的ORIGINS是JDBC Query Consumer,接下来按照官网上的步骤:

  1.配置环境变量  

  2.安装jdbc

  具体参考这篇博客:

  https://blog.csdn.net/u012551524/article/details/78492939

  3.配置参数

  

   配置用户名,密码:

  

  配置驱动类:

  

  4.点击preview,报如下错误:

  com.zaxxer.hikari.pool.PoolInitializationException: Exception during pool initialization: Could not create connection to database server. Attempted reconnect 3 times. Giving up.

  网上看到的解决方法:

  https://blog.csdn.net/u012228009/article/details/54095421

  就是把JDBC Connection String改为:jdbc:mysql://192.168.5.22/test?autoReconnect=true&testOnBorrow=true&validationQuery=select 1,但是对我这个没有帮助,但是报的错误却变了,如下:

  Exception during pool initialization: Communications link failure Last packe

  以为是数据库连接池的问题,于是修改mysql的配置文件my.cnf中添加如下参数:

  wait_timeout=31536000

  interactive_timeout=31536000

  依然没什么卵用。。。

  最后仔细检查了下日志,发现日志中最后有一个错误:

  Caused by: java.net.SocketException: java.security.AccessControlException: access denied ("java.net.SocketPermission" "192.168.5.22:3306" "connect,resolve")

  靠,mmp,原来是java安全策略的问题,查看官网中TROUBLESHOOTING的JDBC Origins中:

  

这里附上官网地址(https://streamsets.com/documentation/datacollector/latest/help/index.html#datacollector/UserGuide/Troubleshooting/Troubleshooting_title.html#concept_ggx_s23_ks)  

于是在/opt/jdk1.8.0_161/jre/lib/security/java.policy(这个根据自己的jdk位置确定路径)中添加如下内容: 

  // user-defined external directory
  grant codebase "file:///opt/cloudera/parcels/STREAMSETS_DATACOLLECTOR/sdc-extras/-" {
  permission java.security.AllPermission;
  };(注释:上面的file路径要根据自己sdc-extras存放的路径确定)

添加完这个之后连接数据库的问题算是解决了,但是又报了下面的错误,mmmmmmmmmmmp

  Message: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version

  for the right syntax to use near 'OPTION SQL_SELECT_LIMIT=1' at line 1

  

  这个是原因是mysql 5.6中已经不再支持OPTION SQL_SELECT_LIMIT=1这个参数, 而我又使用了低版本的jdbc驱动,所以就报了这个错误,从新去mvn库中下载mysql-connector-java-5.1.46.jar,成功解决

最后,总结一下:

  其实最开始的两个错误都不是本质错误,那个java安全策略的错误才是原因,看来以后报错还是要看日志啊,而且要看最后一个错误,英语也不太好,

但是,硬着头皮看了下官方文档,差不读能看懂70%,还不错,希望以后更加细心

  

原文地址:https://www.cnblogs.com/gunduzi/p/9343128.html