2015-09-11 4 views
-5

Мы пытались следующей jdbchdfs работы в текущей средеJDBCHDFS работа потерпела неудачу с Filesystem закрыто исключением

Нашей среда:
версия весны-XD: 1.2.1
распределение Hadoop: PHD3.0

job create rcd_prod --definition "jdbchdfs --driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver --url='jdbc:sqlserver://hostname:49552;database=databasename' --username=User --password=xxxxxx --testOnBorrow=false --delimiter=^ --sql='select * from tablename' --fsUri=hdfs://HOSTNAME-HA --fileExtension=csv --directory=/PATH/TO/DIR/ --fileName=XYZ --partitions=1 --makeUnique=true" 

Получение ошибки на выполнение jdbchdfs работы

После ошибки

java.io.IOException: Filesystem closed 
    at org.apache.hadoop.hdfs.DFSClient.checkOpen(DFSClient.java:795) 
    at org.apache.hadoop.hdfs.DFSClient.getFileInfo(DFSClient.java:2005) 
    at org.apache.hadoop.hdfs.DistributedFileSystem$19.doCall(DistributedFileSystem.java:1136) 
    at org.apache.hadoop.hdfs.DistributedFileSystem$19.doCall(DistributedFileSystem.java:1132) 
    at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81) 
    at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:1132) 
    at org.apache.hadoop.fs.FileSystem.exists(FileSystem.java:1423) 
    at org.springframework.xd.batch.item.hadoop.AbstractHdfsItemWriter.initializeCounterIfNecessary(AbstractHdfsItemWriter.java:66) 
    at org.springframework.xd.batch.item.hadoop.HdfsTextItemWriter.write(HdfsTextItemWriter.java:60) 
    at sun.reflect.GeneratedMethodAccessor54.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) 
    at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133) 
    at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) 
    at com.sun.proxy.$Proxy94.write(Unknown Source) 
    at org.springframework.batch.core.step.item.SimpleChunkProcessor.writeItems(SimpleChunkProcessor.java:175) 
    at org.springframework.batch.core.step.item.SimpleChunkProcessor.doWrite(SimpleChunkProcessor.java:151) 
    at org.springframework.batch.core.step.item.SimpleChunkProcessor.write(SimpleChunkProcessor.java:274) 
    at org.springframework.batch.core.step.item.SimpleChunkProcessor.process(SimpleChunkProcessor.java:199) 
    at org.springframework.batch.core.step.item.ChunkOrientedTasklet.execute(ChunkOrientedTasklet.java:75) 
    at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletSte 

Что вызывает это исключение и как мы можем это исправить?

+0

Пожалуйста, сообщите, где не хватает при отправке вопроса! так что это более читаемо! – NEO

ответ

0

Эта проблема обычно возникает при запуске нескольких заданий jdbchdfs. Дело в том, что основная библиотека Hadoop закрывает соединения для всей JVM - поэтому любые выполняемые параллельно задания и открытые файлы HDFS могут закрыть соединение файловой системы друг с другом.

Это было исправлено из 1.3.1.RC.

http://github.com/spring-projects/spring-xd/pull/1805

+0

Спасибо за ответ. У нас есть два параллельных задания, выполняемых одновременно с использованием cron. Но только он выполняет одно задание, а другое завершено полностью. Есть ли у нас какой-то способ, чтобы наша работа выполнялась параллельно без сбоев. И еще одна вещь, которую я наблюдал, если я выполнял различную работу, поэтому мои оба задания терпят неудачу при первом запуске cron. Взгляните вперед, как избежать сбоя работы в каждом прогоне. – NEO

+0

вы можете работать в распределенном режиме? попробуйте выполнить развертывание в разных контейнерах таким образом, у вас будет 2 отдельных JVM. – Ali

+0

Команда Spring XD просто исправила это - вы можете увидеть, что это разрешено в следующем выпуске. https://github.com/spring-projects/spring-xd/pull/1805 – Ali

Смежные вопросы