HDFS をシンクとして Flume を設定しようとしています。
これは私のflume.confファイルです:
agent1.channels.ch1.type = memory
agent1.sources.avro-source1.channels = ch1
agent1.sources.avro-source1.type = avro
agent1.sources.avro-source1.bind = 0.0.0.0
agent1.sources.avro-source1.port = 41414
agent1.sinks.log-sink1.type = logger
agent1.sinks.hdfs-sink.channel=ch1
agent1.sinks.hdfs-sink.type=hdfs
agent1.sinks.hdfs-sink.hdfs.path=hdfs://localhost:9000/flume/flumehdfs/
agent1.sinks.hdfs-sink.hdfs.fileType = DataStream
agent1.sinks.hdfs-sink.hdfs.writeFormat = Text
agent1.sinks.hdfs-sink.hdfs.batchSize = 1000
agent1.sinks.hdfs-sink.hdfs.rollSize = 0
agent1.sinks.hdfs-sink.hdfs.rollCount = 10000
agent1.sinks.hdfs-sink.hdfs.rollInterval = 600
agent1.channels = ch1
agent1.sources = avro-source1
agent1.sinks = log-sink1 hdfs-sink
私のhadoopバージョンは次のとおりです。
Hadoop 0.20.2
Subversion https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20 -r 911707
Flume のバージョンは次のとおりです。
apache-flume-1.4.0
これら2つのjarファイルをflume/libディレクトリに配置しました
hadoop-0.20.2-core
hadoop-common-0.22.0
Flume エージェントの起動時に次のエラーが発生したため、hadoop-common jar をそこに置きました。
Unhandled error
java.lang.NoSuchMethodError: org.apache.hadoop.security.UserGroupInformation.isSecurityEnabled()Z
at org.apache.flume.sink.hdfs.HDFSEventSink.authenticate(HDFSEventSink.java:491)
at org.apache.flume.sink.hdfs.HDFSEventSink.configure(HDFSEventSink.java:240)
at org.apache.flume.conf.Configurables.configure(Configurables.java:41)
at org.apache.flume.node.AbstractConfigurationProvider.loadSinks(AbstractConfigurationProvider.java:418)
at org.apache.flume.node.AbstractConfigurationProvider.getConfiguration(AbstractConfigurationProvider.java:103)
at org.apache.flume.node.PollingPropertiesFileConfigurationProvider$FileWatcherRunnable.run(PollingPropertiesFileConfigurationProvider.java:140)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:351)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:178)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:165)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:267)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:679)
これでエージェントが開始されます。これは起動ログです:
ロガー=デバッグ、コンソール 情報: HDFS アクセス用に (/home/user/Downloads/hadoop-0.20.2/bin/hadoop) で見つかった Hadoop ライブラリを含めます スレッド「メイン」の例外 java.lang.NoClassDefFoundError: クラスパス 原因: java.lang.ClassNotFoundException: クラスパス java.net.URLClassLoader$1.run(URLClassLoader.java:217) で java.security.AccessController.doPrivileged(ネイティブメソッド)で java.net.URLClassLoader.findClass(URLClassLoader.java:205) で java.lang.ClassLoader.loadClass(ClassLoader.java:321) で sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) で java.lang.ClassLoader.loadClass(ClassLoader.java:266) で メイン クラスが見つかりませんでした: クラスパス。プログラムは終了します。 + exec /usr/lib/jvm/default-java/bin/java -Xmx20m -Dflume.root.logger=DEBUG,console -cp '/home/user/Downloads/apache-flume-1.4.0-bin/conf: /home/user/Downloads/apache-flume-1.4.0-bin/lib/*' -Djava.library.path=:/home/user/Downloads/hadoop-0.20.2/bin/../lib/native /Linux-amd64-64 org.apache.flume.node.Application -n agent1 -f ./conf/flume.conf 2013-09-04 07:55:22,634 (lifecycleSupervisor-1-0) [INFO - org.apache.flume.node.PollingPropertiesFileConfigurationProvider.start(PollingPropertiesFileConfigurationProvider.java:61)] 構成プロバイダーの開始 2013-09-04 07:55:22,639 (lifecycleSupervisor-1-0) [デバッグ - org.apache.flume.node.PollingPropertiesFileConfigurationProvider.start(PollingPropertiesFileConfigurationProvider.java:78)] 構成プロバイダーが開始されました 2013-09-04 07:55:22,640 (conf-file-poller-0) [デバッグ - org.apache.flume.node.PollingPropertiesFileConfigurationProvider$FileWatcherRunnable.run(PollingPropertiesFileConfigurationProvider.java:126)] チェック ファイル:./conf/変更のためのflume.conf 2013-09-04 07:55:22,642 (conf-file-poller-0) [INFO - org.apache.flume.node.PollingPropertiesFileConfigurationProvider$FileWatcherRunnable.run(PollingPropertiesFileConfigurationProvider.java:133)] 構成ファイルの再読み込み:./conf /flume.conf 2013-09-04 07:55:22,648 (conf-file-poller-0) [INFO - org.apache.flume.conf.FlumeConfiguration$AgentConfiguration.addProperty(FlumeConfiguration.java:1016)] 処理: hdfs-sink 2013-09-04 07:55:22,648 (conf-file-poller-0) [デバッグ - org.apache.flume.conf.FlumeConfiguration$AgentConfiguration.addProperty(FlumeConfiguration.java:1020)] hdfs-sink のコンテキストを作成しました: hdfs.fileType 2013-09-04 07:55:22,649 (conf-file-poller-0) [INFO - org.apache.flume.conf.FlumeConfiguration$AgentConfiguration.addProperty(FlumeConfiguration.java:1016)] 処理中:loggerSink 2013-09-04 07:55:22,650 (conf-file-poller-0) [DEBUG - org.apache.flume.conf.FlumeConfiguration$AgentConfiguration.addProperty(FlumeConfiguration.java:1020)] loggerSink のコンテキストを作成しました: タイプ 2013-09-04 07:55:22,650 (conf-file-poller-0) [INFO - org.apache.flume.conf.FlumeConfiguration$AgentConfiguration.addProperty(FlumeConfiguration.java:1016)] 処理中: hdfs-sink 2013-09-04 07:55:22,650 (conf-file-poller-0) [INFO - org.apache.flume.conf.FlumeConfiguration$AgentConfiguration.addProperty(FlumeConfiguration.java:1016)] 処理中: hdfs-sink 2013-09-04 07:55:22,650 (conf-file-poller-0) [INFO - org.apache.flume.conf.FlumeConfiguration$AgentConfiguration.addProperty(FlumeConfiguration.java:1016)] 処理中: hdfs-sink 2013-09-04 07:55:22,650 (conf-file-poller-0) [INFO - org.apache.flume.conf.FlumeConfiguration$AgentConfiguration.addProperty(FlumeConfiguration.java:1016)] 処理中: hdfs-sink 2013-09-04 07:55:22,651 (conf-file-poller-0) [INFO - org.apache.flume.conf.FlumeConfiguration$AgentConfiguration.addProperty(FlumeConfiguration.java:1016)] 処理: hdfs-sink 2013-09-04 07:55:22,651 (conf-file-poller-0) [INFO - org.apache.flume.conf.FlumeConfiguration$AgentConfiguration.addProperty(FlumeConfiguration.java:1016)] 処理中:log-sink1 2013-09-04 07:55:22,651 (conf-file-poller-0) [デバッグ - org.apache.flume.conf.FlumeConfiguration$AgentConfiguration.addProperty(FlumeConfiguration.java:1020)] log-sink1 のコンテキストを作成しました:タイプ 2013-09-04 07:55:22,651 (conf-file-poller-0) [INFO - org.apache.flume.conf.FlumeConfiguration$AgentConfiguration.addProperty(FlumeConfiguration.java:930)] 追加されたシンク: loggerSink エージェント: エージェント 2013-09-04 07:55:22,654 (conf-file-poller-0) [INFO - org.apache.flume.conf.FlumeConfiguration$AgentConfiguration.addProperty(FlumeConfiguration.java:930)] 追加されたシンク: log-sink1 hdfs -シンク エージェント: agent1 2013-09-04 07:55:22,654 (conf-file-poller-0) [INFO - org.apache.flume.conf.FlumeConfiguration$AgentConfiguration.addProperty(FlumeConfiguration.java:1016)] 処理中: hdfs-sink 2013-09-04 07:55:22,654 (conf-file-poller-0) [INFO - org.apache.flume.conf.FlumeConfiguration$AgentConfiguration.addProperty(FlumeConfiguration.java:1016)] 処理中: hdfs-sink 2013-09-04 07:55:22,654 (conf-file-poller-0) [INFO - org.apache.flume.conf.FlumeConfiguration$AgentConfiguration.addProperty(FlumeConfiguration.java:1016)] 処理中:loggerSink 2013-09-04 07:55:22,654 (conf-file-poller-0) [INFO - org.apache.flume.conf.FlumeConfiguration$AgentConfiguration.addProperty(FlumeConfiguration.java:1016)] 処理中: hdfs-sink 2013-09-04 07:55:22,655 (conf-file-poller-0) [INFO - org.apache.flume.conf.FlumeConfiguration$AgentConfiguration.addProperty(FlumeConfiguration.java:1016)] 処理中:log-sink1 2013-09-04 07:55:22,655 (conf-file-poller-0) [DEBUG - org.apache.flume.conf.FlumeConfiguration$AgentConfiguration.isValid(FlumeConfiguration.java:313)] エージェントの構成の検証を開始しています:エージェント、初期構成: AgentConfiguration[エージェント] ソース: {seqGenSrc={ パラメータ:{channels=memoryChannel, type=seq} }} チャンネル: {memoryChannel={ parameters:{capacity=100, type=memory} }} シンク: {loggerSink={ parameters:{type=logger, channel=memoryChannel} }} 2013-09-04 07:55:22,661 (conf-file-poller-0) [デバッグ - org.apache.flume.conf.FlumeConfiguration$AgentConfiguration.validateChannels(FlumeConfiguration.java:468)] チャネル memoryChannel を作成しました 2013-09-04 07:55:22,671 (conf-file-poller-0) [DEBUG - org.apache.flume.conf.FlumeConfiguration$AgentConfiguration.validateSinks(FlumeConfiguration.java:674)] シンクの作成: LOGGER を使用した loggerSink 2013-09-04 07:55:22,673 (conf-file-poller-0) [DEBUG - org.apache.flume.conf.FlumeConfiguration$AgentConfiguration.isValid(FlumeConfiguration.java:371)] エージェントの検証構成の投稿 基本的な構文検証のみが実行された構成スタブなしで作成された AgentConfiguration[エージェント] ソース: {seqGenSrc={ パラメータ:{channels=memoryChannel, type=seq} }} チャンネル: {memoryChannel={ parameters:{capacity=100, type=memory} }} 完全な検証が実行された構成スタブで作成された AgentConfiguration[agent] シンク: {loggerSink=ComponentConfiguration[loggerSink] 構成: CHANNEL:メモリーチャンネル } 2013-09-04 07:55:22,673 (conf-file-poller-0) [デバッグ - org.apache.flume.conf.FlumeConfiguration.validateConfiguration(FlumeConfiguration.java:135)] チャネル:memoryChannel 2013-09-04 07:55:22,673 (conf-file-poller-0) [デバッグ - org.apache.flume.conf.FlumeConfiguration.validateConfiguration(FlumeConfiguration.java:136)] シンク loggerSink 2013-09-04 07:55:22,674 (conf-file-poller-0) [デバッグ - org.apache.flume.conf.FlumeConfiguration.validateConfiguration(FlumeConfiguration.java:137)] ソース seqGenSrc 2013-09-04 07:55:22,674 (conf-file-poller-0) [DEBUG - org.apache.flume.conf.FlumeConfiguration$AgentConfiguration.isValid(FlumeConfiguration.java:313)] エージェントの構成の検証を開始しています: agent1、初期構成: AgentConfiguration[agent1] ソース: {avro-source1={ parameters:{port=41414, channels=ch1, type=avro, bind=0.0.0.0} }} チャネル: {ch1={ パラメータ:{type=memory} }} シンク: {hdfs-sink={ パラメーター:{hdfs.fileType=DataStream、hdfs.path=hdfs://localhost:9000/flume/flumehdfs/、hdfs.batchSize=1000、hdfs.rollInterval=600、hdfs.rollSize= 0, hdfs.writeFormat=Text, type=hdfs, hdfs.rollCount=10000, channel=ch1} }, log-sink1={ parameters:{type=logger, channel=ch1} }} 2013-09-04 07:55:22,675 (conf-file-poller-0) [DEBUG - org.apache.flume.conf.FlumeConfiguration$AgentConfiguration.validateChannels(FlumeConfiguration.java:468)] チャンネル ch1 を作成しました 2013-09-04 07:55:22,677 (conf-file-poller-0) [DEBUG - org.apache.flume.conf.FlumeConfiguration$AgentConfiguration.validateSinks(FlumeConfiguration.java:674)] シンクの作成: hdfs-sink を使用HDFS 2013-09-04 07:55:22,678 (conf-file-poller-0) [DEBUG - org.apache.flume.conf.FlumeConfiguration$AgentConfiguration.validateSinks(FlumeConfiguration.java:674)] シンクの作成: log-sink1 を使用ロガー 2013-09-04 07:55:22,679 (conf-file-poller-0) [DEBUG - org.apache.flume.conf.FlumeConfiguration$AgentConfiguration.isValid(FlumeConfiguration.java:371)] agent1 の検証構成の投稿 基本的な構文検証のみが実行された構成スタブなしで作成された AgentConfiguration[agent1] ソース: {avro-source1={ parameters:{port=41414, channels=ch1, type=avro, bind=0.0.0.0} }} チャネル: {ch1={ パラメータ:{type=memory} }} シンク: {hdfs-sink={ パラメーター:{hdfs.fileType=DataStream、hdfs.path=hdfs://localhost:9000/flume/flumehdfs/、hdfs.batchSize=1000、hdfs.rollInterval=600、hdfs.rollSize= 0, hdfs.writeFormat=Text, type=hdfs, hdfs.rollCount=10000, channel=ch1} }} 完全な検証が実行された構成スタブで作成された AgentConfiguration[agent1] シンク: {log-sink1=ComponentConfiguration[log-sink1] 構成: チャンネル:ch1 } 2013-09-04 07:55:22,679 (conf-file-poller-0) [デバッグ - org.apache.flume.conf.FlumeConfiguration.validateConfiguration(FlumeConfiguration.java:135)] チャネル: ch1 2013-09-04 07:55:22,679 (conf-file-poller-0) [デバッグ - org.apache.flume.conf.FlumeConfiguration.validateConfiguration(FlumeConfiguration.java:136)] シンク hdfs-sink log-sink1 2013-09-04 07:55:22,679 (conf-file-poller-0) [デバッグ - org.apache.flume.conf.FlumeConfiguration.validateConfiguration(FlumeConfiguration.java:137)] ソース avro-source1 2013-09-04 07:55:22,680 (conf-file-poller-0) [INFO - org.apache.flume.conf.FlumeConfiguration.validateConfiguration(FlumeConfiguration.java:140)] 検証後の Flume 構成にエージェントの構成が含まれています: [エージェント、エージェント1] 2013-09-04 07:55:22,680 (conf-file-poller-0) [INFO - org.apache.flume.node.AbstractConfigurationProvider.loadChannels(AbstractConfigurationProvider.java:150)] チャネルの作成 2013-09-04 07:55:22,691 (conf-file-poller-0) [INFO - org.apache.flume.channel.DefaultChannelFactory.create(DefaultChannelFactory.java:40)] チャネル ch1 タイプのメモリのインスタンスを作成しています 2013-09-04 07:55:22,699 (conf-file-poller-0) [INFO - org.apache.flume.node.AbstractConfigurationProvider.loadChannels(AbstractConfigurationProvider.java:205)] チャネル ch1 を作成しました 2013-09-04 07:55:22,700 (conf-file-poller-0) [INFO - org.apache.flume.source.DefaultSourceFactory.create(DefaultSourceFactory.java:39)] ソース avro-source1 のインスタンスを作成しています、タイプアブロ 2013-09-04 07:55:22,733 (conf-file-poller-0) [INFO - org.apache.flume.sink.DefaultSinkFactory.create(DefaultSinkFactory.java:40)] シンクのインスタンスを作成しています: log-sink1,タイプ: ロガー 2013-09-04 07:55:22,736 (conf-file-poller-0) [INFO - org.apache.flume.sink.DefaultSinkFactory.create(DefaultSinkFactory.java:40)] シンクのインスタンスを作成しています: hdfs-sink,タイプ: hdfs 2013-09-04 07:55:22,985 (conf-file-poller-0) [INFO - org.apache.flume.sink.hdfs.HDFSEventSink.authenticate(HDFSEventSink.java:493)] Hadoop セキュリティが有効: false 2013-09-04 07:55:22,989 (conf-file-poller-0) [INFO - org.apache.flume.node.AbstractConfigurationProvider.getConfiguration(AbstractConfigurationProvider.java:119)] [avro-source1 に接続されたチャネル ch1、ログ シンク 1、hdfs シンク] 2013-09-04 07:55:22,996 (conf-file-poller-0) [INFO - org.apache.flume.node.Application.startAllComponents(Application.java:138)] 新しい構成を開始しています:{ sourceRunners:{avro -source1=EventDrivenSourceRunner: { source:Avro source avro-source1: { bindAddress: 0.0.0.0, port: 41414 } }} sinkRunners:{hdfs-sink=SinkRunner: { policy:org.apache.flume.sink.DefaultSinkProcessor@709446e4 counterGroup:{ name:null counters:{} } }, log-sink1=SinkRunner: { policy:org.apache.flume.sink.DefaultSinkProcessor@16ba5c7a counterGroup:{ name:null counters:{} } }} channels:{ch1 =org.apache.flume.channel.MemoryChannel{name: ch1}} } 2013-09-04 07:55:23,011 (conf-file-poller-0) [INFO - org.apache.flume.node.Application.startAllComponents(Application.java:145)] チャネル ch1 を開始しています 2013-09-04 07:55:23,064 (lifecycleSupervisor-1-0) [INFO - org.apache.flume.instrumentation.MonitoredCounterGroup.register(MonitoredCounterGroup.java:110)] 種類の監視カウンター グループ: CHANNEL、名前: ch1 、 正常に登録。 2013-09-04 07:55:23,064 (lifecycleSupervisor-1-0) [INFO - org.apache.flume.instrumentation.MonitoredCounterGroup.start(MonitoredCounterGroup.java:94)] コンポーネント タイプ: CHANNEL、名前: ch1 開始 2013-09-04 07:55:23,065 (conf-file-poller-0) [INFO - org.apache.flume.node.Application.startAllComponents(Application.java:173)] シンク hdfs-sink を開始しています 2013-09-04 07:55:23,066 (conf-file-poller-0) [INFO - org.apache.flume.node.Application.startAllComponents(Application.java:173)] シンク log-sink1 を開始しています 2013-09-04 07:55:23,068 (conf-file-poller-0) [INFO - org.apache.flume.node.Application.startAllComponents(Application.java:184)] ソース avro-source1 を開始しています 2013-09-04 07:55:23,069 (lifecycleSupervisor-1-3) [INFO - org.apache.flume.source.AvroSource.start(AvroSource.java:192)] Avro ソース avro-source1 を開始しています: { bindAddress: 0.0 .0.0、ポート: 41414 }... 2013-09-04 07:55:23,069 (lifecycleSupervisor-1-1) [INFO - org.apache.flume.instrumentation.MonitoredCounterGroup.register(MonitoredCounterGroup.java:110)] タイプ: SINK、名前: hdfs の監視カウンター グループ-sink、正常に登録されました。 2013-09-04 07:55:23,069 (lifecycleSupervisor-1-1) [INFO - org.apache.flume.instrumentation.MonitoredCounterGroup.start(MonitoredCounterGroup.java:94)] コンポーネントの種類: SINK、名前: hdfs-sink が開始されました 2013-09-04 07:55:23,078 (SinkRunner-PollingRunner-DefaultSinkProcessor) [DEBUG - org.apache.flume.SinkRunner$PollingRunner.run(SinkRunner.java:143)] ポーリング シンク ランナーの開始 2013-09-04 07:55:23,079 (SinkRunner-PollingRunner-DefaultSinkProcessor) [DEBUG - org.apache.flume.SinkRunner$PollingRunner.run(SinkRunner.java:143)] ポーリング シンク ランナーの開始 2013-09-04 07:55:23,458 (lifecycleSupervisor-1-3) [INFO - org.apache.flume.instrumentation.MonitoredCounterGroup.register(MonitoredCounterGroup.java:110)] タイプ: ソース、名前: avro の監視カウンター グループ-source1、正常に登録されました。 2013-09-04 07:55:23,462 (lifecycleSupervisor-1-3) [INFO - org.apache.flume.instrumentation.MonitoredCounterGroup.start(MonitoredCounterGroup.java:94)] コンポーネントの種類: SOURCE、名前: avro-source1 が開始されました 2013-09-04 07:55:23,464 (lifecycleSupervisor-1-3) [INFO - org.apache.flume.source.AvroSource.start(AvroSource.java:217)] Avro ソース avro-source1 が開始されました。
しかし、何らかのイベントが発生するたびに、flume ログに次のエラーが記録され、hdfs にも何も書き込まれません。
エラー - org.apache.flume.sink.hdfs.HDFSEventSink.process(HDFSEventSink.java:422)] プロセスが失敗しました java.lang.NoSuchMethodError: org.apache.hadoop.util.Shell.getGROUPS_COMMAND()[Ljava/lang/String; org.apache.hadoop.security.UnixUserGroupInformation.getUnixGroups (UnixUserGroupInformation.java:345) で org.apache.hadoop.security.UnixUserGroupInformation.login (UnixUserGroupInformation.java:264) で org.apache.hadoop.security.UnixUserGroupInformation.login (UnixUserGroupInformation.java:300) で org.apache.hadoop.hdfs.DFSClient.(DFSClient.java:192) で org.apache.hadoop.hdfs.DFSClient.(DFSClient.java:170) で org.apache.hadoop.hdfs.DistributedFileSystem.initialize (DistributedFileSystem.java:82) で org.apache.hadoop.fs.FileSystem.createFileSystem (FileSystem.java:1792) で org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:76) で org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:1826) で org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:1808) で org.apache.hadoop.fs.FileSystem.get(FileSystem.java:265) で org.apache.hadoop.fs.Path.getFileSystem(Path.java:190) で org.apache.flume.sink.hdfs.BucketWriter$1.call(BucketWriter.java:226) で org.apache.flume.sink.hdfs.BucketWriter$1.call(BucketWriter.java:220) で org.apache.flume.sink.hdfs.BucketWriter$8$1.run(BucketWriter.java:536) で org.apache.flume.sink.hdfs.BucketWriter.runPrivileged (BucketWriter.java:160) で org.apache.flume.sink.hdfs.BucketWriter.access$1000 (BucketWriter.java:56) で org.apache.flume.sink.hdfs.BucketWriter$8.call(BucketWriter.java:533) で java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) で java.util.concurrent.FutureTask.run (FutureTask.java:166) で java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1146) で java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) で java.lang.Thread.run(Thread.java:679) で
構成ファイルまたは jar ファイルが不足していますか?