CentOS7に最短でApacheSparkの環境構築


<h3>動機</h3>
ApacheSparkを自宅で勉強できるように環境構築してみた。

<h3>構築環境</h3>
<ul>
<li>OS Windows10</li>
<li>仮想化ソフト: Oracle VM VirtualBox＆vagrant</li>
<li>仮想OS:CentOS7.6</li>
<li>ApacheSpark-2.4.0</li>
</ul>


<h4>1). 仮想化ソフトのインストール</h4>
公式サイトからWindows版の最新版をインストール

・Oracle VM VirtualBox
https://www.virtualbox.org/
・vagrant
https://www.vagrantup.com/

<h4>2). 仮想環境作成</h4>
好きな場所にディレクトリ作成し「vagrant init centos/7」を実行
※今回はC:\workspace\centos7

```
C:\workspace\centos7>vagrant init centos/7
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
```

ディレクトリに作成されたVagrantfileを編集します

```
 #46行目あたりに共有フォルダの設定を追記
 config.vm.synced_folder "./workspace", "/home/vagrant/workspace"

 #51行目あたりにメモリの割り当て量を追記
  config.vm.provider "virtualbox" do |vb|
     vb.customize ["modifyvm", :id, "--memory", "2048"]
   end
```

共有フォルダを作成しておき「vagrant up」を実行
※初回は時間がかかります

処理が完了し「vagrant ssh」で接続できれば成功

```
C:\workspace\centos7>vagrant ssh
Last login: Sun Feb 24 10:34:45 2019 from 10.0.2.2
[vagrant@localhost ~]$ ls
workspace
```

CentOSの日本語化

```
[vagrant@localhost ~]$sudo yum -y install ibus-kkc vlgothic-*
[vagrant@localhost ~]$ sudo localectl set-locale LANG=ja_JP.UTF-8
[vagrant@localhost ~]$ source /etc/locale.conf
#日本語化されているか確認
[vagrant@localhost ~]$ echo $LANG
ja_JP.UTF-8
```

タイムゾーンを日本に設定

```
[vagrant@localhost ~]$ sudo timedatectl set-timezone Asia/Tokyo
#local timeが日本か確認
[vagrant@localhost ~]$ sudo timedatectl
      Local time: 日 2019-02-24 19:47:20 JST
  Universal time: 日 2019-02-24 10:47:20 UTC
        RTC time: 日 2019-02-24 10:47:18
       Time zone: Asia/Tokyo (JST, +0900)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a
```

Java8のインストール

```
#ダウンロード先リンクは適宜変更
[vagrant@localhost ~]$curl -LO -H "Cookie: oraclelicense=accept-securebackup-cookie" \
>"https://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.rpm"
[vagrant@localhost ~]$sudo rpm -Uvh jdk-8u201-linux-x64.rpm
#環境変数の設定
[vagrant@localhost tmp]$ sudo vi /etc/profile

# 最終行あたりに追記
export JAVA_HOME=/usr/java/default
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar

#再読み込み
[vagrant@localhost tmp]$ source /etc/profile

#確認
[vagrant@localhost tmp]$ echo ${JAVA_HOME}
/usr/java/default
```

ApacheSpark-2.4.0のインストール

```
#めっちゃ時間がかかる
[vagrant@localhost tmp]$ curl -O https://www-us.apache.org/dist/spark/spark-2.4.0/spark
-2.4.0-bin-hadoop2.7.tgz
#フォルダ名が長いのでシンボリックリンク作成
[vagrant@localhost opt]$ sudo ln -s spark-2.4.0-bin-hadoop2.7 spark
#環境変数用のシェルを作成
[vagrant@localhost profile.d]$ sudo vi /etc/profile.d/spark.sh
#追記
export SPARK_HOME=/opt/spark
#再読み込み
[vagrant@localhost profile.d]$ source /etc/profile
#確認
[vagrant@localhost profile.d]$ echo ${SPARK_HOME}
/opt/spark

#サンプルプログラム実行
${SPARK_HOME}/bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
${SPARK_HOME}/examples/jars/spark-examples_2.11-2.4.0.jar \
10

#円周率っぽい値が出力されていたら成功
Pi is roughly 3.142647571323786
```
<h3>感想</h3>
自分用の設定多すぎて全然最短じゃなかった…
次はHDFSとの連携やscalaの自作jarで実行できたらまとめたい。

・参考
日本語化
https://www.server-world.info/query?os=CentOS_7&p=japanese

Apache Spark入門 動かして学ぶ最新並列分散処理フレームワーク
https://www.amazon.co.jp/dp/B01AXQNTJE/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1