問題タブ [distributed-filesystem]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - FileSystemWatcher とファイルの変更を監視するためのポーリング
ローカルまたはネットワーク ドライブの両方でディレクトリに作成されるファイルを監視するアプリケーションをセットアップする必要があります。
FileSystemWatcher
またはタイマーのポーリングが最適なオプションでしょうか。私は過去に両方の方法を使用しましたが、広範囲には使用していません。
どちらの方法にもどのような問題 (パフォーマンス、信頼性など) がありますか?
video - Lustre、Gluster、またはMogileFS ?? ビデオストレージ、エンコーディング、ストリーミング用
非常に多くのオプションがあり、それらすべてをテストする時間はほとんどありません...誰かがビデオストリーミングとストレージ/エンコーディング用の分散ファイルシステムの経験があるのではないかと思います。
どこかに保存する必要のある巨大なビデオファイル(50GBから250GB)がたくさんあり、それらをmp4にエンコードして、いくつかのAdobeFMSサーバーからストリーミングすることができます。これをすべて処理する唯一の方法は分散ファイルシステムを使用することですが、問題はどれですか?
これまでの私の研究は私に教えてくれます:
- 光沢:多くの大企業で使用されている成熟した実績のあるソリューションで、10Gを超えるファイルに最適なのはカーネルドライバーです。
- Gluster:新しい、成熟度の低い、FUSEベース。つまり、インストールは簡単ですが、FUSEのオーバーヘッドのために遅くなる可能性があります。多数の小さなファイルを処理する方が良い〜1GB
- MogileFS:小さなファイル〜MB専用のようですが、アクセスにHTTPを使用しますか?将来的にはFUSEバインディングの可能性があります。
これまでのところLustreが勝者のようですが、私が持っている特定のアプリケーションの実際の経験を聞きたいと思います。
また、Hadoop、Redhat GFS、Coda、Windows DFSがオプションとして聞こえるので、どんな経験でも歓迎します。誰かがベンチマークを持っているなら、共有してください。
いくつかの実際の経験の後、これは私が学んだことです:
- 光沢:
- パフォーマンス:驚くほど速い!Lusterは多くのストリームを提供でき、Lustreを介してファイルにアクセスしてもエンコード速度は影響を受けないと断言できます。
- POXISの互換性:とても良いです!。光沢を使用するためにアプリケーションを変更する必要はありません。
- レプリケーション、負荷分散、フェイルオーバー:非常に悪いです!。レプリケーションの負荷分散とフェイルオーバーについては、仮想IPやDRDBなどの他のソフトウェアに依存する必要があります。
- インストール:最悪!単なる人間ではインストールできません。それを機能させるには、カーネル、光沢パッチ、および微調整の非常に特殊な組み合わせが必要です。また、現在の光沢パッチは通常、新しいハードウェア/ソフトウェアと互換性のない古いカーネルで機能します。
- MogileFS:
- パフォーマンス:小さなファイルには適していますが、中規模から大きなファイルには使用できません。これは主にHTTPオーバーヘッドが原因です。これは、すべてのファイルがbase64のすべてのデータをエンコードするHTTPリクエストを介して送受信され、各ファイルに33%のオーバーヘッドが追加されるためです。
- POXIXとの互換性はありません。ほとんどのストリーミングサーバーとエンコードツールはMogileFSプロトコルを理解していないため、すべてのアプリケーションを変更して、ストリーミング/エンコードに使用できないmogilefを使用する必要があります。
- レプリケーションとフェイルオーバーをすぐに使用でき、一度に複数のトラッカーにアクセスすることで、アプリケーションに負荷分散を実装できます。
- インストールは比較的簡単で、すぐに使用できるパッケージがほとんどのディストリビューションに存在します。私が見つけた唯一の問題は、単一障害点を排除するためにデータベースのマスタースレーブを設定することでした。
- Gluster:
- パフォーマンス:ストリーミングには非常に悪い。10Gbpsネットワークで数Mbpsを超える速度に到達できません。大量の書き込みでクライアントとサーバーのCPUが急上昇します。ネットワークとI/Oの前にCPUが飽和しているため、エンコードは機能します。
- POXIS:ほぼ互換性があります。私が使用するツールは、ディスク内の通常のフォルダーとしてglusterマウントにアクセスできますが、一部のエッジケースでは、問題が発生し始めます。glusterのメーリングリストを確認すると、多くの問題があることがわかります。
- レプリケーション、フェイルオーバー、および負荷分散:最高です!彼らが実際に働いた場合。Glusterは非常に新しく、多くのバグとパフォーマンスの問題があります。
- インストールが簡単すぎます。管理コマンドラインは素晴らしく、複数のサーバー間で複製、ストライプ、および分散されたボリュームを設定することは、これ以上簡単なことではありません。
最終結論:
残念ながら、結論は「単一の特効薬はない」です。
現在、ストレージとトランスコーディング用に複製されたボリュームにGluster3.2のメディアファイルがあります。サーバーの数が少ない限り、ジオレプリケーションやストライプボリュームは問題なく機能します。
メディアファイルをストリーミングするときは、DR:DBを介して2番目の光沢ボリュームに複製される光沢ボリュームにそれらをコピーします。次に、wowzaサーバーは光沢ボリュームからメディアファイルを読み取ります。
そして最後に、MogileFSを使用してWebアプリケーションサーバーでサムネイルを提供します。
nosql - シャーディングとDFS
シャーディング(MongoDBなど)と分散ファイルシステム(HBaseやHyperTableのHDFSなど)は、データベースがスケールアウトに使用するさまざまなメカニズムであると理解している限り、それらをどのように比較するのでしょうか。
key-value-store - 合計データ サイズ 80 TB の分散キー値ストレージ
TL;DR:
avg. 最大 50KB のエントリ サイズ。Linux 環境 (専用サーバー) にインストールされます。
ファイル システム ソリューションで十分です。
Ceph、Cassandra、Riak など、いくつかの解決策を見つけました。
詳細
コンポーネントの 1 つのストレージ ソリューションを探しています。それは、キー値ストレージ、フラットな名前空間である必要があります。
シナリオ
読み取り/書き込みパターンは非常に単純です。
キー値が書き込まれると、次の数時間以内にいくつかの読み取りがあります。
その後、指定された Key-Value には何も触れません。将来の目的である「ストレージモード」のためにデータを保持したいと考えています。
その他の使用面
- OS: リナックス
- Python クライアント/コネクタ
- 合計サイズ: 最大 80 TB (この値は、将来のニーズも表します)。
- 平均エントリ サイズ (kv ペアの 1 つの値の場合): 10 ~ 50 KB、非圧縮、ほとんどがテキスト データ
- 圧縮: 組み込みまたは外部のいずれか。
- 暗号化:不要
- ネットワーク帯域幅: 1Gb、単一の LAN
- サーバー: 専用 (クラウドではない)
最も重要な要件
「基本」要件は次のとおりです。
- OS: リナックス
- Python クライアント/コネクタまたは HTTP 経由の RESTful API
- 最大 80 TB まで簡単に保存できます (この値は、将来のニーズも表しています)。
- 最大読み取りレイテンシ: 最初の読み取りで数秒、「ストレージ モード」で 30 秒 (説明については上記を参照)
- 組み込みのレプリケーション (データが複数のノードに保存されるようにするため)
あった方がよい
- RESTful ゲートウェイ
- 別のストアへのバックグラウンド データ バックアップ (災害時のデータ復旧用)。
- 設定が簡単
これまでに見つけたもの
- セフ
- HDFS
- HDFS 上の HBase
- 光沢
- GlusterFS
- Mongo の GridFS - しかし、Mongo のインフラストラクチャは信頼できますか?
- Cassandra - マージ プロセスは 2 倍のディスク サイズを消費するため、オプションではありません
- Riak - Cassandra と同じ問題があるようで、さらに調査が必要です
- Swift + OpenStack (実際のストレージは Amazon S3 にある可能性があります)
- ヴォルデモート
- 追加のツールは数十ありますが、プロプライエタリ ライセンスを持っているものもあれば、未熟なものもあると思われるため、ここでは書きません。
上記のツール (合計容量が 50 TB を超えるもの) について、または十分だと思われるツールについて、お勧めを教えていただければ幸いです。
android - Android 用の分散ファイル システム
Android OS用のサーバーレス分散ファイルシステム(Dropboxのような機能ですがサーバーレス)を開発しようとしています。私はそれにどのようにアプローチするかについての提案を探しています。Android で FUSE について見たことがありますが、それが私の目的にどのように役立つかについて明確なイメージが得られませんでした。mobiDFS という既存のシステムを見ましたが、それに関する情報は得られませんでした。私が始めるためのチュートリアル、論文、または既存のソリューションを提供してください。ありがとう。
c++ - Kosmos File System (KFS) はどのようにリフレクションを処理しますか?
イースター、おめでとう!
C++ で分散ファイル システムを作成しています。そして、それを完全に制御するために、独自の RPC を作成しました。この RPC フレームワークに関する最後の保留中の問題は、リフレクションです。これは、C++ が提供していないためです。
KFS が C++ で記述された DFS であることは知っていますが、その実装については知りません。親切で知識のある皆さんにお願いします。
RPC を処理する何らかの方法があると思いますね。どういうわけか反射を使用していますか?リフレクションを使用していない場合、それを使用している他の C++ ベースの分散アプリケーションはありますか。そして、彼らはそれをどのように使用しますか?
お気軽にアドバイスをください。私はアイデアが好きです。
乾杯、エルトン
multithreading - ファイルをローカルに書き込むか、リモート ファイル システムに書き込むか?
私の質問は、Windows のリモート ファイル システムについてです。
たとえば、ネットワーク上のファイル システムにアクセスできるワークステーション X があるとします\\ServerY\MYDir\
。
X に 2 つの同時スレッドがあるシナリオを想像してください。
- スレッド 1 は、X - のローカル ハード ドライブ ディレクトリにファイルを書き込んでいます
C:\MYDir\
。 - スレッド 2 は のリモート ファイルに書き込みを行っています
\\ServerY\MYDir\
。
これら 2 つの IO 操作は実際には独立しているかどうかを知りたいです。つまり、スレッド 1 は X のハード ディスク コントローラーのみを使用し、スレッド 2 はネットワークのみを使用し、すべてのデータを有線でサーバーに渡します。サーバーY.
または
スレッド 2 も X でローカル キャッシュ データを作成していますか (したがって、X でハードディスク コントローラーを使用しています)。この場合、スレッド 2 の IO 操作がスレッド 1 の操作に干渉し、パフォーマンスが低下する可能性があります。
基本的に、ローカルファイルとリモートファイルへの書き込みを並行して行うと、何かメリットがありますか?
私の質問は、Microsoft Networks や NFS などの Windows でサポートされているリモート ファイル システムに固有のものです。
linux - LVM と Lustre ファイル システム
スケーラブルな大規模なファイルシステムを構築する必要があります。LVM と Lustre はどちらもファイル システムのサイズを動的にスケーリングできるため、LVM と Lustre ファイル システムの相対的な長所と短所を知りたいと思いました。前もって感謝します。
hadoop - HDFS の分割ロジック?
FileInputFormat クラスの isSplittable() メソッドの意味は何ですか? http://hadoop.apache.org/docs/r2.2.0/api/index.html
hdfs - 分散ファイル システムの inotify に似た機能
タイトルのとおり、何かイベントが発生したときに通知をトリガーしたいと考えています。
上記のイベントは、 などのユーザー定義にすることができますupdating specified files in 1-miniute
。
ファイルがローカルに保存されている場合は、システム コールで簡単に作成できinotify
ますが、ファイルが mfs.
作り方は?この問題を解決するためのソリューションやオープンソース プロジェクトがあるかどうか知りたいです。ありがとう。