1. PATH環境変数の確認
echo $PATH
環境変数に /home/hadoop/bin が含まれていますが、実際のディレクトリが存在しないため作成が必要です。
mkdir /home/hadoop/bin
2. クラスター管理スクリプト
2.1 スクリプト配布ツール (distribute)
#!/bin/bash
# パラメータ数の検証
if [ $# -lt 1 ]; then
echo "パラメータが不足しています"
exit 1
fi
# クラスター節点のリスト
for node in node01 node02 node03; do
echo "==================== $node ===================="
for source in "$@"; do
if [ -f "$source" ]; then
parent_path=$(cd -P "$(dirname "$source")"; pwd)
file_name=$(basename "$source")
ssh "$node" "mkdir -p $parent_path"
rsync -av "$parent_path/$file_name" "$node:$parent_path"
else
echo "エラー: $source が存在しません"
fi
done
done
2.2 Hadoopクラスター管理スクリプト (hadoopctl)
#!/bin/bash
if [ $# -lt 1 ]; then
echo "使用方法: $0 {start|stop}"
exit 1
fi
case "$1" in
start)
echo "=================== Hadoopクラスター起動 ==================="
echo "------------ HDFS起動 ------------"
ssh node01 "/opt/hadoop/3.2.1/sbin/start-dfs.sh"
echo "------------ YARN起動 ------------"
ssh node02 "/opt/hadoop/3.2.1/sbin/start-yarn.sh"
echo "------------ HistoryServer起動 ------------"
ssh node01 "/opt/hadoop/3.2.1/bin/mapred --daemon start historyserver"
;;
stop)
echo "=================== Hadoopクラスター停止 ==================="
echo "------------ HistoryServer停止 ------------"
ssh node01 "/opt/hadoop/3.2.1/bin/mapred --daemon stop historyserver"
echo "------------ YARN停止 ------------"
ssh node02 "/opt/hadoop/3.2.1/sbin/stop-yarn.sh"
echo "------------ HDFS停止 ------------"
ssh node01 "/opt/hadoop/3.2.1/sbin/stop-dfs.sh"
;;
*)
echo "無効なオプション: $1"
exit 1
esac
2.3 プロセス状態確認スクリプト (jpsnode)
#!/bin/bash
for target_node in node01 node02 node03; do
echo "============== $target_node =============="
ssh "$target_node" "$JAVA_HOME/bin/jps"
done
2.4 ZooKeeper管理スクリプト (zkctl)
#!/bin/bash
case "$1" in
start)
for node in node01 node02 node03; do
echo "-------------------- ZooKeeper $node 開始 ---------------------"
ssh "$node" "/opt/zookeeper/3.9.1/bin/zkServer.sh start"
done
;;
stop)
for node in node01 node02 node03; do
echo "-------------------- ZooKeeper $node 停止 ---------------------"
ssh "$node" "/opt/zookeeper/3.9.1/bin/zkServer.sh stop"
done
;;
status)
for node in node01 node02 node03; do
echo "-------------------- ZooKeeper $node 状態 ---------------------"
ssh "$node" "/opt/zookeeper/3.9.1/bin/zkServer.sh status"
done
;;
*)
echo "使用方法: $0 {start|stop|status}"
exit 1
esac
2.5 ファイアウォール管理スクリプト (fwctl)
#!/bin/bash
case "$1" in
stop)
for node in node01 node02 node03; do
ssh "$node" "sudo systemctl stop firewalld"
done
;;
status)
for node in node01 node02 node03; do
echo "------------ $node ファイアウォール状態 ------------"
ssh "$node" "sudo systemctl status firewalld"
done
;;
start)
for node in node01 node02 node03; do
ssh "$node" "sudo systemctl start firewalld"
done
;;
*)
echo "使用方法: $0 {start|stop|status}"
exit 1
esac
3. スクリプトの利用手順
3.1 スクリプトの配置
スクリプトを /home/hadoop/bin にアップロードします。
3.2 実行権限の設定
cd /home/hadoop/bin
chmod +x distribute
chmod +x hadoopctl
chmod +x jpsnode
chmod +x zkctl
chmod +x fwctl