zoukankan      html  css  js  c++  java
  • 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%,还不错,希望以后更加细心

      

  • 相关阅读:
    Linux查看系统信息
    pgrep 和 pkill 使用小记
    linux下json库的编译及例程
    Epoll 实例
    gcc中的内嵌汇编语言
    BZOJ 1053: [HAOI2007]反素数ant
    2018.7.15模拟赛
    BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊
    BZOJ 4241: 历史研究
    LUOGU P2365 任务安排
  • 原文地址:https://www.cnblogs.com/gunduzi/p/9343128.html
Copyright © 2011-2022 走看看