現在、同社は HDFS を使用して、各ノード サーバーによってアップロードされたログを保存しています。歴史的な問題のため、ログはかなり混在しています。つまり、あらゆる種類のデータがログに保存されます。ログファイルは約200MBです。一部のコンテンツをフィルタするには、タイムスタンプに基づいて hdfs の cat コマンドを使用し、キーワードを grep する必要がある場合があります。次に、それを stdin 経由で Python スクリプトに入力し、関連するデータに対して何らかの処理を実行します。
今度は、クエリ対象の時間、ノード、キーワード、および一致するモデルを入力して、タスクを 1 ステップで完了できるようにしたいと考えています。このようにして、このガジェットは、運用やメンテナンスに毎回クエリを依頼するのではなく、データを必要とするすべての人にプッシュできます。
だから私は Python 関連モジュールの勉強を始めました、この HDF はアップロードとダウンロードができ、ディレクトリ ファイルの内容をクエリすることができます。しかし、この部分を読むとなると、さらに面倒になってきます。
client.read(hdfs_path=...., 他のパラメータ) をリーダーとして使用:
一度に照合するにはコンテンツが多すぎて、おそらく数ギガバイトのデータがあり、すべてを読み取って処理するのは不可能であるため、この方法は実行できません。読み取りプロセス中にフィルタリングして処理する必要があります
コンテンツの行を入力しようとしましたが、コンテンツと一致しませんでした。
この問題はどのように解決すればよいでしょうか? Pythonを使用して条件を満たすファイルパスを記録し、HDFSコマンドを実行して、一致したデータをPythonに転送することは可能ですか?それは面倒そうだし、安定性も決して良くありません
後で調べてみると、hdfs モジュールのクライアントを作成する際に、Hadoop 50070 の Web 管理ページに接続されていたことがわかりました。このモジュール自体はデータ分析に使用されていないのではないかと考えました。助けていただければ幸いです
マルチスレッドと並列コンピューティングについてはどうですか?一度に数 GB を読み取ると、当然ながら時間がかかります。 Hadoop フレームワークなので、mapreduce をうまく使えば十分です。これはおそらく速度を考慮して設計されていません。