2011-10-19 10 views
12

私はhadoopで新しくなっていますので、疑問があります。マスターノードに障害が発生した場合、ハープループクラスタはどうなりましたか?失われずにそのノードを回復できますか?現在のマスターノードに障害が発生した場合に、セカンダリマスターノードをマスターに自動的に切り替えることは可能ですか?Hadoopデータノード、ネームノード、セカンダリネームノード、ジョブトラッカーとタスクトラッカー

私たちはnamenode(Secondary namenode)のバックアップを持っているので、失敗したときにSecondary namenodeからnamenodeを復元することができます。このように、データノードに障害が発生した場合、どのようにデータをデータノードに復元することができますか?セカンダリnamenodeはnamenodeのバックアップだけではなく、datenodeへのバックアップです。ノードがジョブの完了前に失敗してジョブトラッカーにジョブが保留されている場合、そのジョブは空きノードの最初から続行または再開されますか?

何か問題が発生した場合、クラスタデータ全体を復元するにはどうすればよいですか?

私の最終的な質問は、MapreduceでCプログラムを使用することができますか(たとえば、mapreduceのバブルソート)?事前

答えて

14

おかげで現在のHadoopクラスタは名前ノードである単一障害点があります。

と、(apache wikiから)セカンダリノードのisssueについて:

用語 "二名ノード" は幾分誤解を招きます。データノードがセカンダリの ネームノードに接続できないという意味で ネームノードではなく、何もその障害の場合の のプライマリネームノードを置き換えることはできません。

2次ネーム・ノードの唯一の目的は、定期的な のチェックポイントを実行することです。セカンダリネームノードは定期的に現在の ネームノードイメージをダウンロードし、ログファイルを編集して新しいイメージに結合し、 は新しいイメージを(プライマリおよび唯一の)ネームノードにアップロードします。 ユーザーガイドを参照してください。

したがって、名前ノードに障害が発生し、同じ物理的な ノードでノードを再起動できる場合、データノードをシャットダウンする必要はありません。名前ノード を再起動する必要があります。古いノードをもう使用できない場合は、 は別の場所で最新のイメージをコピーする必要があります。最新のイメージは、 が見つかった場合、障害の前にプライマリになっていたノードのいずれかに見つかった可能性があります。またはセカンダリ名ノード上で実行されます。後者は 最新のチェックポイントになります。後で編集するログはありません。つまり、最も最近の名前空間の変更は です。この場合は、 もクラスタ全体を再起動する必要があります。

この単一障害点を克服するには、微妙な方法があります。クロウダ分布を使用している場合は、方法の1つがhereと説明されています。このspofを処理するMaprディストリビューションはdifferent wayです。

最後に、すべてのプログラミング言語を使用して、マップの書き換えをhadoop streaming以上にすることができます。

+5

多くの人がセカンダリnamenodeを「チェックポイントノード」と呼んでいます。これは良いことです。 –

+0

STDIN/STDOUTに読み書きできるプログラミング言語は、Hadoop Streamingで使用できます。 Hadoopストリーミングを簡単にするための[フレームワーク](http://goo.gl/aaVYN)がいくつかあります。 –

21

あなたの質問に答えるには遅すぎますが、他人を助けるかもしれません。

すべての第一は、私はセカンダリネームノードをご紹介しましょう:

それは名前空間の画像が含まれ、過去1 時間(設定可能)のためにファイルバックアップをログ編集します。また、最新の名前ノード NameSpaceImageをマージし、ログファイルを編集して名前ノードにアップロードし、古いものを として置き換えます。クラスタ内にセカンダリNNを持つには、 が必須ではありません。

今、あなたの懸念に来..

  • マスターノードは、Hadoopクラスタを何が起こったのか失敗した場合は?虚弱の答えを支える

、 が失敗したマスターノードが停止します使用している地図-減らすか、または任意の他のようなあなたの現在実行中のタスクのはいのHadoopは、単一障害点を持っているので 全体。 クライアントを含むクラスタ全体が機能しなくなります。

  • 我々は損失なしに、そのノードを復旧することはできますか?すべて データ(ブロックレポートが)最後のバックアップで撮影した後 ノードに名前を付けるために、データ・ノードによって送信された失われますよう失うことなく、仮定で

は、それは、少なくとも可能です二次名ノード。私が を最低限に言及したのはなぜなら、成功したバックアップの直後に名前ノードが失敗した場合、二次名ノードで を実行すると、それは安全な状態になります。

  • それは、現在のいずれかに障害が発生したマスターに自動的に切り替えるには、二次マスターノードを維持することは可能ですか?

これは、管理者(ユーザ)が可能starightです。 を自動的に切り替えるには、ネイティブコードをクラスタから書き出す必要があります。コード は、セカンダリ名ノード を構成し、新しい名前のノードアドレスでクラスタを再起動するクラスタを監視します。

  • 私たちは、名前ノード(セカンダリ名前ノード)のバックアップを持っているので、それが失敗したとき、私たちは、セカンダリ名前ノードから名前ノードを復元することができます。このように、データノードに障害が発生した場合、どのようにデータをデータノードに復元することができますか?

それはおよそreplication factor、我々は3(ベストプラクティスとして、デフォルト、 設定可能)すべての異なるデータノード内の各ファイルのブロックのレプリカを持っています。 時間がない場合は、2つのバックアップデータノードがあります。 Later Nameノードは、 データノードが失敗したデータの複製をもう1つ作成します。

  • 二次名前ノードは右のみdatenodeしない名前ノードのバックアップですか?

右。それは、データノード アドレスのようなデータノードのすべてのメタデータ、各データノードのブロックレポートを含むプロパティを含むだけです。

  • ノードがジョブの完了前に失敗したので、仕事保留中のジョブトラッカーに存在している場合は、そのジョブは、フリーノードで最初から継続するか、再起動しますか?

HDFSはforcelyジョブを続行しようとします。しかし、それはまた、 複製因子、rack awarenessおよびother configurationによる。 adminによって決まる。 HDFSについてのHadoopのベストプラクティスに従えば、 は失敗しません。 JobTrackerは複製されたノードアドレスを continuenueにします。

  • 何かが発生した場合どのように我々は、クラスタ全体のデータを復元することができますか?それを再起動することにより

  • そして、私の最後の質問は、我々はMapReduceの(MapReduceのでは例えば、バブルソート)でCプログラムを使用することができますか?

はい、あなたは標準のファイルをサポートする任意のプログラミング言語 読み取り書き込み操作を使用することができます。

私はちょうど試しました。それがあなただけでなく他の人たちにも役立つことを願っています。

*ご提案/改善を歓迎します。 *

+2

非常に良いと明確な説明。あなたはHadoop Architectであり、長い間ハープープに取り組んでいるようです。 –

+0

ありがとう@PramodKumar、ちょうどそれを学ぶ。 :) – manurajhada

0

あなたの質問に答えるには遅すぎますが、他人を助けるかもしれません。最初に、Hadoop 1の役割について話します。Xデーモンと、あなたの問題..

1.それは正確にバックアップノードではないセカンダリネームノード の役割は何ですか。編集ログを読み込み、名前ノードの更新されたfsimageファイルを定期的に作成します。ネーム・ノードからメタデータを定期的に取得し、保持し、ネーム・ノードに障害が発生したときに使用します。 2.名前ノードの役割 すべてのデーモンの管理者です。マスターノードで動作するマスターjvm proceess。データノードと対話します。

3.ジョブトラッカーの役割は何ですか。 ジョブを受け入れ、データノードでの処理のためにタスクトラッカーに配布します。マップ・プロセスと呼ばれるもの

4.タスク・トラッカーの役割は何ですか? データ・ノードの既存のデータを処理するためのプログラムを実行します。そのプロセスはマップと呼ばれます。我々は、名前ノードのための高品質のハードウェアを維持できるように、名前ノードで障害 のHadoopの1.xのの

制限

  1. シングルポイント。名前ノードは、すべてが単一障害点に ソリューション

ソリューションアクセスできなくなります失敗した場合、高可用性を提供するHadoop 2.Xです。今

high availability with hadoop 2.X

あなたのトピック何かが起これば....

はどのように我々は、クラスタ全体のデータを復元することができますか? クラスタに障害が発生した場合、我々はそれを再起動することができます。..

ノードがジョブの完了前に失敗したので、ジョブトラッカーに保留中のジョブが存在している場合は、そのジョブを続行するか、自由ノードで最初から再開しますか? 我々はそれが彼が設定している...ので、ジョブトラッカーは、他のデータノード

上のデータの他のコピーが続行されますどのくらいのレプリカことを管理者に依存して高可用性を得るために、データのデフォルトの3つのレプリカを(私はブロックを意味する)を持ちますMapreduceでCプログラムを使用できますか?(例:mapreduceのBubbleソート) 基本的にmapreduceは、分散型のマナーで大きなデータ問題を解決または処理する実行エンジンです。私たちはファイル処理とmapreduceプログラミングを使用している他のすべての基本的な操作を行っていますので、要件に従ってファイルを扱うことができる言語を使用できます。

のHadoop 1.xのアーキテクチャ hadoop 1.x has 4 basic daemons

私はちょうど試みを行いました。それがあなただけでなく他の人たちにも役立つことを願っています。

提案/改善を歓迎します。

関連する問題