通过 flume 进行 Twitter 流式传输时出现错误
getting error in twitter streaming through flume
**虽然 运行 flume 命令出现以下错误,但我尝试更改 .bashrc 中的 envi 变量以及 flume.env.sh 中的 classpath ,还是没用
拾取JAVA_TOOL_OPTIONS:-javaagent:/usr/share/java/jayatanaag.jar
16/12/08 01:57:11 信息 node.PollingPropertiesFileConfigurationProvider:配置提供程序启动
16/12/08 01:57:11 信息 node.PollingPropertiesFileConfigurationProvider:正在重新加载配置文件:../conf/twitter.conf
16/12/08 01:57:11 警告 conf.FlumeConfiguration:指定的 属性 无效:sink.HDFS.hdfs.path
16/12/08 01:57:11 警告 conf.FlumeConfiguration:忽略配置 属性:TwitterAgent。sink.HDFS.hdfs.path = hdfs://localhost:8020/datamain/tweets
16/12/08 01:57:11 警告 conf.FlumeConfiguration:指定的 属性 无效:sink.HDFS.hdfs.writeFormat
16/12/08 01:57:11 警告 conf.FlumeConfiguration:配置 属性 已忽略:TwitterAgent。sink.HDFS.hdfs.writeFormat = 文本
16/12/08 01:57:11 警告 conf.FlumeConfiguration:指定的 属性 无效:sink.HDFS.hdfs.rollCount
16/12/08 01:57:11 警告 conf.FlumeConfiguration:配置 属性 已忽略:TwitterAgent。sink.HDFS.hdfs.rollCount = 10000
16/12/08 01:57:11 信息 conf.FlumeConfiguration:添加接收器:HDFS 代理:TwitterAgent
16/12/08 01:57:11 警告 conf.FlumeConfiguration:指定的 属性 无效:sink.HDFS.hdfs.rollSize
16/12/08 01:57:11 警告 conf.FlumeConfiguration:配置 属性 已忽略:TwitterAgent。sink.HDFS.hdfs.rollSize = 0
16/12/08 01:57:11 警告 conf.FlumeConfiguration:指定的 属性 无效:sink.HDFS.channels
16/12/08 01:57:11 警告 conf.FlumeConfiguration:配置 属性 已忽略:TwitterAgent。sink.HDFS.channels = MemChannel
16/12/08 01:57:11 警告 conf.FlumeConfiguration:指定的 属性 无效:sink.HDFS.hdfs.batchSize
16/12/08 01:57:11 警告 conf.FlumeConfiguration:配置 属性 已忽略:TwitterAgent。sink.HDFS.hdfs.batchSize = 1000
16/12/08 01:57:11 警告 conf.FlumeConfiguration:指定的 属性 无效:sink.HDFS.hdfs.fileType
16/12/08 01:57:11 警告 conf.FlumeConfiguration:配置 属性 已忽略:TwitterAgent。sink.HDFS.hdfs.fileType = DataStream
16/12/08 01:57:11 警告 conf.FlumeConfiguration:指定的 属性 无效:sink.HDFS.type
16/12/08 01:57:11 警告 conf.FlumeConfiguration:配置 属性 已忽略:TwitterAgent。sink.HDFS.type = hdfs
16/12/08 01:57:11 警告 conf.FlumeConfiguration:指定的 属性 无效:sink.HDFS.hdfs.rollInterval
16/12/08 01:57:11 警告 conf.FlumeConfiguration:配置 属性 已忽略:TwitterAgent。sink.HDFS.hdfs.rollInterval = 600<br>
16/12/08 01:57:11 警告 conf.FlumeConfiguration:没有 sinkHDFS 的上下文
16/12/08 01:57:12 信息 conf.FlumeConfiguration:Post-验证 flume 配置包含代理的配置:[TwitterAgent]
16/12/08 01:57:12 信息 node.AbstractConfigurationProvider:创建频道
16/12/08 01:57:12 信息 channel.DefaultChannelFactory:创建通道 MemChannel 类型内存的实例
16/12/08 01:57:12 信息 node.AbstractConfigurationProvider:已创建通道 MemChannel
16/12/08 01:57:12 信息 source.DefaultSourceFactory:创建源 Twitter 实例,类型 org.apache.flume.source.twitter.TwitterSource
16/12/08 01:57:12 错误 node.PollingPropertiesFileConfigurationProvider:加载配置数据失败。例外如下。
org.apache.flume.FlumeException:无法加载源类型:org.apache.flume.source.twitter.TwitterSource、class:org.apache.flume.source.twitter.TwitterSource
在 org.apache.flume.source.DefaultSourceFactory.getClass(DefaultSourceFactory.java:67)
在 org.apache.flume.source.DefaultSourceFactory.create(DefaultSourceFactory.java:40)
在 org.apache.flume.node.AbstractConfigurationProvider.loadSources(AbstractConfigurationProvider.java:327)
在 org.apache.flume.node.AbstractConfigurationProvider.getConfiguration(AbstractConfigurationProvider.java:102)
在 org.apache.flume.node.PollingPropertiesFileConfigurationProvider$FileWatcherRunnable.run(PollingPropertiesFileConfigurationProvider.java:140)
在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
在 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)
原因:java.lang.ClassNotFoundException:org.apache.flume.source.twitter.TwitterSource
在 java.net.URLClassLoader$1.run(URLClassLoader.java:366)
在 java.net.URLClassLoader$1.run(URLClassLoader.java:355)
在 java.security.AccessController.doPrivileged(本机方法)
在 java.net.URLClassLoader.findClass(URLClassLoader.java:354)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:425)
在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:358)
在 java.lang.Class.forName0(本机方法)
在 java.lang.Class.forName(Class.java:195)
在 org.apache.flume.source.DefaultSourceFactory.getClass(DefaultSourceFactory.java:65)
... 11 更多
**我在 twitter.conf 中的 sink 命令似乎也有问题,但我无法弄清楚,下面是 twitter.conf 文件
`TwitterAgent.sources =Twitter
TwitterAgent.channels =MemChannel
TwitterAgent.sinks = HDFS
TwitterAgent.sources.Twitter.type = org.apache.flume.source.twitter.TwitterSource
TwitterAgent.sources.Twitter.channels = MemChannel
TwitterAgent.sources.Twitter.consumerKey = ###
TwitterAgent.sources.Twitter.consumerSecret = ###
TwitterAgent.sources.Twitter.accessToken = ###
TwitterAgent.sources.Twitter.accessTokenSecret = ####
TwitterAgent.sources.Twitter.keywords =donald trump,republican,democratic
TwitterAgent.channels.MemChannel.type = memory
TwitterAgent.channels.MemChannel.capacity = 10000
TwitterAgent.channels.MemChannel.transactionCapacity = 10000
TwitterAgent.sink.HDFS.channels = MemChannel
TwitterAgent.sink.HDFS.type = hdfs
TwitterAgent.sink.HDFS.hdfs.path =hdfs://localhost:8020/datamain/tweets
TwitterAgent.sink.HDFS.hdfs.fileType = DataStream
TwitterAgent.sink.HDFS.hdfs.writeFormat = Text
TwitterAgent.sink.HDFS.hdfs.batchSize = 1000
TwitterAgent.sink.HDFS.hdfs.rollSize = 0
TwitterAgent.sink.HDFS.hdfs.rollCount = 10000
TwitterAgent.sink.HDFS.hdfs.rollInterval = 600 `
这是我的 flume.env.sh 文件详细信息
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# If this file is placed at FLUME_CONF_DIR/flume-env.sh, it will be sourced
# during Flume startup.
# Enviroment variables can be set here.
JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386
# Give Flume more memory and pre-allocate, enable remote monitoring via JMX
JAVA_OPTS="-Xms500m -Xmx1000m -Dcom.sun.management.jmxremote"
# Note that the Flume conf directory is always included in the classpath.
FLUME_CLASSPATH=/home/user/hadoop_store/flume-sources-1.0-SNAPSHOT.jar
.bashrc 详细信息
##Flume home directory
export FLUME_HOME=/home/user/hadoop_store/apache-flume-1.4.0-bin
export FLUME_CONF_DIR=$FLUME_HOME/conf
export FLUME_CLASSPATH=$FLUME_CONF_DIR
export PATH=$FLUME_HOME/bin:$PATH
##Flume home directory
尝试更改快照文件路径仍然无效,
通过查看您的日志文件消息,您遗漏了两件事:
- 使用 org.apache.flume.source.twitter.TwitterSource class
配置因此
flume-sources-1.0-SNAPSHOT.jar
必须存在于
你的 flume lib 目录。
用下面的sinks关键字替换sink:
TwitterAgent.sinks.HDFS.channels = MemChannel
TwitterAgent.sinks.HDFS.type = hdfs
TwitterAgent.sinks.HDFS.hdfs.path =hdfs://localhost:8020/datamain/tweets
TwitterAgent.sinks.HDFS.hdfs.fileType = DataStream
TwitterAgent.sinks.HDFS.hdfs.writeFormat = Text
TwitterAgent.sinks.HDFS.hdfs.batchSize = 1000
TwitterAgent.sinks.HDFS.hdfs.rollSize = 0
TwitterAgent.sinks.HDFS.hdfs.rollCount = 10000
TwitterAgent.sinks.HDFS.hdfs.rollInterval = 600
希望对你有帮助!!!
**虽然 运行 flume 命令出现以下错误,但我尝试更改 .bashrc 中的 envi 变量以及 flume.env.sh 中的 classpath ,还是没用
拾取JAVA_TOOL_OPTIONS:-javaagent:/usr/share/java/jayatanaag.jar
16/12/08 01:57:11 信息 node.PollingPropertiesFileConfigurationProvider:配置提供程序启动
16/12/08 01:57:11 信息 node.PollingPropertiesFileConfigurationProvider:正在重新加载配置文件:../conf/twitter.conf
16/12/08 01:57:11 警告 conf.FlumeConfiguration:指定的 属性 无效:sink.HDFS.hdfs.path
16/12/08 01:57:11 警告 conf.FlumeConfiguration:忽略配置 属性:TwitterAgent。sink.HDFS.hdfs.path = hdfs://localhost:8020/datamain/tweets
16/12/08 01:57:11 警告 conf.FlumeConfiguration:指定的 属性 无效:sink.HDFS.hdfs.writeFormat
16/12/08 01:57:11 警告 conf.FlumeConfiguration:配置 属性 已忽略:TwitterAgent。sink.HDFS.hdfs.writeFormat = 文本
16/12/08 01:57:11 警告 conf.FlumeConfiguration:指定的 属性 无效:sink.HDFS.hdfs.rollCount
16/12/08 01:57:11 警告 conf.FlumeConfiguration:配置 属性 已忽略:TwitterAgent。sink.HDFS.hdfs.rollCount = 10000
16/12/08 01:57:11 信息 conf.FlumeConfiguration:添加接收器:HDFS 代理:TwitterAgent
16/12/08 01:57:11 警告 conf.FlumeConfiguration:指定的 属性 无效:sink.HDFS.hdfs.rollSize
16/12/08 01:57:11 警告 conf.FlumeConfiguration:配置 属性 已忽略:TwitterAgent。sink.HDFS.hdfs.rollSize = 0
16/12/08 01:57:11 警告 conf.FlumeConfiguration:指定的 属性 无效:sink.HDFS.channels
16/12/08 01:57:11 警告 conf.FlumeConfiguration:配置 属性 已忽略:TwitterAgent。sink.HDFS.channels = MemChannel
16/12/08 01:57:11 警告 conf.FlumeConfiguration:指定的 属性 无效:sink.HDFS.hdfs.batchSize
16/12/08 01:57:11 警告 conf.FlumeConfiguration:配置 属性 已忽略:TwitterAgent。sink.HDFS.hdfs.batchSize = 1000
16/12/08 01:57:11 警告 conf.FlumeConfiguration:指定的 属性 无效:sink.HDFS.hdfs.fileType
16/12/08 01:57:11 警告 conf.FlumeConfiguration:配置 属性 已忽略:TwitterAgent。sink.HDFS.hdfs.fileType = DataStream
16/12/08 01:57:11 警告 conf.FlumeConfiguration:指定的 属性 无效:sink.HDFS.type
16/12/08 01:57:11 警告 conf.FlumeConfiguration:配置 属性 已忽略:TwitterAgent。sink.HDFS.type = hdfs
16/12/08 01:57:11 警告 conf.FlumeConfiguration:指定的 属性 无效:sink.HDFS.hdfs.rollInterval
16/12/08 01:57:11 警告 conf.FlumeConfiguration:配置 属性 已忽略:TwitterAgent。sink.HDFS.hdfs.rollInterval = 600<br>
16/12/08 01:57:11 警告 conf.FlumeConfiguration:没有 sinkHDFS 的上下文
16/12/08 01:57:12 信息 conf.FlumeConfiguration:Post-验证 flume 配置包含代理的配置:[TwitterAgent]
16/12/08 01:57:12 信息 node.AbstractConfigurationProvider:创建频道
16/12/08 01:57:12 信息 channel.DefaultChannelFactory:创建通道 MemChannel 类型内存的实例
16/12/08 01:57:12 信息 node.AbstractConfigurationProvider:已创建通道 MemChannel
16/12/08 01:57:12 信息 source.DefaultSourceFactory:创建源 Twitter 实例,类型 org.apache.flume.source.twitter.TwitterSource
16/12/08 01:57:12 错误 node.PollingPropertiesFileConfigurationProvider:加载配置数据失败。例外如下。
org.apache.flume.FlumeException:无法加载源类型:org.apache.flume.source.twitter.TwitterSource、class:org.apache.flume.source.twitter.TwitterSource
在 org.apache.flume.source.DefaultSourceFactory.getClass(DefaultSourceFactory.java:67)
在 org.apache.flume.source.DefaultSourceFactory.create(DefaultSourceFactory.java:40)
在 org.apache.flume.node.AbstractConfigurationProvider.loadSources(AbstractConfigurationProvider.java:327)
在 org.apache.flume.node.AbstractConfigurationProvider.getConfiguration(AbstractConfigurationProvider.java:102)
在 org.apache.flume.node.PollingPropertiesFileConfigurationProvider$FileWatcherRunnable.run(PollingPropertiesFileConfigurationProvider.java:140)
在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
在 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)
原因:java.lang.ClassNotFoundException:org.apache.flume.source.twitter.TwitterSource
在 java.net.URLClassLoader$1.run(URLClassLoader.java:366)
在 java.net.URLClassLoader$1.run(URLClassLoader.java:355)
在 java.security.AccessController.doPrivileged(本机方法)
在 java.net.URLClassLoader.findClass(URLClassLoader.java:354)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:425)
在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:358)
在 java.lang.Class.forName0(本机方法)
在 java.lang.Class.forName(Class.java:195)
在 org.apache.flume.source.DefaultSourceFactory.getClass(DefaultSourceFactory.java:65)
... 11 更多
**我在 twitter.conf 中的 sink 命令似乎也有问题,但我无法弄清楚,下面是 twitter.conf 文件
`TwitterAgent.sources =Twitter
TwitterAgent.channels =MemChannel
TwitterAgent.sinks = HDFS
TwitterAgent.sources.Twitter.type = org.apache.flume.source.twitter.TwitterSource
TwitterAgent.sources.Twitter.channels = MemChannel
TwitterAgent.sources.Twitter.consumerKey = ###
TwitterAgent.sources.Twitter.consumerSecret = ###
TwitterAgent.sources.Twitter.accessToken = ###
TwitterAgent.sources.Twitter.accessTokenSecret = ####
TwitterAgent.sources.Twitter.keywords =donald trump,republican,democratic
TwitterAgent.channels.MemChannel.type = memory
TwitterAgent.channels.MemChannel.capacity = 10000
TwitterAgent.channels.MemChannel.transactionCapacity = 10000
TwitterAgent.sink.HDFS.channels = MemChannel
TwitterAgent.sink.HDFS.type = hdfs
TwitterAgent.sink.HDFS.hdfs.path =hdfs://localhost:8020/datamain/tweets
TwitterAgent.sink.HDFS.hdfs.fileType = DataStream
TwitterAgent.sink.HDFS.hdfs.writeFormat = Text
TwitterAgent.sink.HDFS.hdfs.batchSize = 1000
TwitterAgent.sink.HDFS.hdfs.rollSize = 0
TwitterAgent.sink.HDFS.hdfs.rollCount = 10000
TwitterAgent.sink.HDFS.hdfs.rollInterval = 600 `
这是我的 flume.env.sh 文件详细信息
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# If this file is placed at FLUME_CONF_DIR/flume-env.sh, it will be sourced
# during Flume startup.
# Enviroment variables can be set here.
JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386
# Give Flume more memory and pre-allocate, enable remote monitoring via JMX
JAVA_OPTS="-Xms500m -Xmx1000m -Dcom.sun.management.jmxremote"
# Note that the Flume conf directory is always included in the classpath.
FLUME_CLASSPATH=/home/user/hadoop_store/flume-sources-1.0-SNAPSHOT.jar
.bashrc 详细信息
##Flume home directory
export FLUME_HOME=/home/user/hadoop_store/apache-flume-1.4.0-bin
export FLUME_CONF_DIR=$FLUME_HOME/conf
export FLUME_CLASSPATH=$FLUME_CONF_DIR
export PATH=$FLUME_HOME/bin:$PATH
##Flume home directory
尝试更改快照文件路径仍然无效,
通过查看您的日志文件消息,您遗漏了两件事:
- 使用 org.apache.flume.source.twitter.TwitterSource class
配置因此
flume-sources-1.0-SNAPSHOT.jar
必须存在于 你的 flume lib 目录。 用下面的sinks关键字替换sink:
TwitterAgent.sinks.HDFS.channels = MemChannel TwitterAgent.sinks.HDFS.type = hdfs TwitterAgent.sinks.HDFS.hdfs.path =hdfs://localhost:8020/datamain/tweets TwitterAgent.sinks.HDFS.hdfs.fileType = DataStream TwitterAgent.sinks.HDFS.hdfs.writeFormat = Text TwitterAgent.sinks.HDFS.hdfs.batchSize = 1000 TwitterAgent.sinks.HDFS.hdfs.rollSize = 0 TwitterAgent.sinks.HDFS.hdfs.rollCount = 10000 TwitterAgent.sinks.HDFS.hdfs.rollInterval = 600
希望对你有帮助!!!