hadoop/hdfs-create-dirs

67 lines
1.8 KiB
Bash

#!/bin/bash
hdfs_dirs="/user /var/log /tmp"
mapred_dirs="/tmp/hadoop-yarn/staging /tmp/hadoop-yarn/staging/history /tmp/hadoop-yarn/staging/history/done /tmp/hadoop-yarn/staging/history/done_intermediate"
yarn_dirs="/tmp/hadoop-yarn /var/log/hadoop-yarn"
# Must be run as root
if [[ $EUID -ne 0 ]]
then
echo "This must be run as root" 1>&2
exit 1
fi
# Start the namenode if it isn't running
started=0
systemctl status hadoop-namenode > /dev/null 2>&1
rc=$?
if [[ $rc -gt 0 ]]
then
# Format the namenode if it hasn't been formatted
runuser hdfs -s /bin/bash /bin/bash -c "hdfs namenode -format -nonInteractive" > /dev/null 2>&1
if [[ $? -eq 0 ]]
then
echo "Formatted the Hadoop namenode"
fi
echo "Starting the Hadoop namenode"
systemctl start hadoop-namenode > /dev/null 2>&1
rc=$?
started=1
fi
if [[ $rc -ne 0 ]]
then
echo "The Hadoop namenode failed to start"
exit 1
fi
for dir in $hdfs_dirs $yarn_dirs $mapred_dirs
do
echo "Creating directory $dir"
runuser hdfs -s /bin/bash /bin/bash -c "hadoop fs -mkdir -p $dir" > /dev/null 2>&1
done
echo "Setting permissions on /tmp"
runuser hdfs -s /bin/bash /bin/bash -c "hadoop fs -chmod 1777 /tmp" > /dev/null 2>&1
for dir in $mapred_dirs
do
echo "Setting permissions and ownership for $dir"
runuser hdfs -s /bin/bash /bin/bash -c "hadoop fs -chown mapred:mapred $dir" > /dev/null 2>&1
runuser hdfs -s /bin/bash /bin/bash -c "hadoop fs -chmod 1777 $dir" > /dev/null 2>&1
done
for dir in $yarn_dirs
do
echo "Setting permissions and ownership for $dir"
runuser hdfs -s /bin/bash /bin/bash -c "hadoop fs -chown yarn:mapred $dir" > /dev/null 2>&1
done
# Stop the namenode if we started it
if [[ $started -gt 0 ]]
then
echo "Stopping the Hadoop namenode"
systemctl stop hadoop-namenode > /dev/null 2>&1
fi