私は Flume と Hadoop の初心者です。さまざまなサーバーからのすべてのログを HDFS に保存できる BI モジュールを開発しています。
このために、私は Flume を使用しています。試し始めたばかりです。ノードは正常に作成されましたが、HTTP ソースと、HTTP 経由で着信要求をローカル ファイルに書き込むシンクをセットアップしたいと考えています。
何か提案はありますか?
前もって感謝します/
うまくいけば、これはあなたが始めるのに役立ちます. 私のマシンでこれをテストする際にいくつかの問題があり、今は完全にトラブルシューティングする時間がありませんが、それを解決します...
現在 Flume が稼働していると仮定すると、HTTP POST ソースとローカル ファイル シンクを使用するには、flume.conf ファイルが次のようになる必要があります (注: これは HDFS ではなくローカル ファイルに送信されます)。
########## NEW AGENT ##########
# flume-ng agent -f /etc/flume/conf/flume.httptest.conf -n httpagent
#
# slagent = SysLogAgent
###############################
httpagent.sources = http-source
httpagent.sinks = local-file-sink
httpagent.channels = ch3
# Define / Configure Source (multiport seems to support newer "stuff")
###############################
httpagent.sources.http-source.type = org.apache.flume.source.http.HTTPSource
httpagent.sources.http-source.channels = ch3
httpagent.sources.http-source.port = 81
# Local File Sink
###############################
httpagent.sinks.local-file-sink.type = file_roll
httpagent.sinks.local-file-sink.channel = ch3
httpagent.sinks.local-file-sink.sink.directory = /root/Desktop/http_test
httpagent.sinks.local-file-sink.rollInterval = 5
# Channels
###############################
httpagent.channels.ch3.type = memory
httpagent.channels.ch3.capacity = 1000
2 行目のコマンドで Flume を起動します。必要に応じて微調整します (特にポート、sink.directory、および rollInterval)。これは最小限の構成ファイルです。他にも利用可能なオプションがあります。Flume ユーザー ガイドを参照してください。さて、これに関する限り、エージェントは起動して正常に動作します....
ここでは、テストする時間がありません。デフォルトでは、HTTP エージェントは JSON 形式のデータを受け入れます。次のようなフォームで cURL リクエストを送信することにより、このエージェントをテストできるはずです。
curl -X POST -H 'Content-Type: application/json; charset=UTF-8' -d '{"username":"xyz","password":"123"}' http://yourdomain.com:81/
-X はリクエストを POST に設定し、-H はヘッダーを送信し、-d はデータ (有効な json) を送信し、次に host:port を送信します。私にとっての問題は、エラーが発生することです。
WARN http.HTTPSource: Received bad request from client. org.apache.flume.source.http.HTTPBadRequestException: Request has invalid JSON Syntax.
私の Flume クライアントでは、JSON が無効ですか? そのため、何かが間違って送信されています。ただし、エラーがポップアップしているという事実は、Flume ソースがデータを受信していることを示しています。あなたが持っているものは何でも、それが有効な形式である限り、POSTing は機能するはずです。