0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

HDFS・YARNの擬似分散クラスタを構築する

Last updated at Posted at 2015-09-23

Outline

Hadoop2系のYARN上で色々なアプリを動かすことになったのでテスト環境を作ってみた。

色々資料を見ましたが、擬似分散モードでの環境構築はなんの説明もなしに書かれているものが多かったので、なるべく丁寧に記しておきます。

構築手法は、少し冗長ですが完全分散モードに寄せているので、擬似分散ならではの変な症状にはならないはず。。

環境

OS: Ubuntu14.04 (AWS EC2)
ユーザー: ubuntu
VPC: 特に設定なし。
IP: PublicIPとPrivateIPのどちらも使用。
Hadoop 2.5.2
port: 全開放(22, 80, 8020, 8032, 8088, 50070が開いてればたぶん大丈夫)

以降の操作はこのマシンにubuntuユーザーでssh接続した状態で進める。

役割

master
・NameNode
・ResourceManager
・DataNode
・NodeManager

それぞれのサービスの役割はこちらを参照。

初期準備

Hadoopクラスタではsshで通信しあうので、自分自身に対してもパスワードでなく鍵での認証にする。

terminal
# PasswordAuthentication no を確認
sudo vim /etc/ssh/sshd_config

# 鍵作成
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

# 鍵を自身のリストに登録
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

# 試しに自分にSSHしてみる。(PrivateID, localhost, 0.0.0.0などなんでもいい。)
ssh XXX.XXX.XXX.XXX
# 元に戻す。
exit

各種インストール

Library

terminal
# java
sudo add-apt-repository ppa:webupd8team/java -y
sudo apt-get update
sudo apt-get install oracle-java8-installer -y

# Hadoop
# めんどくさいのでHomeにそのまま置く
wget http://ftp.meisei-u.ac.jp/mirror/apache/dist/hadoop/common/hadoop-2.5.2/hadoop-2.5.2.tar.gz
tar zxvf hadoop-2.5.2.tar.gz

環境変数を設定する。

sudo vim /etc/profile

/etc/profile
# 末尾に追記する。
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export HADOOP_HOME=/home/ubuntu/hadoop-2.5.2
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
terminal
# 適用する
source /etc/profile

重複するけど、こいつも読まれるので編集。
(既に初期値が入っているので上書きします。)

vim hadoop-2.5.2/etc/hadoop/hadoop-env.sh

hadoop-env.sh
# 既に初期値が入っているので上書きします。
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export HADOOP_CONF_DIR=/home/ubuntu/hadoop-2.5.2/etc/hadoop

HDFS準備

datanodeのディレクトリ用意

terminal
# datanodeの保存先を用意しておく。
mkdir -p myHadoop/data1

core-site.xml

vim hadoop-2.5.2/etc/hadoop/core-site.xml

core-site.xml
<configuration>
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://[PrivateIP]:8020</value>
	</property>
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/home/ubuntu/myHadoop/data1</value>
	</property>
</configuration>

項目の意味やデフォルト値はこちらを参照。
http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-common/core-default.xml

hdfs-site.xml

vim hadoop-2.5.2/etc/hadoop/hdfs-site.xml

hdfs-site.xml
<configuration>
	<property>
		<name>dfs.replication</name>
		<value>1</value>
	</property>
</configuration>

項目の意味やデフォルト値はこちらを参照。
http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

namenodeのformat

terminal
# 実行すると現状のnameNodeのデータは消えるので注意。
# 設定を変えて試したい時とかにリセット目的で使うとかしました。
hdfs namenode -format

起動

master

terminal

## namenode起動
hadoop-2.5.2/sbin/hadoop-daemon.sh start namenode

## dataNode起動
hadoop-2.5.2/sbin/hadoop-daemon.sh start datanode

確認

terminalから

terminal
# datanode, namenodeがあればOK。
jps

WebUIから

http://PublicIP:50070/
DataNodeタブで、一つデータノードが登録されていることを確認

停止(必要があれば)

terminal
hadoop-2.5.2/sbin/hadoop-daemon.sh stop namenode
hadoop-2.5.2/sbin/hadoop-daemon.sh stop datanode

YARN準備

vim hadoop-2.5.2/etc/hadoop/yarn-site.xml

yarn-site.xml
<configuration>
	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>[PrivateIP]</value>
	</property>
</configuration>

項目の意味やデフォルト値はこちらを参照。
http://hadoop.apache.org/docs/r2.5.2/hadoop-yarn/hadoop-yarn-common/yarn-default.xml

起動

master

terminal
## resource Manager起動
hadoop-2.5.2/sbin/yarn-daemon.sh start resourcemanager

## NodeManager起動
hadoop-2.5.2/sbin/yarn-daemon.sh start nodemanager

確認

terminalから

terminal
# ResourceManager, NodeManagerがあればOK
jps

WebUIから

http://[PublicIP]:8088/

nodesで一つ登録されていることを確認

停止(必要があれば)

terminal
hadoop-2.5.2/sbin/yarn-daemon.sh stop resourcemanager
hadoop-2.5.2/sbin/yarn-daemon.sh stop nodemanager

クライアントからの動作確認

別記事にて記載。

ハマったポイントとか

起動に失敗した時にログが便りにならない。

何が原因で失敗したのかのログはどこかに出力されてるんだろうか?

ホストの設定をlocalhostにすると、clientから(PublicIPから)繋げない。。。

netstat -antuとかで見ると、localhostからのアクセスしか受け付けないようになってた。。

fsDefaultをlocalhostにするとつなげない。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?