HDDS-242. Introduce NEW_NODE, STALE_NODE and DEAD_NODE event
and corresponding event handlers in SCM. Contributed by Nanda Kumar.
This commit is contained in:
parent
4e59b92784
commit
a47ec5dac4
|
@ -0,0 +1,47 @@
|
||||||
|
/**
|
||||||
|
* 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.hdds.scm.container;
|
||||||
|
|
||||||
|
import org.apache.hadoop.hdds.scm.node.states.Node2ContainerMap;
|
||||||
|
import org.apache.hadoop.hdds.scm.server.SCMDatanodeHeartbeatDispatcher
|
||||||
|
.ContainerReportFromDatanode;
|
||||||
|
import org.apache.hadoop.hdds.server.events.EventHandler;
|
||||||
|
import org.apache.hadoop.hdds.server.events.EventPublisher;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles container reports from datanode.
|
||||||
|
*/
|
||||||
|
public class ContainerReportHandler implements
|
||||||
|
EventHandler<ContainerReportFromDatanode> {
|
||||||
|
|
||||||
|
private final Mapping containerMapping;
|
||||||
|
private final Node2ContainerMap node2ContainerMap;
|
||||||
|
|
||||||
|
public ContainerReportHandler(Mapping containerMapping,
|
||||||
|
Node2ContainerMap node2ContainerMap) {
|
||||||
|
this.containerMapping = containerMapping;
|
||||||
|
this.node2ContainerMap = node2ContainerMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onMessage(ContainerReportFromDatanode containerReportFromDatanode,
|
||||||
|
EventPublisher publisher) {
|
||||||
|
// TODO: process container report.
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
/**
|
||||||
|
* 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.hdds.scm.node;
|
||||||
|
|
||||||
|
import org.apache.hadoop.hdds.protocol.DatanodeDetails;
|
||||||
|
import org.apache.hadoop.hdds.scm.node.states.Node2ContainerMap;
|
||||||
|
import org.apache.hadoop.hdds.server.events.EventHandler;
|
||||||
|
import org.apache.hadoop.hdds.server.events.EventPublisher;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles Dead Node event.
|
||||||
|
*/
|
||||||
|
public class DeadNodeHandler implements EventHandler<DatanodeDetails> {
|
||||||
|
|
||||||
|
private final Node2ContainerMap node2ContainerMap;
|
||||||
|
|
||||||
|
public DeadNodeHandler(Node2ContainerMap node2ContainerMap) {
|
||||||
|
this.node2ContainerMap = node2ContainerMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onMessage(DatanodeDetails datanodeDetails,
|
||||||
|
EventPublisher publisher) {
|
||||||
|
//TODO: add logic to handle dead node.
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
/**
|
||||||
|
* 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.hdds.scm.node;
|
||||||
|
|
||||||
|
import org.apache.hadoop.hdds.protocol.DatanodeDetails;
|
||||||
|
import org.apache.hadoop.hdds.scm.exceptions.SCMException;
|
||||||
|
import org.apache.hadoop.hdds.scm.node.states.Node2ContainerMap;
|
||||||
|
import org.apache.hadoop.hdds.server.events.EventHandler;
|
||||||
|
import org.apache.hadoop.hdds.server.events.EventPublisher;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles New Node event.
|
||||||
|
*/
|
||||||
|
public class NewNodeHandler implements EventHandler<DatanodeDetails> {
|
||||||
|
|
||||||
|
private final Node2ContainerMap node2ContainerMap;
|
||||||
|
|
||||||
|
public NewNodeHandler(Node2ContainerMap node2ContainerMap) {
|
||||||
|
this.node2ContainerMap = node2ContainerMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onMessage(DatanodeDetails datanodeDetails,
|
||||||
|
EventPublisher publisher) {
|
||||||
|
try {
|
||||||
|
node2ContainerMap.insertNewDatanode(datanodeDetails.getUuid(),
|
||||||
|
Collections.emptySet());
|
||||||
|
} catch (SCMException e) {
|
||||||
|
// TODO: log exception message.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
/**
|
||||||
|
* 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.hdds.scm.node;
|
||||||
|
|
||||||
|
import org.apache.hadoop.hdds.scm.server.SCMDatanodeHeartbeatDispatcher
|
||||||
|
.NodeReportFromDatanode;
|
||||||
|
import org.apache.hadoop.hdds.server.events.EventHandler;
|
||||||
|
import org.apache.hadoop.hdds.server.events.EventPublisher;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles Node Reports from datanode.
|
||||||
|
*/
|
||||||
|
public class NodeReportHandler implements EventHandler<NodeReportFromDatanode> {
|
||||||
|
|
||||||
|
private final NodeManager nodeManager;
|
||||||
|
|
||||||
|
public NodeReportHandler(NodeManager nodeManager) {
|
||||||
|
this.nodeManager = nodeManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onMessage(NodeReportFromDatanode nodeReportFromDatanode,
|
||||||
|
EventPublisher publisher) {
|
||||||
|
//TODO: process node report.
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
/**
|
||||||
|
* 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.hdds.scm.node;
|
||||||
|
|
||||||
|
import org.apache.hadoop.hdds.protocol.DatanodeDetails;
|
||||||
|
import org.apache.hadoop.hdds.scm.node.states.Node2ContainerMap;
|
||||||
|
import org.apache.hadoop.hdds.server.events.EventHandler;
|
||||||
|
import org.apache.hadoop.hdds.server.events.EventPublisher;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles Stale node event.
|
||||||
|
*/
|
||||||
|
public class StaleNodeHandler implements EventHandler<DatanodeDetails> {
|
||||||
|
|
||||||
|
private final Node2ContainerMap node2ContainerMap;
|
||||||
|
|
||||||
|
public StaleNodeHandler(Node2ContainerMap node2ContainerMap) {
|
||||||
|
this.node2ContainerMap = node2ContainerMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onMessage(DatanodeDetails datanodeDetails,
|
||||||
|
EventPublisher publisher) {
|
||||||
|
//TODO: logic to handle stale node.
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
# included in all the ozone scripts with source command
|
||||||
|
# should not be executed directly
|
||||||
|
|
||||||
|
function hadoop_subproject_init
|
||||||
|
{
|
||||||
|
if [[ -z "${HADOOP_OZONE_ENV_PROCESSED}" ]]; then
|
||||||
|
if [[ -e "${HADOOP_CONF_DIR}/hdfs-env.sh" ]]; then
|
||||||
|
. "${HADOOP_CONF_DIR}/hdfs-env.sh"
|
||||||
|
export HADOOP_OZONES_ENV_PROCESSED=true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
HADOOP_OZONE_HOME="${HADOOP_OZONE_HOME:-$HADOOP_HOME}"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ -z "${HADOOP_LIBEXEC_DIR}" ]]; then
|
||||||
|
_hd_this="${BASH_SOURCE-$0}"
|
||||||
|
HADOOP_LIBEXEC_DIR=$(cd -P -- "$(dirname -- "${_hd_this}")" >/dev/null && pwd -P)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# shellcheck source=./hadoop-common-project/hadoop-common/src/main/bin/hadoop-config.sh
|
||||||
|
|
||||||
|
if [[ -n "${HADOOP_COMMON_HOME}" ]] &&
|
||||||
|
[[ -e "${HADOOP_COMMON_HOME}/libexec/hadoop-config.sh" ]]; then
|
||||||
|
. "${HADOOP_COMMON_HOME}/libexec/hadoop-config.sh"
|
||||||
|
elif [[ -e "${HADOOP_LIBEXEC_DIR}/hadoop-config.sh" ]]; then
|
||||||
|
. "${HADOOP_LIBEXEC_DIR}/hadoop-config.sh"
|
||||||
|
elif [ -e "${HADOOP_HOME}/libexec/hadoop-config.sh" ]; then
|
||||||
|
. "${HADOOP_HOME}/libexec/hadoop-config.sh"
|
||||||
|
else
|
||||||
|
echo "ERROR: Hadoop common not found." 2>&1
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
Loading…
Reference in New Issue