hadoop調査

そもそもHDFSとは

qiita.com

HDFSの設計は「HDFSは、ストリーミング型のデータアクセスパターンによって、非常に大きなファイルを保存するために設計されたファイルシステムで、
コモディティハードウェアによって構成されるクラスタで動作する。 」と記載されている。

mapper数とは何か?

この用語は直接は見つからない。
そもそも何なのか?、どうやって確認するのか?
・mapperとはどこのことか?
処理時間に関係するらしい。

・MR client、Giraph client って何?
Giraphは本当にグラフらしい。
多分、clientは要は実行したもの

・clientのイメージ
巨大なファイルを分割

・YARN+MapReduceの操作
p28
「Resource Manager」は「NodeManager」にJobを投入する。
Jobを投入された「NodeManager」は「Application Master」になる。
「Application Master」は「Resource Manager」にリソースを要求し割り当てられたリソースにMAPタスクを投入する。
おそらくこのMAPタスクがMapper数のことだと思われる。

上記確認にあたり参考にしたサイト

www.slideshare.net

(Mapper数とは)
「Application Master」は「Resource Manager」にリソースを要求し割り当てられたリソースにMAPタスクを投入する。

◼️MapperとReduceの違い
これはいたるところにありそう
Mapper とReduceの例あり
dev.classmethod.jp (Map)
HadoopにおけるMapとは入力データを受け取り、それを変換しkey-valueの形式で出力を行う処理を実装するためのもの

(Reduce)
Mapを集約

MapperクラスとReduceクラスより実装するらしい。

◼️Map/Reduce今一度整理
以下は多分バージョン1である。 1か2をわかっておかないと以下を見ても今どこを確認しているのかわからない。
oss.infoscience.co.jp

Hadoop Map/Reduceは、どこにでもあるごく普通のハードウェアで構成した(数千ノード)の大規模なクラスタ上で、膨大なデータ(数テラバイトのデータセット)を並列処理するアプリケーションを簡単に記述できるようにするソフトウェアフレームワーク

Mapperは入力のキー/バリューのペアを中間的なキー/バリュー・ペアのセットにmapする。
mapは入力レコードを中間レコードに変換する個別のタスクである。

mapの数は通常、入力の合計サイズ、つまり入力ファイルの合計ブロック数によって決まる。

(Mapper数とは)
mapの数のこと?
mapの数は通常、入力の合計サイズ、つまり入力ファイルの合計ブロック数によって決まる。

◼️mapper数とログについて
とりあえずMapReduceのJobのHistoryログの見方
おそらくこれもバージョン1だと思われる。
acro-engineer.hatenablog.com HadoopMapReduce Jobを実行すると、
JobTrackerサーバのログディレクト
/var/log/hadoop/history
MapReduceのJob詳細がJobごとに作成される。
→JobTrackerサーバがバージョン2のMasterサーバに相当すると思われる。

◼️気になった箇所
ログの処理
www.ibm.com あまりついていけていない。

HDFSは、Hadoopクラスタ内のデータとレプリカを効率的に処理できるように計算ノードに配分して管理することを目的とした特殊用途のファイルシステム
レプリカはデータの複製のこと?
下記参照
分散処理技術「Hadoop」とは:NTTデータのHadoopソリューション HDFSはデフォルトで3つのレプリカをDataNodeで作成する。

ログを取るために、アプリケーションを例に作り、ログを収集している。
/var/log/messages から取っている。

◼️Masterサーバについて
hadoop-hdfs-namenode
下記は完全分散モードのこと。
完全分散モードのHadoop NameNode導入(Ubuntu10.04、CDH3) | mwSoft

完全分散モードで、HadoopのNameNodeとDataNodeを導入して、分散して保持できるようにする。
ClouderaのCDH3を利用。

下記サイトでhadoop-hdfs-namenode を使用している。
d.hatena.ne.jp

擬似分散モードで動かす

擬似分散モードとは?
https://blog.amedama.jp/entry/2017/05/15/230009 (ローカルモード)
一つのホストで動作する
HDFS を使わない
(疑似分散モード)
一つのホストで動作する
HDFS を使う
(完全分散モード)
複数のホストで動作する
HDFS を使う

$ sudo service hadoop-hdfs-namenode start

DataNodeが起動するらしい。
原因は、以下のDataNodeのログの一部からもわかる通り、NameNodeとDataNodeでclusterIDが一致しなかったためだ。

hadoop-hdfs-secondary-namenode 下記に記載あり
qiita.com
Secondary NameNode(Checkpointing Server):NameNodeのメタデータのFile System Imageを周期的(基本1時間)に更新し、NameNodeの負担を軽くします。

hadoop-yarn-resourcemanager

Secondary NameNode

Hadoop – HDFSの仕組み概要(個人メモ) | OpenGroove

引用
HDFSで動作するデーモン
NameNode(ネームノード)→ マスタで稼働
SecondaryNameNode(セカンダリネームノード)→ マスタで稼働 (別マシンで稼働させるケースもあり)
DataNode(データノード)→ スレーブで稼働
ネームノードの役割
ファイルシステムのメタ情報であるファイルの位置情報や属性を一元管理し、クライアントからの指示を受け取りデータ処理をデータノードに指示する。メタ情報は
メモリ上に展開して管理される。なお、クライアントが直接データノードと通信する時もある。クライアントはネームノードの位置さえわかればHDFSにアクセス
可能。ネームノードの位置は以下の方法で指定する。
core-site.xmlにて定義
コマンド発行時の引数で指定
データノードの役割
データノードはネームノードとハートビートでやり取りを行い、また場合によってはHDFSクライアントと直接通信し、ブロックの書き込み/読み込み処理を行う。

面白い記述があった。
マスタのHA構成を組むと、セカンダリネームノードの役割はスタンバイノードが担当することになるため、
セカンダリネームノードデーモンが起動することはない。

blog.madhukaraphatak.com Nameノードがディスクに情報を格納する方法
1.fsimage namenodeが起動したときのファイルシステムのスナップショット
2.edit logs namenodeの起動後にファイルシステムに加えられた一連の変更

namenodeの再起動時だけ、ファイルシステムの最新のスナップショットを取得するために編集ログがfsimageに適用される。
しかしプログクションクラスタではネームノードの再起動はめったにない。
つまりnamenodeが長時間実行されるクラスタではedit logsが非常に大きくなる可能性がある。

要はその課題を解決するのがsecondarynamenodeである。

しかしここで疑問なのがなぜ2台の分散管理サーバがあるとして2台目だけで十分かということである。

secondarynamenodeはなくても動く。

Apache Hadoop 2.9.2 – HDFS Users Guide SecondaryNameNodeはfsimageファイルと編集ログファイルを定期的にマージし、編集ログサイズを制限内に保つ。
通常プライマリNameNodeとは別のマシンで実行する。

https://blog.cloudera.co.jp/hdfs%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B-namenode%E3%81%AE%E3%83%AA%E3%82%AB%E3%83%90%E3%83%AA-%E3%83%84%E3%83%BC%E3%83%AB%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6-a5eb64f5f197 NameNodeの機能は、メタデータを格納するところ
メタデータ:データについてのデータ(ファイルの所有者や、パーミッションビットのようなもの)
HDFSは、FSImage、編集ログという主に2つの場所に、メタデータを格納する。

What exactly is a Namespace, EditLog, FSImage and Metadata in hadoop? - Quora NameNode:DataNodeが実際のデータを格納するシステム内のファイルに関するメタデータを管理するマスターサーバ

HAとは何か?

そもそもCDH3とかCDH4とかCDH5とかって何?