YARN-1229. Define constraints on Auxiliary Service names. Change ShuffleHandler service name from mapreduce.shuffle to mapreduce_shuffle. Contributed by Xuan Gong.
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1526065 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
78e995a37d
commit
10a4289ebf
|
@ -384,6 +384,18 @@ Release 2.2.0 - UNRELEASED
|
||||||
|
|
||||||
BUG FIXES
|
BUG FIXES
|
||||||
|
|
||||||
|
Release 2.1.2 - UNRELEASED
|
||||||
|
|
||||||
|
INCOMPATIBLE CHANGES
|
||||||
|
|
||||||
|
NEW FEATURES
|
||||||
|
|
||||||
|
IMPROVEMENTS
|
||||||
|
|
||||||
|
OPTIMIZATIONS
|
||||||
|
|
||||||
|
BUG FIXES
|
||||||
|
|
||||||
Release 2.1.1-beta - 2013-09-23
|
Release 2.1.1-beta - 2013-09-23
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
|
|
@ -311,7 +311,7 @@ Hadoop MapReduce Next Generation - Cluster Setup
|
||||||
| | | Only applicable if log-aggregation is enabled. |
|
| | | Only applicable if log-aggregation is enabled. |
|
||||||
*-------------------------+-------------------------+------------------------+
|
*-------------------------+-------------------------+------------------------+
|
||||||
| <<<yarn.nodemanager.aux-services>>> | | |
|
| <<<yarn.nodemanager.aux-services>>> | | |
|
||||||
| | mapreduce.shuffle | |
|
| | mapreduce_shuffle | |
|
||||||
| | | Shuffle service that needs to be set for Map Reduce applications. |
|
| | | Shuffle service that needs to be set for Map Reduce applications. |
|
||||||
*-------------------------+-------------------------+------------------------+
|
*-------------------------+-------------------------+------------------------+
|
||||||
|
|
||||||
|
|
|
@ -140,7 +140,7 @@ Add the following configs to your <<<yarn-site.xml>>>
|
||||||
|
|
||||||
<property>
|
<property>
|
||||||
<name>yarn.nodemanager.aux-services</name>
|
<name>yarn.nodemanager.aux-services</name>
|
||||||
<value>mapreduce.shuffle</value>
|
<value>mapreduce_shuffle</value>
|
||||||
<description>shuffle service that needs to be set for Map Reduce to run </description>
|
<description>shuffle service that needs to be set for Map Reduce to run </description>
|
||||||
</property>
|
</property>
|
||||||
+---+
|
+---+
|
||||||
|
|
|
@ -323,6 +323,18 @@ Release 2.2.0 - UNRELEASED
|
||||||
|
|
||||||
OPTIMIZATIONS
|
OPTIMIZATIONS
|
||||||
|
|
||||||
|
BUG FIXES
|
||||||
|
|
||||||
|
Release 2.1.2 - UNRELEASED
|
||||||
|
|
||||||
|
INCOMPATIBLE CHANGES
|
||||||
|
|
||||||
|
NEW FEATURES
|
||||||
|
|
||||||
|
IMPROVEMENTS
|
||||||
|
|
||||||
|
OPTIMIZATIONS
|
||||||
|
|
||||||
BUG FIXES
|
BUG FIXES
|
||||||
|
|
||||||
HDFS-5139. Remove redundant -R option from setrep.
|
HDFS-5139. Remove redundant -R option from setrep.
|
||||||
|
|
|
@ -191,6 +191,18 @@ Release 2.2.0 - UNRELEASED
|
||||||
|
|
||||||
OPTIMIZATIONS
|
OPTIMIZATIONS
|
||||||
|
|
||||||
|
BUG FIXES
|
||||||
|
|
||||||
|
Release 2.1.2 - UNRELEASED
|
||||||
|
|
||||||
|
INCOMPATIBLE CHANGES
|
||||||
|
|
||||||
|
NEW FEATURES
|
||||||
|
|
||||||
|
IMPROVEMENTS
|
||||||
|
|
||||||
|
OPTIMIZATIONS
|
||||||
|
|
||||||
BUG FIXES
|
BUG FIXES
|
||||||
|
|
||||||
MAPREDUCE-5504. mapred queue -info inconsistent with types (Kousuke Saruta
|
MAPREDUCE-5504. mapred queue -info inconsistent with types (Kousuke Saruta
|
||||||
|
|
|
@ -39,11 +39,11 @@ export YARN_CONF_DIR=$HADOOP_CONF_DIR
|
||||||
Step 7) Setup config: for running mapreduce applications, which now are in user land, you need to setup nodemanager with the following configuration in your yarn-site.xml before you start the nodemanager.
|
Step 7) Setup config: for running mapreduce applications, which now are in user land, you need to setup nodemanager with the following configuration in your yarn-site.xml before you start the nodemanager.
|
||||||
<property>
|
<property>
|
||||||
<name>yarn.nodemanager.aux-services</name>
|
<name>yarn.nodemanager.aux-services</name>
|
||||||
<value>mapreduce.shuffle</value>
|
<value>mapreduce_shuffle</value>
|
||||||
</property>
|
</property>
|
||||||
|
|
||||||
<property>
|
<property>
|
||||||
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
|
<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
|
||||||
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
|
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
|
||||||
</property>
|
</property>
|
||||||
|
|
||||||
|
|
|
@ -83,14 +83,14 @@ Hadoop MapReduce Next Generation - Pluggable Shuffle and Pluggable Sort
|
||||||
*--------------------------------------+---------------------+-----------------+
|
*--------------------------------------+---------------------+-----------------+
|
||||||
| <<Property>> | <<Default Value>> | <<Explanation>> |
|
| <<Property>> | <<Default Value>> | <<Explanation>> |
|
||||||
*--------------------------------------+---------------------+-----------------+
|
*--------------------------------------+---------------------+-----------------+
|
||||||
| <<<yarn.nodemanager.aux-services>>> | <<<...,mapreduce.shuffle>>> | The auxiliary service name |
|
| <<<yarn.nodemanager.aux-services>>> | <<<...,mapreduce_shuffle>>> | The auxiliary service name |
|
||||||
*--------------------------------------+---------------------+-----------------+
|
*--------------------------------------+---------------------+-----------------+
|
||||||
| <<<yarn.nodemanager.aux-services.mapreduce.shuffle.class>>> | <<<org.apache.hadoop.mapred.ShuffleHandler>>> | The auxiliary service class to use |
|
| <<<yarn.nodemanager.aux-services.mapreduce_shuffle.class>>> | <<<org.apache.hadoop.mapred.ShuffleHandler>>> | The auxiliary service class to use |
|
||||||
*--------------------------------------+---------------------+-----------------+
|
*--------------------------------------+---------------------+-----------------+
|
||||||
|
|
||||||
<<IMPORTANT:>> If setting an auxiliary service in addition the default
|
<<IMPORTANT:>> If setting an auxiliary service in addition the default
|
||||||
<<<mapreduce.shuffle>>> service, then a new service key should be added to the
|
<<<mapreduce_shuffle>>> service, then a new service key should be added to the
|
||||||
<<<yarn.nodemanager.aux-services>>> property, for example <<<mapred.shufflex>>>.
|
<<<yarn.nodemanager.aux-services>>> property, for example <<<mapred.shufflex>>>.
|
||||||
Then the property defining the corresponding class must be
|
Then the property defining the corresponding class must be
|
||||||
<<<yarn.nodemanager.aux-services.mapreduce.shufflex.class>>>.
|
<<<yarn.nodemanager.aux-services.mapreduce_shufflex.class>>>.
|
||||||
|
|
|
@ -146,7 +146,7 @@ public class ShuffleHandler extends AuxiliaryService {
|
||||||
private ReadaheadPool readaheadPool = ReadaheadPool.getInstance();
|
private ReadaheadPool readaheadPool = ReadaheadPool.getInstance();
|
||||||
|
|
||||||
public static final String MAPREDUCE_SHUFFLE_SERVICEID =
|
public static final String MAPREDUCE_SHUFFLE_SERVICEID =
|
||||||
"mapreduce.shuffle";
|
"mapreduce_shuffle";
|
||||||
|
|
||||||
private static final Map<String,String> userRsrc =
|
private static final Map<String,String> userRsrc =
|
||||||
new ConcurrentHashMap<String,String>();
|
new ConcurrentHashMap<String,String>();
|
||||||
|
|
|
@ -56,6 +56,22 @@ Release 2.2.0 - UNRELEASED
|
||||||
|
|
||||||
OPTIMIZATIONS
|
OPTIMIZATIONS
|
||||||
|
|
||||||
|
BUG FIXES
|
||||||
|
|
||||||
|
Release 2.1.2 - UNRELEASED
|
||||||
|
|
||||||
|
INCOMPATIBLE CHANGES
|
||||||
|
|
||||||
|
YARN-1229. Define constraints on Auxiliary Service names. Change
|
||||||
|
ShuffleHandler service name from mapreduce.shuffle to
|
||||||
|
mapreduce_shuffle (Xuan Gong via sseth)
|
||||||
|
|
||||||
|
NEW FEATURES
|
||||||
|
|
||||||
|
IMPROVEMENTS
|
||||||
|
|
||||||
|
OPTIMIZATIONS
|
||||||
|
|
||||||
BUG FIXES
|
BUG FIXES
|
||||||
|
|
||||||
YARN-1128. FifoPolicy.computeShares throws NPE on empty list of Schedulables
|
YARN-1128. FifoPolicy.computeShares throws NPE on empty list of Schedulables
|
||||||
|
|
|
@ -705,9 +705,10 @@
|
||||||
</property>
|
</property>
|
||||||
|
|
||||||
<property>
|
<property>
|
||||||
|
<description>the valid service name should only contain a-zA-Z0-9_ and can not start with numbers</description>
|
||||||
<name>yarn.nodemanager.aux-services</name>
|
<name>yarn.nodemanager.aux-services</name>
|
||||||
<value></value>
|
<value></value>
|
||||||
<!-- <value>mapreduce.shuffle</value> -->
|
<!--<value>mapreduce_shuffle</value>-->
|
||||||
</property>
|
</property>
|
||||||
|
|
||||||
<property>
|
<property>
|
||||||
|
@ -763,7 +764,7 @@
|
||||||
|
|
||||||
<!--Map Reduce configuration-->
|
<!--Map Reduce configuration-->
|
||||||
<property>
|
<property>
|
||||||
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
|
<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
|
||||||
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
|
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
|
||||||
</property>
|
</property>
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@ import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
@ -40,6 +41,8 @@ import org.apache.hadoop.yarn.server.api.ApplicationInitializationContext;
|
||||||
import org.apache.hadoop.yarn.server.api.ContainerInitializationContext;
|
import org.apache.hadoop.yarn.server.api.ContainerInitializationContext;
|
||||||
import org.apache.hadoop.yarn.server.api.ContainerTerminationContext;
|
import org.apache.hadoop.yarn.server.api.ContainerTerminationContext;
|
||||||
|
|
||||||
|
import com.google.common.base.Preconditions;
|
||||||
|
|
||||||
public class AuxServices extends AbstractService
|
public class AuxServices extends AbstractService
|
||||||
implements ServiceStateChangeListener, EventHandler<AuxServicesEvent> {
|
implements ServiceStateChangeListener, EventHandler<AuxServicesEvent> {
|
||||||
|
|
||||||
|
@ -48,6 +51,8 @@ public class AuxServices extends AbstractService
|
||||||
protected final Map<String,AuxiliaryService> serviceMap;
|
protected final Map<String,AuxiliaryService> serviceMap;
|
||||||
protected final Map<String,ByteBuffer> serviceMetaData;
|
protected final Map<String,ByteBuffer> serviceMetaData;
|
||||||
|
|
||||||
|
private final Pattern p = Pattern.compile("^[A-Za-z_]+[A-Za-z0-9_]*$");
|
||||||
|
|
||||||
public AuxServices() {
|
public AuxServices() {
|
||||||
super(AuxServices.class.getName());
|
super(AuxServices.class.getName());
|
||||||
serviceMap =
|
serviceMap =
|
||||||
|
@ -90,6 +95,13 @@ public class AuxServices extends AbstractService
|
||||||
YarnConfiguration.NM_AUX_SERVICES);
|
YarnConfiguration.NM_AUX_SERVICES);
|
||||||
for (final String sName : auxNames) {
|
for (final String sName : auxNames) {
|
||||||
try {
|
try {
|
||||||
|
Preconditions
|
||||||
|
.checkArgument(
|
||||||
|
validateAuxServiceName(sName),
|
||||||
|
"The ServiceName: " + sName + " set in " +
|
||||||
|
YarnConfiguration.NM_AUX_SERVICES +" is invalid." +
|
||||||
|
"The valid service name should only contain a-zA-Z0-9_ " +
|
||||||
|
"and can not start with numbers");
|
||||||
Class<? extends AuxiliaryService> sClass = conf.getClass(
|
Class<? extends AuxiliaryService> sClass = conf.getClass(
|
||||||
String.format(YarnConfiguration.NM_AUX_SERVICE_FMT, sName), null,
|
String.format(YarnConfiguration.NM_AUX_SERVICE_FMT, sName), null,
|
||||||
AuxiliaryService.class);
|
AuxiliaryService.class);
|
||||||
|
@ -199,4 +211,10 @@ public class AuxServices extends AbstractService
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean validateAuxServiceName(String name) {
|
||||||
|
if (name == null || name.trim().isEmpty()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return p.matcher(name).matches();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,8 @@ import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import junit.framework.Assert;
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import org.apache.hadoop.conf.Configuration;
|
import org.apache.hadoop.conf.Configuration;
|
||||||
|
@ -288,4 +290,33 @@ public class TestAuxServices {
|
||||||
assertTrue(aux.getServices().isEmpty());
|
assertTrue(aux.getServices().isEmpty());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testValidAuxServiceName() {
|
||||||
|
final AuxServices aux = new AuxServices();
|
||||||
|
Configuration conf = new Configuration();
|
||||||
|
conf.setStrings(YarnConfiguration.NM_AUX_SERVICES, new String[] {"Asrv1", "Bsrv_2"});
|
||||||
|
conf.setClass(String.format(YarnConfiguration.NM_AUX_SERVICE_FMT, "Asrv1"),
|
||||||
|
ServiceA.class, Service.class);
|
||||||
|
conf.setClass(String.format(YarnConfiguration.NM_AUX_SERVICE_FMT, "Bsrv_2"),
|
||||||
|
ServiceB.class, Service.class);
|
||||||
|
try {
|
||||||
|
aux.init(conf);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
Assert.fail("Should not receive the exception.");
|
||||||
|
}
|
||||||
|
|
||||||
|
//Test bad auxService Name
|
||||||
|
final AuxServices aux1 = new AuxServices();
|
||||||
|
conf.setStrings(YarnConfiguration.NM_AUX_SERVICES, new String[] {"1Asrv1"});
|
||||||
|
conf.setClass(String.format(YarnConfiguration.NM_AUX_SERVICE_FMT, "1Asrv1"),
|
||||||
|
ServiceA.class, Service.class);
|
||||||
|
try {
|
||||||
|
aux1.init(conf);
|
||||||
|
Assert.fail("Should receive the exception.");
|
||||||
|
} catch (Exception ex) {
|
||||||
|
assertTrue(ex.getMessage().contains("The ServiceName: 1Asrv1 set in " +
|
||||||
|
"yarn.nodemanager.aux-services is invalid.The valid service name " +
|
||||||
|
"should only contain a-zA-Z0-9_ and can not start with numbers"));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue