Browse Source

Adding files missed in the previous commit r1080402 - HDFS-1703. Change start/stop scripts and decommission tools for federation. Contributed by Tanping Wang and Erik Steffl.


git-svn-id: https://svn.apache.org/repos/asf/hadoop/hdfs/branches/HDFS-1052@1084245 13f79535-47bb-0310-9956-ffa450edef68
Suresh Srinivas 14 years ago
parent
commit
235a40db77
2 changed files with 123 additions and 0 deletions
  1. 79 0
      bin/distribute-exclude.sh
  2. 44 0
      bin/refresh-namenodes.sh

+ 79 - 0
bin/distribute-exclude.sh

@@ -0,0 +1,79 @@
+#!/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.
+
+
+# ------------------------------------------------------------------
+#
+# The purpose of this script is to distribute the exclude file (see
+# "dfs.hosts.exclude" in hdfs-site.xml).
+#
+# Input of the script is a local exclude file. The exclude file
+# will be distributed to all the namenodes. The location on the namenodes
+# is determined by the configuration "dfs.hosts.exclude" in hdfs-site.xml
+# (this value is read from the local copy of hdfs-site.xml and must be same
+# on all the namenodes).
+#
+# The user running this script needs write permissions on the target
+# directory on namenodes.
+#
+# After this command, run refresh-namenodes.sh so that namenodes start
+# using the new exclude file.
+
+bin=`dirname "$0"`
+bin=`cd "$bin"; pwd`
+
+. "$bin/hdfs-config.sh"
+
+if [ "$1" = '' ] ; then
+  "Error: please specify local exclude file as a first argument"
+  exit 1
+else
+  excludeFilenameLocal=$1
+fi
+
+if [ ! -f "$excludeFilenameLocal" ] ; then
+  echo "Error: exclude file [$excludeFilenameLocal] does not exist."
+  exit 1
+fi
+
+namenodes=$("$HADOOP_HOME/bin/hdfs" getconf -namenodes)
+excludeFilenameRemote=$("$HADOOP_HOME/bin/hdfs" getconf -excludeFile)
+
+if [ "$excludeFilenameRemote" = '' ] ; then
+  echo \
+    "Error: hdfs getconf -excludeFile returned empty string, " \
+    "please setup dfs.hosts.exclude in hdfs-site.xml in local cluster " \
+    "configuration and on all namenodes"
+  exit 1
+fi
+
+echo "Copying exclude file [$excludeFilenameRemote] to namenodes:"
+
+for namenode in $namenodes ; do
+  echo "    [$namenode]"
+  scp "$excludeFilenameLocal" "$namenode:$excludeFilenameRemote"
+  if [ "$?" != '0' ] ; then errorFlag='1' ; fi
+done
+
+if [ "$errorFlag" = '1' ] ; then
+  echo "Error: transfer of exclude file failed, see error messages above."
+  exit 1
+else
+  echo "Transfer of exclude file to all namenodes succeeded."
+fi
+
+# eof

+ 44 - 0
bin/refresh-namenodes.sh

@@ -0,0 +1,44 @@
+#!/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.
+
+
+# ------------------------------------------------------------------
+# This script refreshes all namenodes, it's a simple wrapper
+# for dfsadmin to support multiple namenodes.
+
+bin=`dirname "$0"`
+bin=`cd "$bin"; pwd`
+
+. "$bin/hdfs-config.sh"
+
+namenodes=$("$HADOOP_HOME/bin/hdfs" getconf -namenodes)
+
+for namenode in $namenodes ; do
+  echo "Refreshing namenode [$namenode]"
+  "$HADOOP_HOME/bin/hdfs" dfsadmin -refreshNodes
+  if [ "$?" != '0' ] ; then errorFlag='1' ; fi
+done
+
+if [ "$errorFlag" = '1' ] ; then
+  echo "Error: refresh of namenodes failed, see error messages above."
+  exit 1
+else
+  echo "Refresh of all namenodes succeeded."
+fi
+
+
+# eof