CDH5のでHadoopクラスタをインストールする

CDHとは

CDH は Apache Hadoop や関連製品を含む Cloudera のソフトウェアディストリビューションです。 Apache Flume や Hive や Spark、Kudu なども含みます。

CDH のおかげでとても簡単に環境を構築することが可能です。ただし、癖がある部分もありしっかりと手順を抑えておき、 やり直しがないようにしておく必要はありそうです。

ちなみに最近では EMR や Dataproc などもあるため自前で構築することは少し減ってきたかもしれません。 実際に裏で何をしているか理解するために、構築し冗長化をしてみたり触っていくことで内部を理解することも大事かもしれません。

Hadoopをインストール

事前知識

以下の参考書が基礎知識の習得にはよいと思います。日本語で書かれています。

Hadoopオペレーション ―システム運用管理ガイド

Hadoopオペレーション ―システム運用管理ガイド

サーバの準備

今回、サーバを5台用意しました。HDFS と YARN の NameNode は後ほど冗長化します。 以下のスペックで用意しました。よく OOM になるのでメモリはそれなりに必要です。

CPU: 8core
Memory: 32GB
SSD: 100GB
OS: CentOS7
  • すべて名前解決できる状態にしておきます。今回は hosts を全台に記載しておきます。

/etc/hosts /etc/hostname

  • 時刻はすべて NTP と同期しておきます

  • yum update でパッケージを最新にしておきます

  • 各サーバに鍵認証かパスワードで SSH ログインできる環境を作っておきます

  • swap と transparent hugepages の調整

以下のような警告がでます。調整しておくと良いと思います。

/proc/sys/vm/swappiness を最大値の 10 に設定することをお勧めします。現在の設定は 30 です。sysctl コマンドを使用して、この設定を実行時に変更します。この設定が再起動後に保存されるよう /etc/sysctl.conf を編集します。インストールは続行できますが、スワッピングが原因でホストの状態に問題が発生したと Cloudera Manager からレポートされる可能性があります。以下のホストが影響を受けます

$ echo 10 > /proc/sys/vm/swappiness

恒久的には以下の対応を入れてください。

vm.swappiness = 10
$ echo never > /sys/kernel/mm/transparent_hugepage/defrag
$ echo never > /sys/kernel/mm/transparent_hugepage/enabled

こちらも同じように恒久的には rc.local などに記載をしておきます

echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled

インストール

以下、サーバ1台 で作業します。インストーラが立ち上がりますので、Next で次へ進んでいきます。

$ cd /tmp
$ curl -O http://archive.cloudera.com/cm5/installer/latest/cloudera-manager-installer.bin
$ chmod +x cloudera-manager-installer.bin
$ ./cloudera-manager-installer.bin

CDH セットアップ

インストールが終わったら、対象サーバの 7180 ポートへアクセスします。 ポートが開くまで時間がかかると思います。

PEnYAx.png

初期パスワードは admin / admin です。

QrMa4v.png

ライセンスに同意して続けます。

ORvHcd.png

今回はサポートなどは必要ありませんので、Express 版を利用します。

IEgCHI.png

このまま続けます

Lo5F4U.png

IPアドレスを記載してスキャンします

rhflLC.png

SSH が可能なユーザと鍵(もしくはパスワード)を設定します

SoMXEr.png

3Le47a.png

parcel によって全サーバに展開されます

VUJvGR.png

今回は、コア Hadoop でインストールします

YbcfJa.png

各サーバに割り当てるロールを選択します

abX7R0.png

今回、データベースは組み込みの PostgreSQL を利用します

Kobito.iQwE5j.png

セットアップが進みます。名前解決に問題があるまま進んでいるとここで大コケします

Kobito.iaJdUP.png

問題なければセットアップが完了します。

Kobito.MVlLQE.png

管理画面です。

次回は NameNode の冗長化を書きたいと思います。


シェアして頂けると嬉しいです。
参考になったという方がいれば是非お願いしますm(_ _ )m
モチベーション維持の観点で非常に励みになります。

このエントリーをはてなブックマークに追加

Hadoop徹底入門 第2版 オープンソース分散処理環境の構築

Hadoop徹底入門 第2版 オープンソース分散処理環境の構築

はじめてのHadoop ~分散データ処理の基本から実践まで

はじめてのHadoop ~分散データ処理の基本から実践まで