ビッグデータは、今日のテクノロジー界におけるホットなITバズワードです。Hadoopは特にビッグデータ処理タスクに適しており、分散ファイルシステムを利用してデータの塊をクラスタ内のノードに確実かつ安価に複製することができます。Anoop Kumar氏が、Hadoopでビッグデータを処理するために必要なヒントを提供します。
HDFSからのデータのインポート/エクスポートに関して、Anoopは、Hadoopの世界では、データは多くの異なるソース()からHadoop分散ファイルシステムにインポートすることができると指摘しています。HDFSにデータをインポートした後、そのデータは、etc.のような言語やその他の言語を使用することで、一定のレベルで処理されます。
Hadoop システムは大量のデータを扱う柔軟性を提供するだけでなく、データのフィルタリングや集計を可能にし、変換されたデータは外部データベースや使用する他のデータベースにエクスポートすることができます。、SQL Server、などの他のデータベースからのデータのエクスポートも強力な機能です。これはデータをより良く制御できるという利点があります。
HadoopのデータはHDFS上に保存され、データの圧縮と解凍をサポートしています。データ圧縮は、bzip2、gzip、LZOなどの圧縮アルゴリズムによって実現できます。異なるアルゴリズムは、圧縮/解凍の速度やファイルを分割する機能などの機能に基づいて、さまざまな状況で使用できます。
Hadoopによる変換の観点から、Hadoopは大量のデータの抽出と変換に理想的な環境です。同時に、Hadoopはスケーラブルで信頼性の高い分散処理環境を提供します。MapReduce、Hive、Pigを使用することで、さまざまな方法でデータを抽出し、変換することができます。
入力データがHDFSにインポートまたは配置されると、その後はHadoopクラスタを使用して大規模なデータセットを並列に変換できます。前述のように、データ変換は利用可能なツールで実現できます。例えば、データをタブ区切りファイルに変換したい場合、MapReduceは***ツールの1つです。同様に、HiveとPythonはジオイベントデータセットのクリーニングと変換に使用できます。
汎用的なタスクを実現する方法について、Anoop氏は、日々のデータ処理で実行する必要がある汎用的なタスクは数多くあり、その使用頻度も高いと説明します。Hive、Pig、MapReduceのような利用可能な言語は、これらのタスクを支援し、生活を容易にします。
あるタスクが複数の方法で達成できることもあります。このような場合、開発者やアーキテクトは最も正しいソリューションを実装するために正しい判断をしなければなりません。例えば、HiveとPigはデータフローとクエリ間の抽象化レイヤーを提供し、それらが生成するようにコンパイルされたMapReducワークフローを提供します。Hiveは、HiveQLを使用してデータを構築および分析し、Pig Latinで操作を記述することでPig言語を利用できます。
Hadoopでは、大量のデータを結合するために、一般的に、データを複数のデータセットに結合して処理し、連携させて最終的な結果を得る必要があります。Hadoopで複数のデータセットを結合する方法はたくさんあります。MapReduceは、Map側とReduce側でデータへの結合を提供します。これらの結合は自明ではなく、非常に高価な操作になる可能性があります。PigとHiveは複数のデータセットに結合を適用する同じ機能を持っています。Pigはコピー結合、マージ結合、スキュー結合を提供し、Hiveはデータを分析するためにマップ側結合と完全な外部結合を提供します。重要な事実は、MapReduce、Pig、Hiveのような様々なツールを使用することで、内蔵の機能と実際のニーズに基づいてデータを使用できるということです。
Hadoop、Anoopで大量のデータを分析する方法」では、ビッグデータ/Hadoopの世界では通常、問題は複雑でなく、解決策も簡単である場合がありますが、課題はデータ量であると指摘しています。この場合、問題を解決するにはさまざまなソリューションが必要です。分析タスクの中には、ログファイルから明示的なIDの数をカウントしたり、特定の日付範囲で保存されたデータを変換したり、ウェブユーザーのランキングを作成したりするものがあります。これらのタスクはすべて、MapReduce、Hive、Pig、Giraph、Mahoutなど、Hadoopの複数のツールやテクニックの助けを借りて解決できます。これらのツールは、カスタムルーチンの助けを借りて機能を拡張する柔軟性を持っています。
例えば、グラフや機械学習の問題は、MapReduceタスクの代わりにGiraphフレームワークを使うことで、複雑なアルゴリズムを書かずに解くことができます。Giraphフレームワークは、MapReduceタスクよりもグラフや機械学習の問題を解くのに便利です。
Hadoop環境におけるデバッグの必要性は、Hadoop自体の必要性と同じくらい重要です。フォーマットエラーや予期せぬ入力はよくあることであり、そのためにすべてが大規模に壊れてしまうという議論があります。これは、大規模な非構造化データを扱う際の残念な欠点です。
個々のタスクは分離され、異なるグループから入力されますが、さまざまなイベントをトレースする際には、各タスクの状態を理解する必要があります。これは、Hadoopタスクのデバッグプロセスをサポートするさまざまな利用可能なツールや技術によって実現できます。例えば、ジョブの失敗を避けるために、不良レコードをスキップする方法があり、MapReduceのカウンターは不良レコードなどを追跡するために使用できます。
Hadoopシステムを簡単に制御するためには、製品の開発は重要な活動であり、製品の将来を決めるシステム保守も同様に重要です。Hadoopでは、環境のセットアップ、メンテナンス、環境の監視、MapReduceタスクの処理とチューニングが、Hadoopシステムの恩恵を受けるために非常に必要です。このため、Hadoopはシステム全体を制御するための大きな柔軟性を提供しています。Hadoopは3つの異なるモード、すなわちスタンドアロンモード、擬似分散モード、完全分散モードで構成することができます。
Gangliaフレームワークの助けを借りて、システム全体を監視し、ノードの健康状態を追跡することができます。さらに、パラメータ設定機能によってMapReduceのタスク制御が可能になり、Hadoopシステムはシステム全体の制御レベルを簡単に扱える柔軟性を持っています。
スケーラブルな永続性。Accumuloは、GoogleのBigTableの設計に触発され、Hadoop、Zookeeper、Thriftの上に構築されています。Accumuloは、BigTableの設計にインスパイアされ、Hadoop、Zookeeper、Thriftの上に構築され、データのバックアップのためにスケーラブルで分散したセルベースの永続性をHadoopに提供します。
Hadoopでのデータの読み取りと書き込みはHDFS上で行われます。HDFSはHadoopの分散ファイルシステムで、フォールトトレラントな分散ファイルシステムです。HDFSは、ファイルストリーム読み取りを行う際に大きなファイル用に最適化されており、I/Oスループットよりも低レイテンシを優先します。APIファイルシステム、MapReduce、高度なシリアライゼーションライブラリなど、HDFSからファイルを効率的に読み書きする方法はたくさんあります。




