問題タブ [bigdata]
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.
indexing - 大規模な文書コーパスの再索引付けに対する Solr のアプローチ
現在実行中のインデックスを下げることなく、増え続けるドキュメントのコーパス (現在は数千万件、1 年以内に数億件) を Solr で体系的に再インデックスする方法について、いくつかの推奨事項を探しています。次の理由により、定期的にインデックスを再作成する必要があります。
- 追加のスキーマ フィールドを必要とする既存のコーパスの検索に関する新機能が導入されましたが、これは常に事前に予測することはできません。
- コーパスは、複数のシャードにわたって索引付けされています。一定のしきい値を超えて成長すると、さらに多くのシャードを作成し、それらすべてに均等にドキュメントのバランスを再調整する必要があります (SolrCloud はまだサポートしていないようです)。
現在のインデックスは非常に頻繁に更新や追加が行われるため、数分以内に検索できるようにする必要があります。したがって、コーパスがバッチ オフラインで再インデックス化されるアプローチは、バッチが終了するまでに新しいドキュメントが利用可能になるため、実際には機能しません。
現時点で検討しているアプローチは次のとおりです。
- シャードの新しいクラスターを作成し、古いクラスターがまだ検索に使用できる間に、そこでバッチ再インデックスを作成します。再インデックスされたバッチの一部ではない新しいドキュメントは、古いクラスターと新しいクラスターの両方に送信されます。切り替える準備ができたら、ロード バランサーを新しいクラスターに向けます。
- CoreAdmin を使用します。シャードごとに新しいコアを生成し、インデックスを再作成したバッチを新しいコアに送信します。再インデックスされたバッチの一部ではない新しいドキュメントは、古いコアと新しいコアの両方に送信されます。切り替える準備ができたら、CoreAdmin を使用して動的にコアを交換します。
これらのアプローチのいずれかまたはすべてについて、確認するか穴を開けていただけると幸いです。どちらが適切ですか?それとも完全にオフですか?前もって感謝します。
sql - 別のテーブルから数百万行を挿入する
selectステートメントからテーブルに行を挿入して挿入するより速い方法は?
6M 行で 4 分以上かかる
indexing - SolrDataImportHandlerのチャンク化されたUrlDataSource
solrに最適なデータをインポートするためにデータソースをチャンク化することを検討しており、データをセクションにチャンク化するマスターURLを使用できるかどうか疑問に思っていました。
たとえば、ファイル1には次のようなものがあります。
各チャンクのURLは次のようなものにつながります
私は5億以上のレコードを処理しているので、メモリの問題を回避するためにデータをチャンク化する必要があると思います(SQLEntityProcessorを使用しているときにそれに遭遇しました)。また、5億件以上のウェブリクエストを行うことは避けたいと思います。これは、費用がかかる可能性があるためです。
unit-testing - ビッグデータの単体テストへのアプローチ
システムを設計していて、機能だけでなく、パフォーマンスとスケーラビリティも決定するテストの作成を開始したいとします。さまざまな環境で大量のデータを処理するために共有できる手法はありますか?
real-time - ビッグ データのクエリを実行できるサービスと単純でないクエリ コードを提供できるサービス
巨大なデータ セットを作成したいと考えています (1 行あたり 25 int、1 秒あたり 30 行、これに 60 を掛けます)。一方、特定の条件に一致する行を照会したい (たとえば、25 個の整数のうち 5 個以下の行が特定の範囲外である行)。
そして、すべてをリアルタイムで、つまり挿入とクエリを継続的に行いたいと考えています。
できればクラウドサービス(Amazon?Google?)を使用して、誰かがそれを行う方法を知っていますか?
ありがとう
mongodb - バグ データベースを処理するための最良の手法 (並列計算?)
私は、私たちのウェブサイトのすべての Google アナリティクス データを抽出して分析し、データベースに入れ、そのデータに関するレポートを作成するというタスクを与えられました。問題は、テーブルに 200 万近くのレコードができてしまうことです。レポートはいくつかの SUM() および AVG クエリで構成されており、場合によっては時間がかかりすぎることが想像できます (日付フィルターを設定せず、広範囲の条件 (レポートの種類によって異なります) で最悪の場合) は 8 ~ 10 分かかります)。ユーザーがこれらのレポートにアクセスできることを考えると、今回は受け入れられません...現在、プロジェクトはPostgresを使用しています。特に単一のマシンで実行している RDMS では、この種のデータを 10 秒未満で処理できないことは十分承知しています。
問題は、良い結果を達成するためのソフトウェアとアーキテクチャ/技術の最良の選択は何かということです。
MongoDb を試してみましたが、シングル スレッドであるため、map/reduce は 1 台のマシンで実際には高速に動作しません (少なくとも現時点では)。
おそらく並列システムを検討していることはわかっていますが、まだ確信が持てません... mongoDBを快適に使用でき、クラスタリングや複数のノードの使用などすべてに関して大幅に改善されていることを読みましたが、誰か他の意見や経験を共有したいと思います計算能力だけでなく、価格面でも最も効率的な方法で。
ありがとう
PSpostgresがこの量のデータを処理する必要があるという回答のいくつかに関して、私はいくつかの詳細を投稿しています:
テーブル構造:
クエリの例:
java - FastScatterPlot と LineChart を組み合わせたグラフ @ JFreeChart with Big Data (680 万エントリ ~80MB)
LinePlot と組み合わせた FastScatterPlot を表示するのが好きです。これらのチャートを結合されたプロットに結合することは何とか可能ですか? 残念ながら、開発者ガイドに関してはそうではないようです?! 少なくとも例はありません。XYDataset でのみ可能のようですが、2 次元配列を使用してデータを保持する FastScatterPlot の代わりに、次のように XYDataset に add() メソッドを設定する必要があります。
これは遅くなり、最終的にスタック オーバーフローが発生します (ヒープ サイズは既に 512MB です)。したがって、チャートの表示に成功する FastScatterPlot を使用しています。しかし、前述のように、LineChart などと組み合わせる方法がわかりません。これまでの短縮コードは次のとおりです。
java - ML /データマイニング/ビッグデータ:プログラミングとコミュニティサポートに人気のある言語
この質問が正しいかどうかはわかりませんが、私が持っている疑問を解決するように求めています。
- の場合
Machine Learning/Data Mining
、データについて学習する必要があります。つまりHadoop
、の実装があるデータJava
について学習する必要がありますMapReduce
(間違っている場合は修正してください)。 - Hadoopは
streaming api
、他の言語(などpython
) のサポートも提供します - 私が知っているほとんどの大学院生/研究者はPythonでMLの問題を解決します
hadoop and Java combination
非常に頻繁に 求人情報を見る
私は、Java
とPython
(私の観察では)がこのドメインで最も広く使用されている言語であることを観察しました。
- 私の質問は
most popular language
、このドメインで作業するためのものです。 - どの
factors
言語/フレームワークを選択するかを決定する際に何が必要か - 私はJavaとPythonの両方を知っていますが、常に混乱しています:
- でプログラミングを開始するかどうか
Java(because of hadoop implementation)
- でプログラミングを開始するかどうか
Python(because its easier and quicker to write)
- でプログラミングを開始するかどうか
これは非常に自由形式の質問です。アドバイスは私と同じ疑問を持つ人々に役立つと確信しています。
よろしくお願いします
database - 大規模な天体物理シミュレーション データのデータストア
私は天体物理学の大学院生です。私は、大部分が他の人が 10 年ほどかけて開発したコードを使用して、大規模なシミュレーションを実行しています。これらのコードの例については、ガジェットhttp://www.mpa-garching.mpg.de/gadget/と enzo http://code.google.com/p/enzo/を参照してください。これらは間違いなく最も成熟した 2 つのコードです (異なる方法を使用しています)。
これらのシミュレーションから得られる成果は膨大です。コードによって、データは少し異なりますが、常にビッグ データです。通常、何十億もの粒子とセルを使用して、現実的なことを行います。最大の実行は、スナップショットあたり数テラバイト、シミュレーションあたり数百のスナップショットです。
現在、この種のデータを読み書きする最良の方法は、基本的にバイナリ ファイルを使用する体系的な方法であるHDF5 http://www.hdfgroup.org/HDF5/を使用することです。これは、カスタム ヘッダー ブロックを使用したフォーマットされていないバイナリ ファイルに比べて大幅に改善されていますが (それでも悪夢に悩まされます)、これを行うためのより良い方法があるのではないかと思わずにはいられません。
ここで問題になるのは膨大なデータ サイズだと思いますが、テラバイト単位のバイナリ データを効率的に処理できる何らかのデータストアがあるのでしょうか、それとも現時点ではバイナリ ファイルが唯一の方法なのでしょうか?
それが役立つ場合は、通常、データを列ごとに保存します。つまり、すべての粒子 ID のブロック、すべての粒子位置のブロック、粒子速度のブロックなどがあります。これは最もきれいではありませんが、あるボリュームで粒子ルックアップのようなことを行うには最速です。
編集:問題について曖昧で申し訳ありません。これはデータの保存方法ではなく、データ構造の問題である可能性があるという Steve の意見は正しいです。今すぐ走らなければなりませんが、今夜か明日遅くに詳細をお知らせします.
編集 2:したがって、これを調べれば調べるほど、これはおそらくデータストアの問題ではないことがわかります。フォーマットされていないバイナリの主な問題は、データを正しく読み取る (ブロック サイズと順序を正しく取得し、それを確認する) という頭痛の種でした。HDF5 ではそれがほぼ修正されており、ファイル システムの制限が改善されるまで、より高速なオプションはありません (Matt Turk に感謝)。
新しい問題は、おそらくデータ構造に帰着します。HDF5 は、クエリを実行するのに最適なインターフェイスではありませんが、最高のパフォーマンスを発揮します。データベースに慣れているので、「いつでも x を超える速度のすべての粒子を教えてください」などのクエリを実行できると、非常に興味深い/強力だと思いました。今でもそのようなことはできますが、より低いレベルで作業する必要があります。もちろん、データがどれだけ大きいかを考えると、それを使って何をするかにもよりますが、パフォーマンスのために低いレベルで作業することは良いことかもしれません.
xml - Facebook などのサイトは、個人プロファイルのデータを保存するためにどのような形式を使用していますか?
私は最近、XML ファイルに格納された大量のデータ セットを扱い始めました。Facebook やその他のネットワーキング サイトでは、個々のプロファイル (名前、プロファイル写真、ウォール投稿など) に関連付けられたすべての情報がどのように保存されているのか、常に疑問に思っていましたが、XML はそれほど多くの情報を保存する最良の方法ではないと感じています。私はグーグルでそれに関する情報を見つけようとしましたが、あまり運がありませんでした.
Facebook などの巨大なサイトは、どのように大量のデータを保存し、処理するのでしょうか? これを読んでみたいので、何か良いサイトをご存知でしたら教えてください!