HADOOP-6801. io.sort.mb and io.sort.factor were renamed and moved to mapreduce but are still in CommonConfigurationKeysPublic.java and used in SequenceFile.java.
This closes #146 Signed-off-by: Akira Ajisaka <aajisaka@apache.org>
This commit is contained in:
parent
19a1fc6373
commit
eb5a17954a
@ -250,18 +250,43 @@ public class CommonConfigurationKeysPublic {
|
|||||||
* @deprecated Moved to mapreduce, see mapreduce.task.io.sort.mb
|
* @deprecated Moved to mapreduce, see mapreduce.task.io.sort.mb
|
||||||
* in mapred-default.xml
|
* in mapred-default.xml
|
||||||
* See https://issues.apache.org/jira/browse/HADOOP-6801
|
* See https://issues.apache.org/jira/browse/HADOOP-6801
|
||||||
|
*
|
||||||
|
* For {@link org.apache.hadoop.io.SequenceFile.Sorter} control
|
||||||
|
* instead, see {@link #SEQ_IO_SORT_MB_KEY}.
|
||||||
*/
|
*/
|
||||||
public static final String IO_SORT_MB_KEY = "io.sort.mb";
|
public static final String IO_SORT_MB_KEY = "io.sort.mb";
|
||||||
/** Default value for IO_SORT_MB_DEFAULT */
|
/** Default value for {@link #IO_SORT_MB_KEY}. */
|
||||||
public static final int IO_SORT_MB_DEFAULT = 100;
|
public static final int IO_SORT_MB_DEFAULT = 100;
|
||||||
/**
|
/**
|
||||||
* @deprecated Moved to mapreduce, see mapreduce.task.io.sort.factor
|
* @deprecated Moved to mapreduce, see mapreduce.task.io.sort.factor
|
||||||
* in mapred-default.xml
|
* in mapred-default.xml
|
||||||
* See https://issues.apache.org/jira/browse/HADOOP-6801
|
* See https://issues.apache.org/jira/browse/HADOOP-6801
|
||||||
|
*
|
||||||
|
* For {@link org.apache.hadoop.io.SequenceFile.Sorter} control
|
||||||
|
* instead, see {@link #SEQ_IO_SORT_FACTOR_KEY}.
|
||||||
*/
|
*/
|
||||||
public static final String IO_SORT_FACTOR_KEY = "io.sort.factor";
|
public static final String IO_SORT_FACTOR_KEY = "io.sort.factor";
|
||||||
/** Default value for IO_SORT_FACTOR_DEFAULT */
|
/** Default value for {@link #IO_SORT_FACTOR_KEY}. */
|
||||||
public static final int IO_SORT_FACTOR_DEFAULT = 100;
|
public static final int IO_SORT_FACTOR_DEFAULT = 100;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see
|
||||||
|
* <a href="{@docRoot}/../hadoop-project-dist/hadoop-common/core-default.xml">
|
||||||
|
* core-default.xml</a>
|
||||||
|
*/
|
||||||
|
public static final String SEQ_IO_SORT_MB_KEY = "seq.io.sort.mb";
|
||||||
|
/** Default value for {@link #SEQ_IO_SORT_MB_KEY}. */
|
||||||
|
public static final int SEQ_IO_SORT_MB_DEFAULT = 100;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see
|
||||||
|
* <a href="{@docRoot}/../hadoop-project-dist/hadoop-common/core-default.xml">
|
||||||
|
* core-default.xml</a>
|
||||||
|
*/
|
||||||
|
public static final String SEQ_IO_SORT_FACTOR_KEY = "seq.io.sort.factor";
|
||||||
|
/** Default value for {@link #SEQ_IO_SORT_FACTOR_KEY}. */
|
||||||
|
public static final int SEQ_IO_SORT_FACTOR_DEFAULT = 100;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see
|
* @see
|
||||||
* <a href="{@docRoot}/../hadoop-project-dist/hadoop-common/core-default.xml">
|
* <a href="{@docRoot}/../hadoop-project-dist/hadoop-common/core-default.xml">
|
||||||
|
@ -2816,14 +2816,30 @@ public class SequenceFile {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Sort and merge using an arbitrary {@link RawComparator}. */
|
/** Sort and merge using an arbitrary {@link RawComparator}. */
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
public Sorter(FileSystem fs, RawComparator comparator, Class keyClass,
|
public Sorter(FileSystem fs, RawComparator comparator, Class keyClass,
|
||||||
Class valClass, Configuration conf, Metadata metadata) {
|
Class valClass, Configuration conf, Metadata metadata) {
|
||||||
this.fs = fs;
|
this.fs = fs;
|
||||||
this.comparator = comparator;
|
this.comparator = comparator;
|
||||||
this.keyClass = keyClass;
|
this.keyClass = keyClass;
|
||||||
this.valClass = valClass;
|
this.valClass = valClass;
|
||||||
this.memory = conf.getInt("io.sort.mb", 100) * 1024 * 1024;
|
// Remember to fall-back on the deprecated MB and Factor keys
|
||||||
this.factor = conf.getInt("io.sort.factor", 100);
|
// until they are removed away permanently.
|
||||||
|
if (conf.get(CommonConfigurationKeys.IO_SORT_MB_KEY) != null) {
|
||||||
|
this.memory = conf.getInt(CommonConfigurationKeys.IO_SORT_MB_KEY,
|
||||||
|
CommonConfigurationKeys.SEQ_IO_SORT_MB_DEFAULT) * 1024 * 1024;
|
||||||
|
} else {
|
||||||
|
this.memory = conf.getInt(CommonConfigurationKeys.SEQ_IO_SORT_MB_KEY,
|
||||||
|
CommonConfigurationKeys.SEQ_IO_SORT_MB_DEFAULT) * 1024 * 1024;
|
||||||
|
}
|
||||||
|
if (conf.get(CommonConfigurationKeys.IO_SORT_FACTOR_KEY) != null) {
|
||||||
|
this.factor = conf.getInt(CommonConfigurationKeys.IO_SORT_FACTOR_KEY,
|
||||||
|
CommonConfigurationKeys.SEQ_IO_SORT_FACTOR_DEFAULT);
|
||||||
|
} else {
|
||||||
|
this.factor = conf.getInt(
|
||||||
|
CommonConfigurationKeys.SEQ_IO_SORT_FACTOR_KEY,
|
||||||
|
CommonConfigurationKeys.SEQ_IO_SORT_FACTOR_DEFAULT);
|
||||||
|
}
|
||||||
this.conf = conf;
|
this.conf = conf;
|
||||||
this.metadata = metadata;
|
this.metadata = metadata;
|
||||||
}
|
}
|
||||||
|
@ -2476,4 +2476,23 @@
|
|||||||
in audit logs.
|
in audit logs.
|
||||||
</description>
|
</description>
|
||||||
</property>
|
</property>
|
||||||
|
<!-- SequenceFile's Sorter properties -->
|
||||||
|
<property>
|
||||||
|
<name>seq.io.sort.mb</name>
|
||||||
|
<value>100</value>
|
||||||
|
<description>
|
||||||
|
The total amount of buffer memory to use while sorting files,
|
||||||
|
while using SequenceFile.Sorter, in megabytes. By default,
|
||||||
|
gives each merge stream 1MB, which should minimize seeks.
|
||||||
|
</description>
|
||||||
|
</property>
|
||||||
|
<property>
|
||||||
|
<name>seq.io.sort.factor</name>
|
||||||
|
<value>100</value>
|
||||||
|
<description>
|
||||||
|
The number of streams to merge at once while sorting
|
||||||
|
files using SequenceFile.Sorter.
|
||||||
|
This determines the number of open file handles.
|
||||||
|
</description>
|
||||||
|
</property>
|
||||||
</configuration>
|
</configuration>
|
||||||
|
@ -38,6 +38,7 @@ import static org.junit.Assert.assertTrue;
|
|||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
import static org.junit.Assert.fail;
|
import static org.junit.Assert.fail;
|
||||||
import static org.junit.Assert.assertNotNull;
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
import static org.junit.Assert.assertNull;
|
||||||
import org.mockito.Mockito;
|
import org.mockito.Mockito;
|
||||||
|
|
||||||
|
|
||||||
@ -54,7 +55,72 @@ public class TestSequenceFile {
|
|||||||
compressedSeqFileTest(new DefaultCodec());
|
compressedSeqFileTest(new DefaultCodec());
|
||||||
LOG.info("Successfully tested SequenceFile with DefaultCodec");
|
LOG.info("Successfully tested SequenceFile with DefaultCodec");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
|
public void testSorterProperties() throws IOException {
|
||||||
|
// Test to ensure that deprecated properties have no default
|
||||||
|
// references anymore.
|
||||||
|
Configuration config = new Configuration();
|
||||||
|
assertNull("The deprecated sort memory property "
|
||||||
|
+ CommonConfigurationKeys.IO_SORT_MB_KEY
|
||||||
|
+ " must not exist in any core-*.xml files.",
|
||||||
|
config.get(CommonConfigurationKeys.IO_SORT_MB_KEY));
|
||||||
|
assertNull("The deprecated sort factor property "
|
||||||
|
+ CommonConfigurationKeys.IO_SORT_FACTOR_KEY
|
||||||
|
+ " must not exist in any core-*.xml files.",
|
||||||
|
config.get(CommonConfigurationKeys.IO_SORT_FACTOR_KEY));
|
||||||
|
|
||||||
|
// Test deprecated property honoring
|
||||||
|
// Set different values for old and new property names
|
||||||
|
// and compare which one gets loaded
|
||||||
|
config = new Configuration();
|
||||||
|
FileSystem fs = FileSystem.get(config);
|
||||||
|
config.setInt(CommonConfigurationKeys.IO_SORT_MB_KEY, 10);
|
||||||
|
config.setInt(CommonConfigurationKeys.IO_SORT_FACTOR_KEY, 10);
|
||||||
|
config.setInt(CommonConfigurationKeys.SEQ_IO_SORT_MB_KEY, 20);
|
||||||
|
config.setInt(CommonConfigurationKeys.SEQ_IO_SORT_FACTOR_KEY, 20);
|
||||||
|
SequenceFile.Sorter sorter = new SequenceFile.Sorter(
|
||||||
|
fs, Text.class, Text.class, config);
|
||||||
|
assertEquals("Deprecated memory conf must be honored over newer property",
|
||||||
|
10*1024*1024, sorter.getMemory());
|
||||||
|
assertEquals("Deprecated factor conf must be honored over newer property",
|
||||||
|
10, sorter.getFactor());
|
||||||
|
|
||||||
|
// Test deprecated properties (graceful deprecation)
|
||||||
|
config = new Configuration();
|
||||||
|
fs = FileSystem.get(config);
|
||||||
|
config.setInt(CommonConfigurationKeys.IO_SORT_MB_KEY, 10);
|
||||||
|
config.setInt(CommonConfigurationKeys.IO_SORT_FACTOR_KEY, 10);
|
||||||
|
sorter = new SequenceFile.Sorter(
|
||||||
|
fs, Text.class, Text.class, config);
|
||||||
|
assertEquals("Deprecated memory property "
|
||||||
|
+ CommonConfigurationKeys.IO_SORT_MB_KEY
|
||||||
|
+ " must get properly applied.",
|
||||||
|
10*1024*1024, // In bytes
|
||||||
|
sorter.getMemory());
|
||||||
|
assertEquals("Deprecated sort factor property "
|
||||||
|
+ CommonConfigurationKeys.IO_SORT_FACTOR_KEY
|
||||||
|
+ " must get properly applied.",
|
||||||
|
10, sorter.getFactor());
|
||||||
|
|
||||||
|
// Test regular properties (graceful deprecation)
|
||||||
|
config = new Configuration();
|
||||||
|
fs = FileSystem.get(config);
|
||||||
|
config.setInt(CommonConfigurationKeys.SEQ_IO_SORT_MB_KEY, 20);
|
||||||
|
config.setInt(CommonConfigurationKeys.SEQ_IO_SORT_FACTOR_KEY, 20);
|
||||||
|
sorter = new SequenceFile.Sorter(
|
||||||
|
fs, Text.class, Text.class, config);
|
||||||
|
assertEquals("Memory property "
|
||||||
|
+ CommonConfigurationKeys.SEQ_IO_SORT_MB_KEY
|
||||||
|
+ " must get properly applied if present.",
|
||||||
|
20*1024*1024, // In bytes
|
||||||
|
sorter.getMemory());
|
||||||
|
assertEquals("Merge factor property "
|
||||||
|
+ CommonConfigurationKeys.SEQ_IO_SORT_FACTOR_KEY
|
||||||
|
+ " must get properly applied if present.",
|
||||||
|
20, sorter.getFactor());
|
||||||
|
}
|
||||||
|
|
||||||
public void compressedSeqFileTest(CompressionCodec codec) throws Exception {
|
public void compressedSeqFileTest(CompressionCodec codec) throws Exception {
|
||||||
int count = 1024 * 10;
|
int count = 1024 * 10;
|
||||||
int megabytes = 1;
|
int megabytes = 1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user