Hadoopクラスター管理のための効率的スクリプト集

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

タグ: hadoop-cluster shell-scripting zookeeper-admin firewalld

6月14日 21:23 投稿