私はHadoopのを使用している、彼らに言った「?あなたはビッグデータとHadoopの用語で多くの経験を持っていますか」、頼まれたが、私はめったにTBの数よりも多くを持っていないデータセットを扱います。
彼らは、私に尋ねた、「あなたは、単純なグループ化と統計を行うためにHadoopを使用することはできますか?」私は、私はちょうど私がファイル形式のいくつかの例を参照してくださいする必要があり、それらを伝えることができ、もちろん言いました。
彼らは、これらのデータは私の解決策ではなく、Hadoopののpandas.read_csvファイルを必要とする、私は理解できない何らかの理由で、彼らは非常に満足している、サンプルデータをいないように見える私のデータの600メガバイトが含まれているフラッシュドライブを手渡しました。
Hadoopの事実は、多くの制限があります。Hadoopのは、私は擬似コードで以下に説明する、あなたは、汎用コンピューティングを実行することができます:
ビッグデータ
目標:図書館の本の数を計算します
地図:あなたは奇妙な本棚文字の数をカウントし、私が偶数の本棚文字の数をカウントします。(より多くの人々、より高速な統計)
削減:私たちは一人で一緒に統計データを。
すべての固定の中間工程においてパフォーマンスの最適化に加えて、F(K、V)とG(K、V):我々は2つだけを行います。
これは、マップ内のグループ化や統計、すべての計算を行うために、実際には、他のモデルのより適切な選択を計算する多くのタイツを身に着けているような操作を実行する方法をあなたに強制されます。これは非常に大きなデータセットに拡張することができる、そしてほとんどの場合、あなたのデータは大きさの少量数桁かもしれタイツを着用する唯一の理由。
しかし、「ビッグデータ」と「Hadoopの」これらの2つの人気の単語に多くの人々が実際にHadoopを必要としない場合でも、彼らが着用して喜んでいる「タイツを。」
データの量は、私は数メガバイトだった場合、最初に、Excelはそれをロードすることができない場合があります
私はパンダが好き - Excelソフトウェアについては、「ビッグデータ」は、ビッグデータはありませんが、実際には、あなたが使用することができ、他の優れたツールがあります。ベクター形式で効果的であるように、パンダnumpyのライブラリは、メモリにロードされたデータのメガバイト数を上に構築されました。私はノートパソコンを購入していた3年間で、それは浮動小数点数のnumpyの億が掛け合わさ目の点滅で使用することができます。MATLABおよびRはまた、優れたツールです。
データボリュームの数百メガバイトのために、典型的なアプローチは、単純なPythonスクリプトは、行毎にファイルを読み込み、書き込み、およびそれに対処する、別のファイルに書き込むことです。
第二に、私のデータは、10ギガバイトそれがある場合
私はそれがSSD 16GBのメモリと256ギガバイトを持って、新しいノートパソコンを買いました。あなたはパンダの10ギガバイトにCSVファイルをロードする場合、それはメモリの非常に小さな量は実際にある - その結果は、そのような商品の「17284832583」のバイト4のように8つのバイトとして、数値文字列に保存されています8バイトの倍精度浮動小数点数の文字列として整数、またはストア「284,572,452.2435723」。
最悪のケースでは、おそらくすべてのデータが同時にメモリにロードされて置くことができないということです。
第三に、私のデータはそれの100ギガバイト、500ギガバイトまたは1TBの場合
2TBまたは4TBのハードディスクを購入し、それに対処するために、デスクトップPCまたはサーバー上でPostgreをインストールします。
四、SQLスクリプトやPythonよりもHadoopのはるかに少ないです
Hadoopのは、SQLよりも弱い、表現の換算ではなく、Pythonスクリプトよりも弱いです。
SQLはだけでなく、非常に高速で、SQLクエリは非常に簡単です、ビジネス分析に適した非常に簡単なクエリ言語です - 正しいインデックス、セカンドレベルのクエリまたはクエリを使用して、データベースが別の問題である場合。
Hadoopのは、インデックスなしで、唯一の完全な表はHadoopのスキャンコンセプトは、Hadoopのは、抽象度の高い漏れた - 私は、データ分析に費やす時間よりもはるかに大きいのJavaメモリエラーに対処するための時間、ファイルの断片化およびクラスター競争力の多くを過ごしました。
あなたのデータは、(例えば、プレーンテキスト、JSONオブジェクト、バイナリ・オブジェクトなど)構造化データとしてSQLテーブルのようではない場合、通常は直接の行にデータを処理するための小さなPythonスクリプトを書いて。データは、ファイル、各ファイルの処理などに格納されます。それはHadoopのであれば非常に面倒です。
SQLまたはPythonスクリプトでは、Hadoopを比較してはるかに遅いです。インデックスの正しい使用した後、SQLクエリは、常に非急速--PostgreSQL簡単な検索インデックス、正確なキーを取得しています。Hadoopのは、それがテーブル全体の順序を変更し、全表スキャンです。複数のコンピュータ上のデータテーブルをスライスして、並べ替えが非常に高速です。一方、およびHadoopのノード名を繰り返す必要の処理バイナリオブジェクト、オブジェクトは、データを検索し、処理することです。これは、達成するために使用するPythonスクリプトに適しています。
第五に、私はデータの5TB以上です
あなたはあまりにも多くの選択肢を行うことなしに、Hadoopの使用を検討してください。
唯一の利点は、Hadoopのスケーラビリティの使用は非常に良いです。あなたはデータのTBの数を含むテーブルを持っている場合は、Hadoopのは、全表スキャンのためのオプションがあります。あなたがデータテーブルのような大規模な量を持っていない場合は、Hadoopのの使用などの疫病のように避けるべきです。この問題を解決するために、このような使用の伝統的な方法が容易になります。
六、Hadoopのは、優れたツールです
私はHadoopのを選ぶだろう、他のツールとのデータを扱うことができないとき、私は、Hadoopのを嫌いではありません。また、私は火傷を使用することをお勧めします、ハイブや豚を使用しないでください。火傷は、Hadoopのタスクチェーン、下に隠されたMapReduceを書くためにScalaの言語をサポートしています。
推奨読書
40 +すべてここにビッグデータ開発[W]チュートリアルの年俸!
大規模なデータ配列を共有するためのトレーニングプログラマはシェルで説明します