Symfoware

Symfowareについての考察blog

GridDBをCentOS 7.2にインストール

ビッグデータ向けスケールアウト型データベース GridDB

CentOS 7.2にインストールしてみます。



インストールと設定



こちらの手順を参考にしました。
https://github.com/griddb/griddb_nosql

CentOS 7.2のインストールはこちら。
CentOS 7.2をMinimal ISOから最小構成でインストールする

予めSELinuxは無効にしておきました。
SELinuxを無効化する


設定ファイルを編集。


# vi /etc/selinux/config




SELinuxを無効に。


# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted




再起動して設定を反映。


# shutdown -r now






コンパイルに必要なライブラリをインストールしておきます。


# yum install gcc-c++ autoconf automake




ソースはgitで取得しました。


# yum install git
# cd /usr/local/src/
# git clone https://github.com/griddb/griddb_nosql.git




クローンしたフォルダに移動。
コンパイルします。


# cd griddb_nosql
# ./bootstrap.sh
# ./configure
# make




インストールは行わず、このディレクトリで動作させます。
環境変数を設定。


# export GS_HOME=$PWD
# export GS_LOG=$PWD/log
# export no_proxy=127.0.0.1




パスワードの設定を行います。


# bin/gs_passwd admin
Password: (パスワードを入力)
Retype password: (パスワードを入力)




設定ファイルを編集。


# vi conf/gs_cluster.json




「clusterName」を適当に指定します。
今回は「my_cluster」としました。


{
        "dataStore":{
                "partitionNum":128,
                "storeBlockSize":"64KB"
        },
        "cluster":{
                "clusterName":"my_cluster",
                "replicationNum":2,
                "notificationAddress":"239.0.0.1",
                "notificationPort":20000,
                "notificationInterval":"5s",
                "heartbeatInterval":"5s",
                "loadbalanceCheckInterval":"180s"
        },




IPアドレスっぽい指定があるけど、239.0.0.1のままでよいのかな?と思いましたが、
これはマルチキャストのIPアドレス指定になります。
Python Javaでマルチキャストプログラム

この指定のままでOKです。




起動



ノードを起動。


# bin/gs_startnode



クラスターに参加。
書式は


bin/gs_joincluster -c [gs_cluster.jsonに記載したclusterName] -u admin/[gs_passwdで設定したパスワード]



実際にはこのようなコマンドになります。


# bin/gs_joincluster -c my_cluster -u admin/P@ssw0rd






停止



サーバーを停止するには、クラスターから外れた後にノードを停止します。


# bin/gs_stopcluster -u admin/P@ssw0rd
# bin/gs_stopnode -u admin/P@ssw0rd
Stopping node








Javaのサンプルプログラム



付属のJavaプログラムを動かしてみます。
指定通り、antを実行すると、「gridstore-conf.jar」「gridstore.jar」の2つのjarが生成されます。
これに加え、同梱の「slf4j-api-1.7.7.jar」「slf4j-jdk14-1.7.7.jar」をビルドパスに加えます。

677_01.png


同梱されているサンプルプログラムは以下のとおり。


  1. package gsSample;
  2. import java.util.Arrays;
  3. import java.util.Properties;
  4. import com.toshiba.mwcloud.gs.Collection;
  5. import com.toshiba.mwcloud.gs.GSException;
  6. import com.toshiba.mwcloud.gs.GridStore;
  7. import com.toshiba.mwcloud.gs.GridStoreFactory;
  8. import com.toshiba.mwcloud.gs.Query;
  9. import com.toshiba.mwcloud.gs.RowKey;
  10. import com.toshiba.mwcloud.gs.RowSet;
  11. // Operaton on Collection data
  12. public class Sample1 {
  13.     static class Person {
  14.         @RowKey String name;
  15.         boolean status;
  16.         long count;
  17.         byte[] lob;
  18.     }
  19.     
  20.     public static void main(String[] args) throws GSException {
  21.         
  22.         // Get a GridStore instance
  23.         Properties props = new Properties();
  24.         props.setProperty("notificationAddress", "239.0.0.1");
  25.         props.setProperty("notificationPort", "31999");
  26.         props.setProperty("clusterName", "my_cluster");
  27.         props.setProperty("user", "admin");
  28.         props.setProperty("password", "P@ssw0rd");
  29.         GridStore store = GridStoreFactory.getInstance().getGridStore(props);
  30.         // Create a Collection (Delete if schema setting is NULL)
  31.         Collection<String, Person> col = store.putCollection("col01", Person.class);
  32.         // Set an index on the Row-key Column
  33.         col.createIndex("name");
  34.         // Set an index on the Column
  35.         col.createIndex("count");
  36.         // Set the autocommit mode to OFF
  37.         col.setAutoCommit(false);
  38.         // Prepare data for a Row
  39.         Person person = new Person();
  40.         person.name = "name01";
  41.         person.status = false;
  42.         person.count = 1;
  43.         person.lob = new byte[] { 65, 66, 67, 68, 69, 70, 71, 72, 73, 74 };
  44.         // Operate a Row on a K-V basis: RowKey = "name01"
  45.         boolean update = true;
  46.         col.put(person);    // Add a Row
  47.         person = col.get(person.name, update);    // Obtain the Row (acquiring a lock for update)
  48.         col.remove(person.name);    // Delete the Row
  49.         // Operate a Row on a K-V basis: RowKey = "name02"
  50.         col.put("name02", person);    // Add a Row (specifying RowKey)
  51.         // Commit the transaction (Release the lock)
  52.         col.commit();
  53.         // Search the Collection for a Row
  54.         Query<Person> query = col.query("select * where name = 'name02'");
  55.         // Fetch and update the searched Row
  56.         RowSet<Person> rs = query.fetch(update);
  57.         while (rs.hasNext()) {
  58.             // Update the searched Row
  59.             Person person1 = rs.next();
  60.             person1.count += 1;
  61.             rs.update(person1);
  62.             System.out.println("Person: " +
  63.                     " name=" + person1.name +
  64.                     " status=" + person1.status +
  65.                     " count=" + person1.count +
  66.                     " lob=" + Arrays.toString(person1.lob));
  67.         }
  68.         // Commit the transaction
  69.         col.commit();
  70.         // Release the resource
  71.         store.close();
  72.     }
  73. }




実行すると、以下の出力が得られました。


Person: name=name02 status=false count=2 lob=[65, 66, 67, 68, 69, 70, 71, 72, 73, 74]



どうやら動いてくれたようです。





落穂ひろい



ちなみに、SELinuxをoffにしていないと、こんな接続エラーとなります。


3 05, 2016 5:00:20 午後 com.toshiba.mwcloud.gs.GridStoreLogger$Config warn
警告: Config file must be specified with "gridstore-conf*.jar" (urlList=[file:/home/baranche/workspace/griddb/bin/gs_client.properties])
3 05, 2016 5:00:23 午後 com.toshiba.mwcloud.gs.GridStoreLogger$Connection info
情報: Retry started (context=1e80bfe8, statement=null, orgAddress=null, partition=0, statementId=0, trialCount=0)
com.toshiba.mwcloud.gs.common.GSConnectionException: [145028:JC_BAD_CONNECTION] Failed to connect (address=/127.0.0.1:10001, reason=接続を拒否されました)
    at com.toshiba.mwcloud.gs.subnet.NodeConnection.<init>(NodeConnection.java:120)
    at com.toshiba.mwcloud.gs.subnet.NodeConnectionPool.resolve(NodeConnectionPool.java:154)
    at com.toshiba.mwcloud.gs.subnet.NodeResolver.prepareMasterConnection(NodeResolver.java:410)
    at com.toshiba.mwcloud.gs.subnet.NodeResolver.getPartitionCount(NodeResolver.java:158)
    at com.toshiba.mwcloud.gs.subnet.GridStoreChannel$3.execute(GridStoreChannel.java:1717)
    at com.toshiba.mwcloud.gs.subnet.GridStoreChannel.executeStatement(GridStoreChannel.java:1392)
    at com.toshiba.mwcloud.gs.subnet.GridStoreChannel.executeResolver(GridStoreChannel.java:1577)
    at com.toshiba.mwcloud.gs.subnet.GridStoreChannel.resolvePartitionId(GridStoreChannel.java:1713)
    at com.toshiba.mwcloud.gs.subnet.SubnetGridStore.putContainer(SubnetGridStore.java:748)
    at com.toshiba.mwcloud.gs.subnet.SubnetGridStore.putCollection(SubnetGridStore.java:801)
    at com.toshiba.mwcloud.gs.subnet.SubnetGridStore.putCollection(SubnetGridStore.java:627)
    at com.toshiba.mwcloud.gs.subnet.SubnetGridStore.putCollection(SubnetGridStore.java:1)
    at gsSample.Sample1.main(Sample1.java:54)
Caused by: java.net.ConnectException: 接続を拒否されました
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at com.toshiba.mwcloud.gs.subnet.NodeConnection.<init>(NodeConnection.java:110)
    ... 12 more



関連記事

テーマ:サーバ - ジャンル:コンピュータ

  1. 2016/03/05(土) 17:59:12|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<GridDBにJavaクライアントから接続し、クエリーを実行する | ホーム | CentOS 7.2をMinimal ISOから最小構成でインストールする>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1863-105de81d
この記事にトラックバックする(FC2ブログユーザー)