Hadoop Get Started

Hadoop Get Started

Java のインストール

[ec2-user@ip-172-31-44-80 ~]$ java -version
java version "1.7.0_171"
OpenJDK Runtime Environment (amzn-2.6.13.0.76.amzn1-x86_64 u171-b01)
OpenJDK 64-Bit Server VM (build 24.171-b01, mixed mode)

Unix ユーザアカウントの作成

hadoopの処理をそれぞれ分けるために専用にUnixユーザーアカウントを作成するのが良い。

[ec2-user@ip-172-31-44-80 ~]$ sudo su
[root@ip-172-31-44-80 ec2-user]# groupadd hadoop
[root@ip-172-31-44-80 ec2-user]# useradd -g hadoop hadoop
[root@ip-172-31-44-80 ec2-user]# useradd -g hadoop hdfs
[root@ip-172-31-44-80 ec2-user]# useradd -g hadoop mapred
[root@ip-172-31-44-80 ec2-user]# useradd -g hadoop yarn
[root@ip-172-31-44-80 ec2-user]# ls -al /home/
total 28
drwxr-xr-x  7 root     root     4096 Apr  7 06:55 .
dr-xr-xr-x 25 root     root     4096 Apr  7 06:42 ..
drwx------  3 ec2-user ec2-user 4096 Apr  7 06:42 ec2-user
drwx------  2 hadoop   hadoop   4096 Apr  7 06:55 hadoop
drwx------  2 hdfs     hadoop   4096 Apr  7 06:48 hdfs
drwx------  2 mapred   hadoop   4096 Apr  7 06:48 mapred
drwx------  2 yarn     hadoop   4096 Apr  7 06:48 yarn

パスワードの設定

生成したユーザーにsudo権限を与える

visudo実行時は、以下を追加

Hadoopのインストール

/etc/bashrcには以下を追加。

編集内容の読み込みとHadoopのインストールができたことの確認

SSHの設定

クラスター内のマシンからhdfsやyarnユーザーからパスワードレスログインを許可するようにセットアップする必要がある。SSH鍵生成時のパスフレーズは、Test1234のように入力しておく。

ssh-agentを利用して、SSHができるようにしておく。

Hadoopの設定

HDFSファイルシステムのフォーマット

HDFSのインストールにはフォーマットが必要。 データノードが全ファイルシステムのメタデータを管理し、データノードは動的にクラスターをjoin/leaveするので、データノードはフォーマット処理に関係しない。 作られるファイルシステムの大きさは、クラスター中のデータノードの数によって決められるので、考える必要はない。

デーモンの起動と停止

HDFSデーモンをstart-dfs.shで開始

  • スクリプトは、hdfs getconf -namenodesのコマンドを実行して得られた各マシン上でネームノードを開始。

  • スレーブファイル上にリスト化されている各マシン上でデータノードを開始。

  • hdfs getconf -secondaryNameNodesのコマンドを実行して得られた各マシン上でセカンダリのネームノードを開始。

core-site.xmlの編集

core-site.xml

start-dfs.shの実行

ネームノード情報の取得

セカンダリのネームノード情報の取得

スレーブファイルは以下。

YARNデーモンをstart-yarn.shで開始

  • スクリプトは、ローカルマシン上でリソースマネージャを開始

  • スレーブファイルにリスト化された各マシン上でノードマネージャを開始

MapReduceデーモンであるjob history serverを開始

Hadoopクラスターが立ちあがって起動したらユーザーへアクセスする権限を与える

ユーザーディレクトリに空間の制限を設けるのも良い。 コマンド: hdfs dfsadmin -setSpaceQuota 1t /user/ec2-user/

ベンチマークを実行

Hadoop 設定

Hadoopのインストールの設定を制御するファイル

  • hadoop-env.sh

    • Hadoopを稼働するスクリプトで利用される環境変数

  • mapred-env.sh

    • MapRecudeを稼働するスクリプトで利用される環境変数。hadoop-env.shを上書き。

  • yarn-env.sh

    • YARNを稼働するスクリプトで利用される環境変数。hadoop-env.shを上書き。

  • core-cite.xml

    • HDFS,MapReduce,YARNに共通なI/Oの設定等

  • hdfs-site.xml

    • HDFSデーモン(ネームノード、セカンダリネームノード、データノード)

  • mapred-site.xml

    • MapReuceデーモン(Job history server)

  • yarn-site.yml

    • YARNデーモン(リソースマネージャ、Web app proxy server, ノードマネージャ)

  • slaves

    • データノードとノードマネージャを稼働するマシンのリスト

  • hadoop-metrics2.properties

    • Hadoopでどのようにメトリクスをpublishするか

  • log4j.properties

    • システムログファイル、ネームノード監査ログ、タスクJVMプロセスのタスクログ

  • hadoop-policy.xml

    • セキュアモードのHadoopを稼働するアクセス制御リストの制御設定

Hadoop Clusterのベンチマーク

Benchmarksはtest JARファイルでパッケージ化されている。

  • 確認方法

  • 利用方法の確認方法

TerasortでMapReduceのベンチマーク

  • 1,000個のmapを利用するデータのテラバイトのデータ生成方法

  • terasortを稼働

  • sanity check

実際には10Mで実行した結果

データ生成

terasortを稼働

sanity check

参考

  • Amazon | Hadoop: The Definitive Guide: Storage and Analysis at Internet Scale | Tom White | Software Development https://www.amazon.co.jp/Hadoop-Definitive-Storage-Analysis-Internet/dp/1491901632

Last updated