ウェブサイト検索

RHEL/CentOS 6.5 で CDH4 を使用して Hadoop マルチノード クラスターをインストールする


Hadoop は、ビッグ データを処理するために Apache によって開発されたオープン ソース プログラミング フレームワークです。 HDFS (Hadoop 分散ファイル システム) を使用してクラスター内のすべてのデータノードにデータを分散保存し、mapreduce モデルを使用してデータを処理します。

Namenode (NN) は、HDFSJobtracker (JT) を制御するマスター デーモンです。 ) は、mapreduce エンジンのマスター デーモンです。

要件

このチュートリアルでは、2 つのCentOS 6.3 VM「マスター」と「ノード」を使用しています。 (マスターとノードは私のホスト名です)。 「マスター」IP は 172.21.17.175 で、ノード IP は「172.21.17.188」です。次の手順はRHEL/CentOS 6.x バージョンでも機能します。

マスター上
[root@master ~]# hostname

master
[root@master ~]# ifconfig|grep 'inet addr'|head -1

inet addr:172.21.17.175  Bcast:172.21.19.255  Mask:255.255.252.0
ノード上
[root@node ~]# hostname

node
[root@node ~]# ifconfig|grep 'inet addr'|head -1

inet addr:172.21.17.188  Bcast:172.21.19.255  Mask:255.255.252.0

DNS が設定されていない場合は、最初にすべてのクラスター ホストが 「/etc/hosts」 ファイル (各ノード上) に存在することを確認します。

マスター上
[root@master ~]# cat /etc/hosts

172.21.17.175 master
172.21.17.188 node
ノード上
[root@node ~]# cat /etc/hosts

172.21.17.197 qabox
172.21.17.176 ansible-ground

CentOS への Hadoop マルチノード クラスターのインストール

公式のCDHリポジトリを使用して、クラスタ内のすべてのホスト(マスターとノード)にCDH4をインストールします。

ステップ 1: CDH リポジトリをダウンロード、インストールする

公式 CDH ダウンロード ページに移動して CDH4 (つまり4.6) バージョンを取得するか、次のwget コマンドを使用してリポジトリをダウンロードしてインストールできます。

RHEL/CentOS 32 ビットの場合
wget http://archive.cloudera.com/cdh4/one-click-install/redhat/6/i386/cloudera-cdh-4-0.i386.rpm
yum --nogpgcheck localinstall cloudera-cdh-4-0.i386.rpm
RHEL/CentOS 64 ビットの場合
wget http://archive.cloudera.com/cdh4/one-click-install/redhat/6/x86_64/cloudera-cdh-4-0.x86_64.rpm
yum --nogpgcheck localinstall cloudera-cdh-4-0.x86_64.rpm

Hadoop マルチノード クラスターをインストールする前に、システム アーキテクチャに応じて次のコマンドのいずれかを実行して、Cloudera 公開 GPG キーをリポジトリに追加します。

## on 32-bit System ##

rpm --import http://archive.cloudera.com/cdh4/redhat/6/i386/cdh/RPM-GPG-KEY-cloudera
## on 64-bit System ##

rpm --import http://archive.cloudera.com/cdh4/redhat/6/x86_64/cdh/RPM-GPG-KEY-cloudera

ステップ 2: JobTracker と NameNode をセットアップする

次に、次のコマンドを実行して、マスター サーバーに JobTracker と NameNode をインストールしてセットアップします。

[root@master ~]# yum clean all 
[root@master ~]# yum install hadoop-0.20-mapreduce-jobtracker
[root@master ~]# yum clean all
[root@master ~]# yum install hadoop-hdfs-namenode

ステップ 3: セカンダリ ネーム ノードのセットアップ

再度、マスター サーバーで次のコマンドを実行して、セカンダリ ネーム ノードをセットアップします。

[root@master ~]# yum clean all 
[root@master ~]# yum install hadoop-hdfs-secondarynam

ステップ 4: タスクトラッカーとデータノードをセットアップする

次に、JobTracker、NameNode、およびセカンダリ (またはスタンバイ) NameNode ホスト (この場合はノード上) を除くすべてのクラスター ホスト (ノード) で tasktracker と datanode をセットアップします。

[root@node ~]# yum clean all
[root@node ~]# yum install hadoop-0.20-mapreduce-tasktracker hadoop-hdfs-datanode

ステップ 5: Hadoop クライアントのセットアップ

Hadoop クライアントを別のマシンにインストールできます (この場合、データノードにインストールしましたが、どのマシンにもインストールできます)。

[root@node ~]# yum install hadoop-client

ステップ 6: HDFS をノードに展開する

上記の手順が完了したら、hdf のデプロイに進みましょう (すべてのノードで実行されます)。

デフォルト設定を /etc/hadoop ディレクトリ (クラスタ内の各ノード上) にコピーします。

[root@master ~]# cp -r /etc/hadoop/conf.dist /etc/hadoop/conf.my_cluster
[root@node ~]# cp -r /etc/hadoop/conf.dist /etc/hadoop/conf.my_cluster

次のように代替コマンドを使用してカスタム ディレクトリを設定します (クラスター内の各ノードで)。

[root@master ~]# alternatives --verbose --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.my_cluster 50
reading /var/lib/alternatives/hadoop-conf

[root@master ~]# alternatives --set hadoop-conf /etc/hadoop/conf.my_cluster
[root@node ~]# alternatives --verbose --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.my_cluster 50
reading /var/lib/alternatives/hadoop-conf

[root@node ~]# alternatives --set hadoop-conf /etc/hadoop/conf.my_cluster

ステップ 7: 構成ファイルのカスタマイズ

次に、「core-site.xml」ファイルを開き、クラスター内の各ノードの「fs.defaultFS」を更新します。

[root@master conf]# cat /etc/hadoop/conf/core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
 <name>fs.defaultFS</name>
 <value>hdfs://master/</value>
</property>
</configuration>
[root@node conf]# cat /etc/hadoop/conf/core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
 <name>fs.defaultFS</name>
 <value>hdfs://master/</value>
</property>
</configuration>

次に、クラスタ内の各ノードの hdfs-site.xml 内の「dfs.permissions.superusergroup」を更新します。

[root@master conf]# cat /etc/hadoop/conf/hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
     <name>dfs.name.dir</name>
     <value>/var/lib/hadoop-hdfs/cache/hdfs/dfs/name</value>
  </property>
  <property>
     <name>dfs.permissions.superusergroup</name>
     <value>hadoop</value>
  </property>
</configuration>
[root@node conf]# cat /etc/hadoop/conf/hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
     <name>dfs.name.dir</name>
     <value>/var/lib/hadoop-hdfs/cache/hdfs/dfs/name</value>
  </property>
  <property>
     <name>dfs.permissions.superusergroup</name>
     <value>hadoop</value>
  </property>
</configuration>

: 上記の設定がすべてのノードに存在することを確認してください (1 つのノードで実行し、scp を実行して残りのノードにコピーします)ノードの)。

ステップ 8: ローカルストレージディレクトリの構成

NameNode (Master および Node) の「hdfs-site.xml」内の「dfs.name.dir または dfs.namenode.name.dir」を更新します。強調表示されている値を変更してください。

[root@master conf]# cat /etc/hadoop/conf/hdfs-site.xml
<property>
 <name>dfs.namenode.name.dir</name>
 <value>file:///data/1/dfs/nn,/nfsmount/dfs/nn</value>
</property>
[root@node conf]# cat /etc/hadoop/conf/hdfs-site.xml
<property>
 <name>dfs.datanode.data.dir</name>
 <value>file:///data/1/dfs/dn,/data/2/dfs/dn,/data/3/dfs/dn</value>
</property>

ステップ 9: ディレクトリの作成と権限の管理

以下のコマンドを実行して、Namenode (マスター) マシンと Datanode (ノード) マシンでディレクトリ構造を作成し、ユーザー権限を管理します。

[root@master]# mkdir -p /data/1/dfs/nn /nfsmount/dfs/nn
[root@master]# chmod 700 /data/1/dfs/nn /nfsmount/dfs/nn
[root@node]#  mkdir -p /data/1/dfs/dn /data/2/dfs/dn /data/3/dfs/dn /data/4/dfs/dn
[root@node]#  chown -R hdfs:hdfs /data/1/dfs/nn /nfsmount/dfs/nn /data/1/dfs/dn /data/2/dfs/dn /data/3/dfs/dn /data/4/dfs/dn

次のコマンドを発行して、(マスター上で) Namenode をフォーマットします。

[root@master conf]# sudo -u hdfs hdfs namenode -format

ステップ 10: セカンダリ NameNode の構成

次のプロパティを hdfs-site.xml ファイルに追加し、マスターに示されているように値を置き換えます。

<property>
  <name>dfs.namenode.http-address</name>
  <value>172.21.17.175:50070</value>
  <description>
    The address and port on which the NameNode UI will listen.
  </description>
</property>

: この場合、値はマスター VM の IP アドレスである必要があります。

次に、MRv1 (Map-reduce バージョン 1) をデプロイしましょう。次の値に従って「mapred-site.xml」ファイルを開きます。

[root@master conf]# cp hdfs-site.xml mapred-site.xml
[root@master conf]# vi mapred-site.xml
[root@master conf]# cat mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
<property>
 <name>mapred.job.tracker</name>
 <value>master:8021</value>
</property>
</configuration>

次に、次の scp コマンドを使用して、「mapred-site.xml」ファイルをノード マシンにコピーします。

[root@master conf]# scp /etc/hadoop/conf/mapred-site.xml node:/etc/hadoop/conf/
mapred-site.xml                                                                      100%  200     0.2KB/s   00:00

次に、MRv1 デーモンが使用するローカル ストレージ ディレクトリを構成します。再度「mapred-site.xml」ファイルを開き、各 TaskTracker に対して以下に示すように変更を加えます。

<property>
 <name>mapred.local.dir</name>
 <value>/data/1/mapred/local,/data/2/mapred/local,/data/3/mapred/local</value>
</property>

これらのディレクトリを「mapred-site.xml」ファイルで指定した後、クラスタ内の各ノードでディレクトリを作成し、それらに正しいファイル権限を割り当てる必要があります。

mkdir -p /data/1/mapred/local /data/2/mapred/local /data/3/mapred/local /data/4/mapred/local
chown -R mapred:hadoop /data/1/mapred/local /data/2/mapred/local /data/3/mapred/local /data/4/mapred/local

ステップ 10 : HDFS を開始する

次に、次のコマンドを実行して、クラスター内のすべてのノードで HDFS を開始します。

[root@master conf]# for x in `cd /etc/init.d ; ls hadoop-hdfs-*` ; do sudo service $x start ; done
[root@node conf]# for x in `cd /etc/init.d ; ls hadoop-hdfs-*` ; do sudo service $x start ; done

ステップ 11: HDFS /tmp ディレクトリと MapReduce /var ディレクトリを作成する

以下で説明するとおり、適切な権限を持つ /tmp を作成する必要があります。

[root@master conf]# sudo -u hdfs hadoop fs -mkdir /tmp
[root@master conf]# sudo -u hdfs hadoop fs -chmod -R 1777 /tmp
[root@master conf]# sudo -u hdfs hadoop fs -mkdir -p /var/lib/hadoop-hdfs/cache/mapred/mapred/staging
[root@master conf]# sudo -u hdfs hadoop fs -chmod 1777 /var/lib/hadoop-hdfs/cache/mapred/mapred/staging
[root@master conf]# sudo -u hdfs hadoop fs -chown -R mapred /var/lib/hadoop-hdfs/cache/mapred

次に、HDFS ファイル構造を確認します。

[root@node conf]# sudo -u hdfs hadoop fs -ls -R /

drwxrwxrwt   - hdfs hadoop          	0 2014-05-29 09:58 /tmp
drwxr-xr-x   	- hdfs hadoop          	0 2014-05-29 09:59 /var
drwxr-xr-x  	- hdfs hadoop          	0 2014-05-29 09:59 /var/lib
drwxr-xr-x   	- hdfs hadoop         	0 2014-05-29 09:59 /var/lib/hadoop-hdfs
drwxr-xr-x   	- hdfs hadoop          	0 2014-05-29 09:59 /var/lib/hadoop-hdfs/cache
drwxr-xr-x   	- mapred hadoop          0 2014-05-29 09:59 /var/lib/hadoop-hdfs/cache/mapred
drwxr-xr-x   	- mapred hadoop          0 2014-05-29 09:59 /var/lib/hadoop-hdfs/cache/mapred/mapred
drwxrwxrwt   - mapred hadoop          0 2014-05-29 09:59 /var/lib/hadoop-hdfs/cache/mapred/mapred/staging

HDFS を開始して「/tmp」を作成した後、JobTracker を開始する前に、「mapred.system.dir」パラメータで指定された HDFS ディレクトリを作成してください (デフォルトでは $ {hadoop.tmp) .dir}/mapred/system を選択し、所有者をmapredに変更します。

[root@master conf]# sudo -u hdfs hadoop fs -mkdir /tmp/mapred/system
[root@master conf]# sudo -u hdfs hadoop fs -chown mapred:hadoop /tmp/mapred/system

ステップ 12: MapReduce を開始する

MapReduce を開始するには、TT サービスと JT サービスを開始してください。

各 TaskTracker システム上
[root@node conf]# service hadoop-0.20-mapreduce-tasktracker start

Starting Tasktracker:                               [  OK  ]
starting tasktracker, logging to /var/log/hadoop-0.20-mapreduce/hadoop-hadoop-tasktracker-node.out
JobTracker システム上
[root@master conf]# service hadoop-0.20-mapreduce-jobtracker start

Starting Jobtracker:                                [  OK  ]

starting jobtracker, logging to /var/log/hadoop-0.20-mapreduce/hadoop-hadoop-jobtracker-master.out

次に、Hadoop ユーザーごとにホーム ディレクトリを作成します。これは NameNode で行うことをお勧めします。例えば。

[root@master conf]# sudo -u hdfs hadoop fs -mkdir  /user/<user>
[root@master conf]# sudo -u hdfs hadoop fs -chown <user> /user/<user>

: は各ユーザーの Linux ユーザー名です。

あるいは、次のようにしてホーム ディレクトリを作成することもできます。

[root@master conf]# sudo -u hdfs hadoop fs -mkdir /user/$USER
[root@master conf]# sudo -u hdfs hadoop fs -chown $USER /user/$USER

ステップ 13: ブラウザから JT、NN UI を開く

ブラウザを開いて URL を http://ip_address_of_namenode:50070 として入力し、Namenode にアクセスします。

ブラウザで別のタブを開き、URL を http://ip_address_of_jobtracker:50030 と入力して、JobTracker にアクセスします。

この手順はRHEL/CentOS 5.X/6.X で正常にテストされました。インストールに関して問題が発生した場合は、以下にコメントしてください。解決策をお手伝いします。