Hadoop、HDFS、MapReduce、Habse、Spark、Yarnは何をしますか?

Hadoopは、Apache Foundationによって開発された分散システムインフラストラクチャです。ユーザーは、分散の基本的な詳細を理解せずに分散プログラムを開発できます。クラスターの能力を最大限に活用して、高速コンピューティングとストレージを実現します。Hadoopは分散ファイルシステム(Hadoop分散ファイルシステム)を実装します。その1つがHDFSです。HDFSは、フォールトトレランスが高いという特徴があり、低コストのハードウェアに展開するように設計されています。また、アプリケーションデータにアクセスするためのハイスループット(ハイスループット)を提供します。セット)アプリケーション。HDFSはPOSIXの要件を緩和し、ストリーミングアクセスの形式でファイルシステムのデータにアクセスできます。Hadoopフレームワークの中核となる設計は、HDFSとMapReduceです。HDFSは大量のデータのストレージを提供し、MapReduceは大量のデータの計算を提供します

  1. Hadoop 1.0ここに画像の説明を挿入
  2. Hadoop 2.0
    ここに画像の説明を挿入

HDFS

HDFS(Hadoop Distributed FileSystem)は、本質的に数十万のマシンにまたがる可能性がある大量のデータ用に設計されていますが、表示されるのは、多くのファイルシステムではなく1つのファイルシステムです。たとえば、/ hdfs / tmp / file1のデータを取得したい場合、ファイルパスを参照していますが、実際のデータは多くの異なるマシンに保存されています。ユーザーとして、1台のマシン上のファイルのトラックとセクターを気にしないのと同じように、これらを知る必要はありません。

MapReduce

同様のHDFSに保存されている巨大なテキストファイルを数える場合は、このテキスト内の各単語の頻度を知りたいと考えてください。MapReduceプログラムを開始しました。Mapはテキストファイルをさまざまなマシンに配布し、Reduceは各マシン上の単語の頻度を収集して集計します。

非常に多くの乱雑なツールがあり、すべて同じクラスターで実行されているため、全員がお互いを尊重し、秩序だった方法で作業する必要があります。したがって、もう1つの重要なコンポーネントはスケジューリングシステムです。最も人気のあるものは糸です。オープンソースの観点から見ると、YARNの提案は、複数のコンピューティングフレームワークの賛否両論をある程度弱めています。YARNはHadoop MapReduceに基づいて進化しました。MapReduceの時代には、多くの人々がMapReduceは反復計算や失われた計算に適していないと批判しました。そのため、SparkやStormなどの計算フレームワークが登場しました。これらのシステムの開発者は独自のWebサイトにいます。または、ペーパーのMapReduceと比較して、システムがいかに高度で効率的であるかを主張してください。YARNの登場後、状況は明らかになりました。MapReduceはYARNで実行されている一種のアプリケーション抽象化であり、SparkとStormは基本的に同じですが、さまざまな種類のアプリケーション開発について、長所と短所の間に違いはありません。それぞれに独自の長所があり、マージおよび共存します。さらに、将来のすべてのコンピューティングフレームワークの開発も、当然のことながらYARNの上にあるはずです。このようにして、YARNを基盤とするリソース管理プラットフォームと、その上で実行される複数のコンピューティングフレームワークを備えたエコシステムが誕生しました。

ハイブ、豚

MapReduceプログラムを書くのは本当に面倒です。彼らはこのプロセスを簡略化したいと考えています。アセンブリ言語を持っているようなもので、ほとんどすべてのことを実行できますが、それでも面倒です。アルゴリズムとデータ処理フローを記述するために、より高度で抽象的な言語層が必要です。だから豚とハイブがありました。PigはMapReduceを記述するスクリプトに近いですが、HiveはSQLを使用しています。スクリプトとSQL言語をMapReduceプログラムに変換し、計算エンジンに任せて計算するだけで、面倒なMapReduceプログラムから解放され、プログラムをよりシンプルで直感的な言語で記述できます。

テズ、スパーク

MapReduceでHiveを実行するには、最初にSQL言語をMapReduceプログラムに変換する必要がありますが、これは非常に低速です。しかし、データ分析のために、人々は常により速く走ることを望んでいます。たとえば、過去1時間に特定のページに滞在したユーザーの数と滞在時間を確認したい場合、大量のデータを含む巨大なWebサイトの場合、このプロセスには数十分から数時間かかる場合があります。Tez / SparkとSparkSQLのHive。彼らの設計哲学はMapReduceが遅いということですが、SQLを実行するために新世代の汎用コンピューティングエンジンTezまたはSparkを使用すると、より速く実行できます。また、ユーザーは2つのシステムを維持する必要がありません。

ストーム、ストリーミング

私がWeiboのような会社であった場合、24時間のホットブログではなく、常に変化するホットリストを見たいと思います。更新の遅延は1分以内であり、上記の方法では適切ではありません。そこで、ストリーミング(ストリーミング)コンピューティングという別のコンピューティングモデルが開発されました。ストームは最も人気のあるストリーミングコンピューティングプラットフォームです。ストリームコンピューティングの考え方は、よりリアルタイムの更新を実現したい場合、データストリームが入ったときに処理しないのはなぜですか?たとえば、これはまだ単語頻度統計の例ですが、私のデータストリームは単語単位であり、それらを流れさせてカウントを開始します。ストリーミングの計算は非常に強力であり、基本的に遅延はありませんが、その欠点は柔軟性がないことです。何をカウントするかを事前に知っておく必要があります。結局のところ、データフローがなくなっており、カウントしていないものは補正できません。したがって、それは良いことですが、上記のデータウェアハウスとバッチ処理システムを置き換えることはできません。

ハイブ、Hbase

ハイブはファイルのビューであり、hbaseはインデックス付きのKey-Valueテーブルであることを簡単に理解できます。

  1. Hiveのテーブルは純粋に論理的なテーブルであり、テーブルの定義、つまりテーブルのメタデータにすぎません。Hive自体はデータを保存せず、HDFSとMapReduceに完全に依存しています。このようにして、構造化データファイルをデータベーステーブルとしてマップし、完全なSQLクエリ関数を提供し、SQLステートメントを最終的にMapReduceタスクに変換して実行できます。HBaseテーブルは、非構造化データを格納するのに適した物理テーブルです。
  2. HiveはMapReduceに基づいてデータを処理し、MapReduceはデータを行ベースモードで処理します。HBaseは、データを行ベースモードではなく列ベースモードで処理します。これは、大量のデータへのランダムアクセスに適しています。
  3. HBaseテーブルは緩やかに格納されているため、ユーザーは行に異なる列を定義できます。Hiveテーブルは密集しています。つまり、定義されている列の数と、各行には固定数の列のデータがあります。
  4. HiveはHadoopを使用してデータを分析および処理します。Hadoopシステムはバッチ処理システムであるため、処理の低遅延を保証できません。HBaseは、リアルタイムクエリをサポートするほぼリアルタイムのシステムです。
  5. Hiveは行レベルの更新を提供しないため、多数の追加専用データセット(ログなど)のバッチ処理に適しています。HBaseに基づくクエリは、行レベルの更新をサポートしています。
  6. Hiveは完全なSQL実装を提供します。これは通常、履歴データに基づくマイニングと分析に使用されます。HBaseは、結合、マルチレベルインデックス、複雑なテーブルリレーションシップを伴うアプリケーションシナリオには適していません。

飼育係

ZooKeeperは、分散型、オープンソースの分散型アプリケーション調整サービス、Googleのチャビーのオープンソース実装であり、HadoopおよびHbaseの重要なコンポーネントです。分散アプリケーションに一貫したサービスを提供するソフトウェアであり、提供される機能には、構成のメンテナンス、ドメインネームサービス、分散同期、グループサービスなどがあります。

https://www.cnblogs.com/zhangwuji/p/7594725.html
https://www.zhihu.com/question/21677041

おすすめ

転載: blog.csdn.net/qq_33431394/article/details/108703551