hdfs 디렉토리의 모든 파일 나열

hdfs 디렉토리의 모든 파일 나열

한 구성 요소의 일부 오류로 인해 HDFS의 파일이 누적되어 그 수가 2123516과 같이 엄청납니다. 모든 파일을 나열하고 해당 이름을 하나의 파일에 복사하고 싶지만 다음 명령을 실행하면 Java 힙 공간 오류가 발생합니다. .

hdfs dfs -ls /tmp/content/

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:3332)
    at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:137)
    at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:121)
    at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:421)
    at java.lang.StringBuffer.append(StringBuffer.java:272)
    at java.net.URI.appendSchemeSpecificPart(URI.java:1911)
    at java.net.URI.toString(URI.java:1941)
    at java.net.URI.<init>(URI.java:742)
    at org.apache.hadoop.fs.Path.initialize(Path.java:145)
    at org.apache.hadoop.fs.Path.<init>(Path.java:126)
    at org.apache.hadoop.fs.Path.<init>(Path.java:50)
    at org.apache.hadoop.hdfs.protocol.HdfsFileStatus.getFullPath(HdfsFileStatus.java:215)
    at org.apache.hadoop.hdfs.DistributedFileSystem.makeQualified(DistributedFileSystem.java:252)
    at org.apache.hadoop.hdfs.DistributedFileSystem.listStatus(DistributedFileSystem.java:311)
    at org.apache.hadoop.fs.FileSystem.listStatus(FileSystem.java:842)
    at org.apache.hadoop.fs.FileSystem.listStatus(FileSystem.java:902)
    at org.apache.hadoop.fs.FileSystem.globStatusInternal(FileSystem.java:1032)
    at org.apache.hadoop.fs.FileSystem.globStatus(FileSystem.java:987)
    at org.apache.hadoop.fs.FileSystem.globStatus(FileSystem.java:965)
    at org.apache.hadoop.fs.shell.Command.runAll(Command.java:62)
    at org.apache.hadoop.fs.FsShell.run(FsShell.java:1822)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79)
    at org.apache.hadoop.fs.FsShell.main(FsShell.java:1895)

파일을 나열하는 다른 방법이 있고 2400000개의 파일을 나열하는 데 필요한 힙 공간이 얼마나 됩니까?

답변1

env를 설정하여 CLI 힙 크기를 늘릴 수 있습니다 HADOOP_HEAPSIZE. 예를 들면 다음과 같습니다.

$ HADOOP_HEAPSIZE=1000 hdfs dfs -ls /tmp/content

숫자는 MB 단위이므로 조심하세요 :)

더 큰 질문은 콘솔에 있는 200만 개 이상의 파일로 무엇을 하려는가입니다. 출력을 다른 곳으로 리디렉션할 계획이 없나요?

관련 정보