Ubuntu 18.04をインストールしたAlibaba CloudにマルチノードHadoopクラスタをインストールする方法
このチュートリアルでは、Ubuntu 18.04をインストールしたAlibaba Cloud ECSインスタンス上にマルチノードHadoopクラスタをセットアップする方法を紹介します。
本ブログは英語版からの翻訳です。オリジナルはこちらからご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。
前提条件
このチュートリアルでは、特に2つの異なるAlibaba Cloud ECSインスタンス上でDataNodeを実行します。2つのECSインスタンスを以下のように設定します。
最初のインスタンス(マスターマシン/システムとして設定されている)はHadoop-masterで、IPアドレスは172.31.129.196です。
2つ目のインスタンス(スレーブマシン/システムとして設定されている)は、Hadoop-slaveで、IPアドレスは172.31.129.197です。
手順
Javaのインストール
今、我々はHadoopマルチノードクラスタを設定する方法に入る前に、両方のシステムは、それらにインストールされているJava 8を持っている必要があります。これを行うには、まず、Java 8をインストールするために、マスターとスレーブの両方のマシンで以下のコマンドを実行します。
root@hadoop-master:~# sudo add-apt-repository ppa:openjdk-r/ppa
root@hadoop-master:~# sudo apt-get update
root@hadoop-master:~# sudo apt-get install openjdk-8-jdk
root@hadoop-master:~# sudo update-java-alternatives --list
java-1.8.0-openjdk-amd64 1081 /usr/lib/jvm/java-1.8.0-openjdk-amd64
root@hadoop-master:~# java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-8u212-b03-0ubuntu1.18.04.1-b03)
OpenJDK 64-Bit Server VM (build 25.212-b03, mixed mode)
その後、マスターマシンとスレーブマシンのホスト名とIPアドレスを指定して、/etc/hosts
ファイルを編集します。
root@hadoop-master:~# vi /etc/hosts/
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.31.129.196 hadoop-master
172.31.129.197 hadoop-slave
127.0.0.1 localhost localhost
Hadoopのインストール
次に、マルチノードクラスタにHadoop-2.7.3をインストールします。以下のコマンドでHadoopのtarファイルをダウンロードします。まず、マスターマシンで以下のコマンドを実行します。
root@hadoop-master:~# wget https://archive.apache.org/dist/hadoop/core/hadoop-2.7.3/hadoop-2.7.3.tar.gz
次に、ダウンロードしたHadoopのtarファイルを以下のコマンドで解凍します。
root@hadoop-master:~# tar -xzf hadoop-2.7.3.tar.gz
次に、lsコマンドを実行して、抽出されたHadoopパッケージがあるかどうかを確認します。
root@hadoop-master:~# ls
hadoop-2.7.3 hadoop-2.7.3.tar.gz
このチュートリアルでは、マスターとスレーブの 2 台のマシンを使用しているので、SSH 鍵交換を使用してマスターシステムからスレーブシステムにログインします。これを行うには、ssh-keygen
コマンドを使って公開鍵と秘密鍵を生成します。そして、ファイル名を聞かれたら、ENTER を押します。
root@hadoop-master:~# ssh-keygen -t rsa -P ""
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:OawYX8MzsF8iXeF1FhIJcdqtf7bMwaoPsL9Cq0t/Pi4 root@hadoop-master
The key's randomart image is:
+---[RSA 2048]----+
| +o=o+. |
| . *.= |
| . + . . |
| * o . |
| . o S.. . |
| + = Oo .. |
| . o.o... .oo|
| . .E.o. +oo|
| oo.**=o + |
+----[SHA256]-----+
両方の鍵は .ssh
ディレクトリに保存されます。公開鍵(id_rsa.pub
)を、authorized_keys
ファイル内の.ssh
ディレクトリ内のスレーブマシンにコピーします。スレーブマシンのパスワードを聞かれたら入力します。
root@hadoop-master:~# cat .ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'
The authenticity of host '172.31.129.197 (172.31.129.197)' can't be established.
ECDSA key fingerprint is SHA256:XOA5/7EcNPfEu/uNU/os0EekpcFkvIhKowreKhLD2YA.
Are you sure you want to continue connecting (yes/no)? yes
[email protected]'s password:
これでマスターマシンからスレーブマシンにパスワードを入力せずにログインできるようになりました。
Hadoopディレクトリをスレーブマシンにコピーします。
root@hadoop-master:~# scp -r hadoop-2.7.3 [email protected]:/root/
マスターマシンから、sshを使ってスレーブマシンにログインします。
root@hadoop-master:~# ssh [email protected]
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-52-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
Welcome to Alibaba Cloud Elastic Compute Service !
Last login: Mon Jul 29 22:16:16 2019 from 172.31.129.196
Run ls command to check if the Hadoop directory got copied to the slave machine
root@hadoop-slave:~# ls
hadoop-2.7.3
スレーブマシンから退出します。
root@hadoop-slave:~# exit
logout
Connection to 172.31.129.197 closed.
root@hadoop-master:~#
Hadoopを設定する
これで、HadoopとJavaの環境変数を以下のように.bashrcファイルに入れて、マスターシステムとスレーブシステムの両方に配置することができます。
root@hadoop-master:~# sudo vi .bashrc
export HADOOP_PREFIX="/root/hadoop-2.7.3"
export PATH=$PATH:$HADOOP_PREFIX/bin
export PATH=$PATH:$HADOOP_PREFIX/sbin
export HADOOP_MAPRED_HOME=${HADOOP_PREFIX}
export HADOOP_COMMON_HOME=${HADOOP_PREFIX}
export HADOOP_HDFS_HOME=${HADOOP_PREFIX}
export YARN_HOME=${HADOOP_PREFIX}
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre/
この後、以下のコマンドを実行して環境変数を初期化します。
root@hadoop-master:~# source .bashrc
すべてのパスが設定されているわけではないので、両方のマシンにインストールされているjavaとHadoopのバージョンを確認することができます。
root@hadoop-master:~# java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-8u212-b03-0ubuntu1.18.04.1-b03)
OpenJDK 64-Bit Server VM (build 25.212-b03, mixed mode)
root@hadoop-master:~# hadoop version
Hadoop 2.7.3
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r baa91f7c6bc9cb92be5982de4719c1c8af91ccff
Compiled by root on 2016-08-18T01:41Z
Compiled with protoc 2.5.0
From source with checksum 2e4ce5f957ea4db193bce3734ff29ff4
This command was run using /root/hadoop-2.7.3/share/hadoop/common/hadoop-common-2.7.3.jar
root@hadoop-master:~#
次に、両方のマシンにnamenodeとdatanodeディレクトリを作成します。
root@hadoop-master:~# mkdir hadoop-2.7.3/hdfs
root@hadoop-master:~# mkdir hadoop-2.7.3/hdfs/namenode
root@hadoop-master:~# mkdir hadoop-2.7.3/hdfs/datanode
次に、Hadoopメインディレクトリ内で、すべてのHadoop設定ファイルが存在する/etc/Hadoop
ディレクトリに移動します。
root@hadoop-master:~/hadoop-2.7.3/etc/hadoop# cd
root@hadoop-master:~# cd hadoop-2.7.3/etc/hadoop/
root@hadoop-master:~/hadoop-2.7.3/etc/hadoop# ls
capacity-scheduler.xml kms-log4j.properties
configuration.xsl kms-site.xml
container-executor.cfg log4j.properties
core-site.xml mapred-env.cmd
hadoop-env.cmd mapred-env.sh
hadoop-env.sh mapred-queues.xml.template
hadoop-metrics2.properties mapred-site.xml
hadoop-metrics.properties mapred-site.xml.template
hadoop-policy.xml masters
hdfs-site.xml slaves
httpfs-env.sh ssl-client.xml.example
httpfs-log4j.properties ssl-server.xml.example
httpfs-signature.secret yarn-env.cmd
httpfs-site.xml yarn-env.sh
kms-acls.xml yarn-site.xml
kms-env.sh
次に、マスターシステム上でマスターファイルを編集します。
root@hadoop-master:~/hadoop-2.7.3/etc/hadoop# vi masters
hadoop-master
また、スレーブファイルを編集します。
root@hadoop-master:~/hadoop-2.7.3/etc/hadoop# vi slaves
hadoop-master
hadoop-slave
スレーブシステムでは、スレーブファイルのみを編集します。
root@hadoop-slave:~/hadoop-2.7.3/etc/hadoop# vi slaves
hadoop-slave
それでは、マスターとスレーブの両方のシステムで、Hadoopの設定ファイルを一つずつ編集していきます。まず、下記のようなcore-site.xml
ファイルを両方のマシンで編集します。このファイルには、HDFSやMapReduceと共通のI/O設定など、Hadoop Coreの構成設定が含まれています。
root@hadoop-master:~/hadoop-2.7.3/etc/hadoop# vi core-site.xml
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop-master:9000</value>
</property>
</configuration>
次に、両方のマシンで以下のように hdfs-site.xml
を編集します。このファイルには、HDFSデーモンの構成設定、ネームノード、セカンダリネームノード、データノードが含まれています。
root@hadoop-master:~/hadoop-2.7.3/etc/hadoop# vi hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/root/hadoop-2.7.3/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/root/hadoop-2.7.3/hdfs/datanode</value>
</property>
</configuration>
両方のシステムでmapred-site.xml
ファイルを編集します。このファイルには、MapReduceデーモンの構成設定が含まれています。
root@hadoop-master:~/hadoop-2.7.3/etc/hadoop# cp mapred-site.xml.template mapred-site.xml
root@hadoop-master:~/hadoop-2.7.3/etc/hadoop# vi mapred-site.xml
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
Edit yarn-site.xml. This file contains the configuration settings for YARN.
root@hadoop-master:~/hadoop-2.7.3/etc/hadoop# vi yarn-site.xml
<?xml version="1.0"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
最後に両システムのHadoop環境設定ファイルを編集し、JAVA_HOME
のパスを指定します。
root@hadoop-master:~/hadoop-2.7.3/etc/hadoop# vi hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre
ここまでで、マスターシステムとスレーブシステムの両方にApache Hadoopをインストールして設定しました。
マルチノードHadoopクラスタの起動
これでマスターマシンからHadoopのメインディレクトリに移動し、namenodeをフォーマットすることができます。
root@hadoop-master:~/hadoop-2.7.3/etc/hadoop# cd .. ..
root@hadoop-master:~/hadoop-2.7.3# bin/hadoop namenode -format
すべてのHadoopデーモンを起動したくなります。
root@hadoop-master:~/hadoop-2.7.3# ./sbin/start-all.sh
このスクリプトは非推奨なので、代わりに start-dfs.sh
と start-yarn.sh
を使うことができます。
Starting namenodes on [hadoop-master]
hadoop-master: starting namenode, logging to /root/hadoop-2.7.3/logs/hadoop-root-namenode-hadoop-master.out
hadoop-master: starting datanode, logging to /root/hadoop-2.7.3/logs/hadoop-root-datanode-hadoop-master.out
hadoop-slave: starting datanode, logging to /root/hadoop-2.7.3/logs/hadoop-root-datanode-hadoop-slave.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /root/hadoop-2.7.3/logs/hadoop-root-secondarynamenode-hadoop-master.out
starting yarn daemons
starting resourcemanager, logging to /root/hadoop-2.7.3/logs/yarn-root-resourcemanager-hadoop-master.out
hadoop-slave: starting nodemanager, logging to /root/hadoop-2.7.3/logs/yarn-root-nodemanager-hadoop-slave.out
hadoop-master: starting nodemanager, logging to /root/hadoop-2.7.3/logs/yarn-root-nodemanager-hadoop-master.out
マスターマシン上でjps
コマンドを実行して、1 つの datanode を含むすべての Hadoop デーモンが実行されているかどうかを確認します。
root@hadoop-master:~/hadoop-2.7.3# jps
4144 NameNode
4609 ResourceManager
4725 NodeManager
4456 SecondaryNameNode
4283 DataNode
5054 Jps
次に、もう一台のデータノードはスレーブマシン上で動作するので、マスターマシンからSSHでスレーブマシンにログインします。
root@hadoop-master:~/hadoop-2.7.3# ssh [email protected]
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-52-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
Welcome to Alibaba Cloud Elastic Compute Service !
Last login: Mon Jul 29 23:12:51 2019 from 172.31.129.196
Run the jps command to check if the datanode in up and running.
root@hadoop-slave:~# jps
23185 DataNode
23441 Jps
23303 NodeManager
root@hadoop-slave:~#
これで、datanodeはマスターマシンとスレーブマシンの両方で実行されています。言い換えれば、Alibaba Cloud ECSインスタンスにマルチノードApache Hadoopクラスタを正常にインストールしたことになります。クラスタに別のノードまたはそれ以上のノードを追加するには、ここでスレーブマシンに行ったのと同じ手順を繰り返す必要があります。
アリババクラウドは日本に2つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
アリババクラウドジャパン公式ページ
Author And Source
この問題について(Ubuntu 18.04をインストールしたAlibaba CloudにマルチノードHadoopクラスタをインストールする方法), 我々は、より多くの情報をここで見つけました https://qiita.com/KentOhwada_AlibabaCloudJapan/items/0a2c3f7996d5dae04170著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .