Skip to content

Commit 63814a2

Browse files
authored
Merge pull request apache#151 from pdion891/fix-hdfs_setup
[SPOT-287] Fix sudo command, add help, fix ShellCheck warnings
2 parents f92f50b + 0f44ace commit 63814a2

File tree

1 file changed

+39
-17
lines changed

1 file changed

+39
-17
lines changed

spot-setup/hdfs_setup.sh

+39-17
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,21 @@
1919

2020
set -e
2121

22+
help() {
23+
echo -n "
24+
Initialize folders and databases for Spot in Hadoop.
25+
26+
Options:
27+
--no-sudo Do not use sudo with hdfs commands.
28+
-c Specify config file (default = /etc/spot.conf)
29+
-d Override databases
30+
-h, --help Display this help and exit
31+
"
32+
exit 0
33+
}
34+
2235
function log() {
23-
printf "hdfs_setup.sh:\n $1\n"
36+
printf "hdfs_setup.sh:\\n %s\\n\\n" "$1"
2437
}
2538

2639
function safe_mkdir() {
@@ -29,11 +42,11 @@ function safe_mkdir() {
2942
# keeps the script from existing on existing folders
3043
local hdfs_cmd=$1
3144
local dir=$2
32-
if $(hdfs dfs -test -d ${dir}); then
45+
if hdfs dfs -test -d "${dir}"; then
3346
log "${dir} already exists"
3447
else
3548
log "running mkdir on ${dir}"
36-
${hdfs_cmd} dfs -mkdir ${dir}
49+
${hdfs_cmd} dfs -mkdir "${dir}"
3750
fi
3851
}
3952

@@ -74,12 +87,15 @@ for arg in "$@"; do
7487
db_override=$1
7588
shift
7689
;;
90+
"-h"|"--help")
91+
help
92+
;;
7793
esac
7894
done
7995

8096
# Sourcing spot configuration variables
81-
log "Sourcing ${SPOTCONF}\n"
82-
source $SPOTCONF
97+
log "Sourcing ${SPOTCONF}"
98+
source "$SPOTCONF"
8399

84100
if [[ ${no_sudo} == "true" ]]; then
85101
hdfs_cmd="hdfs"
@@ -95,10 +111,10 @@ else
95111
fi
96112

97113
if [[ -z "${db_override}" ]]; then
98-
DBENGINE=$(echo ${DBENGINE} | tr '[:upper:]' '[:lower:]')
114+
DBENGINE=$(echo "${DBENGINE}" | tr '[:upper:]' '[:lower:]')
99115
log "setting database engine to ${DBENGINE}"
100116
else
101-
DBENGINE=$(echo ${db_override} | tr '[:upper:]' '[:lower:]')
117+
DBENGINE=$(echo "${db_override}" | tr '[:upper:]' '[:lower:]')
102118
log "setting database engine to $db_override"
103119
fi
104120

@@ -112,7 +128,11 @@ case ${DBENGINE} in
112128
db_script="${db_shell} --var=huser=${HUSER} --var=dbname=${DBNAME} -c -f"
113129
;;
114130
hive)
115-
db_shell="hive"
131+
if [[ ${no_sudo} == "true" ]]; then
132+
db_shell="hive"
133+
else
134+
db_shell="sudo -u hive hive"
135+
fi
116136
db_query="${db_shell} -e"
117137
db_script="${db_shell} -hiveconf huser=${HUSER} -hiveconf dbname=${DBNAME} -f"
118138
;;
@@ -128,33 +148,35 @@ case ${DBENGINE} in
128148
esac
129149

130150
# Creating HDFS user's folder
131-
safe_mkdir ${hdfs_cmd} ${HUSER}
132-
${hdfs_cmd} dfs -chown ${USER}:supergroup ${HUSER}
133-
${hdfs_cmd} dfs -chmod 775 ${HUSER}
151+
safe_mkdir "${hdfs_cmd}" "${HUSER}"
152+
${hdfs_cmd} dfs -chown "${USER}":supergroup "${HUSER}"
153+
${hdfs_cmd} dfs -chmod 775 "${HUSER}"
134154

135155
# Creating HDFS paths for each use case
136156
for d in "${DSOURCES[@]}"
137157
do
138158
echo "creating /$d"
139-
safe_mkdir hdfs ${HUSER}/$d
159+
safe_mkdir "${hdfs_cmd}" "${HUSER}/$d"
140160
for f in "${DFOLDERS[@]}"
141161
do
142162
echo "creating $d/$f"
143-
safe_mkdir ${hdfs_cmd} ${HUSER}/$d/$f
163+
safe_mkdir "${hdfs_cmd}" "${HUSER}/$d/$f"
144164
done
145165

146166
# Modifying permission on HDFS folders to allow Impala to read/write
147-
hdfs dfs -chmod -R 775 ${HUSER}/$d
148-
${hdfs_cmd} dfs -setfacl -R -m user:${db_override}:rwx ${HUSER}/$d
149-
${hdfs_cmd} dfs -setfacl -R -m user:${USER}:rwx ${HUSER}/$d
167+
${hdfs_cmd} dfs -chmod -R 775 "${HUSER}"/"$d"
168+
${hdfs_cmd} dfs -setfacl -R -m user:"${db_override}":rwx "${HUSER}"/"$d"
169+
${hdfs_cmd} dfs -setfacl -R -m user:"${USER}":rwx "${HUSER}"/"$d"
150170
done
151171

152172

153173
# Creating Spot Database
154-
${db_query} "CREATE DATABASE IF NOT EXISTS ${DBNAME}";
174+
log "Creating Spot Database"
175+
${db_query} "CREATE DATABASE IF NOT EXISTS ${DBNAME}";
155176

156177

157178
# Creating tables
179+
log "Creating Database tables"
158180
for d in "${DSOURCES[@]}"
159181
do
160182
${db_script} "./${DBENGINE}/create_${d}_parquet.hql"

0 commit comments

Comments
 (0)