Raspberry Pi上でARM用のGridDBと時系列データベースを構築する方法

このブログでは、64ビットARM用のGridDBを構築し、Ubuntu Server 18.04のRaspberry Pi 3または4で実行する方法を紹介します。 多くの事例において、IoTソリューションのエッジにあるNoSQLデータベースに時系列データを保存することは理にかなっているといえます。低コストで低消費電力のARMデバイスは、これを実現する優れた方法です。

まず、なぜUbuntu Server 18.04なのかというと、Ubuntu Server 18.04は、Raspberry Pi 3やPi 4用の唯一のLinuxディストリビューションで、64ビットでGCC 4.8のパッケージを持っているからです。こちらからダウンロードして、Raspberry Pi Imagerでカスタムイメージとして簡単にインストールすることができます。

Raspberry Pi上でサーバを構築する

次に、Ubuntu 18.04をインストールしてRaspberry Pi上で実行している状態で、GridDB構築のための依存パッケージをインストールします。

$ apt-get -y install gcc-4.8 g++-4.8 build-essential git tcl tk ant libz-dev autoconf automake

メインの GridDB git リポジトリではなくgriddbnet/griddb_arm フォークに、ARMの修正があります。

$ git clone https://github.com/griddbnet/griddb_arm.git

これでサーバー構築の準備ができました。

$ cd griddb_arm
 $ ./bootstrap.sh
 $ CC=gcc-4.8 CXX=g++-4.8 ./configure
 $ make

GridDBを起動し、Javaサンプルを構築、実行する

構築が完了したら、READMEに従ってGridDBを起動し、Javaサンプルを実行します。

サーバーを設定します。

$ export GS_HOME=$PWD
 $ export GS_LOG=$PWD/log
 $ export PATH=${PATH}:$GS_HOME/bin
$ bin/gs_passwd admin -p admin
 $ sed  sed -i -e s/\"\"/\"defaultCluster\"/ conf/gs_cluster.json 

サーバーを起動します。

$ bin/gs_startnode
 $ bin/gs_joincluster -c defaultCluster -u admin/your_password

サンプルプログラムを構築して実行します。

$ export CLASSPATH=${CLASSPATH}:$GS_HOME/bin/gridstore.jar
 $ mkdir gsSample
 $ cp $GS_HOME/docs/sample/program/Sample1.java gsSample/.
 $ javac gsSample/Sample1.java
 $ java gsSample/Sample1 239.0.0.1 31999 defaultCluster admin admin
  --> Person:  name=name02 status=false count=2 lob=[65, 66, 67, 68, 69, 70, 71, 72, 73, 74]

Cクライアントを構築する

サーバと同様に、C クライアントは ARM 上で動作させるためにいくつかの小さな修正を必要とします。README の指示に従って構築してインストールします。

$ git clone https://github.com/griddbnet/c_client_arm.git
 $ cd client/c
 $ ./bootstrap.sh
 $ ./configure
 $ make
 $ sudo make install

これで、ARMベースのRaspberry Pi 3または4でGridDBが動作するようになりました。同様の手順で、PythonNodeJSや他のGridDBクライアントを構築するのも簡単に行えます。

ブログの内容について疑問や質問がある場合は Q&A サイトである Stack Overflow に質問を投稿しましょう。 GridDB 開発者やエンジニアから速やかな回答が得られるようにするためにも "griddb" タグをつけることをお忘れなく。 https://stackoverflow.com/questions/ask?tags=griddb

Leave a Reply

Your email address will not be published. Required fields are marked *