diff --git a/hadoop-tools/hadoop-archives/src/main/java/org/apache/hadoop/tools/HadoopArchives.java b/hadoop-tools/hadoop-archives/src/main/java/org/apache/hadoop/tools/HadoopArchives.java index 0773c79bdf992..fb400c8385fca 100644 --- a/hadoop-tools/hadoop-archives/src/main/java/org/apache/hadoop/tools/HadoopArchives.java +++ b/hadoop-tools/hadoop-archives/src/main/java/org/apache/hadoop/tools/HadoopArchives.java @@ -469,8 +469,8 @@ void archive(Path parentPath, List srcPaths, int numFiles = 0; long totalSize = 0; FileSystem fs = parentPath.getFileSystem(conf); - this.blockSize = conf.getLong(HAR_BLOCKSIZE_LABEL, blockSize); - this.partSize = conf.getLong(HAR_PARTSIZE_LABEL, partSize); + this.blockSize = conf.getLongBytes(HAR_BLOCKSIZE_LABEL, blockSize); + this.partSize = conf.getLongBytes(HAR_PARTSIZE_LABEL, partSize); conf.setLong(HAR_BLOCKSIZE_LABEL, blockSize); conf.setLong(HAR_PARTSIZE_LABEL, partSize); conf.set(DST_HAR_LABEL, archiveName); diff --git a/hadoop-tools/hadoop-archives/src/test/java/org/apache/hadoop/tools/TestHadoopArchives.java b/hadoop-tools/hadoop-archives/src/test/java/org/apache/hadoop/tools/TestHadoopArchives.java index 3267a683c275c..a4ddf35679733 100644 --- a/hadoop-tools/hadoop-archives/src/test/java/org/apache/hadoop/tools/TestHadoopArchives.java +++ b/hadoop-tools/hadoop-archives/src/test/java/org/apache/hadoop/tools/TestHadoopArchives.java @@ -804,5 +804,29 @@ public void testCopyToLocal() throws Exception { localFs.delete(tmpPath, true); } } - + + @Test + public void testBlockSize() throws Exception { + conf.set(HadoopArchives.HAR_BLOCKSIZE_LABEL, "1m"); + + final String inputPathStr = inputPath.toUri().getPath(); + final String harName = "foo.har"; + final String[] args = + { "-archiveName", harName, "-p", inputPathStr, "*", + archivePath.toString() }; + System.setProperty(HadoopArchives.TEST_HADOOP_ARCHIVES_JAR_PATH, + HADOOP_ARCHIVES_JAR); + final HadoopArchives har = new HadoopArchives(conf); + assertEquals(0, ToolRunner.run(har, args)); + + RemoteIterator listFiles = + fs.listFiles(new Path(archivePath.toString() + "/" + harName), false); + while (listFiles.hasNext()) { + LocatedFileStatus next = listFiles.next(); + if (next.getPath().toString().matches(".*/part-\\d+$")) { + // compare blockSize + assertEquals(1 * 1024 * 1024, next.getBlockSize()); + } + } + } }