본문 바로가기

Programming/Hadoop

[flume + hdfs] Hadoop 3.2.1 org/apache/hadoop/io/SequenceFile$CompressionType

** Flume Sink로 hdfs 연동 중 아래와 같은 오류 발생

2020-04-13 23:35:29,924 (conf-file-poller-0) [ERROR - org.apache.flume.node.PollingPropertiesFileConfigurationProvider$FileWatcherRunnable.run(PollingPropertiesFileConfigurationProvider.java:150)] Failed to start agent because dependencies were not found in classpath. Error follows.
java.lang.NoClassDefFoundError: org/apache/hadoop/io/SequenceFile$CompressionType
        at org.apache.flume.sink.hdfs.HDFSEventSink.configure(HDFSEventSink.java:246)
        at org.apache.flume.conf.Configurables.configure(Configurables.java:41)
        at org.apache.flume.node.AbstractConfigurationProvider.loadSinks(AbstractConfigurationProvider.java:453)
        at org.apache.flume.node.AbstractConfigurationProvider.getConfiguration(AbstractConfigurationProvider.java:106)
        at org.apache.flume.node.PollingPropertiesFileConfigurationProvider$FileWatcherRunnable.run(PollingPropertiesFileConfigurationProvider.java:145)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
        at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)  
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:834)

 

 

** Hadoop 3.2.1 버전인 경우,

1. hadoop-3.2.1/share/hadoop/common 경로에서 hadoop-common-3.2.1.jar 파일을 복사하여 Flume lib 폴더 하위에 복사해준다.

2. flume-env.ps1 또는 fluem2-env.sh 파일의 FLUME_CLASSPATH를 아래와 같이 잡아준다.

$FLUME_CLASSPATH="lib\hadoop-common-3.2.1.jar"