目的
Webアプリケーションのファイルストレージと処理バックエンドを実装する必要があります。アプリケーションには次の特徴があります。
(#1)クライアントはさまざまな形式とサイズのファイルを保存します(ギガバイトの範囲である可能性があります)
(#2)クライアントがファイル自体を取得する必要がある場合があります
(#3)クライアントが出力を取得する必要がある場合がありますデータ(ここでは「OD」以降)。以前に保存されたファイルに対して処理が実行され、ODが生成されます。重要な注意:ODサイズは通常、元のファイルサイズのごく一部です。2GBのファイルで1MBのODが生成される場合があります)。
(#4)クライアントがファイルに変換を適用する場合があります(ファイルのパッチ適用など)。
解決策を検討する
ストレージクラスター(SANなど)を使用して#1と#2を実現し、次に#3と#4のコンピューティングクラスターを使用できます。しかし、SANとコンピューティングクラスター間で大量のデータをシャトルすること(何百人ものユーザーがODまたはファイルにパッチを適用することを想像してください)は、特にファイルデータが巨大になる可能性があり、ほとんどの場合、クライアントが必要とするのは小さなODまたは何もありません(パッチ適用操作はクライアント入力を消費しますが、データをクライアントに返しません)。
したがって、必要なのは、各ノードがビッグデータノードであり、ストレージクラスターと処理クラスター間のトラフィックを回避するための適切な処理ノードであるノードクラスターであると思います(現在は1つであるため)。ノードは、保存するファイルの処理を担当するため、ネットワーク帯域幅が回避されます。ノードが処理要求で過負荷になった場合、そのノードは一部の作業を隣接ノードにオフロードする可能性があります(したがって、帯域幅のコストが発生しますが、必要な場合のみです)。
質問
(1)ウィキメディアは「ファイルサーバー」と個別の「イメージスケーラー」サーバーを使用しています...しかし、私の場合、大きな不要な帯域幅が心配です。私の心配は正当化されますか?したがって、私の場合、ストレージ/処理ノードの分離は不適切ですか?
(2)私のアプローチ(大きなストレージのクラスター+強力な処理ノード)は望ましいですか?または、別のアーキテクチャを検討する必要がありますか?
(2)Hadoopを検討しましたが、それがタスクに適しているかどうかわかりません(帯域幅のコストが高く、ビッグデータを実際に処理していません)。また、Hadoopがそのタスクに適している場合は、その理由を説明してください。
(3)これらのサーバークラスターの管理に使用できるオープンソース/その他のフレームワークはありますか?
(4)ない場合は、社内でソリューションを開発する必要があると思います。どうすれば始められますか?
ふぅ。それはたくさんでした。前もって感謝します!