我正在尝试使用dynatrace作为水槽的源和hadoop作为接收器,其中dynatrace和flume在同一台服务器上,hadoop在另一台服务器上。
但是,当开始使用水槽时,我会收到以下错误:
错误[conf-file-poller-0] (org.apache.flume.conf.file.AbstractFileConfigurationProvider $ FileWatcherRunnable.run:211) - 未处理的错误java.lang.NoSuchMethodError:org.slf4j.spi.LocationAwareLogger.log(Lorg / slf4j / Marker; Ljava / lang / String; ILjava / lang / String; Ljava / lang / Throwable;)V 在 org.apache.commons.logging.impl.SLF4JLocationAwareLog.debug(SLF4JLocationAwareLog.java:120) 在 org.apache.hadoop.metrics2.impl.MetricsSystemImpl.register(MetricsSystemImpl.java:220) 在 org.apache.hadoop.metrics2.MetricsSystem.register(MetricsSystem.java:54) 在 org.apache.hadoop.security.UserGroupInformation $ UgiMetrics.create(UserGroupInformation.java:106) 在 org.apache.hadoop.security.UserGroupInformation。(UserGroupInformation.java:208) 在 org.apache.flume.sink.hdfs.HDFSEventSink.authenticate(HDFSEventSink.java:529) 在 org.apache.flume.sink.hdfs.HDFSEventSink.configure(HDFSEventSink.java:247) 在 org.apache.flume.conf.Configurables.configure(Configurables.java:41) 在 org.apache.flume.conf.properties.PropertiesFileConfigurationProvider.loadSinks(PropertiesFileConfigurationProvider.java:373) 在 org.apache.flume.conf.properties.PropertiesFileConfigurationProvider.load(PropertiesFileConfigurationProvider.java:223) 在 org.apache.flume.conf.file.AbstractFileConfigurationProvider.doLoad(AbstractFileConfigurationProvider.java:123) 在 org.apache.flume.conf.file.AbstractFileConfigurationProvider.access $ 300(AbstractFileConfigurationProvider.java:38) 在 org.apache.flume.conf.file.AbstractFileConfigurationProvider $ FileWatcherRunnable.run(AbstractFileConfigurationProvider.java:202) 在 java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304) 在 java.util.concurrent.ScheduledThreadPoolExecutor中的$ ScheduledFutureTask.access $ 301(ScheduledThreadPoolExecutor.java:178) 在 java.util.concurrent.ScheduledThreadPoolExecutor中的$ ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:615) 在java.lang.Thread.run(Thread.java:745)
这是我的水槽配置文件:
# Name the components on this agent
QKDSK305.sources = HTTPSource
QKDSK305.sinks = PurePathSink UserActionSink VisitSink NullSink
QKDSK305.channels = PurePathChannel UserActionChannel VisitChannel NullChannel
# Describe/configure HTTPSource
QKDSK305.sources.HTTPSource.type = org.apache.flume.source.http.HTTPSource
QKDSK305.sources.HTTPSource.port = 4321
QKDSK305.sources.HTTPSource.handler = com.dynatrace.diagnostics.btexport.flume.BtExportHandler
# Describe sinks
QKDSK305.sinks.PurePathSink.type = hdfs
QKDSK305.sinks.PurePathSink.hdfs.path = hdfs://QKDSK303:9000/user/bts/pp
QKDSK305.sinks.PurePathSink.hdfs.fileType = DataStream
QKDSK305.sinks.PurePathSink.hdfs.filePrefix = export
QKDSK305.sinks.PurePathSink.hdfs.fileSuffix = .txt
QKDSK305.sinks.PurePathSink.hdfs.rollInterval = 120
QKDSK305.sinks.PurePathSink.hdfs.rollSize = 131072
QKDSK305.sinks.PurePathSink.serializer = com.dynatrace.diagnostics.btexport.flume.BtPurePathSerializerBuilder
QKDSK305.sinks.UserActionSink.type = hdfs
QKDSK305.sinks.UserActionSink.hdfs.path = hdfs://QKDSK303:9000/user/bts/pa
QKDSK305.sinks.UserActionSink.hdfs.fileType = DataStream
QKDSK305.sinks.UserActionSink.hdfs.filePrefix = export
QKDSK305.sinks.UserActionSink.hdfs.fileSuffix = .txt
QKDSK305.sinks.UserActionSink.hdfs.rollInterval = 120
QKDSK305.sinks.UserActionSink.hdfs.rollSize = 131072
QKDSK305.sinks.UserActionSink.serializer = com.dynatrace.diagnostics.btexport.flume.BtPageActionSerializerBuilder
QKDSK305.sinks.VisitSink.type = hdfs
QKDSK305.sinks.VisitSink.hdfs.path = hdfs://QKDSK303:9000/user/bts/visit
QKDSK305.sinks.VisitSink.hdfs.fileType = DataStream
QKDSK305.sinks.VisitSink.hdfs.filePrefix = export
QKDSK305.sinks.VisitSink.hdfs.fileSuffix = .txt
QKDSK305.sinks.VisitSink.hdfs.rollInterval = 120
QKDSK305.sinks.VisitSink.hdfs.rollSize = 131072
QKDSK305.sinks.VisitSink.serializer = com.dynatrace.diagnostics.btexport.flume.BtVisitSerializerBuilder
QKDSK305.sinks.VisitSink.serializer.charset = ISO-8859-2
QKDSK305.sinks.NullSink.type = null
QKDSK305.channels.NullChannel.type = memory
# Use a channel which buffers events in memory
QKDSK305.channels.PurePathChannel.type = memory
QKDSK305.channels.PurePathChannel.capacity = 1000
QKDSK305.channels.PurePathChannel.transactionCapactiy = 100
QKDSK305.channels.UserActionChannel.type = memory
QKDSK305.channels.UserActionChannel.capacity = 1000
QKDSK305.channels.UserActionChannel.transactionCapactiy = 100
QKDSK305.channels.VisitChannel.type = memory
QKDSK305.channels.VisitChannel.capacity = 1000
QKDSK305.channels.VisitChannel.transactionCapactiy = 100
# Bind the source and sink to the channel
QKDSK305.sources.HTTPSource.channels = PurePathChannel UserActionChannel VisitChannel NullChannel
QKDSK305.sinks.PurePathSink.channel = PurePathChannel
QKDSK305.sinks.UserActionSink.channel = UserActionChannel
QKDSK305.sinks.VisitSink.channel = VisitChannel
QKDSK305.sinks.NullSink.channel = NullChannel
QKDSK305.sources.HTTPSource.selector.type = multiplexing
QKDSK305.sources.HTTPSource.selector.header = btType
QKDSK305.sources.HTTPSource.selector.mapping.PUREPATH = PurePathChannel
QKDSK305.sources.HTTPSource.selector.mapping.PAGE_ACTION = UserActionChannel
QKDSK305.sources.HTTPSource.selector.mapping.VISIT = VisitChannel
QKDSK305.sources.HTTPSource.selector.default = NullChannel
请帮助。
谢谢, Pranil
答案 0 :(得分:0)
似乎我们的其中一个用户遇到了类似的问题。他们通过使用protobuf 2.5重新编译Flume来解决问题。 不要复制他们在我们的dynatrace社区论坛上发布的内容,而是可以在这里查看他们的帖子:https://community.compuwareapm.com/community/display/DL/Big+Data+Business+Transaction+Bridge?focusedCommentId=192087283#comment-192087283
岸堤