使用java service wrapper把windows flume做成服务

简介: 使用java service wrapper把windows flume做成服务

项目有个需求,需要把windows版的flume做成AIX、unix、linux一样的服务启动。

网上介绍的方法好多种:

1、commons daemon procrun,这个是apache的一个项目,tomcat就是使用这个做成服务的,缺点:配置麻烦,对bat脚本不熟悉的话,配置起来很难

2、JavaService,这个对单个jar文件做成服务很简单,但是针对flume却不行

3、java service wrapper,配置简单,缺点:不免费

还有其他好多,我没有试。


我这里采用的是第3种,实现很简单:

首先到这里下载它的包wrapper-windows-x86-64-3.5.26-st.zip,最新版本是3.5.26。下载一个64位,注意64位的不兼容32位系统。

解压之后得到如下文件


新建一个文件夹:agent,如D:\agent,里面有bin、conf、lib、logs几个文件夹。

把wrapper-windows-x86-64-3.5.26-st\src\bin里面的*.in文件拷贝到agent\bin目录下,然后重命名把所有后缀.in去掉,变成*.bat;

再把wrapper-windows-x86-64-3.5.26-st\bin里面的wrapper.exe文件也拷贝到agent\bin目录下;

把wrapper-windows-x86-64-3.5.26-st\conf里面的wrapper.conf和wrapper-license.conf拷贝到agent\conf里面;

把wrapper-windows-x86-64-3.5.26-st\lib里面的wrapper.dll和wrapper.jar拷贝到agent\lib里面;

再把flume的所有依赖jar包也放进agent\lib里面;

最后我们来配置wrapper.conf文件:


encoding=UTF-8
#include ../conf/wrapper-license.conf
wrapper.license.debug=TRUE
wrapper.java.command=%JAVA_HOME%/bin/java
wrapper.java.command.loglevel=warn
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp
wrapper.java.classpath.1=../lib/wrapper.jar
wrapper.java.classpath.2=../lib/apache-log4j-extras-1.1.jar
wrapper.java.classpath.3=../lib/async-1.4.0.jar
wrapper.java.classpath.4=../lib/asynchbase-1.5.0.jar
wrapper.java.classpath.5=../lib/avro-1.7.3.jar
wrapper.java.classpath.6=../lib/avro-ipc-1.7.3.jar
wrapper.java.classpath.7=../lib/commons-cli-1.2.jar
wrapper.java.classpath.8=../lib/commons-codec-1.8.jar
wrapper.java.classpath.9=../lib/commons-collections-3.2.1.jar
wrapper.java.classpath.10=../lib/commons-daemon.jar
wrapper.java.classpath.11=../lib/commons-dbcp-1.4.jar
wrapper.java.classpath.12=../lib/commons-io-2.1.jar
wrapper.java.classpath.13=../lib/commons-lang-2.5.jar
wrapper.java.classpath.14=../lib/commons-logging-1.1.1.jar
wrapper.java.classpath.15=../lib/commons-pool-1.5.4.jar
wrapper.java.classpath.16=../lib/controller.jar
wrapper.java.classpath.17=../lib/cwlog.jar
wrapper.java.classpath.18=../lib/derby-10.8.2.2.jar
wrapper.java.classpath.19=../lib/et2.jar
wrapper.java.classpath.20=../lib/flume-avro-source-1.5.0.1.jar
wrapper.java.classpath.21=../lib/flume-file-channel-1.5.0.1.jar
wrapper.java.classpath.22=../lib/flume-hdfs-sink-1.5.0.1.jar
wrapper.java.classpath.23=../lib/flume-irc-sink-1.5.0.1.jar
wrapper.java.classpath.24=../lib/flume-jdbc-channel-1.5.0.1.jar
wrapper.java.classpath.25=../lib/flume-jms-source-1.5.0.1.jar
wrapper.java.classpath.26=../lib/flume-kafka-0.2.jar
wrapper.java.classpath.27=../lib/flume-kafka-plugin-0.0.1-SNAPSHOT.jar
wrapper.java.classpath.28=../lib/flume-ng-configuration-1.5.0.1.jar
wrapper.java.classpath.29=../lib/flume-ng-core-1.5.0.1.jar
wrapper.java.classpath.30=../lib/flume-ng-elasticsearch-sink-1.5.0.1.jar
wrapper.java.classpath.31=../lib/flume-ng-embedded-agent-1.5.0.1.jar
wrapper.java.classpath.32=../lib/flume-ng-extends_fat.jar
wrapper.java.classpath.33=../lib/flume-ng-hbase-sink-1.5.0.1.jar
wrapper.java.classpath.34=../lib/flume-ng-log4jappender-1.5.0.1.jar
wrapper.java.classpath.35=../lib/flume-ng-morphline-solr-sink-1.5.0.1.jar
wrapper.java.classpath.36=../lib/flume-ng-node-1.5.0.1.jar
wrapper.java.classpath.37=../lib/flume-ng-sdk-1.5.0.1.jar
wrapper.java.classpath.38=../lib/flume-ng-tailsource-1.4.0.jar
wrapper.java.classpath.39=../lib/flume-scribe-source-1.5.0.1.jar
wrapper.java.classpath.40=../lib/flume-spillable-memory-channel-1.5.0.1.jar
wrapper.java.classpath.41=../lib/flume-thrift-source-1.5.0.1.jar
wrapper.java.classpath.42=../lib/flume-tools-1.5.0.1.jar
wrapper.java.classpath.43=../lib/flume-twitter-source-1.5.0.1.jar
wrapper.java.classpath.44=../lib/gson-2.2.2.jar
wrapper.java.classpath.45=../lib/guava-11.0.2.jar
wrapper.java.classpath.46=../lib/httpclient-4.2.1.jar
wrapper.java.classpath.47=../lib/httpcore-4.2.1.jar
wrapper.java.classpath.48=../lib/irclib-1.10.jar
wrapper.java.classpath.49=../lib/jackson-core-asl-1.9.3.jar
wrapper.java.classpath.50=../lib/jackson-mapper-asl-1.9.3.jar
wrapper.java.classpath.51=../lib/jetty-6.1.26.jar
wrapper.java.classpath.52=../lib/jetty-util-6.1.26.jar
wrapper.java.classpath.53=../lib/joda-time-2.1.jar
wrapper.java.classpath.54=../lib/jsr305-1.3.9.jar
wrapper.java.classpath.55=../lib/kafkaSink.jar
wrapper.java.classpath.56=../lib/kafka_2.9.2-0.8.0-beta1.jar
wrapper.java.classpath.57=../lib/libthrift-0.7.0.jar
wrapper.java.classpath.58=../lib/log4j-1.2.17.jar
wrapper.java.classpath.59=../lib/mapdb-0.9.9.jar
wrapper.java.classpath.60=../lib/metrics-core-2.2.0.jar
wrapper.java.classpath.61=../lib/mina-core-2.0.4.jar
wrapper.java.classpath.62=../lib/netty-3.5.12.Final.jar
wrapper.java.classpath.63=../lib/paranamer-2.3.jar
wrapper.java.classpath.64=../lib/protobuf-java-2.5.0.jar
wrapper.java.classpath.65=../lib/scala-compiler-2.9.2.jar
wrapper.java.classpath.66=../lib/scala-library-2.9.2.jar
wrapper.java.classpath.67=../lib/servlet-api-2.5-20110124.jar
wrapper.java.classpath.68=../lib/slf4j-api-1.6.1.jar
wrapper.java.classpath.69=../lib/slf4j-log4j12-1.6.1.jar
wrapper.java.classpath.70=../lib/snappy-java-1.0.4.1.jar
wrapper.java.classpath.71=../lib/testerService.jar
wrapper.java.classpath.72=../lib/twitter4j-core-3.0.3.jar
wrapper.java.classpath.73=../lib/twitter4j-media-support-3.0.3.jar
wrapper.java.classpath.74=../lib/twitter4j-stream-3.0.3.jar
wrapper.java.classpath.75=../lib/velocity-1.7.jar
wrapper.java.classpath.76=../lib/zookeeper-3.4.5.jar
wrapper.java.library.path.1=../lib
wrapper.app.parameter.1=org.apache.flume.node.Application
wrapper.app.parameter.2=-f ../conf/dirsource.properties
wrapper.app.parameter.3=-n a1
wrapper.logfile=../logs/flume.log
wrapper.ntservice.name=CorewareAgentService
wrapper.ntservice.displayname=CorewareAgentService
wrapper.ntservice.description=CorewareAgentService
wrapper.ntservice.starttype=AUTO_START
wrapper.filter.trigger.1001=Exception in thread "*" java.lang.OutOfMemoryError
wrapper.filter.allow_wildcards.1001=TRUE
wrapper.filter.action.1001=RESTART
wrapper.filter.message.1001=The JVM has run out of memory.


注意的是:

一、需要把所有flume的依赖jar包都加到 wrapper.java.classpath,还需要把它自己的wrapper.jar加进去,最好放到第一个,再配置它的wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp(这个是固定的);

二、需要引进他的license文件,否则运行不能运行;

三、wrapper.java.command配置的是java.exe路径;

四、wrapper.app.parameter配置的是flume运行所需要的参数,比如主类:org.apache.flume.node.Application,配置文件、agent名字

五、wrapper.filter.trigger.1001表示如果内存溢出就重新启动


配置完之后运行agent\bin里面的App.bat,测试一下。如果没有问题就可以运行InstallApp-NT.bat来安装服务了。

安装成功之后,不会立即启动,你可以运行StartApp-NT.bat来启动服务。

UninstallApp-NT.bat是删除服务,StopApp-NT.bat是停止服务。


到此介绍结束,大家可以试试。

配置单独的jar包也是一样的,也同样可以参照上面的方法




相关文章
|
5天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
33 3
|
7天前
|
JavaScript Java 测试技术
基于Java的宠物服务平台的设计与实现(源码+lw+部署文档+讲解等)
基于Java的宠物服务平台的设计与实现(源码+lw+部署文档+讲解等)
20 1
|
7天前
|
JavaScript Java 测试技术
基于Java的中学生课后服务的信息管理与推荐的设计与实现(源码+lw+部署文档+讲解等)
基于Java的中学生课后服务的信息管理与推荐的设计与实现(源码+lw+部署文档+讲解等)
26 2
|
8天前
|
JavaScript Java 测试技术
基于Java的珠江学院大学生自愿者服务网的设计与实现(源码+lw+部署文档+讲解等)
基于Java的珠江学院大学生自愿者服务网的设计与实现(源码+lw+部署文档+讲解等)
28 0
|
11天前
|
JavaScript Java 测试技术
基于Java的家政公司服务平台的设计与实现(源码+lw+部署文档+讲解等)
基于Java的家政公司服务平台的设计与实现(源码+lw+部署文档+讲解等)
25 1
|
1月前
|
安全 数据安全/隐私保护 Windows
解锁安全之门,Windows Server 2019密码修改攻略大揭秘
解锁安全之门,Windows Server 2019密码修改攻略大揭秘
|
1月前
|
存储 安全 网络安全
铁壁如墙-WINDOWS SERVER 2019勒索病毒终极防御指南
铁壁如墙-WINDOWS SERVER 2019勒索病毒终极防御指南
|
1月前
|
网络协议 数据安全/隐私保护 Windows
Windows Server 各版本搭建域控制器实现通过域管理用户(03~19)
Windows Server 各版本搭建域控制器实现通过域管理用户(03~19)
47 1
|
1月前
|
存储 数据安全/隐私保护 索引
Windows Server 各版本搭建文件服务器实现共享文件(03~19)
Windows Server 各版本搭建文件服务器实现共享文件(03~19)
169 1

热门文章

最新文章