11

20 コア、92 GB の RAM、および 100 GB の HDD ストレージを備えた Linux を実行しているコンピューターにアクセスできます。大量のデータ (1M 語以上、1B 語以上の組み合わせ) を扱うタスクに Hadoop を使用したいと考えています。1 台のコンピューターで Hadoop の機能を活用するには、疑似分散モードと完全分散モードのどちらが最適ですか?

私の Hadoop の使用目的では、データ損失が発生したり、ノード障害のためにジョブを再実行しなければならないことは大きな問題ではありません。

Linux コンテナーを含むこのプロジェクトは、完全分散モードを使用します。この記事では、疑似分散モードについて説明します。詳細については、こちらをご覧ください

4

6 に答える 6

11

私の理解では、20 コアのマシンが 1 台あります。この場合、仮想化する必要はありません。作成する VM は、総リソースから一部のリソースを消費するためです。最適なオプションは、ラップトップに Linux OS をインストールし、hadoop を疑似分散モードでインストールして、コンテナーの割り当てに使用可能なリソースを構成することです。

優れたパフォーマンスを得るには、CPU コアとメモリが必要です。したがって、20 コアだけでは役に立ちません。十分な量の物理メモリも必要です。メモリの割り当てについては、このドキュメントを参照できます。

Hadoop の背後にある基本は、コスト効果の高い方法で大量のデータを処理するための分散コンピューティングとストレージです。したがって、仮想化を使用して同じ親マシン (小さなマシン) で複数のマシンを実現しようとすると、個々のマシンの OS によって多くのリソースが消費されるため、役に立ちません。代わりに、マシンに Hadoop をインストールし、リソースを Hadoop に適切に構成すると、ジョブは (可用性と要件に応じて) 複数のコンテナーで実行されるため、並列処理が行われます。したがって、既存のマシンから最大限のパフォーマンスを引き出すことができます。

したがって、最適なオプションは、疑似分散クラスターをセットアップし、リソースを適切に割り当てることです。疑似分散モードは、すべてのデーモンが単一のマシンで実行されるモードです。

共有したハードウェア構成を使用すると、hadoop セットアップに以下の構成を使用できます。これで十分な負荷を処理できます。

(yarn-site.xml)    yarn.nodemanager.resource.memory-mb  = 81920
(yarn-site.xml)    yarn.scheduler.minimum-allocation-mb = 1024
(yarn-site.xml)    yarn.scheduler.maximum-allocation-mb = 81920
(yarn-site.xml)    yarn.nodemanager.resource.cpu-vcores = 16
(yarn-site.xml)    yarn.scheduler.minimum-allocation-vcores = 1
(yarn-site.xml)    yarn.scheduler.increment-allocation-vcores = 1
(yarn-site.xml)    yarn.scheduler.maximum-allocation-vcores = 16
(mapred-site.xml)  mapreduce.map.memory.mb  = 4096
(mapred-site.xml)  mapreduce.reduce.memory.mb   = 8192
(mapred-site.xml)  mapreduce.map.java.opts  = 3072
(mapred-site.xml)  mapreduce.reduce.java.opts   = 6144
于 2015-08-05T09:24:10.980 に答える
4

単一のマシンを使用していると、Hadoop のすべての利点が失われます。ええ、コンテナーまたは VM を使用できますが、その必要はありません。20 個のマッパー/リデューサー スロットを備えた MapReduce を備えた 単一のスタンドアロン ノード インスタンスは、単一のマシンで実行されている完全に分散されたクラスターよりも優れたパフォーマンスを発揮します。

更新: 疑似分散モードを使用すると、M/R ジョブ中にすべてのコアを使用するのに適している場合があります。どうやら、スタンドアロンは単一の Java インスタンスで実行されますが、これはおそらくあなたのユースケースには理想的ではありません。

于 2015-07-30T20:27:28.613 に答える
0

ハードウェアがサポートしている場合は、VMware esxi プラットフォームで完全分散モードの Hadoop クラスターを使用してください。あなたのリソースを活用するための最良の方法のようです

于 2015-08-08T18:59:35.433 に答える
0

クラスター内にマシンが 1 台しかないことを考えると、Hadoop の真のメリットを活用できるとは思えません。私の意見では、より簡単でより良い代替手段は次のとおりです。

  1. 疑似分散モードを使用して、Hadoop にデータを保存してください。

  2. Hadoop に格納されたデータの上に任意のメモリ内データベース ( Impala または Presto または Spark ) を使用します。

  3. Impala の構文は Hive とまったく同じであり、クエリのためにデータに追加の変更を加える必要はありません。または、機械学習関連のタスクに Spark ML Lib を使用できます。

于 2015-08-07T07:34:19.023 に答える
0

すべてのコアを活用する最善の方法は、
方法 1 です。ハードウェアがサポートしている場合は仮想化を使用し (esxi またはハイパーバイザーのいずれかをインストール)、Linux マシンの VM インスタンスを作成するか、openstack クラウドをインストールして VM を作成し、コアを完全に活用できるようにします。ハードウェア。
方法 2:これは、ホスト OS をマシンにインストールし、VMware または Virtualbox をインストールするという簡単な方法で実現できますが、ハードウェアに 2 つの層 (b/w) があり、hadoop のパフォーマンスは方法 1に比べて少し低下します。

この後、好みの Hadoop フレーバーをインストールできます。

疑似分散モードではレプリケーション係数が 1 であるのに対し、分散モードではデフォルトのレプリケーション係数が 3 であるため、システムがクラッシュした場合にデータが失われる可能性があるため、常に分散モードを使用することをお勧めします。モードでは、各デーモンが 1 つの Java スレッドでスピンアップし、単一のスレッドが失われたとしても、MR ジョブ全体が再度実行される可能性があります。

編集: 100 GB のストレージとほぼ等しいメモリ (データが 100 GB 未満であると仮定) の構成を見ると、疑似クラスターを使用できます。スパークは mapreduce の同等の操作をサポートしているため、 Sparkを使用したインメモリ処理の利点を活用できます。 SQL、dataframes、mllib、graphX (Python もネイティブに付属)、または R を知っている場合は、spark 1.4 を使用して R を直接使用できます (spark は Hadoop よりも高速であるため)

于 2015-08-04T12:17:10.373 に答える
-1

完全分散モード」は、Hadoop フレームワークを最大限に活用できる最適な選択です。

于 2015-08-08T15:01:07.040 に答える