CONTACT
お問い合わせ

Hadoopインストール手順

Hadoopの動作確認環境の構築手順を説明する。

目次

Hadoopインストール手順

  1. 構築環境について
  2. 動作環境の構築
  3. Hadoop環境の構築
  4. 動作確認

1.構築環境について

構築の概要

Linux系OS(CentOS6.8)稼働中のサーバーマシンにHadoopを構築する。

  ◎ OS:CentOS6.8 (64bit)
  ◎ その他ソフトウェア: wget、telnet(サーバー&クライアント)

手順の概要

対象のサーバーへログインし下記を行う。

  ◎ ソフトウェアのダウンロード
  ◎ 各種設定を行う。
本手順では、Hadoopの動作確認ユーザは「hdpuser」とする。

2.動作環境の構築

ユーザー追加

ユーザー登録
①動作確認用ユーザーを追加

$ useradd hdpuser

 ※特にエラーなどでなければ成功。

②実際の登録を確認

$ id –a hdpuser

 ※uid、gid、groupsが表示される。

③ホームディレクトリの確認
フォルダが存在していることを確認する。

$ ls –ld /home/hdpuser
drwx------ 2 hdpuser hdpuser 4096 ※作成日時表示部 /home/hdpuser

パスワードの設定

①パスワードの設定
作成直後のユーザーには、パスワードが設定されていないので、任意のパスワードを設定する。

$ passwd hdpuser

パスワードの入力を求められるので、任意のパスワードを入力する。

Changing password for hdpuser
New password: ※1回目の入力
Retype new password: ※2回目の入力

②一度ログアウトし、作成したユーザーで再ログイン

$ exit

※hdpuserでログインできなければ、rootでログインしなおして、再度パスワードを設定する。

ネットワーク設定

①rootへ切り替え
ネットワーク設定変更のためユーザーを切り替える。

$ su -

rootのパスワードを確認されるため入力する。

②ゲートウェイの設定
/etc/sysconfig/networkに、ゲートウェイの情報を追加する。

$ vi /etc/sysconfig/network

<追加>

GATEWAY=192.168.3.1

【vi参考メモ】

  ◎ i カーソル位置に挿入(編集モードに切り替わる)
  ◎ R カーソル位置で置き換え(編集モードに切り替わる)
  ◎ Esc 編集モード終了
  ◎ :q! セーブせずに強制終了 ※編集モード以外で使用
  ◎ :wq セーブして終了 ※編集モード以外で使用

③IPアドレスの設定
/etc/sysconfig/network-scripts/ifcfg-eth0に、IPアドレスの情報を追加する。
すでに別の設定がある項目については、以下の内容で更新する。

$ vi /etc/sysconfig/network-scripts/ifcfg-eth0

<追加>

BOOTPROTO=none
ONBOOT=yes
HWADDR=00:00:00:00:00:00(←既存の設定値を使う。表記は例)
IPADDR=192.168.3.** (**に、任意の番号を記載する。)
NETMASK=255.255.255.0
BROADCAST=192.168.3.255
GATEWAY=192.168.3.1
USERCTL=no

④DNSの設定
/etc/resolv.confに、設定を追加する。

$ vi /etc/resolv.conf

<追加>

nameserver 192.168.3.1

⑤設定ファイルの更新後、ネットワークを再起動
ログからネットワークが再起動したことを確認する。

$ service network restart

⑥設定確認
指定のIPアドレスが表示されることを確認する。

$ ifconfig

⑦ゲートウェイ接続を確認

$ ping 192.168.3.1

必要なソフトウェアのインストール

wgetのインストール
wgetをインストールする

$ yum install wget

途中で続行の確認を2回されるため、2回とも「y」を入力する。
その後完了の表示を確認する。

telnetのインストール

①telnet(クライアント)インストール

$ yum install telnet

途中で続行の確認をされるため「y」を入力する。
その後完了の表示を確認する。

②telnet(サーバー)インストール

$ yum install telnet-server

途中で続行の確認をされるため「y」を入力する。
その後完了の表示を確認する。

telnetの設定

①telnetの設定更新
/etc/xinetd.d/telnetの設定を更新する。
インストール時点では『disable』の項目に「yes」が記述されているため、以下のとおりに更新する。

$ vi /etc/xinetd.d/telnet

<更新>

disable = no

②telnetサービスを再起動
停止(stopping)に失敗し、起動(starting)に成功することを確認する。

$ /etc/rc.d/init.d/xinetd restart

③クライアントとサーバの利用を確認
ローカルホスト指定の接続が成功し、クライアントとサーバが利用できることを確認する。
作成したユーザーでログインして、telnetの成功を確認する。

$ telnet localhost

※この時点では、外部からの接続は不可。

【telnet利用のネットワーク条件】

  ◎ VPNで本社のセグメントに接続した端末のみ利用を許可する。
    (許可対象:192.168.3.XXXの接続、localhost(127.0.0.1)の接続)
  ◎  その他はすべて接続不可とする。
④ネットワークの設定を更新

$ vi /etc/sysconfig/iptables

<追加>

-A INPUT -m state --state NEW -m tcp -p tcp --dport 23 -j ACCEPT

⑤再起動し設定を反映

$ vi /etc/hosts.allow

<追加>

in.telnetd:192.168.3. 127.0.0.1
sshd:192.168.3. 127.0.0.1

⑥拒否条件を追加

$ vi /etc/hosts.deny

<追加>

ALL:ALL

※許可条件が先に解決されるため、拒否条件にすべてを指定している。

3.Hadoop環境の構築

インストール

JDK

①epelリポジトリを取得 wgetを利用して、epelリポジトリを取得する。

$ wget http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
$ wget http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/i386/epel-release-6-8.noarch.rpm

②ダウンロード実施

$ rpm -ivh epel-release-6-8.noarch.rpm

③前提ソフトをインストール

$ yum install gcc-c++ curl make cmake zlib zlib-devel --enablerepo=epel

途中で続行の確認をされるため「y」を入力する。 完了の表示が出るため確認する。※処理時間が長め

各種設定

環境変数

①ログインシェルに環境変数を設定 Javaライブラリと、Hadoopのホームを環境変数に登録する。

$ vi /home/hdpuser/.bashrc

<追加>

export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.111.x86_64
export HADOOP_HOME=/usr/local/hadoop-2.7.2
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin:$PATH

②Hadoopをダウンロード

$ wget http://ftp.riken.jp/net/apache/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz

③DLファイルを展開
ファイルがすべて解凍される。※処理時間が長め

$ tar -xzvf hadoop-2.7.2.tar.gz

④フォルダが増えていることを確認

$ ls –l

⑤オーナーを動作確認ユーザーに変更

$ chown -R hdpuser:hdpuser hadoop-2.7.2

⑥展開されたライブラリを/usr/localに移動

$ mv hadoop-2.7.2 /usr/local/

Hadoopの設定

①ユーザーを戻す

$ su - hdpuser

②パスを確認
問題なければ、バージョンが表示される。
※ログに表示される、Hadoop 2.7.2を確認する。

$ hadoop version

③設定ファイルにプロパティ情報を追加
Hadoopの設定ファイル(xml)にプロパティの情報を追加する。
設定ファイルの格納フォルダへ移動する。

$ cd $HADOOP_HOME/etc/hadoop

●対象ファイル1

$ vi core-site.xml

<追加>


 ※~略~※

    fs.defaultFS
    hdfs://localhost:9000

 ※~略~※

※localhost部分は、サーバの名称を指定する部分

●対象ファイル2

$ vi hdfs-site.xml

<追加>


    dfs.replication
    1


    dfs.permissions
    false

●設定ポート内容
Hadoop用 9000

⑤ネットワーク設定を更新

$ vi /etc/sysconfig/iptables

<追加>

-A INPUT -m state --state NEW -m tcp -p tcp --dport 9000 -j ACCEPT

⑥ホスト名設定

$ vi /etc/host

<追加>

192.168.3.** <ホスト名>

**部分は、「IPアドレスの設定」で実際に設定したIPアドレス。 <ホスト名>は、hostnameを参照。

⑦再起動し設定を反映
ログで、処理結果がすべてOKとなることを確認できる。

$ /etc/init.d/iptables restart

⑧SSHの設定
動作確認ユーザーのホームへ戻り、SSHの設定を行う。

$ cd
$ ssh-keygen -t dsa
$ cat .ssh/id_dsa.pub >> .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
$ ssh localhost

⑨Namenodeをフォーマット

$ hadoop namenode -format

ログ中に以下の表示が確認される。

INFO common.Storage: Storage directory /tmp/hadoop-hdpuser/dfs/name has been successfully formatted

4.動作確認

起動

①起動前の状態確認

$ jps
  Jps

②起動シェルを実行
ログから以下を確認する。

$ start-all.sh
  Starting namenodes on [localhost]
  starting namenode
  starting datanode

  Starting secondary namenodes [0.0.0.0]
  starting secondarynamenode,
  starting resourcemanager,
  starting nodemanager,

③起動後の状態確認
「①起動前の状態確認」から5つ増えていることを確認する。

$ jps

 ResourceManager
  DataNode
  NameNode
  NodeManager
  SecondaryNameNode
  Jps

動作の確認

入力データ

①入力用にファイルを2つ作成

$ echo "a b c c d e a b d e e s c a g " > test_input1.txt
$ echo "aa b c d e" > test_input2.txt

②作成されたファイルの確認

$ ls –l
  合計 12
  -rw-rw-r--. 1 hdpuser hdpuser 31 ※作成日時 test_input1.txt
  -rw-rw-r--. 1 hdpuser hdpuser 11 ※作成日時 test_input2.txt
  drwxr-xr-x. 2  root   root  4096 ※作成日時 tmp

※作成日時の部分は、ファイルやフォルダの作成した日時が表示される。

作成したファイルの設置

①配置先を作成

$ hadoop fs -mkdir /input

②ファイル配置

$ hadoop fs -put test_input1.txt /input
$ hadoop fs -put test_input2.txt /input

③配置状況を確認

$ hadoop fs -ls -R /
  drwxr-xr-x  - hdpuser supergroup  0 ※作成日時 /input
  -rw-r--r-- 3 hdpuser supergroup  31 ※作成日時 /input/test_input1.txt
  -rw-r--r-- 3 hdpuser supergroup  11 ※作成日時 /input/test_input2.txt

※作成日時の部分は、ファイルシステムへ配置した日時が表示される。


④サンプルプログラムの実行
実行時、ログの最後に出入力のバイト数が表示されて処理が終了ため確認する。

$ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /input /output
  File Input Format Counters
    Bytes Read=XX ※読み込んだデータサイズ
  File Output Format Counters
    Bytes Written=YY ※出力したデータサイズ

※手順のケースでは、XX=42、YY=33

結果確認

①処理後の状況確認

$ hadoop fs -ls -R /
  drwxr-xr-x  - hdpuser supergroup   0 ※作成日時 /input
  -rw-r--r--  3 hdpuser supergroup  31 ※作成日時 /input/test_input1.txt
  -rw-r--r--  3 hdpuser supergroup  11 ※作成日時 /input/test_input2.txt
  drwxr-xr-x  - hdpuser supergroup   0 ※出力日時 /output
  -rw-r--r--  3 hdpuser supergroup   0 ※出力日時 /output/_SUCCESS
  -rw-r--r--  3 hdpuser supergroup  33 ※出力日時 /output/part-r-00000

※出力日時部分は、実行結果で、ファイルやフォルダが作成された日時


②作成ファイルの内容を確認

hadoop fs -cat /user/hdpuser/output/part-r-00000
  a   3
  aa  1
  b   3
  c   4
  d   3
  e   4
  g   1
  s   1

入力ファイル2つの中から出現した単語をカウントしている。
空白で区切って判別しているため、「a」と「aa」は別々にカウントされている。

終了

動作確認終了後は、ノードを終了させる。 「停止前」と「停止後」でノードが停止していることを確認する。

●停止前

$ jps
  11031 Jps
  8289 NodeManager
  8028 SecondaryNameNode
  7745 NameNode
  7869 DataNode
  8190 ResourceManager

●停止処理

$ stop-all.sh
  Stopping namenodes on [localhost]
  localhost: stopping namenode
  localhost: stopping datanode

  Stopping secondary namenodes [0.0.0.0]
  0.0.0.0: stopping secondarynamenode
  stopping yarn daemons
  stopping resourcemanager

  no proxyserver to stop

●停止後

$ jps
  Jps