spring-batch
  • spring-xd
  • 2015-09-11 44 views -5 likes 
    -5

    我們試圖在當前的環境下jdbchdfs工作JDBCHDFS作業失敗與文件系統關閉例外

    我們的環境是:
    彈簧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

    相關問題