|  | #!/bin/sh | 
|  | # | 
|  | # | 
|  | # 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. | 
|  | # | 
|  | # | 
|  |  | 
|  | export hdfs_user=$1 | 
|  | shift | 
|  | export conf_dir=$1 | 
|  | shift | 
|  | export mark_dir=$1 | 
|  | shift | 
|  | export name_dirs=$* | 
|  |  | 
|  | export EXIT_CODE=0 | 
|  | export command="namenode -format" | 
|  | export list_of_non_empty_dirs="" | 
|  |  | 
|  | mark_file=/var/run/hadoop/hdfs/namenode-formatted | 
|  | if [[ -f ${mark_file} ]] ; then | 
|  | rm -f ${mark_file} | 
|  | mkdir -p ${mark_dir} | 
|  | fi | 
|  |  | 
|  | if [[ ! -d $mark_dir ]] ; then | 
|  | for dir in `echo $name_dirs | tr ',' ' '` ; do | 
|  | echo "NameNode Dirname = $dir" | 
|  | cmd="ls $dir | wc -l  | grep -q ^0$" | 
|  | eval $cmd | 
|  | if [[ $? -ne 0 ]] ; then | 
|  | (( EXIT_CODE = $EXIT_CODE + 1 )) | 
|  | list_of_non_empty_dirs="$list_of_non_empty_dirs $dir" | 
|  | fi | 
|  | done | 
|  |  | 
|  | if [[ $EXIT_CODE == 0 ]] ; then | 
|  | su - ${hdfs_user} -c "yes Y | hadoop --config ${conf_dir} ${command}" | 
|  | else | 
|  | echo "ERROR: Namenode directory(s) is non empty. Will not format the namenode. List of non-empty namenode dirs ${list_of_non_empty_dirs}" | 
|  | fi | 
|  | else | 
|  | echo "${mark_dir} exists. Namenode DFS already formatted" | 
|  | fi | 
|  |  | 
|  | exit $EXIT_CODE | 
|  |  |