Google Compute Engine上でSparkクラスタ環境を構築
はじめに
SparkのインストールについてはApache Spark入門(翔泳社)を参考にしました。最終的に作る環境はGCEで以下のインスタンスを作成する
spark-master x1
spark-worker x2
spark-client x1
1. 共通イメージの作成。全インスタンス共通の設定をしておく。
共通イメージは、以下の項目のチェックを外しておく。これはディスクからイメージを作る際にインスタンスとディスクの紐付けを解除するためにインスタンスを削除する必要があるのであるが、その際にデータを消さないようにするため。
「インスタンスを削除する際にブートディスクを削除する」
メタデータをクリックし、sshキーの箇所で公開鍵を登録する。
$ ssh -o UserKnownHostsFile=/dev/null -o CheckHostIP=no -o StrictHostKeyChecking=no user名@IPアドレス
JDKのインストールと設定
Oracke JDKをダウンロード。CookieにAcceptしたというリクエストを含めてwgetすれば、同意したとみなされ、URL直指定でもダウンロードできる。
$ wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jdk-8u66-linux-x64.rpm
$ sudo rpm -ivh jdk-8u66-linux-x64.rpm
環境変数を設定
$ export JAVA_HOME=/usr/java/default
$ export PATH=$JAVA_HOME/bin/:$PATH
Sparkのインストールと設定
SparkはHadoop2.6以上向けにビルドされたものを使用する。
$ wget http://d3kbcqa49mib13.cloudfront.net/spark-1.5.2-bin-hadoop2.6.tgz
$ sudo tar zxvf spark-1.5.2-bin-hadoop2.6.tgz -C /opt/
$ cd /opt
$ sudo ln -s spark-1.5.2-bin-hadoop2.6 spark
export SPARK_HOME=/opt/spark
source /etc/profile
$ /opt/spark/bin/spark-submit --version
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 1.5.2
/_/
Type --help for more information.
$ /opt/spark/bin/spark-submit --class org.apache.spark.examples.SparkPi /opt/spark/lib
/spark-examples-1.5.2-hadoop2.6.0.jar 10
・・・・
Pi is roughly 3.142552
・・・
$ sudo rpm --import http://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/RPM-GPG-KEY-cloudera
$ sudo rpm -ivh http://archive.cloudera.com/cdh5/one-click-install/redhat/6/x86_64/cloudera-cdh-5-0.x86_64.rpm
[cloudera-cdh5]
# Packages for Cloudera's Distribution for Hadoop, Version 5, on RedHat or CentOS 6 x86_64
name=Cloudera's Distribution for Hadoop, Version 5
baseurl=http://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/5/
gpgkey = http://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/RPM-GPG-KEY-cloudera
gpgcheck = 1
$ yum clean all
Loaded plugins: fastestmirror, security
Cleaning repos: base cloudera-cdh5 extras scl updates
Cleaning up Everything
Cannot remove rpmdb file /var/lib/yum/rpmdb-indexes/pkgtups-checksums
Cannot remove rpmdb file /var/lib/yum/rpmdb-indexes/file-requires
Cannot remove rpmdb file /var/lib/yum/rpmdb-indexes/version
Cannot remove rpmdb file /var/lib/yum/rpmdb-indexes/conflicts
インスタンスをリブートすると/etc/hostsがなぜか初期化される?ようなので、/etc/rc.localでhostsファイルを設定するように仕込む。本当はchefやansible、もしくはgceの標準の機能でできそうであるが、後でやり方を調べる。
ここまででベースとなるディスクはできたので、ここからイメージを作成する。
イメージ=>新しいイメージ作成で、先ほど作成したインスタンス名を指定し、イメージを作成する。
2. Hadoopのインストールと設定
2.1. masterノード
spark-masterにNameNodeと、ResourceManagerをインストール
$ sudo yum install -y hadoop-hdfs-namenode
$ sudo yum install -y hadoop-yarn-resourcemanager
2.2. workerノード
$ sudo yum install -y hadoop-hdfs-datanode
$ sudo yum install -y hadoop-yarn-nodemanager
workerノードは複数作成するので、このノードのイメージを作成し、そのイメージを使ったインスタンステンプレートを作成。そしてインスタンスグループで4台作成する。
2.3. Clientノード
$ sudo yum install -y hadoop-hdfs hadoop-yarn
2.4. Hadoop共通設定
全てのノードで以下の設定を行う。
<configuration>
<property>
<name>fs.defaultFS</name> #利用する分散ファイルシステムを指定
<value>hdfs://spark-master01:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name> #HDFSやYARNが利用する一時ディレクトリ
<value>/hadoop/tmp</value>
</property>
</configuration>
<configuration>
<property>
<name>dfs.namenode.name.dir</name> #NameNodeがHDFS上のファイルのメタデータを保存するディレクトリを指定
<value>file:///hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name> #DataNodeがブロックを保存するディレクトリを指定。このディレクトリの容量の合計値/3(ブロックの複製数)がHDFSとして格納できるデータ容量。
<value>file:///hadoop/hdfs/data</value>
</property>
</configuration>
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name> #ResourceManagerが動作するマシンのホスト名
<value>spark-master</value>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name> #コンテナのログの格納先。
<value>file:///hadoop/yarn/node-manager/logs</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name> #NodeManagerが利用するローカルディスクのパス
<value>file:///hadoop/yarn/node-manager/local</value>
</property>
</configuration>
HDFSやYARNの動作に必要なディレクトリを作成
$ sudo mkdir -p /hadoop/hdfs
$ sudo chown hdfs:hadoop /hadoop/hdfs
$ sudo chmod 775 /hadoop/hdfs
$ sudo mkdir -p /hadoop/yarn
$ sudo chown yarn:hadoop /hadoop/yarn
$ sudo chmod 775 /hadoop/yarn
$ sudo mkdir -p /hadoop/tmp
$ sudo chmod 777 /hadoop/tmp
# sudo -u hdfs hdfs namenode -format
2.5. HDFSの起動と動作確認
spark-worker01,02で以下のコマンドを実行
# service hadoop-hdfs-datanode start
spark-master01で以下のコマンドを実行
# service hadoop-hdfs-namenode start
確認
# sudo -u hdfs hdfs dfsadmin -report
Configured Capacity: 10432602112 (9.72 GB)
Present Capacity: 7175352320 (6.68 GB)
DFS Remaining: 7175311360 (6.68 GB)
DFS Used: 40960 (40 KB)
DFS Used%: 0.00%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks (with replication factor 1): 0
-------------------------------------------------
Live datanodes (1):
Name: 10.240.0.5:50010 (spark-worker01.c.yotsu-1130.internal)
Hostname: spark-worker01.c.yotsu-1130.internal
Decommission Status : Normal
Configured Capacity: 10432602112 (9.72 GB)
DFS Used: 40960 (40 KB)
Non DFS Used: 3257249792 (3.03 GB)
DFS Remaining: 7175311360 (6.68 GB)
DFS Used%: 0.00%
DFS Remaining%: 68.78%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Wed Nov 18 01:03:44 UTC 2015
HDFS上に各種ディレクトリを作成
# sudo -u hdfs hdfs dfs -mkdir -p /hadoop/tmp
# sudo -u hdfs hdfs dfs -chmod 777 /hadoop/tmp
# sudo -u hdfs hdfs dfs -mkdir -p /tmp
# sudo -u hdfs hdfs dfs -chmod777 /tmp
# sudo -u hdfs hdfs dfs -mkdir -p /hadoop/yarn/app-logs
# sudo -u hdfs hdfs dfs -chmod 777 /hadoop/yarn/app-logs
# sudo -u hdfs hdfs dfs -mkdir -p /user/y_tadayasu
# sudo -u hdfs hdfs dfs -chown y_tadayasu:y_tadayasu /user/y_tadayasu
2.6. YARNの起動と動作確認
spark-worker01,02で以下のコマンドを実行
# service hadoop-yarn-nodemanager start
spark-master01で以下のコマンドを実行
# service hadoop-yarn-resourcemanager start
確認
# sudo -u yarn yarn node -list -all
15/11/18 01:14:07 INFO client.RMProxy: Connecting to ResourceManager at spark-master01/10.240.0.2:8032
Total Nodes:2
Node-Id Node-State Node-Http-Address Number-of-Running-Containers
spark-worker02.c.yotsu-1130.internal:38198 RUNNING spark-worker02.c.yotsu-1130.internal:8042
0
spark-worker01.c.yotsu-1130.internal:41966 RUNNING spark-worker01.c.yotsu-1130.internal:8042
0
3. Sparkの動作確認
サンプルプログラムを実行する。
$ ./bin/spark-submit --master yarn-client --class org.apache.spark.examples.Spark
Pi /opt/spark/lib/spark-examples-1.5.2-hadoop2.6.0.jar 10
・・・
Pi is roughly 3.1425
・・・
Author And Source
この問題について(Google Compute Engine上でSparkクラスタ環境を構築), 我々は、より多くの情報をここで見つけました https://qiita.com/t-yotsu/items/e64c7b37d77c3049a236著者帰属:元の著者の情報は、元の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 .