Raspberry Pi 2でクラスタ構築

動機

以前、Raspberry Pi 2でTomcatのクラスターサーバーを構築したときの機材が放置してあったので、そのままにしておくのはもったいないと思い、もう一度何かしらのクラスターを構築してみようと思った。

使用しなくなっていた原因

  • Raspberry Pi 2はかなり非力で、重いJavaアプリケーションを動作させることが不適であったこと
  • セッションはサーバー毎で別になるため、負荷を分散する恩恵をあまり受けられなかったこと(セッションを共有することも出来るが、メモリの消費が増えるため断念)
  • データ保存用のSDカードが壊れた

何を構築するか

今回のクラスターの構築は実務で使うより、勉強の意味合いが大きい。まず、最近はどのようなものが流行っているのか調査する。また、Raspberry Pi 2は非力なため1台1台別々に動作させるのではなく、今回は複数サーバーを束ねて1台のサーバーとして動作させるようにしたい。

  • Kubernetes
     機能説明は省略、次回以降調べて記載する。
     Googleの検索でヒットするのは、殆どこのクラスター構築に関する記事。実際にRaspberry Piで構築している人も多いため、構築方法は見つけやすいと思う。ただし、古いRaspberry Pi 2でも動作させることが出来るかはやってみないと分からない。
  • Hadoop
     大量データを分散処理するためのプラットフォーム。Javaで動作するため構築に関しては問題ないはず。分散処理のため使用用途は限られるかも知れない。
  • その他
     アプリケーションの機能限定でクラスター化するもの。以前構築したTomcatのクラスター、MySQLや、Apache HTTPサーバーなどに用意されているクラスター化機能を使用する。

取り敢えず今回はHadoopを構築した後に、Kubernetesの構築も試してみる。

Raspberry Pi 2の動作確認

しばらく動かしていなかったため、まずは正常に起動するか確認する。

下記からインストーラーをダウンロードし、SDカードにインストールする。
https://ubuntu.com/download/raspberry-pi

アップデートや固定IPの設定をしたら、ここでSDカードのイメージバックアップを取得しておく。他のRaspberry Piにはそのイメージをコピーして構築の手間を省く。

# 固定IP化
sudo vi /etc/netplan/50-cloud-init.yaml
# 下記を追記
addresses: [192.168.0.xx/24]
gateway4: 192.168.0.xx
nameservers:
  addresses: [192.168.0.xx]
  search: []
dhcp4: false
# 変更を適用
sudo netplan apply
# 最新化
sudo apt update
sudo apt upgrade
# Firmwareを最新化(通常運用する場合は実施しないこと)
sudo apt install python3-pip
sudo pip3 install setuptools
sudo pip3 install vcgencmd

sudo curl -L --output /usr/bin/rpi-update https://raw.githubusercontent.com/Hexxeh/rpi-update/master/rpi-update && sudo chmod +x /usr/bin/rpi-update

sudo rpi-update

Hadoop構築

# 必要なソフトウェアをインストール
sudo apt install ssh
sudo apt install pdsh

下記からJDKをダウンロードする。
https://adoptopenjdk.net/releases.html

Raspberry Pi 2はArm 32bitプロセッサのため、上記をダウンロードした。

# 解凍し、リンクを作成
tar xvfz OpenJDK11U-jdk_arm_linux_hotspot_11.0.10_9.tar.gz
ln -nfs /home/xxx/jdk-11.0.10+9 jdk-11-latest
# バージョン表示確認
java -version
openjdk version "11.0.10" 2021-01-19
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.10+9)
OpenJDK Server VM AdoptOpenJDK (build 11.0.10+9, mixed mode)

下記からHadoopをダウンロードする。
https://hadoop.apache.org/releases.html

# 解凍
tar xvfz hadoop-3.2.2.tar.gz
# JAVA_HOMEを設定
export JAVA_HOME=/home/xxx/jdk-11-latest
# Standaloneモードで動作確認
cd hadoop-3.2.2
mkdir input
cp etc/hadoop/*.xml input
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.2.jar grep input output 'dfs[a-z.]+'
cat output/*

1       dfsadmin

Standaloneモードでの動作を確認できたので今回はここまで。

次回、完全分散モードで動作を確認する。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください