You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by we...@apache.org on 2018/03/20 06:17:56 UTC
[07/37] hadoop git commit: HDFS-13215. RBF: Move Router to its own
module.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/62a819d5/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/store/records/impl/pb/MountTablePBImpl.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/store/records/impl/pb/MountTablePBImpl.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/store/records/impl/pb/MountTablePBImpl.java
deleted file mode 100644
index ff422b5..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/store/records/impl/pb/MountTablePBImpl.java
+++ /dev/null
@@ -1,278 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hdfs.server.federation.store.records.impl.pb;
-
-import java.io.IOException;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.apache.hadoop.fs.permission.FsPermission;
-import org.apache.hadoop.hdfs.federation.protocol.proto.HdfsServerFederationProtos.MountTableRecordProto;
-import org.apache.hadoop.hdfs.federation.protocol.proto.HdfsServerFederationProtos.MountTableRecordProto.Builder;
-import org.apache.hadoop.hdfs.federation.protocol.proto.HdfsServerFederationProtos.MountTableRecordProto.DestOrder;
-import org.apache.hadoop.hdfs.federation.protocol.proto.HdfsServerFederationProtos.MountTableRecordProtoOrBuilder;
-import org.apache.hadoop.hdfs.federation.protocol.proto.HdfsServerFederationProtos.RemoteLocationProto;
-import org.apache.hadoop.hdfs.server.federation.resolver.RemoteLocation;
-import org.apache.hadoop.hdfs.server.federation.resolver.order.DestinationOrder;
-import org.apache.hadoop.hdfs.server.federation.router.RouterAdminServer;
-import org.apache.hadoop.hdfs.server.federation.router.RouterPermissionChecker;
-import org.apache.hadoop.hdfs.server.federation.store.protocol.impl.pb.FederationProtocolPBTranslator;
-import org.apache.hadoop.hdfs.server.federation.store.records.MountTable;
-
-import com.google.protobuf.Message;
-
-/**
- * Protobuf implementation of the MountTable record.
- */
-public class MountTablePBImpl extends MountTable implements PBRecord {
-
- private FederationProtocolPBTranslator<MountTableRecordProto, Builder,
- MountTableRecordProtoOrBuilder> translator =
- new FederationProtocolPBTranslator<MountTableRecordProto, Builder,
- MountTableRecordProtoOrBuilder>(MountTableRecordProto.class);
-
- public MountTablePBImpl() {
- }
-
- public MountTablePBImpl(MountTableRecordProto proto) {
- this.setProto(proto);
- }
-
- @Override
- public MountTableRecordProto getProto() {
- return this.translator.build();
- }
-
- @Override
- public void setProto(Message proto) {
- this.translator.setProto(proto);
- }
-
- @Override
- public void readInstance(String base64String) throws IOException {
- this.translator.readInstance(base64String);
- }
-
- @Override
- public String getSourcePath() {
- MountTableRecordProtoOrBuilder proto = this.translator.getProtoOrBuilder();
- if (!proto.hasSrcPath()) {
- return null;
- }
- return proto.getSrcPath();
- }
-
- @Override
- public void setSourcePath(String path) {
- Builder builder = this.translator.getBuilder();
- if (path == null) {
- builder.clearSrcPath();
- } else {
- builder.setSrcPath(path);
- }
- }
-
- @Override
- public List<RemoteLocation> getDestinations() {
- MountTableRecordProtoOrBuilder proto = this.translator.getProtoOrBuilder();
- if (proto.getDestinationsCount() == 0) {
- return null;
- }
-
- final List<RemoteLocation> ret = new LinkedList<>();
- final List<RemoteLocationProto> destList = proto.getDestinationsList();
- for (RemoteLocationProto dest : destList) {
- String nsId = dest.getNameserviceId();
- String path = dest.getPath();
- RemoteLocation loc = new RemoteLocation(nsId, path);
- ret.add(loc);
- }
- return ret;
- }
-
- @Override
- public void setDestinations(final List<RemoteLocation> dests) {
- Builder builder = this.translator.getBuilder();
- builder.clearDestinations();
- for (RemoteLocation dest : dests) {
- RemoteLocationProto.Builder itemBuilder =
- RemoteLocationProto.newBuilder();
- String nsId = dest.getNameserviceId();
- String path = dest.getDest();
- itemBuilder.setNameserviceId(nsId);
- itemBuilder.setPath(path);
- RemoteLocationProto item = itemBuilder.build();
- builder.addDestinations(item);
- }
- }
-
- @Override
- public boolean addDestination(String nsId, String path) {
- // Check if the location is already there
- List<RemoteLocation> dests = getDestinations();
- for (RemoteLocation dest : dests) {
- if (dest.getNameserviceId().equals(nsId) && dest.getDest().equals(path)) {
- return false;
- }
- }
-
- // Add it to the existing list
- Builder builder = this.translator.getBuilder();
- RemoteLocationProto.Builder itemBuilder =
- RemoteLocationProto.newBuilder();
- itemBuilder.setNameserviceId(nsId);
- itemBuilder.setPath(path);
- RemoteLocationProto item = itemBuilder.build();
- builder.addDestinations(item);
- return true;
- }
-
- @Override
- public void setDateModified(long time) {
- this.translator.getBuilder().setDateModified(time);
- }
-
- @Override
- public long getDateModified() {
- return this.translator.getProtoOrBuilder().getDateModified();
- }
-
- @Override
- public void setDateCreated(long time) {
- this.translator.getBuilder().setDateCreated(time);
- }
-
- @Override
- public long getDateCreated() {
- return this.translator.getProtoOrBuilder().getDateCreated();
- }
-
- @Override
- public boolean isReadOnly() {
- MountTableRecordProtoOrBuilder proto = this.translator.getProtoOrBuilder();
- if (!proto.hasReadOnly()) {
- return false;
- }
- return proto.getReadOnly();
- }
-
- @Override
- public void setReadOnly(boolean ro) {
- this.translator.getBuilder().setReadOnly(ro);
- }
-
- @Override
- public DestinationOrder getDestOrder() {
- MountTableRecordProtoOrBuilder proto = this.translator.getProtoOrBuilder();
- return convert(proto.getDestOrder());
- }
-
- @Override
- public void setDestOrder(DestinationOrder order) {
- Builder builder = this.translator.getBuilder();
- if (order == null) {
- builder.clearDestOrder();
- } else {
- builder.setDestOrder(convert(order));
- }
- }
-
- @Override
- public String getOwnerName() {
- MountTableRecordProtoOrBuilder proto = this.translator.getProtoOrBuilder();
- if (!proto.hasOwnerName()) {
- return RouterAdminServer.getSuperUser();
- }
- return proto.getOwnerName();
- }
-
- @Override
- public void setOwnerName(String owner) {
- Builder builder = this.translator.getBuilder();
- if (owner == null) {
- builder.clearOwnerName();
- } else {
- builder.setOwnerName(owner);
- }
- }
-
- @Override
- public String getGroupName() {
- MountTableRecordProtoOrBuilder proto = this.translator.getProtoOrBuilder();
- if (!proto.hasGroupName()) {
- return RouterAdminServer.getSuperGroup();
- }
- return proto.getGroupName();
- }
-
- @Override
- public void setGroupName(String group) {
- Builder builder = this.translator.getBuilder();
- if (group == null) {
- builder.clearGroupName();
- } else {
- builder.setGroupName(group);
- }
- }
-
- @Override
- public FsPermission getMode() {
- MountTableRecordProtoOrBuilder proto = this.translator.getProtoOrBuilder();
- short mode = RouterPermissionChecker.MOUNT_TABLE_PERMISSION_DEFAULT;
- if (proto.hasMode()) {
- mode = (short) proto.getMode();
- }
- return new FsPermission(mode);
- }
-
- @Override
- public void setMode(FsPermission mode) {
- Builder builder = this.translator.getBuilder();
- if (mode == null) {
- builder.clearMode();
- } else {
- builder.setMode(mode.toShort());
- }
- }
-
- private DestinationOrder convert(DestOrder order) {
- switch (order) {
- case LOCAL:
- return DestinationOrder.LOCAL;
- case RANDOM:
- return DestinationOrder.RANDOM;
- case HASH_ALL:
- return DestinationOrder.HASH_ALL;
- default:
- return DestinationOrder.HASH;
- }
- }
-
- private DestOrder convert(DestinationOrder order) {
- switch (order) {
- case LOCAL:
- return DestOrder.LOCAL;
- case RANDOM:
- return DestOrder.RANDOM;
- case HASH_ALL:
- return DestOrder.HASH_ALL;
- default:
- return DestOrder.HASH;
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/62a819d5/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/store/records/impl/pb/PBRecord.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/store/records/impl/pb/PBRecord.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/store/records/impl/pb/PBRecord.java
deleted file mode 100644
index c369275..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/store/records/impl/pb/PBRecord.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hdfs.server.federation.store.records.impl.pb;
-
-import java.io.IOException;
-
-import com.google.protobuf.Message;
-
-/**
- * A record implementation using Protobuf.
- */
-public interface PBRecord {
-
- /**
- * Get the protocol for the record.
- * @return The protocol for this record.
- */
- Message getProto();
-
- /**
- * Set the protocol for the record.
- * @param proto Protocol for this record.
- */
- void setProto(Message proto);
-
- /**
- * Populate this record with serialized data.
- * @param base64String Serialized data in base64.
- * @throws IOException If it cannot read the data.
- */
- void readInstance(String base64String) throws IOException;
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/62a819d5/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/store/records/impl/pb/RouterStatePBImpl.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/store/records/impl/pb/RouterStatePBImpl.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/store/records/impl/pb/RouterStatePBImpl.java
deleted file mode 100644
index 23a61f9..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/store/records/impl/pb/RouterStatePBImpl.java
+++ /dev/null
@@ -1,202 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hdfs.server.federation.store.records.impl.pb;
-
-import java.io.IOException;
-
-import org.apache.hadoop.hdfs.federation.protocol.proto.HdfsServerFederationProtos.RouterRecordProto;
-import org.apache.hadoop.hdfs.federation.protocol.proto.HdfsServerFederationProtos.RouterRecordProto.Builder;
-import org.apache.hadoop.hdfs.federation.protocol.proto.HdfsServerFederationProtos.RouterRecordProtoOrBuilder;
-import org.apache.hadoop.hdfs.federation.protocol.proto.HdfsServerFederationProtos.StateStoreVersionRecordProto;
-import org.apache.hadoop.hdfs.server.federation.router.RouterServiceState;
-import org.apache.hadoop.hdfs.server.federation.store.driver.StateStoreSerializer;
-import org.apache.hadoop.hdfs.server.federation.store.protocol.impl.pb.FederationProtocolPBTranslator;
-import org.apache.hadoop.hdfs.server.federation.store.records.RouterState;
-import org.apache.hadoop.hdfs.server.federation.store.records.StateStoreVersion;
-
-import com.google.protobuf.Message;
-
-/**
- * Protobuf implementation of the RouterState record.
- */
-public class RouterStatePBImpl extends RouterState implements PBRecord {
-
- private FederationProtocolPBTranslator<RouterRecordProto, Builder,
- RouterRecordProtoOrBuilder> translator =
- new FederationProtocolPBTranslator<RouterRecordProto, Builder,
- RouterRecordProtoOrBuilder>(RouterRecordProto.class);
-
- public RouterStatePBImpl() {
- }
-
- public RouterStatePBImpl(RouterRecordProto proto) {
- this.translator.setProto(proto);
- }
-
- @Override
- public RouterRecordProto getProto() {
- return this.translator.build();
- }
-
- @Override
- public void setProto(Message proto) {
- this.translator.setProto(proto);
- }
-
- @Override
- public void readInstance(String base64String) throws IOException {
- this.translator.readInstance(base64String);
- }
-
- @Override
- public void setAddress(String address) {
- RouterRecordProto.Builder builder = this.translator.getBuilder();
- if (address == null) {
- builder.clearAddress();
- } else {
- builder.setAddress(address);
- }
- }
-
- @Override
- public String getAddress() {
- RouterRecordProtoOrBuilder proto = this.translator.getProtoOrBuilder();
- if (!proto.hasAddress()) {
- return null;
- }
- return proto.getAddress();
- }
-
- @Override
- public void setStateStoreVersion(StateStoreVersion version) {
- RouterRecordProto.Builder builder = this.translator.getBuilder();
- if (version instanceof StateStoreVersionPBImpl) {
- StateStoreVersionPBImpl versionPB = (StateStoreVersionPBImpl)version;
- StateStoreVersionRecordProto versionProto =
- (StateStoreVersionRecordProto)versionPB.getProto();
- builder.setStateStoreVersion(versionProto);
- } else {
- builder.clearStateStoreVersion();
- }
- }
-
- @Override
- public StateStoreVersion getStateStoreVersion() throws IOException {
- RouterRecordProtoOrBuilder proto = this.translator.getProtoOrBuilder();
- if (!proto.hasStateStoreVersion()) {
- return null;
- }
- StateStoreVersionRecordProto versionProto = proto.getStateStoreVersion();
- StateStoreVersion version =
- StateStoreSerializer.newRecord(StateStoreVersion.class);
- if (version instanceof StateStoreVersionPBImpl) {
- StateStoreVersionPBImpl versionPB = (StateStoreVersionPBImpl)version;
- versionPB.setProto(versionProto);
- return versionPB;
- } else {
- throw new IOException("Cannot get State Store version");
- }
- }
-
- @Override
- public RouterServiceState getStatus() {
- RouterRecordProtoOrBuilder proto = this.translator.getProtoOrBuilder();
- if (!proto.hasStatus()) {
- return null;
- }
- return RouterServiceState.valueOf(proto.getStatus());
- }
-
- @Override
- public void setStatus(RouterServiceState newStatus) {
- RouterRecordProto.Builder builder = this.translator.getBuilder();
- if (newStatus == null) {
- builder.clearStatus();
- } else {
- builder.setStatus(newStatus.toString());
- }
- }
-
- @Override
- public String getVersion() {
- RouterRecordProtoOrBuilder proto = this.translator.getProtoOrBuilder();
- if (!proto.hasVersion()) {
- return null;
- }
- return proto.getVersion();
- }
-
- @Override
- public void setVersion(String version) {
- RouterRecordProto.Builder builder = this.translator.getBuilder();
- if (version == null) {
- builder.clearVersion();
- } else {
- builder.setVersion(version);
- }
- }
-
- @Override
- public String getCompileInfo() {
- RouterRecordProtoOrBuilder proto = this.translator.getProtoOrBuilder();
- if (!proto.hasCompileInfo()) {
- return null;
- }
- return proto.getCompileInfo();
- }
-
- @Override
- public void setCompileInfo(String info) {
- RouterRecordProto.Builder builder = this.translator.getBuilder();
- if (info == null) {
- builder.clearCompileInfo();
- } else {
- builder.setCompileInfo(info);
- }
- }
-
- @Override
- public void setDateStarted(long dateStarted) {
- this.translator.getBuilder().setDateStarted(dateStarted);
- }
-
- @Override
- public long getDateStarted() {
- return this.translator.getProtoOrBuilder().getDateStarted();
- }
-
- @Override
- public void setDateModified(long time) {
- this.translator.getBuilder().setDateModified(time);
- }
-
- @Override
- public long getDateModified() {
- return this.translator.getProtoOrBuilder().getDateModified();
- }
-
- @Override
- public void setDateCreated(long time) {
- this.translator.getBuilder().setDateCreated(time);
- }
-
- @Override
- public long getDateCreated() {
- return this.translator.getProtoOrBuilder().getDateCreated();
- }
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/62a819d5/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/store/records/impl/pb/StateStoreVersionPBImpl.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/store/records/impl/pb/StateStoreVersionPBImpl.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/store/records/impl/pb/StateStoreVersionPBImpl.java
deleted file mode 100644
index 7696136..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/store/records/impl/pb/StateStoreVersionPBImpl.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hdfs.server.federation.store.records.impl.pb;
-
-import java.io.IOException;
-
-import org.apache.hadoop.hdfs.federation.protocol.proto.HdfsServerFederationProtos.StateStoreVersionRecordProto;
-import org.apache.hadoop.hdfs.federation.protocol.proto.HdfsServerFederationProtos.StateStoreVersionRecordProto.Builder;
-import org.apache.hadoop.hdfs.federation.protocol.proto.HdfsServerFederationProtos.StateStoreVersionRecordProtoOrBuilder;
-import org.apache.hadoop.hdfs.server.federation.store.protocol.impl.pb.FederationProtocolPBTranslator;
-import org.apache.hadoop.hdfs.server.federation.store.records.StateStoreVersion;
-
-import com.google.protobuf.Message;
-
-/**
- * Protobuf implementation of the StateStoreVersion record.
- */
-public class StateStoreVersionPBImpl extends StateStoreVersion
- implements PBRecord {
-
- private FederationProtocolPBTranslator<StateStoreVersionRecordProto, Builder,
- StateStoreVersionRecordProtoOrBuilder> translator =
- new FederationProtocolPBTranslator<StateStoreVersionRecordProto,
- Builder, StateStoreVersionRecordProtoOrBuilder>(
- StateStoreVersionRecordProto.class);
-
- public StateStoreVersionPBImpl() {
- }
-
- @Override
- public StateStoreVersionRecordProto getProto() {
- return this.translator.build();
- }
-
- @Override
- public void setProto(Message proto) {
- this.translator.setProto(proto);
- }
-
- @Override
- public void readInstance(String base64String) throws IOException {
- this.translator.readInstance(base64String);
- }
-
- @Override
- public long getMembershipVersion() {
- return this.translator.getProtoOrBuilder().getMembershipVersion();
- }
-
- @Override
- public void setMembershipVersion(long version) {
- this.translator.getBuilder().setMembershipVersion(version);
- }
-
- @Override
- public long getMountTableVersion() {
- return this.translator.getProtoOrBuilder().getMountTableVersion();
- }
-
- @Override
- public void setMountTableVersion(long version) {
- this.translator.getBuilder().setMountTableVersion(version);
- }
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/62a819d5/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/store/records/impl/pb/package-info.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/store/records/impl/pb/package-info.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/store/records/impl/pb/package-info.java
deleted file mode 100644
index b329732..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/store/records/impl/pb/package-info.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * The protobuf implementations of state store data records defined in the
- * org.apache.hadoop.hdfs.server.federation.store.records package. Each
- * implementation wraps an associated protobuf proto definition.
- */
-@InterfaceAudience.Private
-@InterfaceStability.Evolving
-package org.apache.hadoop.hdfs.server.federation.store.records.impl.pb;
-
-import org.apache.hadoop.classification.InterfaceAudience;
-import org.apache.hadoop.classification.InterfaceStability;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/62a819d5/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/store/records/package-info.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/store/records/package-info.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/store/records/package-info.java
deleted file mode 100644
index 63b13af..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/store/records/package-info.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Contains the abstract definitions of the state store data records. The state
- * store supports multiple multiple data records.
- * <p>
- * Data records inherit from a common class
- * {@link org.apache.hadoop.hdfs.server.federation.store.records.BaseRecord
- * BaseRecord}. Data records are serialized when written to the data store using
- * a modular serialization implementation. The default is profobuf
- * serialization. Data is stored as rows of records of the same type with each
- * data member in a record representing a column.
- */
-@InterfaceAudience.Private
-@InterfaceStability.Evolving
-
-package org.apache.hadoop.hdfs.server.federation.store.records;
-
-import org.apache.hadoop.classification.InterfaceAudience;
-import org.apache.hadoop.classification.InterfaceStability;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/62a819d5/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/utils/ConsistentHashRing.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/utils/ConsistentHashRing.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/utils/ConsistentHashRing.java
deleted file mode 100644
index 89273db..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/utils/ConsistentHashRing.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hdfs.server.federation.utils;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-import java.util.SortedMap;
-import java.util.TreeMap;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReadWriteLock;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-
-import org.apache.hadoop.io.MD5Hash;
-
-/**
- * Consistent hash ring to distribute items across nodes (locations). If we add
- * or remove nodes, it minimizes the item migration.
- */
-public class ConsistentHashRing {
- private static final String SEPERATOR = "/";
- private static final String VIRTUAL_NODE_FORMAT = "%s" + SEPERATOR + "%d";
-
- /** Hash ring. */
- private SortedMap<String, String> ring = new TreeMap<String, String>();
- /** Entry -> num virtual nodes on ring. */
- private Map<String, Integer> entryToVirtualNodes =
- new HashMap<String, Integer>();
-
- /** Synchronization. */
- private final ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
- private final Lock readLock = readWriteLock.readLock();
- private final Lock writeLock = readWriteLock.writeLock();
-
- public ConsistentHashRing(Set<String> locations) {
- for (String location : locations) {
- addLocation(location);
- }
- }
-
- /**
- * Add entry to consistent hash ring.
- *
- * @param location Node to add to the ring.
- */
- public void addLocation(String location) {
- addLocation(location, 100);
- }
-
- /**
- * Add entry to consistent hash ring.
- *
- * @param location Node to add to the ring.
- * @param numVirtualNodes Number of virtual nodes to add.
- */
- public void addLocation(String location, int numVirtualNodes) {
- writeLock.lock();
- try {
- entryToVirtualNodes.put(location, numVirtualNodes);
- for (int i = 0; i < numVirtualNodes; i++) {
- String key = String.format(VIRTUAL_NODE_FORMAT, location, i);
- String hash = getHash(key);
- ring.put(hash, key);
- }
- } finally {
- writeLock.unlock();
- }
- }
-
- /**
- * Remove specified entry from hash ring.
- *
- * @param location Node to remove from the ring.
- */
- public void removeLocation(String location) {
- writeLock.lock();
- try {
- Integer numVirtualNodes = entryToVirtualNodes.remove(location);
- for (int i = 0; i < numVirtualNodes; i++) {
- String key = String.format(VIRTUAL_NODE_FORMAT, location, i);
- String hash = getHash(key);
- ring.remove(hash);
- }
- } finally {
- writeLock.unlock();
- }
- }
-
- /**
- * Return location (owner) of specified item. Owner is the next
- * entry on the hash ring (with a hash value > hash value of item).
- * @param item Item to look for.
- * @return The location of the item.
- */
- public String getLocation(String item) {
- readLock.lock();
- try {
- if (ring.isEmpty()) {
- return null;
- }
- String hash = getHash(item);
- if (!ring.containsKey(hash)) {
- SortedMap<String, String> tailMap = ring.tailMap(hash);
- hash = tailMap.isEmpty() ? ring.firstKey() : tailMap.firstKey();
- }
- String virtualNode = ring.get(hash);
- int index = virtualNode.lastIndexOf(SEPERATOR);
- if (index >= 0) {
- return virtualNode.substring(0, index);
- } else {
- return virtualNode;
- }
- } finally {
- readLock.unlock();
- }
- }
-
- public String getHash(String key) {
- return MD5Hash.digest(key).toString();
- }
-
- /**
- * Get the locations in the ring.
- * @return Set of locations in the ring.
- */
- public Set<String> getLocations() {
- return entryToVirtualNodes.keySet();
- }
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/62a819d5/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/utils/package-info.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/utils/package-info.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/utils/package-info.java
deleted file mode 100644
index 7149675..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/federation/utils/package-info.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Assorted utility classes and helpers for HDFS Federation.
- */
-@InterfaceAudience.Private
-@InterfaceStability.Evolving
-
-package org.apache.hadoop.hdfs.server.federation.utils;
-
-import org.apache.hadoop.classification.InterfaceAudience;
-import org.apache.hadoop.classification.InterfaceStability;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/62a819d5/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/federation/RouterAdmin.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/federation/RouterAdmin.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/federation/RouterAdmin.java
deleted file mode 100644
index d799ad4..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/federation/RouterAdmin.java
+++ /dev/null
@@ -1,491 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hdfs.tools.federation;
-
-import java.io.IOException;
-import java.net.InetSocketAddress;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.hadoop.classification.InterfaceAudience.Private;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.conf.Configured;
-import org.apache.hadoop.fs.permission.FsPermission;
-import org.apache.hadoop.hdfs.DFSConfigKeys;
-import org.apache.hadoop.hdfs.HdfsConfiguration;
-import org.apache.hadoop.hdfs.server.federation.resolver.MountTableManager;
-import org.apache.hadoop.hdfs.server.federation.resolver.RemoteLocation;
-import org.apache.hadoop.hdfs.server.federation.resolver.order.DestinationOrder;
-import org.apache.hadoop.hdfs.server.federation.router.RouterClient;
-import org.apache.hadoop.hdfs.server.federation.router.RouterStateManager;
-import org.apache.hadoop.hdfs.server.federation.store.protocol.AddMountTableEntryRequest;
-import org.apache.hadoop.hdfs.server.federation.store.protocol.AddMountTableEntryResponse;
-import org.apache.hadoop.hdfs.server.federation.store.protocol.EnterSafeModeRequest;
-import org.apache.hadoop.hdfs.server.federation.store.protocol.EnterSafeModeResponse;
-import org.apache.hadoop.hdfs.server.federation.store.protocol.GetMountTableEntriesRequest;
-import org.apache.hadoop.hdfs.server.federation.store.protocol.GetMountTableEntriesResponse;
-import org.apache.hadoop.hdfs.server.federation.store.protocol.GetSafeModeRequest;
-import org.apache.hadoop.hdfs.server.federation.store.protocol.GetSafeModeResponse;
-import org.apache.hadoop.hdfs.server.federation.store.protocol.LeaveSafeModeRequest;
-import org.apache.hadoop.hdfs.server.federation.store.protocol.LeaveSafeModeResponse;
-import org.apache.hadoop.hdfs.server.federation.store.protocol.RemoveMountTableEntryRequest;
-import org.apache.hadoop.hdfs.server.federation.store.protocol.RemoveMountTableEntryResponse;
-import org.apache.hadoop.hdfs.server.federation.store.protocol.UpdateMountTableEntryRequest;
-import org.apache.hadoop.hdfs.server.federation.store.protocol.UpdateMountTableEntryResponse;
-import org.apache.hadoop.hdfs.server.federation.store.records.MountTable;
-import org.apache.hadoop.ipc.RPC;
-import org.apache.hadoop.ipc.RemoteException;
-import org.apache.hadoop.net.NetUtils;
-import org.apache.hadoop.util.Tool;
-import org.apache.hadoop.util.ToolRunner;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * This class provides some Federation administrative access shell commands.
- */
-@Private
-public class RouterAdmin extends Configured implements Tool {
-
- private static final Logger LOG = LoggerFactory.getLogger(RouterAdmin.class);
-
- private RouterClient client;
-
- public static void main(String[] argv) throws Exception {
- Configuration conf = new HdfsConfiguration();
- RouterAdmin admin = new RouterAdmin(conf);
-
- int res = ToolRunner.run(admin, argv);
- System.exit(res);
- }
-
- public RouterAdmin(Configuration conf) {
- super(conf);
- }
-
- /**
- * Print the usage message.
- */
- public void printUsage() {
- String usage = "Federation Admin Tools:\n"
- + "\t[-add <source> <nameservice> <destination> "
- + "[-readonly] [-order HASH|LOCAL|RANDOM|HASH_ALL] "
- + "-owner <owner> -group <group> -mode <mode>]\n"
- + "\t[-rm <source>]\n"
- + "\t[-ls <path>]\n"
- + "\t[-safemode enter | leave | get]\n";
-
- System.out.println(usage);
- }
-
- @Override
- public int run(String[] argv) throws Exception {
- if (argv.length < 1) {
- System.err.println("Not enough parameters specificed");
- printUsage();
- return -1;
- }
-
- int exitCode = -1;
- int i = 0;
- String cmd = argv[i++];
-
- // Verify that we have enough command line parameters
- if ("-add".equals(cmd)) {
- if (argv.length < 4) {
- System.err.println("Not enough parameters specificed for cmd " + cmd);
- printUsage();
- return exitCode;
- }
- } else if ("-rm".equalsIgnoreCase(cmd)) {
- if (argv.length < 2) {
- System.err.println("Not enough parameters specificed for cmd " + cmd);
- printUsage();
- return exitCode;
- }
- } else if ("-safemode".equalsIgnoreCase(cmd)) {
- if (argv.length < 2) {
- System.err.println("Not enough parameters specificed for cmd " + cmd);
- printUsage();
- return exitCode;
- }
- }
-
- // Initialize RouterClient
- try {
- String address = getConf().getTrimmed(
- DFSConfigKeys.DFS_ROUTER_ADMIN_ADDRESS_KEY,
- DFSConfigKeys.DFS_ROUTER_ADMIN_ADDRESS_DEFAULT);
- InetSocketAddress routerSocket = NetUtils.createSocketAddr(address);
- client = new RouterClient(routerSocket, getConf());
- } catch (RPC.VersionMismatch v) {
- System.err.println(
- "Version mismatch between client and server... command aborted");
- return exitCode;
- } catch (IOException e) {
- System.err.println("Bad connection to Router... command aborted");
- return exitCode;
- }
-
- Exception debugException = null;
- exitCode = 0;
- try {
- if ("-add".equals(cmd)) {
- if (addMount(argv, i)) {
- System.out.println("Successfuly added mount point " + argv[i]);
- }
- } else if ("-rm".equals(cmd)) {
- if (removeMount(argv[i])) {
- System.out.println("Successfully removed mount point " + argv[i]);
- }
- } else if ("-ls".equals(cmd)) {
- if (argv.length > 1) {
- listMounts(argv[i]);
- } else {
- listMounts("/");
- }
- } else if ("-safemode".equals(cmd)) {
- manageSafeMode(argv[i]);
- } else {
- printUsage();
- return exitCode;
- }
- } catch (IllegalArgumentException arge) {
- debugException = arge;
- exitCode = -1;
- System.err.println(cmd.substring(1) + ": " + arge.getLocalizedMessage());
- printUsage();
- } catch (RemoteException e) {
- // This is a error returned by the server.
- // Print out the first line of the error message, ignore the stack trace.
- exitCode = -1;
- debugException = e;
- try {
- String[] content;
- content = e.getLocalizedMessage().split("\n");
- System.err.println(cmd.substring(1) + ": " + content[0]);
- e.printStackTrace();
- } catch (Exception ex) {
- System.err.println(cmd.substring(1) + ": " + ex.getLocalizedMessage());
- e.printStackTrace();
- debugException = ex;
- }
- } catch (Exception e) {
- exitCode = -1;
- debugException = e;
- System.err.println(cmd.substring(1) + ": " + e.getLocalizedMessage());
- e.printStackTrace();
- }
- if (debugException != null) {
- LOG.debug("Exception encountered", debugException);
- }
- return exitCode;
- }
-
- /**
- * Add a mount table entry or update if it exists.
- *
- * @param parameters Parameters for the mount point.
- * @param i Index in the parameters.
- */
- public boolean addMount(String[] parameters, int i) throws IOException {
- // Mandatory parameters
- String mount = parameters[i++];
- String[] nss = parameters[i++].split(",");
- String dest = parameters[i++];
-
- // Optional parameters
- boolean readOnly = false;
- String owner = null;
- String group = null;
- FsPermission mode = null;
- DestinationOrder order = DestinationOrder.HASH;
- while (i < parameters.length) {
- if (parameters[i].equals("-readonly")) {
- readOnly = true;
- } else if (parameters[i].equals("-order")) {
- i++;
- try {
- order = DestinationOrder.valueOf(parameters[i]);
- } catch(Exception e) {
- System.err.println("Cannot parse order: " + parameters[i]);
- }
- } else if (parameters[i].equals("-owner")) {
- i++;
- owner = parameters[i];
- } else if (parameters[i].equals("-group")) {
- i++;
- group = parameters[i];
- } else if (parameters[i].equals("-mode")) {
- i++;
- short modeValue = Short.parseShort(parameters[i], 8);
- mode = new FsPermission(modeValue);
- }
-
- i++;
- }
-
- return addMount(mount, nss, dest, readOnly, order,
- new ACLEntity(owner, group, mode));
- }
-
- /**
- * Add a mount table entry or update if it exists.
- *
- * @param mount Mount point.
- * @param nss Namespaces where this is mounted to.
- * @param dest Destination path.
- * @param readonly If the mount point is read only.
- * @param order Order of the destination locations.
- * @param aclInfo the ACL info for mount point.
- * @return If the mount point was added.
- * @throws IOException Error adding the mount point.
- */
- public boolean addMount(String mount, String[] nss, String dest,
- boolean readonly, DestinationOrder order, ACLEntity aclInfo)
- throws IOException {
- // Get the existing entry
- MountTableManager mountTable = client.getMountTableManager();
- GetMountTableEntriesRequest getRequest =
- GetMountTableEntriesRequest.newInstance(mount);
- GetMountTableEntriesResponse getResponse =
- mountTable.getMountTableEntries(getRequest);
- List<MountTable> results = getResponse.getEntries();
- MountTable existingEntry = null;
- for (MountTable result : results) {
- if (mount.equals(result.getSourcePath())) {
- existingEntry = result;
- }
- }
-
- if (existingEntry == null) {
- // Create and add the entry if it doesn't exist
- Map<String, String> destMap = new LinkedHashMap<>();
- for (String ns : nss) {
- destMap.put(ns, dest);
- }
- MountTable newEntry = MountTable.newInstance(mount, destMap);
- if (readonly) {
- newEntry.setReadOnly(true);
- }
- if (order != null) {
- newEntry.setDestOrder(order);
- }
-
- // Set ACL info for mount table entry
- if (aclInfo.getOwner() != null) {
- newEntry.setOwnerName(aclInfo.getOwner());
- }
-
- if (aclInfo.getGroup() != null) {
- newEntry.setGroupName(aclInfo.getGroup());
- }
-
- if (aclInfo.getMode() != null) {
- newEntry.setMode(aclInfo.getMode());
- }
-
- AddMountTableEntryRequest request =
- AddMountTableEntryRequest.newInstance(newEntry);
- AddMountTableEntryResponse addResponse =
- mountTable.addMountTableEntry(request);
- boolean added = addResponse.getStatus();
- if (!added) {
- System.err.println("Cannot add mount point " + mount);
- }
- return added;
- } else {
- // Update the existing entry if it exists
- for (String nsId : nss) {
- if (!existingEntry.addDestination(nsId, dest)) {
- System.err.println("Cannot add destination at " + nsId + " " + dest);
- }
- }
- if (readonly) {
- existingEntry.setReadOnly(true);
- }
- if (order != null) {
- existingEntry.setDestOrder(order);
- }
-
- // Update ACL info of mount table entry
- if (aclInfo.getOwner() != null) {
- existingEntry.setOwnerName(aclInfo.getOwner());
- }
-
- if (aclInfo.getGroup() != null) {
- existingEntry.setGroupName(aclInfo.getGroup());
- }
-
- if (aclInfo.getMode() != null) {
- existingEntry.setMode(aclInfo.getMode());
- }
-
- UpdateMountTableEntryRequest updateRequest =
- UpdateMountTableEntryRequest.newInstance(existingEntry);
- UpdateMountTableEntryResponse updateResponse =
- mountTable.updateMountTableEntry(updateRequest);
- boolean updated = updateResponse.getStatus();
- if (!updated) {
- System.err.println("Cannot update mount point " + mount);
- }
- return updated;
- }
- }
-
- /**
- * Remove mount point.
- *
- * @param path Path to remove.
- * @throws IOException If it cannot be removed.
- */
- public boolean removeMount(String path) throws IOException {
- MountTableManager mountTable = client.getMountTableManager();
- RemoveMountTableEntryRequest request =
- RemoveMountTableEntryRequest.newInstance(path);
- RemoveMountTableEntryResponse response =
- mountTable.removeMountTableEntry(request);
- boolean removed = response.getStatus();
- if (!removed) {
- System.out.println("Cannot remove mount point " + path);
- }
- return removed;
- }
-
- /**
- * List mount points.
- *
- * @param path Path to list.
- * @throws IOException If it cannot be listed.
- */
- public void listMounts(String path) throws IOException {
- MountTableManager mountTable = client.getMountTableManager();
- GetMountTableEntriesRequest request =
- GetMountTableEntriesRequest.newInstance(path);
- GetMountTableEntriesResponse response =
- mountTable.getMountTableEntries(request);
- List<MountTable> entries = response.getEntries();
- printMounts(entries);
- }
-
- private static void printMounts(List<MountTable> entries) {
- System.out.println("Mount Table Entries:");
- System.out.println(String.format(
- "%-25s %-25s %-25s %-25s %-25s",
- "Source", "Destinations", "Owner", "Group", "Mode"));
- for (MountTable entry : entries) {
- StringBuilder destBuilder = new StringBuilder();
- for (RemoteLocation location : entry.getDestinations()) {
- if (destBuilder.length() > 0) {
- destBuilder.append(",");
- }
- destBuilder.append(String.format("%s->%s", location.getNameserviceId(),
- location.getDest()));
- }
- System.out.print(String.format("%-25s %-25s", entry.getSourcePath(),
- destBuilder.toString()));
-
- System.out.println(String.format(" %-25s %-25s %-25s",
- entry.getOwnerName(), entry.getGroupName(), entry.getMode()));
- }
- }
-
- /**
- * Manager the safe mode state.
- * @param cmd Input command, enter or leave safe mode.
- * @throws IOException
- */
- private void manageSafeMode(String cmd) throws IOException {
- if (cmd.equals("enter")) {
- if (enterSafeMode()) {
- System.out.println("Successfully enter safe mode.");
- }
- } else if (cmd.equals("leave")) {
- if (leaveSafeMode()) {
- System.out.println("Successfully leave safe mode.");
- }
- } else if (cmd.equals("get")) {
- boolean result = getSafeMode();
- System.out.println("Safe Mode: " + result);
- }
- }
-
- /**
- * Request the Router entering safemode state.
- * @return Return true if entering safemode successfully.
- * @throws IOException
- */
- private boolean enterSafeMode() throws IOException {
- RouterStateManager stateManager = client.getRouterStateManager();
- EnterSafeModeResponse response = stateManager.enterSafeMode(
- EnterSafeModeRequest.newInstance());
- return response.getStatus();
- }
-
- /**
- * Request the Router leaving safemode state.
- * @return Return true if leaving safemode successfully.
- * @throws IOException
- */
- private boolean leaveSafeMode() throws IOException {
- RouterStateManager stateManager = client.getRouterStateManager();
- LeaveSafeModeResponse response = stateManager.leaveSafeMode(
- LeaveSafeModeRequest.newInstance());
- return response.getStatus();
- }
-
- /**
- * Verify if current Router state is safe mode state.
- * @return True if the Router is in safe mode.
- * @throws IOException
- */
- private boolean getSafeMode() throws IOException {
- RouterStateManager stateManager = client.getRouterStateManager();
- GetSafeModeResponse response = stateManager.getSafeMode(
- GetSafeModeRequest.newInstance());
- return response.isInSafeMode();
- }
-
- /**
- * Inner class that stores ACL info of mount table.
- */
- static class ACLEntity {
- private final String owner;
- private final String group;
- private final FsPermission mode;
-
- ACLEntity(String owner, String group, FsPermission mode) {
- this.owner = owner;
- this.group = group;
- this.mode = mode;
- }
-
- public String getOwner() {
- return owner;
- }
-
- public String getGroup() {
- return group;
- }
-
- public FsPermission getMode() {
- return mode;
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/62a819d5/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/federation/package-info.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/federation/package-info.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/federation/package-info.java
deleted file mode 100644
index 466c3d3..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/federation/package-info.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * It includes the tools to manage the Router-based federation. Includes the
- * utilities to add and remove mount table entries.
- */
-@InterfaceAudience.Public
-@InterfaceStability.Evolving
-package org.apache.hadoop.hdfs.tools.federation;
-
-import org.apache.hadoop.classification.InterfaceAudience;
-import org.apache.hadoop.classification.InterfaceStability;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/62a819d5/hadoop-hdfs-project/hadoop-hdfs/src/main/proto/FederationProtocol.proto
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/proto/FederationProtocol.proto b/hadoop-hdfs-project/hadoop-hdfs/src/main/proto/FederationProtocol.proto
deleted file mode 100644
index 46dbc8b..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/proto/FederationProtocol.proto
+++ /dev/null
@@ -1,240 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-option java_package = "org.apache.hadoop.hdfs.federation.protocol.proto";
-option java_outer_classname = "HdfsServerFederationProtos";
-option java_generic_services = true;
-option java_generate_equals_and_hash = true;
-package hadoop.hdfs;
-
-
-/////////////////////////////////////////////////
-// Membership
-/////////////////////////////////////////////////
-
-message NamenodeMembershipStatsRecordProto {
- optional uint64 totalSpace = 1;
- optional uint64 availableSpace = 2;
-
- optional uint64 numOfFiles = 10;
- optional uint64 numOfBlocks = 11;
- optional uint64 numOfBlocksMissing = 12;
- optional uint64 numOfBlocksPendingReplication = 13;
- optional uint64 numOfBlocksUnderReplicated = 14;
- optional uint64 numOfBlocksPendingDeletion = 15;
-
- optional uint32 numOfActiveDatanodes = 20;
- optional uint32 numOfDeadDatanodes = 21;
- optional uint32 numOfDecommissioningDatanodes = 22;
- optional uint32 numOfDecomActiveDatanodes = 23;
- optional uint32 numOfDecomDeadDatanodes = 24;
-}
-
-message NamenodeMembershipRecordProto {
- optional uint64 dateCreated = 1;
- optional uint64 dateModified = 2;
- optional uint64 lastContact = 3;
- optional string routerId = 4;
- optional string nameserviceId = 5;
- optional string namenodeId = 6;
- optional string clusterId = 7;
- optional string blockPoolId = 8;
- optional string webAddress = 9;
- optional string rpcAddress = 10;
- optional string serviceAddress = 11;
- optional string lifelineAddress = 12;
- optional string state = 13;
- optional bool isSafeMode = 14;
-
- optional NamenodeMembershipStatsRecordProto stats = 15;
-}
-
-message FederationNamespaceInfoProto {
- optional string blockPoolId = 1;
- optional string clusterId = 2;
- optional string nameserviceId = 3;
-}
-
-message GetNamenodeRegistrationsRequestProto {
- optional NamenodeMembershipRecordProto membership = 1;
-}
-
-message GetNamenodeRegistrationsResponseProto {
- repeated NamenodeMembershipRecordProto namenodeMemberships = 1;
-}
-
-message GetExpiredRegistrationsRequestProto {
-}
-
-message GetNamespaceInfoRequestProto {
-}
-
-message GetNamespaceInfoResponseProto {
- repeated FederationNamespaceInfoProto namespaceInfos = 1;
-}
-
-message UpdateNamenodeRegistrationRequestProto {
- optional string nameserviceId = 1;
- optional string namenodeId = 2;
- optional string state = 3;
-}
-
-message UpdateNamenodeRegistrationResponseProto {
- optional bool status = 1;
-}
-
-message NamenodeHeartbeatRequestProto {
- optional NamenodeMembershipRecordProto namenodeMembership = 1;
-}
-
-message NamenodeHeartbeatResponseProto {
- optional bool status = 1;
-}
-
-
-/////////////////////////////////////////////////
-// Mount table
-/////////////////////////////////////////////////
-
-message RemoteLocationProto {
- optional string nameserviceId = 1;
- optional string path = 2;
-}
-
-message MountTableRecordProto {
- optional string srcPath = 1;
- repeated RemoteLocationProto destinations = 2;
- optional uint64 dateCreated = 3;
- optional uint64 dateModified = 4;
- optional bool readOnly = 5 [default = false];
-
- enum DestOrder {
- HASH = 0;
- LOCAL = 1;
- RANDOM = 2;
- HASH_ALL = 3;
- }
- optional DestOrder destOrder = 6 [default = HASH];
-
- optional string ownerName = 10;
- optional string groupName = 11;
- optional int32 mode = 12;
-}
-
-message AddMountTableEntryRequestProto {
- optional MountTableRecordProto entry = 1;
-}
-
-message AddMountTableEntryResponseProto {
- optional bool status = 1;
-}
-
-message UpdateMountTableEntryRequestProto {
- optional MountTableRecordProto entry = 1;
-}
-
-message UpdateMountTableEntryResponseProto {
- optional bool status = 1;
-}
-
-message RemoveMountTableEntryRequestProto {
- optional string srcPath = 1;
-}
-
-message RemoveMountTableEntryResponseProto{
- optional bool status = 1;
-}
-
-message GetMountTableEntriesRequestProto {
- optional string srcPath = 1;
-}
-
-message GetMountTableEntriesResponseProto {
- repeated MountTableRecordProto entries = 1;
- optional uint64 timestamp = 2;
-}
-
-
-/////////////////////////////////////////////////
-// Routers
-/////////////////////////////////////////////////
-
-message StateStoreVersionRecordProto {
- optional uint64 membershipVersion = 1;
- optional uint64 mountTableVersion = 2;
-}
-
-message RouterRecordProto {
- optional uint64 dateCreated = 1;
- optional uint64 dateModified = 2;
- optional string address = 3;
- optional string status = 4;
- optional StateStoreVersionRecordProto stateStoreVersion = 5;
- optional string version = 6;
- optional string compileInfo = 7;
- optional uint64 dateStarted = 8;
-}
-
-message GetRouterRegistrationRequestProto {
- optional string routerId = 1;
-}
-
-message GetRouterRegistrationResponseProto {
- optional RouterRecordProto router = 1;
-}
-
-message GetRouterRegistrationsRequestProto {
-}
-
-message GetRouterRegistrationsResponseProto {
- optional uint64 timestamp = 1;
- repeated RouterRecordProto routers = 2;
-}
-
-message RouterHeartbeatRequestProto {
- optional RouterRecordProto router = 1;
-}
-
-message RouterHeartbeatResponseProto {
- optional bool status = 1;
-}
-
-/////////////////////////////////////////////////
-// Route State
-/////////////////////////////////////////////////
-
-message EnterSafeModeRequestProto {
-}
-
-message EnterSafeModeResponseProto {
- optional bool status = 1;
-}
-
-message LeaveSafeModeRequestProto {
-}
-
-message LeaveSafeModeResponseProto {
- optional bool status = 1;
-}
-
-message GetSafeModeRequestProto {
-}
-
-message GetSafeModeResponseProto {
- optional bool isInSafeMode = 1;
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/62a819d5/hadoop-hdfs-project/hadoop-hdfs/src/main/proto/RouterProtocol.proto
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/proto/RouterProtocol.proto b/hadoop-hdfs-project/hadoop-hdfs/src/main/proto/RouterProtocol.proto
deleted file mode 100644
index a4e4d65..0000000
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/proto/RouterProtocol.proto
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-option java_package = "org.apache.hadoop.hdfs.protocol.proto";
-option java_outer_classname = "RouterProtocolProtos";
-option java_generic_services = true;
-option java_generate_equals_and_hash = true;
-package hadoop.hdfs.router;
-
-import "FederationProtocol.proto";
-
-service RouterAdminProtocolService {
- /**
- * Add a mount table entry.
- */
- rpc addMountTableEntry(AddMountTableEntryRequestProto) returns(AddMountTableEntryResponseProto);
-
- /**
- * Update an existing mount table entry without copying files.
- */
- rpc updateMountTableEntry(UpdateMountTableEntryRequestProto) returns(UpdateMountTableEntryResponseProto);
-
- /**
- * Remove a mount table entry.
- */
- rpc removeMountTableEntry(RemoveMountTableEntryRequestProto) returns(RemoveMountTableEntryResponseProto);
-
- /**
- * Get matching mount entries
- */
- rpc getMountTableEntries(GetMountTableEntriesRequestProto) returns(GetMountTableEntriesResponseProto);
-
- /**
- * Transform Router state to safe mode state.
- */
- rpc enterSafeMode(EnterSafeModeRequestProto) returns (EnterSafeModeResponseProto);
-
- /**
- * Transform Router state from safe mode to running state.
- */
- rpc leaveSafeMode(LeaveSafeModeRequestProto) returns (LeaveSafeModeResponseProto);
-
- /**
- * Verify if current Router state is safe mode state.
- */
- rpc getSafeMode(GetSafeModeRequestProto) returns (GetSafeModeResponseProto);
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hadoop/blob/62a819d5/hadoop-hdfs-project/hadoop-hdfs/src/main/resources/hdfs-default.xml
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/resources/hdfs-default.xml b/hadoop-hdfs-project/hadoop-hdfs/src/main/resources/hdfs-default.xml
index 43cee29..4cba7a8 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/resources/hdfs-default.xml
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/resources/hdfs-default.xml
@@ -4705,376 +4705,6 @@
</property>
<property>
- <name>dfs.federation.router.default.nameserviceId</name>
- <value></value>
- <description>
- Nameservice identifier of the default subcluster to monitor.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.rpc.enable</name>
- <value>true</value>
- <description>
- If true, the RPC service to handle client requests in the router is
- enabled.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.rpc-address</name>
- <value>0.0.0.0:8888</value>
- <description>
- RPC address that handles all clients requests.
- The value of this property will take the form of router-host1:rpc-port.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.rpc-bind-host</name>
- <value></value>
- <description>
- The actual address the RPC server will bind to. If this optional address is
- set, it overrides only the hostname portion of
- dfs.federation.router.rpc-address. This is useful for making the name node
- listen on all interfaces by setting it to 0.0.0.0.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.handler.count</name>
- <value>10</value>
- <description>
- The number of server threads for the router to handle RPC requests from
- clients.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.handler.queue.size</name>
- <value>100</value>
- <description>
- The size of the queue for the number of handlers to handle RPC client requests.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.reader.count</name>
- <value>1</value>
- <description>
- The number of readers for the router to handle RPC client requests.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.reader.queue.size</name>
- <value>100</value>
- <description>
- The size of the queue for the number of readers for the router to handle RPC client requests.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.connection.pool-size</name>
- <value>1</value>
- <description>
- Size of the pool of connections from the router to namenodes.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.connection.clean.ms</name>
- <value>10000</value>
- <description>
- Time interval, in milliseconds, to check if the connection pool should
- remove unused connections.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.connection.pool.clean.ms</name>
- <value>60000</value>
- <description>
- Time interval, in milliseconds, to check if the connection manager should
- remove unused connection pools.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.metrics.enable</name>
- <value>true</value>
- <description>
- If the metrics in the router are enabled.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.metrics.class</name>
- <value>org.apache.hadoop.hdfs.server.federation.metrics.FederationRPCPerformanceMonitor</value>
- <description>
- Class to monitor the RPC system in the router. It must implement the
- RouterRpcMonitor interface.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.admin.enable</name>
- <value>true</value>
- <description>
- If true, the RPC admin service to handle client requests in the router is
- enabled.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.admin-address</name>
- <value>0.0.0.0:8111</value>
- <description>
- RPC address that handles the admin requests.
- The value of this property will take the form of router-host1:rpc-port.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.admin-bind-host</name>
- <value></value>
- <description>
- The actual address the RPC admin server will bind to. If this optional
- address is set, it overrides only the hostname portion of
- dfs.federation.router.admin-address. This is useful for making the name
- node listen on all interfaces by setting it to 0.0.0.0.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.admin.handler.count</name>
- <value>1</value>
- <description>
- The number of server threads for the router to handle RPC requests from
- admin.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.http-address</name>
- <value>0.0.0.0:50071</value>
- <description>
- HTTP address that handles the web requests to the Router.
- The value of this property will take the form of router-host1:http-port.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.http-bind-host</name>
- <value></value>
- <description>
- The actual address the HTTP server will bind to. If this optional
- address is set, it overrides only the hostname portion of
- dfs.federation.router.http-address. This is useful for making the name
- node listen on all interfaces by setting it to 0.0.0.0.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.https-address</name>
- <value>0.0.0.0:50072</value>
- <description>
- HTTPS address that handles the web requests to the Router.
- The value of this property will take the form of router-host1:https-port.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.https-bind-host</name>
- <value></value>
- <description>
- The actual address the HTTPS server will bind to. If this optional
- address is set, it overrides only the hostname portion of
- dfs.federation.router.https-address. This is useful for making the name
- node listen on all interfaces by setting it to 0.0.0.0.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.http.enable</name>
- <value>true</value>
- <description>
- If the HTTP service to handle client requests in the router is enabled.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.metrics.enable</name>
- <value>true</value>
- <description>
- If the metrics service in the router is enabled.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.file.resolver.client.class</name>
- <value>org.apache.hadoop.hdfs.server.federation.resolver.MountTableResolver</value>
- <description>
- Class to resolve files to subclusters.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.namenode.resolver.client.class</name>
- <value>org.apache.hadoop.hdfs.server.federation.resolver.MembershipNamenodeResolver</value>
- <description>
- Class to resolve the namenode for a subcluster.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.store.enable</name>
- <value>true</value>
- <description>
- If true, the Router connects to the State Store.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.store.serializer</name>
- <value>org.apache.hadoop.hdfs.server.federation.store.driver.impl.StateStoreSerializerPBImpl</value>
- <description>
- Class to serialize State Store records.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.store.driver.class</name>
- <value>org.apache.hadoop.hdfs.server.federation.store.driver.impl.StateStoreZooKeeperImpl</value>
- <description>
- Class to implement the State Store. There are three implementation classes currently
- being supported:
- org.apache.hadoop.hdfs.server.federation.store.driver.impl.StateStoreFileImpl,
- org.apache.hadoop.hdfs.server.federation.store.driver.impl.StateStoreFileSystemImpl and
- org.apache.hadoop.hdfs.server.federation.store.driver.impl.StateStoreZooKeeperImpl.
- These implementation classes use the local file, filesystem and ZooKeeper as a backend respectively.
- By default it uses the ZooKeeper as the default State Store.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.store.connection.test</name>
- <value>60000</value>
- <description>
- How often to check for the connection to the State Store in milliseconds.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.cache.ttl</name>
- <value>1m</value>
- <description>
- How often to refresh the State Store caches in milliseconds. This setting
- supports multiple time unit suffixes as described in
- dfs.heartbeat.interval. If no suffix is specified then milliseconds is
- assumed.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.store.membership.expiration</name>
- <value>300000</value>
- <description>
- Expiration time in milliseconds for a membership record.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.heartbeat.enable</name>
- <value>true</value>
- <description>
- If true, the Router heartbeats into the State Store.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.heartbeat.interval</name>
- <value>5000</value>
- <description>
- How often the Router should heartbeat into the State Store in milliseconds.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.heartbeat-state.interval</name>
- <value>5s</value>
- <description>
- How often the Router should heartbeat its state into the State Store in
- milliseconds. This setting supports multiple time unit suffixes as
- described in dfs.federation.router.quota-cache.update.interval.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.store.router.expiration</name>
- <value>5m</value>
- <description>
- Expiration time in milliseconds for a router state record. This setting
- supports multiple time unit suffixes as described in
- dfs.federation.router.quota-cache.update.interval.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.safemode.enable</name>
- <value>true</value>
- <description>
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.safemode.extension</name>
- <value>30s</value>
- <description>
- Time after startup that the Router is in safe mode. This setting
- supports multiple time unit suffixes as described in
- dfs.heartbeat.interval. If no suffix is specified then milliseconds is
- assumed.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.safemode.expiration</name>
- <value>3m</value>
- <description>
- Time without being able to reach the State Store to enter safe mode. This
- setting supports multiple time unit suffixes as described in
- dfs.heartbeat.interval. If no suffix is specified then milliseconds is
- assumed.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.monitor.namenode</name>
- <value></value>
- <description>
- The identifier of the namenodes to monitor and heartbeat.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.monitor.localnamenode.enable</name>
- <value>true</value>
- <description>
- If true, the Router should monitor the namenode in the local machine.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.mount-table.max-cache-size</name>
- <value>10000</value>
- <description>
- Maximum number of mount table cache entries to have.
- By default, remove cache entries if we have more than 10k.
- </description>
- </property>
-
- <property>
<name>dfs.reformat.disabled</name>
<value>false</value>
<description>
@@ -5083,21 +4713,4 @@
will throw NameNodeFormatException.
</description>
</property>
-
- <property>
- <name>dfs.federation.router.client.thread-size</name>
- <value>32</value>
- <description>
- Max threads size for the RouterClient to execute concurrent
- requests.
- </description>
- </property>
-
- <property>
- <name>dfs.federation.router.client.retry.max.attempts</name>
- <value>3</value>
- <description>
- Max retry attempts for the RouterClient talking to the Router.
- </description>
- </property>
</configuration>
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org