Coder Social home page Coder Social logo

jangocheng / db-elasticsearch-xxjob Goto Github PK

View Code? Open in Web Editor NEW

This project forked from bbossgroups/db-elasticsearch-xxjob

0.0 1.0 0.0 79 KB

数据库与Elasticsearch数据同步xxjob分布式任务调度demo

License: Apache License 2.0

Batchfile 10.00% Shell 8.25% Java 81.74%

db-elasticsearch-xxjob's Introduction

Bboss is a good elasticsearch Java rest client. It operates and accesses elasticsearch in a way similar to mybatis.

BBoss Environmental requirements

JDK requirement: JDK 1.7+

Elasticsearch version requirements: 1.x,2.X,5.X,6.X,+

Spring booter 1.x,2.x,+

bboss elasticsearch 数据导入工具xx job定时任务调度demo

使用本demo所带的应用程序运行容器环境,可以快速编写、打包发布可运行在分布式定时任务引擎xx job的数据同步任务。

支持的数据库: mysql,maridb,postgress,oracle ,sqlserver,db2,hive等

支持的Elasticsearch版本: 1.x,2.x,5.x,6.x,7.x,+

支持海量PB级数据同步导入功能

使用参考文档

开发作业

准备工作

通过gradle构建发布作业,gradle安装配置文档:

gradle安装配置参考文档:

https://esdoc.bbossgroups.com/#/bboss-build

实现作业

  1. 下载源码工程-基于gradle

https://github.com/bbossgroups/db-elasticsearch-xxjob

从github下载源码工程,然后导入idea或者eclipse

  1. 定义同步作业配置逻辑,参考实现类:

org.frameworkset.elasticsearch.imp.jobhandler.XXJobImportTask

任务处理类必须继承抽象类org.frameworkset.elasticsearch.client.schedule.xxjob.AbstractDB2ESXXJobHandler

  1. 修改es和数据库配置-db-elasticsearch-xxjob\src\test\resources\application.properties

  2. 将定义的任务添加到application.properties中,并修改其中xxjob参数配置:

# xxjob分布式作业任务配置

### xxl-job admin address list, such as "http://address" or "http://address01,http://address02"
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin

### xxl-job executor address
xxl.job.executor.appname=db-elasticsearch-xxjob
xxl.job.executor.ip=192.168.137.1
xxl.job.executor.port=9995

### xxl-job, access token
xxl.job.accessToken=

### xxl-job log path
xxl.job.executor.logpath=d:/xxl-job/
### xxl-job log retention days
xxl.job.executor.logretentiondays=-1
##
# 作业任务配置
# xxl.job.task为前置配置多个数据同步任务,后缀XXJobImportTask和OtherTask将xxjob执行任务的名称
# 作业程序都需要继承抽象类org.frameworkset.elasticsearch.client.schedule.xxjob.AbstractDB2ESXXJobHandler
# 实现抽象方法init即可:
# public void init(){
#     externalScheduler = new ExternalScheduler();
#     externalScheduler.dataStream(()->{
#         DB2ESImportBuilder importBuilder = DB2ESImportBuilder.newInstance();
#              编写导入作业任务配置逻辑,参考文档:https://esdoc.bbossgroups.com/#/db-es-tool
#         return    importBuilder;
#       }
# }
#

xxl.job.task.XXJobImportTask = org.frameworkset.elasticsearch.imp.jobhandler.XXJobImportTask
## xxl.job.task.otherTask = org.frameworkset.elasticsearch.imp.jobhandler.OtherTask

#配置运行xxl-job作业主程序
mainclass=org.frameworkset.elasticsearch.client.schedule.xxjob.XXJobApplication
  1. 工程已经内置mysql jdbc驱动,如果有依赖的第三方jdbc包(比如oracle驱动),可以将第三方jdbc依赖包放入db-elasticsearch-xxjob\lib目录下

  2. 测试和调试导入功能

    运行db-elasticsearch-xxjob\src\test\java目录下面的ApplicationTest测试类即可:

​ src\test\java\org\frameworkset\elasticsearch\imp\ApplicationTest.java

  1. 测试调试通过后,构建发布可运行的版本

    进入命令行模式,切换到源码工程根目录db-elasticsearch-xxjob下,运行以下指令打包发布版本:

​ release.bat

运行作业

版本发布后,在build/distributions目录下会生成可以运行的zip包,解压运行导入程序

linux:

chmod +x restart.sh

./restart.sh

windows: restart.bat

作业启动后,可以在xx-job-admin进行任务的配置,并查看运行日志。

作业jvm配置

修改jvm.options,设置内存大小和其他jvm参数

-Xms1g

-Xmx1g

作业参数配置

在代码中获取参数dropIndice方法:

boolean dropIndice = CommonLauncher.getBooleanAttribute("dropIndice",false);//同时指定了默认值false

另外可以在resources/application.properties配置控制作业执行的一些参数,例如工作线程数,等待队列数,批处理size等等:

queueSize=50
workThreads=10
batchSize=20

在作业执行方法中获取并使用上述参数:

int batchSize = CommonLauncher.getIntProperty("batchSize",10);//同时指定了默认值
int queueSize = CommonLauncher.getIntProperty("queueSize",50);//同时指定了默认值
int workThreads = CommonLauncher.getIntProperty("workThreads",10);//同时指定了默认值
importBuilder.setBatchSize(batchSize);
importBuilder.setQueue(queueSize);//设置批量导入线程池等待队列长度
importBuilder.setThreadCount(workThreads);//设置批量导入线程池工作线程数量

elasticsearch技术交流群:166471282

elasticsearch微信公众号:bbossgroup

GitHub Logo

db-elasticsearch-xxjob's People

Contributors

yin-bp avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.