flumeのシェル起動停止スクリプトが正常に動作しない問題を解決

1. 問題の説明

コマンドラインにコマンドを入力して Flume を実行して開始します

[root@bigdata111 flume-1.9.0]# bin/flume-ng agent -n a1 -c conf/ -f job/file_to_kafka.conf -Dflume.root.logger=info,console

ここに画像の説明を挿入
しかし、私が作成したシェルの開始/停止スクリプトを実行すると、機能しません

スクリプトは次のとおりです。

#!/bin/bash

case $1 in
"start"){
    
    
        for i in bigdata111 bigdata112
        do
                echo " --------启动 $i 采集flume-------"
                ssh $i "nohup /opt/module/flume-1.9.0/bin/flume-ng agent -n a1 -c /opt/module/flume-1.9.0/conf/ -f /opt/module/flume-1.9.0/job/file_to_kafka.conf >/dev/null 2>&1 &"
        done
};;
"stop"){
    
    
        for i in bigdata111 bigdata112
        do
                echo " --------停止 $i 采集flume-------"
                ssh $i "ps -ef | grep file_to_kafka.conf | grep -v grep |awk  '{print \$2}' | xargs -n1 kill -9 "
        done

};;
esac

ここに画像の説明を挿入

理由:

これは大きな問題ではありませんが、環境変数が原因である可能性があります。

Linux 環境変数、ログインするかどうか、および対話的にアクセスするかどうかによって、システムの /etc/profile と /etc/profile.d/*.sh と ~/.bashrc と ~/.profile のロード順序が決まります。または他のファイル。

centos と ubuntu の同じ場所にある環境変数を変更し、ssh でリモート マシンに接続して特定のコマンドを実行すると、一方はコマンドを見つけることができ、もう一方はコマンドを見つけることができない場合があります。

2、解決策

Flume の lib フォルダーに移動し、デフォルトの guava-11*.jar 依存関係を削除します。

[root@bigdata111 lib]# rm -fr guava-11.0.2.jar 

通常の状況では、この jar を削除した後、flume は hadoop の $HADOOP_HOME で使用されている guava を探します。

次に、Hadoop の guava*.jar を Flume の lib ファイルにコピーします。

[root@bigdata111 lib]# cp /opt/module/hadoop-3.1.3/share/hadoop/common/lib/guava-27.0-jre.jar /opt/module/flume-1.9.0/lib/

スクリプトを再度実行し、成功したことを確認します
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_43520450/article/details/129470015