SlideShare a Scribd company logo
1 of 43
1
〜Apache Geode 入門
gfsh によるクラスター構築・管理
quitada
2017/8/18
2
Apache Geode? gfsh?何それお
いしいの?
Apache Geode と gfsh
 Apache Geode(アパッチジオード)とは?
– インメモリデータグリッド製品 Pivotal GemFire のオープンソース版
– スケールアウト可能な分散型 Key-Value NoSQL インメモリデータベースに、
SQL の select 文みたいなクエリーとかデータドリブンなイベント処理とか
並列データ処理とかできるようにしたやつ
– Apache Ignite とか Infinispan とか Hazelcast みたいなやつ
– http://geode.apache.org/
 gfsh(ジーフィッシュ)とは?
– Geode Shell の略:あれ?「f」はどこからきたの?
▪ 商用版の GemFire では、GemFire Shell の略なのでそのまま流用していると思われる
– Apache Geode 付属の CLI 管理ツールで、クラスターの構築とか起動、デー
タベースの構築とか各種運用管理をするやつ
3
gfsh を使って Apache Geode のクラス
ターを構築してデータ投入してみま
す!
gfsh を使って Apache Geode のクラス
ターを構築してデータ投入してみま
す!
大切なことなので、二度いいました!
データ設計もしてみます!
4
こんな構成でクラスター構築してみる(1/2)
5
サーバーマシン 1
Locator 1
Cache Server 1
サーバーマシン 2
Locator 2
Cache Server 2
冗長構成
Partitioned Region
冗長コピー x1
IP: 192.168.100.1
ホスト名: machine1
IP: 192.168.100.2
ホスト名: machine2
ローカルディスク ローカルディスク
データ永続化 データ永続化
今回は仮想マシン x2 を使います。
OS は Cent OS Linux 7 を使いま
す。各仮想マシンがお互い
TCP/UDP で通信できて、IP から
ホスト名解決できるようにしてお
きます。
Locator(ロケーター)は、クラ
スターへの接続ポイントならびに
クラスターのメンバー管理を行う
人です。1 ついれば動きますが、
冗長構成で 2 つ用意してみます。
こんな構成でクラスター構築してみる(2/2)
6
サーバーマシン 1
Locator 1
Cache Server 1
サーバーマシン 2
Locator 2
Cache Server 2
冗長構成
Partitioned Region
冗長コピー x1
IP: 192.168.100.1
ホスト名: machine1
IP: 192.168.100.2
ホスト名: machine2
ローカルディスク ローカルディスク
データ永続化 データ永続化
Cache Server(キャッシュサー
バー)は、インメモリのデータス
トアの人です。複数束ねてあたか
も一つのインメモリデータストア
として使用可能です。今回は冗長
構成もかねて 2 つ用意します。
Region(リージョン)は、
RDBMS のテーブルみたいなもの
です。今回は Partitioned Region
(パーティションリージョン)と
いう、Hadoop HDFS みたいな
データの持ち方で、ローカルディ
スクにデータ永続化する設定にし
ます。
では、順番にクラスター構築してみよ
う!
7
事前準備(1/6)
8
サーバーマシン 1
Locator 1
Cache Server 1
サーバーマシン 2
Locator 2
Cache Server 2
冗長構成
Partitioned Region
冗長コピー x1
IP: 192.168.100.1
ホスト名: machine1
IP: 192.168.100.2
ホスト名: machine2
ローカルディスク ローカルディスク
データ永続化 データ永続化
各マシンで、Locator や Cache
Server に必要な設定ファイル、
起動スクリプト、ログ、永続化し
たデータの格納ディレクトリ等準
備します。
事前準備(2/6)
 Apache Geode を各マシンにインストールし、gfsh コマンド
を実行できるように各種環境変数を設定します。
 クラスターのルートディレクトリの作成
– ログとか設定ファイルを格納するルートディレクトリを決めましょ
う。ここでは、以下のディレクトリを各マシンに作るものとします。
▪ /home/geode/mycluster
– 極端な話、各マシンで Locator、Cache Server 用に全く異なるディ
レクトリにしてもよいのですが、ここでは、管理しやすくするため
共通ルートディレクトリを決めてしまいます。
9
事前準備(3/6)
 設定ファイルの作成(1/3)
– ここでは、各マシンのクラスタールートディレクトリ直
下(ここでは、/home/geode/mycluster)にデフォルトの
gemfire.properties というファイル名で次ページのよう
な内容のファイルを作成します。
– プロパティーファイル名のデフォルトが
gemfire.properties なのは、商用版 GemFire の名残ですが、
起動時に明示的に指定すれば好きなファイル名でかまい
ません。
10
事前準備(4/6)
 設定ファイルの作成(2/3)
– サーバーマシン 1(machine1)
– サーバーマシン 2(machine2)
11
log-level=config
locators=machine1[55221],machine2[55221]
bind-address=machine1
server-bind-address=machine1
jmx-manager-bind-address=machine1
log-level=config
locators=machine1[55221],machine2[55221]
bind-address=machine2
server-bind-address=machine2
jmx-manager-bind-address=machine2
事前準備(5/6)
 設定ファイルの作成(3/3)
– 各パラメーターの意味
▪ log-level : ログレベルです。config レベルに設定すると、一般的な info レベルに加えてクラ
スターの設定内容も出力されるので、正しく設定されているかどうか確認のため便利です。
▪ locators : Locator 一覧(ホスト名[ポート番号])をあらかじめ設定する必要があります。
▪ bind-address : クラスター内通信用のホスト名を指定します。NIC が 1 つだけの時は設定不要
ですが、意図したネットワークセグメントで通信しているかどうか確認のため明示的に設
定することをおすすめします。
▪ server-bind-address : クライアントサーバー通信用のホスト名を指定します。NIC が 1 つだけ
の時は bind-address 同様設定不要です。Cache Server だけに有効なパラメーターです。
▪ jmx-manager-bind-address : JMX マネージャー通信用のホスト名を指定します。NIC が 1 つだ
けの時は bind-address 同様設定不要です。JMX マネージャーサービスが稼働する Locator あ
るいは Cache Server にのみ有効なパラメーターです。デフォルトでは、一番最初に起動す
る Locator のみに適用されるパラメーターとなります。
▪ ホスト名を指定するパラメーターに関しては、代わりに IP 直指定でもかまいません。
12
事前準備(6/6)
 各マシンで Locator や Cache Server のログや永続化ディスクストアを格納する
ディレクトリを作成します。
– サーバーマシン 1(machine1)
– サーバーマシン 2(machine2)
13
$ cd /home/geode/mycluster
$ mkdir locator1
$ mkdir server1
$ cd /home/geode/mycluster
$ mkdir locator2
$ mkdir server2
locator1 が Locator 1 用のディレ
クトリ、server1 が Cache Server
1 用のディレクトリとします。
locator2 が Locator 2 用のディレ
クトリ、server2 が Cache Server
1 用のディレクトリとします。
Locator 起動(1/3)
14
サーバーマシン 1
Locator 1
Cache Server 1
サーバーマシン 2
Locator 2
Cache Server 2
冗長構成
Partitioned Region
冗長コピー x1
IP: 192.168.100.1
ホスト名: machine1
IP: 192.168.100.2
ホスト名: machine2
ローカルディスク ローカルディスク
データ永続化 データ永続化
各マシンで、コマンドラインより
gfsh を使って Locator を起動しま
す。
Locator 起動(2/3)
 各マシンで、gfsh を使って Locator を起動します
– サーバーマシン 1(machine1)
– サーバーマシン 2(machine2)
15
$ cd /home/geode/mycluster
$ gfsh start locator --name=locator1 --dir=locator1 --bind-address=machine1 --
port=55221 --properties-file=gemfire.properties
$ cd /home/geode/mycluster
$ gfsh start locator --name=locator2 --dir=locator2 --bind-address=machine2 --
port=55221 --properties-file=gemfire.properties
Locator 起動(3/3)
 “gfsh start locator” コマンドのパラメーターの意味
– --name : クラスター中の各プロセス識別のため、各 Locator と Cache Server で一意の名前を指定
します。ここでは、事前準備で作成した各 Locator 用ディレクトリ名をそのまま指定しています。
– --dir : 事前準備で作成した各 Locator 用ディレクトリのパスを指定します。絶対指定・相対指定ど
ちらも可能です。ここでは、当該ディレクトリのあるディレクトリ(ここでは、
/home/geode/mycluster)で gfsh コマンドを実行することを前提に相対指定としています。
– --bind-address : 事前準備で作成した gemfire.properties の Locator 一覧にホスト名にそって指定し
ます。ただし、gemfire.properties の bind-address パラメーターですでに設定済みなので、これは
省略可能です。
– --port : 事前準備で作成した gemfire.properties の Locator 一覧のポート番号にそって指定します。
ここでは Locator 1、Locator2 ともに 55221 を適用しています。
– --properties-file : 事前準備で作成した設定ファイルのパスを指定します。絶対指定・相対指定どち
らも可能です。
 各 Locator を起動するコマンドラインをシェルスクリプトにしておくと良いでしょう。
16
Cache Server 起動(1/3)
17
サーバーマシン 1
Locator 1
Cache Server 1
サーバーマシン 2
Locator 2
Cache Server 2
冗長構成
Partitioned Region
冗長コピー x1
IP: 192.168.100.1
ホスト名: machine1
IP: 192.168.100.2
ホスト名: machine2
ローカルディスク ローカルディスク
データ永続化 データ永続化
各マシンで、コマンドラインより
gfsh を使って Cache Server を起
動します。
Cache Server 起動(2/3)
 各マシンで、gfsh を使って Cache Server を起動します
– サーバーマシン 1(machine1)
– サーバーマシン 2(machine2)
18
$ cd /home/geode/mycluster
$ gfsh start server --name=server1 --dir=server1 --server-port=0 --properties-
file=gemfire.properties
$ cd /home/geode/mycluster
$ gfsh start server --name=server2 --dir=server2 --server-port=0 --properties-
file=gemfire.properties
Cache Server 起動(3/3)
 “gfsh start server” コマンドのパラメーターの意味
– --name : クラスター中の各プロセス識別のため、各 Locator と Cache Server で一意の名前を指定
します。ここでは、事前準備で作成した各 Cache Server 用ディレクトリ名をそのまま指定してい
ます。
– --dir : 事前準備で作成した各 Cache Server 用ディレクトリのパスを指定します。絶対指定・相対
指定どちらも可能です。ここでは、当該ディレクトリのあるディレクトリで gfsh コマンドを実
行することを前提に相対指定しています。
– --server-port : クライアントアプリケ−ションとの通信用のポートを設定します。ここでは、0 を
指定することで、起動時に空いている任意のポートを割り当てます。割り当てられたポートは、
Locator が記憶するので、クライアントアプリケーションはロケーターに問い合わせることでど
のポート経由でアクセスすべきか知ることができます。もちろん、明示的にポート番号を指定す
ることも可能です。
– --properties-file : 事前準備で作成した設定ファイルのパスを指定します。絶対指定・相対指定どち
らも可能です。
 各 Cache Server を起動するコマンドラインをシェルスクリプトにしておくと良いでしょう。
19
20
Apache Geode クラスターができ
たので、設定内容・挙動を gfsh
で確認してみよう。
gfsh によるクラスター管理(1/2)
 gfsh を引数なしで実行すると、“gfsh>” というコマンドプロンプトが現れ、インタラク
ティブに各種コマンドを実行できるモードで起動します。
 bash とかみたく、適宜 TAB キーで各コマンド一覧表示やら引数の補完やらやってくれま
す。
21
$ gfsh
_________________________ __
/ _____/ ______/ ______/ /____/ /
/ / __/ /___ /_____ / _____ /
/ /__/ / ____/ _____/ / / / /
/______/_/ /______/_/ /_/ 1.2.0
Monitor and Manage Apache Geode
gfsh>
gfsh によるクラスター管理(2/2)
 大部分のコマンドを実行するには、まず、以下のコマンドでいずれかの Locator に接続す
る必要があります。
– --locator パラメーターに、Locator のホスト名とポート番号を指定します
 以下の管理コマンドを実行してみます。
22
gfsh>connect --locator=machine1[55221]
gfsh>help
gfsh>list members
gfsh>show log —member=server1 —lines=100
gfsh>change loglevel —loglevel=fine --members=server1
gfsh>show log —member=server1 —lines=100
gfsh>change loglevel --loglevel=config --members=server1
gfsh>status server —name=server1
gfsh>describe member —name=server1
デモ:
一連の gfsh 管理コマンドを実行して結
果を見てみるよ。
23
24
Apache Geode クラスターができ
たので、データの出し入れとか
gfsh でやりたいね!
と、その前に、データの入れ物
を作ったり、データの型定義と
かしたくない?
データオブジェクト設計と Region 作成(1/12)
25
サーバーマシン 1
Locator 1
Cache Server 1
サーバーマシン 2
Locator 2
Cache Server 2
冗長構成
Partitioned Region
冗長コピー x1
IP: 192.168.100.1
ホスト名: machine1
IP: 192.168.100.2
ホスト名: machine2
ローカルディスク ローカルディスク
データ永続化 データ永続化
データオブジェクトを挿入する入
れ物ととして、Region を作成す
るんですが、その前にデータオブ
ジェクトを設計してみます。
データオブジェクト設計と Region 作成(2/12)
 Apache Geode は、Region という名の Key-Value ストアに任意のオブジェ
クトを挿入できますよー!超柔軟!
– 実運用・実アプリケーションレベルでは、同一 Region に無秩序に任意の型
のオブジェクトが入っていたら大変なことに…
– なので、少なくとも単一 Region に挿入する Key や Value のオブジェクト型
は一意に定義したい
 はい、このプレゼンの趣旨的に、gfsh でできるだけ管理したいですよ
ね?
– gfsh でコマンドラインからデータオブジェクト挿入したいでしょう?
– gfsh でコマンドラインから SQL ライクなクエリーを実行したいでしょう?
26
データオブジェクト設計と Region 作成(3/12)
ということで…
– key には、各データを一意に識別するだけなの
で、文字列型(java.lang.String)で。
– value には、RDBMS のテーブルみたいな構造の
“ドメインオブジェクト” ってやつを入れること
にしましょう。
27
データオブジェクト設計と Region 作成(4/12)
 イメージ的には、RDBMS の DDL で定義したテーブル型をオブジェクトに変換する感じ。
 ここでは、以下のような DDL で定義したテーブル型からドメインオブジェクトの型を表す
Java クラスで実装してみます。
28
create table employee (
id CHAR(6),
first_name VARCHAR2(10),
family_name VARCHAR2(10),
title VARCHAR2(30),
age INT(3),
primary key( id )
);
データオブジェクト設計と Region 作成(5/12)
 はい、以下のような感じ。各カラムをフィールド変数として保持する感じ。
 実際には、コンストラクター、各フィールド変数のゲッターとかセッターも実装する必要あります。
 value として、こちらを元に quitada.Employee 型のドメインオブジェクトとして挿入します。
29
package quitada; // パッケージ名
public class Employee { // クラス名
private String id; // フィールド変数 – カラム: id
private String firstName; // フィールド変数 – カラム: first_name
private String familyName; // フィールド変数 – カラム: family_name
private String title; // フィールド変数 – カラム: title
private int age; // フィールド変数 – カラム: age
:
}
データオブジェクト設計と Region 作成(6/12)
 さて、次にさきほど作成したクラス(quitada.Employee)をコンパイルして jar でかためて
以下のように Cache Server にデプロイします(connect コマンドで Locator に接続してい
ることが前提*)。
 当該 jar ファイル自体は各 Locator ディレクトリ配下に配備されます。今回の例では、以下
のディレクトリ配下に配備されます。
– machine1:/home/geode/mycluster/locator1/cluster_config/cluster
– machine2:/home/geode/mycluster/locator2/cluster_config/cluster
 以降、各 Cache Server 起動時には自動的に当該 jar ファイルが各 Cache Server のローカル
ディレクトリーにコピーされデプロイされます。
30
gfsh>deply –jar=/path/to/classes/myDomainObject.jar
*= 以下、“gfsh>” プロンプトのコマンド実行例は全て connect コマンドで Locator 接続済みであることが前提。
データオブジェクト設計と Region 作成(7/12)
 [任意設定] シリアライザーの設定(1/5)
– ドメインオブジェクトを通信経路にのせるため、シリアライズ可能
であるよう設定する必要があります。
– ドメインオブジェクトの Java クラスをシリアライズ可能であるよ
うに実装していれば明示的なシリアライザー設定は不要です
(implements java.io.Serializable 付与してるとか)。
– ドメインオブジェクトの Java クラス自体がシリアライズ不可であ
る場合は、gfsh でシリアライザーの設定を行います。なお、シリア
ライザーは、Apache Geode 独自のシリアライズフォーマットであ
る PDX(Portable Data eXchange)のオートシリアライザーを適用し
ます。
31
データオブジェクト設計と Region 作成(8/12)
 [任意設定] シリアライザーの設定(2/5)
– まず対象クラスの PDX メタデータを永続化するディスクストアを以下のコマンドで
作成します。PDX メタデータの永続化は必須ではありませんが、Cache Server 再起動
の度に再作成するコスト削減のため設定が推奨されます。
– “—dir=pdx” と指定することで各 Cache Server ディレクトリ配下に PDX メタデータ永
続化ディスクストア格納用に pdx というディレクトリが作成されます。今回の例で
は、以下のディレクトリー配下に作成されます。
▪ machine1:/home/geode/mycluster/server1/pdx
▪ machine2:/home/geode/mycluster/server2/pdx
– “—name=pdx” と指定することで、当該ディスクストアを “pdx” という名前で参照
可能となります。
32
gfsh>create disk-store --name=pdx --dir=pdx
データオブジェクト設計と Region 作成(9/12)
 [任意設定] シリアライザーの設定(3/5)
– 次に、以下のコマンドで PDX ベースのシリアライザーを設定します。
– “—read-serialized=false” とすることで、ドメインオブジェクトをそのもののオブ
ジェクト型で読み込みます。逆に “true” とした場合は、必ず PdxInstance 型のオブ
ジェクトとして読み込みます(対象ドメインオブジェクトがシリアライズされたま
ま PdxInstance 型の入れ物に入っているイメージです)。
– “—disk-store=pdx” とすることで、先ほど作成した “pdx” という名前のディスクスト
アに PDX メタデータを格納するよう指定します。
– “—auto-serializable-classes=quitada.*” とすることで、quitada というパッケージの全
てのドメインオブジェクトを自動的にシリアライズ可能とします。
33
gfsh>configure pdx --read-serialized=false --disk-store=pdx --auto-serializable-
classes=quitada.*
データオブジェクト設計と Region 作成(10/12)
 [任意設定] シリアライザーの設定(4/5)
– さて、“configure pdx” コマンドを実行すると、以下のような不穏な
メッセージがでてくると思います。
– はい、PDX シリアライザー設定を有効化するには、すでに起動して
いる Cache Server を再起動する必要があります。
34
The command would only take effect on new data members joining the distributed
system. It won't affect the existing data members
:
Non portable classes :[quitada.*]
データオブジェクト設計と Region 作成(11/12)
 [任意設定] シリアライザーの設定(5/5)
– ということでまず以下の gfsh の “stop server” コマンドを使ってコマンドラ
インより Cache Serverを停止します。
– サーバーマシン 1(machine1)の Cache Server 停止
– サーバーマシン 2(machine2)の Cache Server 停止
– その後、先で言及した “start server” コマンドで各 Cache Server を再起動し
ます。
35
$ cd /home/geode/mycluster
$ gfsh stop server --dir=server1
$ cd /home/geode/mycluster
$ gfsh stop server --dir=server2
データオブジェクト設計と Region 作成(12/12)
 Region の作成
– SQL で create table を実行するイメージ(?)で、以下のようなコマンドを実行します。
– “—name=/Employee” とすることで、“Employee” という名前の Region を作成します。なお
Region 名の前に付与されているスラッシュは省略可能です。
– “—type=PARTITION_REDUNDANT_PERSISTENT” とすることで、Region 型として、データを各
サーバに分散配置(PARTITION)、高可用性確保のため他の Cache Server に各データのコピーを
1 つ保持(REDUNDANT)、全データをディスクに永続化(PERSISTENT)としています。
– “—key-constraint=java.lang.String” とすることで、Key として挿入可能なオブジェクトは文字列型
のみとなります。
– “—value-constraint=quitada.Employee” とすることで、Value として挿入可能なオブジェクトはド
メインオブジェクトとしてさきほど作成した quitada.Employee 型のみとなります。
36
gfsh>create region --name=/Employee --type=PARTITION_REDUNDANT_PERSISTENT --key-
constraint=java.lang.String --value-constraint=quitada.Employee
37
では、Apache Geode で、データ
の出し入れとか gfsh でやってみ
よう!
データオブジェクトの出し入れ・クエリー(1/5)
 まず、さきほど作成した Employee リージョンの有無確認のため、以下のコマン
ドを実行してみます。 “Employee” と出力されるかと思います。
 次に、Employee リージョンの詳細情報を以下のコマンドで確認します。
 さて、Employee リージョンが正常に作成されていることを確認したら、いよい
よデータオブジェクトの挿入です。
38
gfsh>list region
gfsh>describe region --name=/Employee
データオブジェクトの出し入れ・クエリー(2/5)
 その前に、Employee リージョンに挿入するデータオブジェクトのクラスを再確認してみます。
 はい、実際に gfsh でデータオブジェクト挿入の際には、各フィールド変数の名前とそれぞれの値を列
挙し、データオブジェクト型を指定することで、gfsh が自動的に Employee オブジェクトを生成して、
Employee リージョンの Value とします。
39
package quitada; // パッケージ名
public class Employee { // クラス名
private String id; // フィールド変数 – カラム: id
private String firstName; // フィールド変数 – カラム: first_name
private String familyName; // フィールド変数 – カラム: family_name
private String title; // フィールド変数 – カラム: title
private int age; // フィールド変数 – カラム: age
:
}
データオブジェクトの出し入れ・クエリー(3/5)
 いよいよデータオブジェクト挿入です。以下の put コマンドを実行します。
 “—region=/Employee” とすることで、Employee リージョンにデータオブジェクトを挿入することを宣言します。
 “--key-class=java.lang.String” とすることで、Key のオブジェクト型は文字列とします。デフォルトの型は文字列なので、
この設定は省略可能です。
 “--value-class=quitada.Employee” とすることで、Value のオブジェクト型は quitada.Employee 型とします。
 “—key=‘101’” とすることで、key の値を指定します。ここでは、ドメインクラスEmployeeの主キーと設定している
フィールド変数idの値を指定しています。文字列の場合はシングルクォーテーションで囲みます(省略可)。
 “—value” パラメータで、Value を指定します。上述の例のように、JSON っぽい形式でフィールド変数名のその値を指定
します。フィールド変数名や文字列値はシングルクォーテーションで囲みます(これも省略可)。
40
gfsh>put --region=/Employee --key-class=java.lang.String --value-
class=quitada.Employee --key='101' --
value=('id':'101','firstName':'Taro','familyName':'Yamada','title':'Engineer','age'
:28)
データオブジェクトの出し入れ・クエリー(4/5)
 次に、さきほど挿入したデータオブジェクトを読み込んでみました。以下の get
コマンドを実行します。結果として、gfsh では各フィールド変数値が出力され
ます。
 “—region=/Employee” とすることで、Employee リージョンからデータオブジェ
クトを読み込むことを宣言します。
 “—key=‘101’” とすることで、key の値が “101” であるデータオブジェクトを読み
込みます。
41
gfsh>get --region='/Employee' --key='101'
データオブジェクトの出し入れ・クエリー(5/5)
 最後にクエリーを実行してみましょう。以下の query コマンドの実行例です。
 “—query” に SQL の select 文ライクな、OQL(Object Query Language)のクエリーを指定します。
42
gfsh>query --query="select * from /Employee where id='101'"
Result : true
startCount : 0
endCount : 20
Rows : 1
age | familyName | firstName | id | title
--- | ---------- | --------- | --- | --------
28 | Yamada | Taro | 101 | Engineer
NEXT_STEP_NAME : END
43
ということで、gfsh で Apache
Geode を弄ってみました。
では、またー。

More Related Content

What's hot

【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会
【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会
【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会真乙 九龍
 
The Forefront of the Development for NVDIMM on Linux Kernel (Linux Plumbers c...
The Forefront of the Development for NVDIMM on Linux Kernel (Linux Plumbers c...The Forefront of the Development for NVDIMM on Linux Kernel (Linux Plumbers c...
The Forefront of the Development for NVDIMM on Linux Kernel (Linux Plumbers c...Yasunori Goto
 
Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt AffinityについてTakuya ASADA
 
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決オラクルエンジニア通信
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始めtetsusat
 
LinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking WalkthroughLinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking WalkthroughThomas Graf
 
CXL_説明_公開用.pdf
CXL_説明_公開用.pdfCXL_説明_公開用.pdf
CXL_説明_公開用.pdfYasunori Goto
 
BPF Internals (eBPF)
BPF Internals (eBPF)BPF Internals (eBPF)
BPF Internals (eBPF)Brendan Gregg
 
ARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくいARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくいwata2ki
 
IIJにおけるGlusterFS利用事例 GlusterFSの詳解と2年間の運用ノウハウ
IIJにおけるGlusterFS利用事例 GlusterFSの詳解と2年間の運用ノウハウIIJにおけるGlusterFS利用事例 GlusterFSの詳解と2年間の運用ノウハウ
IIJにおけるGlusterFS利用事例 GlusterFSの詳解と2年間の運用ノウハウIIJ
 
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するそうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するshigeki_ohtsu
 
[Container Runtime Meetup] runc & User Namespaces
[Container Runtime Meetup] runc & User Namespaces[Container Runtime Meetup] runc & User Namespaces
[Container Runtime Meetup] runc & User NamespacesAkihiro Suda
 
Hadoop -NameNode HAの仕組み-
Hadoop -NameNode HAの仕組み-Hadoop -NameNode HAの仕組み-
Hadoop -NameNode HAの仕組み-Yuki Gonda
 
Boosting I/O Performance with KVM io_uring
Boosting I/O Performance with KVM io_uringBoosting I/O Performance with KVM io_uring
Boosting I/O Performance with KVM io_uringShapeBlue
 
Systems@Scale 2021 BPF Performance Getting Started
Systems@Scale 2021 BPF Performance Getting StartedSystems@Scale 2021 BPF Performance Getting Started
Systems@Scale 2021 BPF Performance Getting StartedBrendan Gregg
 
Meet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracingMeet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracingViller Hsiao
 
Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像 Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像 Sho Shimizu
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能Kohei Tokunaga
 

What's hot (20)

【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会
【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会
【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会
 
The Forefront of the Development for NVDIMM on Linux Kernel (Linux Plumbers c...
The Forefront of the Development for NVDIMM on Linux Kernel (Linux Plumbers c...The Forefront of the Development for NVDIMM on Linux Kernel (Linux Plumbers c...
The Forefront of the Development for NVDIMM on Linux Kernel (Linux Plumbers c...
 
Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt Affinityについて
 
eBPF maps 101
eBPF maps 101eBPF maps 101
eBPF maps 101
 
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始め
 
LinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking WalkthroughLinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking Walkthrough
 
CXL_説明_公開用.pdf
CXL_説明_公開用.pdfCXL_説明_公開用.pdf
CXL_説明_公開用.pdf
 
BPF Internals (eBPF)
BPF Internals (eBPF)BPF Internals (eBPF)
BPF Internals (eBPF)
 
ARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくいARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくい
 
IIJにおけるGlusterFS利用事例 GlusterFSの詳解と2年間の運用ノウハウ
IIJにおけるGlusterFS利用事例 GlusterFSの詳解と2年間の運用ノウハウIIJにおけるGlusterFS利用事例 GlusterFSの詳解と2年間の運用ノウハウ
IIJにおけるGlusterFS利用事例 GlusterFSの詳解と2年間の運用ノウハウ
 
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するそうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
 
[Container Runtime Meetup] runc & User Namespaces
[Container Runtime Meetup] runc & User Namespaces[Container Runtime Meetup] runc & User Namespaces
[Container Runtime Meetup] runc & User Namespaces
 
Hadoop -NameNode HAの仕組み-
Hadoop -NameNode HAの仕組み-Hadoop -NameNode HAの仕組み-
Hadoop -NameNode HAの仕組み-
 
Boosting I/O Performance with KVM io_uring
Boosting I/O Performance with KVM io_uringBoosting I/O Performance with KVM io_uring
Boosting I/O Performance with KVM io_uring
 
Systems@Scale 2021 BPF Performance Getting Started
Systems@Scale 2021 BPF Performance Getting StartedSystems@Scale 2021 BPF Performance Getting Started
Systems@Scale 2021 BPF Performance Getting Started
 
Meet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracingMeet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracing
 
Multi Chassis LAG for Cloud builders
Multi Chassis LAG for Cloud buildersMulti Chassis LAG for Cloud builders
Multi Chassis LAG for Cloud builders
 
Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像 Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
 

Similar to 〜Apache Geode 入門 gfsh によるクラスター構築・管理

〜Apache Geode 入門 Multi-site(WAN)構成による クラスター連携
〜Apache Geode 入門 Multi-site(WAN)構成によるクラスター連携〜Apache Geode 入門 Multi-site(WAN)構成によるクラスター連携
〜Apache Geode 入門 Multi-site(WAN)構成による クラスター連携Akihiro Kitada
 
Grafana を使った Apache Geode クラスター監視
Grafana を使った Apache Geode クラスター監視Grafana を使った Apache Geode クラスター監視
Grafana を使った Apache Geode クラスター監視Akihiro Kitada
 
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!Yohei Fushii
 
Hive undocumented feature
Hive undocumented featureHive undocumented feature
Hive undocumented featuretamtam180
 
Shibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced MogilefsShibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced Mogilefsguest172cfb
 
Osc10do linux nextstep
Osc10do linux nextstepOsc10do linux nextstep
Osc10do linux nextstepsmokey monkey
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefnpsg
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードKazuhiro Hara
 
Lvmを縮小してみた
Lvmを縮小してみたLvmを縮小してみた
Lvmを縮小してみたkoedoyoshida
 
社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~ 社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~ Daisuke Ikeda
 
モダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasiaモダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasia鉄次 尾形
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on dockerHiroshi Miura
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on dockerHiroshi Miura
 
Redis & Redis HA design with Keepalived
Redis & Redis HA design with KeepalivedRedis & Redis HA design with Keepalived
Redis & Redis HA design with KeepalivedToshiki Inami
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介Etsuji Nakai
 

Similar to 〜Apache Geode 入門 gfsh によるクラスター構築・管理 (20)

〜Apache Geode 入門 Multi-site(WAN)構成による クラスター連携
〜Apache Geode 入門 Multi-site(WAN)構成によるクラスター連携〜Apache Geode 入門 Multi-site(WAN)構成によるクラスター連携
〜Apache Geode 入門 Multi-site(WAN)構成による クラスター連携
 
Grafana を使った Apache Geode クラスター監視
Grafana を使った Apache Geode クラスター監視Grafana を使った Apache Geode クラスター監視
Grafana を使った Apache Geode クラスター監視
 
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!
 
Hive undocumented feature
Hive undocumented featureHive undocumented feature
Hive undocumented feature
 
Shibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced MogilefsShibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced Mogilefs
 
Capistrano
CapistranoCapistrano
Capistrano
 
Osc10do linux nextstep
Osc10do linux nextstepOsc10do linux nextstep
Osc10do linux nextstep
 
Hadoop on LXC
Hadoop on LXCHadoop on LXC
Hadoop on LXC
 
KVM+cgroup
KVM+cgroupKVM+cgroup
KVM+cgroup
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレード
 
Lagopus 0.2
Lagopus 0.2Lagopus 0.2
Lagopus 0.2
 
Lvmを縮小してみた
Lvmを縮小してみたLvmを縮小してみた
Lvmを縮小してみた
 
Openstack+Ceph設定ガイド
Openstack+Ceph設定ガイドOpenstack+Ceph設定ガイド
Openstack+Ceph設定ガイド
 
社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~ 社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~
 
モダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasiaモダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasia
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on docker
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on docker
 
Redis & Redis HA design with Keepalived
Redis & Redis HA design with KeepalivedRedis & Redis HA design with Keepalived
Redis & Redis HA design with Keepalived
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介
 

More from Akihiro Kitada

How to configure the cluster based on Multi-site (WAN) configuration
How to configure the clusterbased on Multi-site (WAN) configurationHow to configure the clusterbased on Multi-site (WAN) configuration
How to configure the cluster based on Multi-site (WAN) configurationAkihiro Kitada
 
Reactive Streams に基づく非同期処理プログラミング 〜 Reactor を使ってみた
Reactive Streams に基づく非同期処理プログラミング 〜 Reactor を使ってみたReactive Streams に基づく非同期処理プログラミング 〜 Reactor を使ってみた
Reactive Streams に基づく非同期処理プログラミング 〜 Reactor を使ってみたAkihiro Kitada
 
〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!Akihiro Kitada
 
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!Akihiro Kitada
 
Apache Geode の Apache Lucene Integration を試してみた
Apache Geode の Apache Lucene Integration を試してみたApache Geode の Apache Lucene Integration を試してみた
Apache Geode の Apache Lucene Integration を試してみたAkihiro Kitada
 
Apache Calcite の Apache Geode Adapter を弄った
Apache Calcite の Apache Geode Adapter を弄ったApache Calcite の Apache Geode Adapter を弄った
Apache Calcite の Apache Geode Adapter を弄ったAkihiro Kitada
 
My first reactive programming - To deliver a deathblow “Shoryuken” with using...
My first reactive programming - To deliver a deathblow “Shoryuken” with using...My first reactive programming - To deliver a deathblow “Shoryuken” with using...
My first reactive programming - To deliver a deathblow “Shoryuken” with using...Akihiro Kitada
 
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!Akihiro Kitada
 
はじめての Cloud Foundry: .NET アプリケーションのはじめ方
はじめての Cloud Foundry: .NET アプリケーションのはじめ方はじめての Cloud Foundry: .NET アプリケーションのはじめ方
はじめての Cloud Foundry: .NET アプリケーションのはじめ方Akihiro Kitada
 
Apache Geode で始める Spring Data Gemfire
Apache Geode で始めるSpring Data GemfireApache Geode で始めるSpring Data Gemfire
Apache Geode で始める Spring Data GemfireAkihiro Kitada
 
Reactor によるデータインジェスチョン
Reactor によるデータインジェスチョンReactor によるデータインジェスチョン
Reactor によるデータインジェスチョンAkihiro Kitada
 

More from Akihiro Kitada (11)

How to configure the cluster based on Multi-site (WAN) configuration
How to configure the clusterbased on Multi-site (WAN) configurationHow to configure the clusterbased on Multi-site (WAN) configuration
How to configure the cluster based on Multi-site (WAN) configuration
 
Reactive Streams に基づく非同期処理プログラミング 〜 Reactor を使ってみた
Reactive Streams に基づく非同期処理プログラミング 〜 Reactor を使ってみたReactive Streams に基づく非同期処理プログラミング 〜 Reactor を使ってみた
Reactive Streams に基づく非同期処理プログラミング 〜 Reactor を使ってみた
 
〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
 
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
 
Apache Geode の Apache Lucene Integration を試してみた
Apache Geode の Apache Lucene Integration を試してみたApache Geode の Apache Lucene Integration を試してみた
Apache Geode の Apache Lucene Integration を試してみた
 
Apache Calcite の Apache Geode Adapter を弄った
Apache Calcite の Apache Geode Adapter を弄ったApache Calcite の Apache Geode Adapter を弄った
Apache Calcite の Apache Geode Adapter を弄った
 
My first reactive programming - To deliver a deathblow “Shoryuken” with using...
My first reactive programming - To deliver a deathblow “Shoryuken” with using...My first reactive programming - To deliver a deathblow “Shoryuken” with using...
My first reactive programming - To deliver a deathblow “Shoryuken” with using...
 
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
 
はじめての Cloud Foundry: .NET アプリケーションのはじめ方
はじめての Cloud Foundry: .NET アプリケーションのはじめ方はじめての Cloud Foundry: .NET アプリケーションのはじめ方
はじめての Cloud Foundry: .NET アプリケーションのはじめ方
 
Apache Geode で始める Spring Data Gemfire
Apache Geode で始めるSpring Data GemfireApache Geode で始めるSpring Data Gemfire
Apache Geode で始める Spring Data Gemfire
 
Reactor によるデータインジェスチョン
Reactor によるデータインジェスチョンReactor によるデータインジェスチョン
Reactor によるデータインジェスチョン
 

Recently uploaded

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成Hiroshi Tomioka
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 

Recently uploaded (9)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 

〜Apache Geode 入門 gfsh によるクラスター構築・管理

  • 1. 1 〜Apache Geode 入門 gfsh によるクラスター構築・管理 quitada 2017/8/18
  • 3. Apache Geode と gfsh  Apache Geode(アパッチジオード)とは? – インメモリデータグリッド製品 Pivotal GemFire のオープンソース版 – スケールアウト可能な分散型 Key-Value NoSQL インメモリデータベースに、 SQL の select 文みたいなクエリーとかデータドリブンなイベント処理とか 並列データ処理とかできるようにしたやつ – Apache Ignite とか Infinispan とか Hazelcast みたいなやつ – http://geode.apache.org/  gfsh(ジーフィッシュ)とは? – Geode Shell の略:あれ?「f」はどこからきたの? ▪ 商用版の GemFire では、GemFire Shell の略なのでそのまま流用していると思われる – Apache Geode 付属の CLI 管理ツールで、クラスターの構築とか起動、デー タベースの構築とか各種運用管理をするやつ 3
  • 4. gfsh を使って Apache Geode のクラス ターを構築してデータ投入してみま す! gfsh を使って Apache Geode のクラス ターを構築してデータ投入してみま す! 大切なことなので、二度いいました! データ設計もしてみます! 4
  • 5. こんな構成でクラスター構築してみる(1/2) 5 サーバーマシン 1 Locator 1 Cache Server 1 サーバーマシン 2 Locator 2 Cache Server 2 冗長構成 Partitioned Region 冗長コピー x1 IP: 192.168.100.1 ホスト名: machine1 IP: 192.168.100.2 ホスト名: machine2 ローカルディスク ローカルディスク データ永続化 データ永続化 今回は仮想マシン x2 を使います。 OS は Cent OS Linux 7 を使いま す。各仮想マシンがお互い TCP/UDP で通信できて、IP から ホスト名解決できるようにしてお きます。 Locator(ロケーター)は、クラ スターへの接続ポイントならびに クラスターのメンバー管理を行う 人です。1 ついれば動きますが、 冗長構成で 2 つ用意してみます。
  • 6. こんな構成でクラスター構築してみる(2/2) 6 サーバーマシン 1 Locator 1 Cache Server 1 サーバーマシン 2 Locator 2 Cache Server 2 冗長構成 Partitioned Region 冗長コピー x1 IP: 192.168.100.1 ホスト名: machine1 IP: 192.168.100.2 ホスト名: machine2 ローカルディスク ローカルディスク データ永続化 データ永続化 Cache Server(キャッシュサー バー)は、インメモリのデータス トアの人です。複数束ねてあたか も一つのインメモリデータストア として使用可能です。今回は冗長 構成もかねて 2 つ用意します。 Region(リージョン)は、 RDBMS のテーブルみたいなもの です。今回は Partitioned Region (パーティションリージョン)と いう、Hadoop HDFS みたいな データの持ち方で、ローカルディ スクにデータ永続化する設定にし ます。
  • 8. 事前準備(1/6) 8 サーバーマシン 1 Locator 1 Cache Server 1 サーバーマシン 2 Locator 2 Cache Server 2 冗長構成 Partitioned Region 冗長コピー x1 IP: 192.168.100.1 ホスト名: machine1 IP: 192.168.100.2 ホスト名: machine2 ローカルディスク ローカルディスク データ永続化 データ永続化 各マシンで、Locator や Cache Server に必要な設定ファイル、 起動スクリプト、ログ、永続化し たデータの格納ディレクトリ等準 備します。
  • 9. 事前準備(2/6)  Apache Geode を各マシンにインストールし、gfsh コマンド を実行できるように各種環境変数を設定します。  クラスターのルートディレクトリの作成 – ログとか設定ファイルを格納するルートディレクトリを決めましょ う。ここでは、以下のディレクトリを各マシンに作るものとします。 ▪ /home/geode/mycluster – 極端な話、各マシンで Locator、Cache Server 用に全く異なるディ レクトリにしてもよいのですが、ここでは、管理しやすくするため 共通ルートディレクトリを決めてしまいます。 9
  • 10. 事前準備(3/6)  設定ファイルの作成(1/3) – ここでは、各マシンのクラスタールートディレクトリ直 下(ここでは、/home/geode/mycluster)にデフォルトの gemfire.properties というファイル名で次ページのよう な内容のファイルを作成します。 – プロパティーファイル名のデフォルトが gemfire.properties なのは、商用版 GemFire の名残ですが、 起動時に明示的に指定すれば好きなファイル名でかまい ません。 10
  • 11. 事前準備(4/6)  設定ファイルの作成(2/3) – サーバーマシン 1(machine1) – サーバーマシン 2(machine2) 11 log-level=config locators=machine1[55221],machine2[55221] bind-address=machine1 server-bind-address=machine1 jmx-manager-bind-address=machine1 log-level=config locators=machine1[55221],machine2[55221] bind-address=machine2 server-bind-address=machine2 jmx-manager-bind-address=machine2
  • 12. 事前準備(5/6)  設定ファイルの作成(3/3) – 各パラメーターの意味 ▪ log-level : ログレベルです。config レベルに設定すると、一般的な info レベルに加えてクラ スターの設定内容も出力されるので、正しく設定されているかどうか確認のため便利です。 ▪ locators : Locator 一覧(ホスト名[ポート番号])をあらかじめ設定する必要があります。 ▪ bind-address : クラスター内通信用のホスト名を指定します。NIC が 1 つだけの時は設定不要 ですが、意図したネットワークセグメントで通信しているかどうか確認のため明示的に設 定することをおすすめします。 ▪ server-bind-address : クライアントサーバー通信用のホスト名を指定します。NIC が 1 つだけ の時は bind-address 同様設定不要です。Cache Server だけに有効なパラメーターです。 ▪ jmx-manager-bind-address : JMX マネージャー通信用のホスト名を指定します。NIC が 1 つだ けの時は bind-address 同様設定不要です。JMX マネージャーサービスが稼働する Locator あ るいは Cache Server にのみ有効なパラメーターです。デフォルトでは、一番最初に起動す る Locator のみに適用されるパラメーターとなります。 ▪ ホスト名を指定するパラメーターに関しては、代わりに IP 直指定でもかまいません。 12
  • 13. 事前準備(6/6)  各マシンで Locator や Cache Server のログや永続化ディスクストアを格納する ディレクトリを作成します。 – サーバーマシン 1(machine1) – サーバーマシン 2(machine2) 13 $ cd /home/geode/mycluster $ mkdir locator1 $ mkdir server1 $ cd /home/geode/mycluster $ mkdir locator2 $ mkdir server2 locator1 が Locator 1 用のディレ クトリ、server1 が Cache Server 1 用のディレクトリとします。 locator2 が Locator 2 用のディレ クトリ、server2 が Cache Server 1 用のディレクトリとします。
  • 14. Locator 起動(1/3) 14 サーバーマシン 1 Locator 1 Cache Server 1 サーバーマシン 2 Locator 2 Cache Server 2 冗長構成 Partitioned Region 冗長コピー x1 IP: 192.168.100.1 ホスト名: machine1 IP: 192.168.100.2 ホスト名: machine2 ローカルディスク ローカルディスク データ永続化 データ永続化 各マシンで、コマンドラインより gfsh を使って Locator を起動しま す。
  • 15. Locator 起動(2/3)  各マシンで、gfsh を使って Locator を起動します – サーバーマシン 1(machine1) – サーバーマシン 2(machine2) 15 $ cd /home/geode/mycluster $ gfsh start locator --name=locator1 --dir=locator1 --bind-address=machine1 -- port=55221 --properties-file=gemfire.properties $ cd /home/geode/mycluster $ gfsh start locator --name=locator2 --dir=locator2 --bind-address=machine2 -- port=55221 --properties-file=gemfire.properties
  • 16. Locator 起動(3/3)  “gfsh start locator” コマンドのパラメーターの意味 – --name : クラスター中の各プロセス識別のため、各 Locator と Cache Server で一意の名前を指定 します。ここでは、事前準備で作成した各 Locator 用ディレクトリ名をそのまま指定しています。 – --dir : 事前準備で作成した各 Locator 用ディレクトリのパスを指定します。絶対指定・相対指定ど ちらも可能です。ここでは、当該ディレクトリのあるディレクトリ(ここでは、 /home/geode/mycluster)で gfsh コマンドを実行することを前提に相対指定としています。 – --bind-address : 事前準備で作成した gemfire.properties の Locator 一覧にホスト名にそって指定し ます。ただし、gemfire.properties の bind-address パラメーターですでに設定済みなので、これは 省略可能です。 – --port : 事前準備で作成した gemfire.properties の Locator 一覧のポート番号にそって指定します。 ここでは Locator 1、Locator2 ともに 55221 を適用しています。 – --properties-file : 事前準備で作成した設定ファイルのパスを指定します。絶対指定・相対指定どち らも可能です。  各 Locator を起動するコマンドラインをシェルスクリプトにしておくと良いでしょう。 16
  • 17. Cache Server 起動(1/3) 17 サーバーマシン 1 Locator 1 Cache Server 1 サーバーマシン 2 Locator 2 Cache Server 2 冗長構成 Partitioned Region 冗長コピー x1 IP: 192.168.100.1 ホスト名: machine1 IP: 192.168.100.2 ホスト名: machine2 ローカルディスク ローカルディスク データ永続化 データ永続化 各マシンで、コマンドラインより gfsh を使って Cache Server を起 動します。
  • 18. Cache Server 起動(2/3)  各マシンで、gfsh を使って Cache Server を起動します – サーバーマシン 1(machine1) – サーバーマシン 2(machine2) 18 $ cd /home/geode/mycluster $ gfsh start server --name=server1 --dir=server1 --server-port=0 --properties- file=gemfire.properties $ cd /home/geode/mycluster $ gfsh start server --name=server2 --dir=server2 --server-port=0 --properties- file=gemfire.properties
  • 19. Cache Server 起動(3/3)  “gfsh start server” コマンドのパラメーターの意味 – --name : クラスター中の各プロセス識別のため、各 Locator と Cache Server で一意の名前を指定 します。ここでは、事前準備で作成した各 Cache Server 用ディレクトリ名をそのまま指定してい ます。 – --dir : 事前準備で作成した各 Cache Server 用ディレクトリのパスを指定します。絶対指定・相対 指定どちらも可能です。ここでは、当該ディレクトリのあるディレクトリで gfsh コマンドを実 行することを前提に相対指定しています。 – --server-port : クライアントアプリケ−ションとの通信用のポートを設定します。ここでは、0 を 指定することで、起動時に空いている任意のポートを割り当てます。割り当てられたポートは、 Locator が記憶するので、クライアントアプリケーションはロケーターに問い合わせることでど のポート経由でアクセスすべきか知ることができます。もちろん、明示的にポート番号を指定す ることも可能です。 – --properties-file : 事前準備で作成した設定ファイルのパスを指定します。絶対指定・相対指定どち らも可能です。  各 Cache Server を起動するコマンドラインをシェルスクリプトにしておくと良いでしょう。 19
  • 21. gfsh によるクラスター管理(1/2)  gfsh を引数なしで実行すると、“gfsh>” というコマンドプロンプトが現れ、インタラク ティブに各種コマンドを実行できるモードで起動します。  bash とかみたく、適宜 TAB キーで各コマンド一覧表示やら引数の補完やらやってくれま す。 21 $ gfsh _________________________ __ / _____/ ______/ ______/ /____/ / / / __/ /___ /_____ / _____ / / /__/ / ____/ _____/ / / / / /______/_/ /______/_/ /_/ 1.2.0 Monitor and Manage Apache Geode gfsh>
  • 22. gfsh によるクラスター管理(2/2)  大部分のコマンドを実行するには、まず、以下のコマンドでいずれかの Locator に接続す る必要があります。 – --locator パラメーターに、Locator のホスト名とポート番号を指定します  以下の管理コマンドを実行してみます。 22 gfsh>connect --locator=machine1[55221] gfsh>help gfsh>list members gfsh>show log —member=server1 —lines=100 gfsh>change loglevel —loglevel=fine --members=server1 gfsh>show log —member=server1 —lines=100 gfsh>change loglevel --loglevel=config --members=server1 gfsh>status server —name=server1 gfsh>describe member —name=server1
  • 24. 24 Apache Geode クラスターができ たので、データの出し入れとか gfsh でやりたいね! と、その前に、データの入れ物 を作ったり、データの型定義と かしたくない?
  • 25. データオブジェクト設計と Region 作成(1/12) 25 サーバーマシン 1 Locator 1 Cache Server 1 サーバーマシン 2 Locator 2 Cache Server 2 冗長構成 Partitioned Region 冗長コピー x1 IP: 192.168.100.1 ホスト名: machine1 IP: 192.168.100.2 ホスト名: machine2 ローカルディスク ローカルディスク データ永続化 データ永続化 データオブジェクトを挿入する入 れ物ととして、Region を作成す るんですが、その前にデータオブ ジェクトを設計してみます。
  • 26. データオブジェクト設計と Region 作成(2/12)  Apache Geode は、Region という名の Key-Value ストアに任意のオブジェ クトを挿入できますよー!超柔軟! – 実運用・実アプリケーションレベルでは、同一 Region に無秩序に任意の型 のオブジェクトが入っていたら大変なことに… – なので、少なくとも単一 Region に挿入する Key や Value のオブジェクト型 は一意に定義したい  はい、このプレゼンの趣旨的に、gfsh でできるだけ管理したいですよ ね? – gfsh でコマンドラインからデータオブジェクト挿入したいでしょう? – gfsh でコマンドラインから SQL ライクなクエリーを実行したいでしょう? 26
  • 27. データオブジェクト設計と Region 作成(3/12) ということで… – key には、各データを一意に識別するだけなの で、文字列型(java.lang.String)で。 – value には、RDBMS のテーブルみたいな構造の “ドメインオブジェクト” ってやつを入れること にしましょう。 27
  • 28. データオブジェクト設計と Region 作成(4/12)  イメージ的には、RDBMS の DDL で定義したテーブル型をオブジェクトに変換する感じ。  ここでは、以下のような DDL で定義したテーブル型からドメインオブジェクトの型を表す Java クラスで実装してみます。 28 create table employee ( id CHAR(6), first_name VARCHAR2(10), family_name VARCHAR2(10), title VARCHAR2(30), age INT(3), primary key( id ) );
  • 29. データオブジェクト設計と Region 作成(5/12)  はい、以下のような感じ。各カラムをフィールド変数として保持する感じ。  実際には、コンストラクター、各フィールド変数のゲッターとかセッターも実装する必要あります。  value として、こちらを元に quitada.Employee 型のドメインオブジェクトとして挿入します。 29 package quitada; // パッケージ名 public class Employee { // クラス名 private String id; // フィールド変数 – カラム: id private String firstName; // フィールド変数 – カラム: first_name private String familyName; // フィールド変数 – カラム: family_name private String title; // フィールド変数 – カラム: title private int age; // フィールド変数 – カラム: age : }
  • 30. データオブジェクト設計と Region 作成(6/12)  さて、次にさきほど作成したクラス(quitada.Employee)をコンパイルして jar でかためて 以下のように Cache Server にデプロイします(connect コマンドで Locator に接続してい ることが前提*)。  当該 jar ファイル自体は各 Locator ディレクトリ配下に配備されます。今回の例では、以下 のディレクトリ配下に配備されます。 – machine1:/home/geode/mycluster/locator1/cluster_config/cluster – machine2:/home/geode/mycluster/locator2/cluster_config/cluster  以降、各 Cache Server 起動時には自動的に当該 jar ファイルが各 Cache Server のローカル ディレクトリーにコピーされデプロイされます。 30 gfsh>deply –jar=/path/to/classes/myDomainObject.jar *= 以下、“gfsh>” プロンプトのコマンド実行例は全て connect コマンドで Locator 接続済みであることが前提。
  • 31. データオブジェクト設計と Region 作成(7/12)  [任意設定] シリアライザーの設定(1/5) – ドメインオブジェクトを通信経路にのせるため、シリアライズ可能 であるよう設定する必要があります。 – ドメインオブジェクトの Java クラスをシリアライズ可能であるよ うに実装していれば明示的なシリアライザー設定は不要です (implements java.io.Serializable 付与してるとか)。 – ドメインオブジェクトの Java クラス自体がシリアライズ不可であ る場合は、gfsh でシリアライザーの設定を行います。なお、シリア ライザーは、Apache Geode 独自のシリアライズフォーマットであ る PDX(Portable Data eXchange)のオートシリアライザーを適用し ます。 31
  • 32. データオブジェクト設計と Region 作成(8/12)  [任意設定] シリアライザーの設定(2/5) – まず対象クラスの PDX メタデータを永続化するディスクストアを以下のコマンドで 作成します。PDX メタデータの永続化は必須ではありませんが、Cache Server 再起動 の度に再作成するコスト削減のため設定が推奨されます。 – “—dir=pdx” と指定することで各 Cache Server ディレクトリ配下に PDX メタデータ永 続化ディスクストア格納用に pdx というディレクトリが作成されます。今回の例で は、以下のディレクトリー配下に作成されます。 ▪ machine1:/home/geode/mycluster/server1/pdx ▪ machine2:/home/geode/mycluster/server2/pdx – “—name=pdx” と指定することで、当該ディスクストアを “pdx” という名前で参照 可能となります。 32 gfsh>create disk-store --name=pdx --dir=pdx
  • 33. データオブジェクト設計と Region 作成(9/12)  [任意設定] シリアライザーの設定(3/5) – 次に、以下のコマンドで PDX ベースのシリアライザーを設定します。 – “—read-serialized=false” とすることで、ドメインオブジェクトをそのもののオブ ジェクト型で読み込みます。逆に “true” とした場合は、必ず PdxInstance 型のオブ ジェクトとして読み込みます(対象ドメインオブジェクトがシリアライズされたま ま PdxInstance 型の入れ物に入っているイメージです)。 – “—disk-store=pdx” とすることで、先ほど作成した “pdx” という名前のディスクスト アに PDX メタデータを格納するよう指定します。 – “—auto-serializable-classes=quitada.*” とすることで、quitada というパッケージの全 てのドメインオブジェクトを自動的にシリアライズ可能とします。 33 gfsh>configure pdx --read-serialized=false --disk-store=pdx --auto-serializable- classes=quitada.*
  • 34. データオブジェクト設計と Region 作成(10/12)  [任意設定] シリアライザーの設定(4/5) – さて、“configure pdx” コマンドを実行すると、以下のような不穏な メッセージがでてくると思います。 – はい、PDX シリアライザー設定を有効化するには、すでに起動して いる Cache Server を再起動する必要があります。 34 The command would only take effect on new data members joining the distributed system. It won't affect the existing data members : Non portable classes :[quitada.*]
  • 35. データオブジェクト設計と Region 作成(11/12)  [任意設定] シリアライザーの設定(5/5) – ということでまず以下の gfsh の “stop server” コマンドを使ってコマンドラ インより Cache Serverを停止します。 – サーバーマシン 1(machine1)の Cache Server 停止 – サーバーマシン 2(machine2)の Cache Server 停止 – その後、先で言及した “start server” コマンドで各 Cache Server を再起動し ます。 35 $ cd /home/geode/mycluster $ gfsh stop server --dir=server1 $ cd /home/geode/mycluster $ gfsh stop server --dir=server2
  • 36. データオブジェクト設計と Region 作成(12/12)  Region の作成 – SQL で create table を実行するイメージ(?)で、以下のようなコマンドを実行します。 – “—name=/Employee” とすることで、“Employee” という名前の Region を作成します。なお Region 名の前に付与されているスラッシュは省略可能です。 – “—type=PARTITION_REDUNDANT_PERSISTENT” とすることで、Region 型として、データを各 サーバに分散配置(PARTITION)、高可用性確保のため他の Cache Server に各データのコピーを 1 つ保持(REDUNDANT)、全データをディスクに永続化(PERSISTENT)としています。 – “—key-constraint=java.lang.String” とすることで、Key として挿入可能なオブジェクトは文字列型 のみとなります。 – “—value-constraint=quitada.Employee” とすることで、Value として挿入可能なオブジェクトはド メインオブジェクトとしてさきほど作成した quitada.Employee 型のみとなります。 36 gfsh>create region --name=/Employee --type=PARTITION_REDUNDANT_PERSISTENT --key- constraint=java.lang.String --value-constraint=quitada.Employee
  • 38. データオブジェクトの出し入れ・クエリー(1/5)  まず、さきほど作成した Employee リージョンの有無確認のため、以下のコマン ドを実行してみます。 “Employee” と出力されるかと思います。  次に、Employee リージョンの詳細情報を以下のコマンドで確認します。  さて、Employee リージョンが正常に作成されていることを確認したら、いよい よデータオブジェクトの挿入です。 38 gfsh>list region gfsh>describe region --name=/Employee
  • 39. データオブジェクトの出し入れ・クエリー(2/5)  その前に、Employee リージョンに挿入するデータオブジェクトのクラスを再確認してみます。  はい、実際に gfsh でデータオブジェクト挿入の際には、各フィールド変数の名前とそれぞれの値を列 挙し、データオブジェクト型を指定することで、gfsh が自動的に Employee オブジェクトを生成して、 Employee リージョンの Value とします。 39 package quitada; // パッケージ名 public class Employee { // クラス名 private String id; // フィールド変数 – カラム: id private String firstName; // フィールド変数 – カラム: first_name private String familyName; // フィールド変数 – カラム: family_name private String title; // フィールド変数 – カラム: title private int age; // フィールド変数 – カラム: age : }
  • 40. データオブジェクトの出し入れ・クエリー(3/5)  いよいよデータオブジェクト挿入です。以下の put コマンドを実行します。  “—region=/Employee” とすることで、Employee リージョンにデータオブジェクトを挿入することを宣言します。  “--key-class=java.lang.String” とすることで、Key のオブジェクト型は文字列とします。デフォルトの型は文字列なので、 この設定は省略可能です。  “--value-class=quitada.Employee” とすることで、Value のオブジェクト型は quitada.Employee 型とします。  “—key=‘101’” とすることで、key の値を指定します。ここでは、ドメインクラスEmployeeの主キーと設定している フィールド変数idの値を指定しています。文字列の場合はシングルクォーテーションで囲みます(省略可)。  “—value” パラメータで、Value を指定します。上述の例のように、JSON っぽい形式でフィールド変数名のその値を指定 します。フィールド変数名や文字列値はシングルクォーテーションで囲みます(これも省略可)。 40 gfsh>put --region=/Employee --key-class=java.lang.String --value- class=quitada.Employee --key='101' -- value=('id':'101','firstName':'Taro','familyName':'Yamada','title':'Engineer','age' :28)
  • 41. データオブジェクトの出し入れ・クエリー(4/5)  次に、さきほど挿入したデータオブジェクトを読み込んでみました。以下の get コマンドを実行します。結果として、gfsh では各フィールド変数値が出力され ます。  “—region=/Employee” とすることで、Employee リージョンからデータオブジェ クトを読み込むことを宣言します。  “—key=‘101’” とすることで、key の値が “101” であるデータオブジェクトを読み 込みます。 41 gfsh>get --region='/Employee' --key='101'
  • 42. データオブジェクトの出し入れ・クエリー(5/5)  最後にクエリーを実行してみましょう。以下の query コマンドの実行例です。  “—query” に SQL の select 文ライクな、OQL(Object Query Language)のクエリーを指定します。 42 gfsh>query --query="select * from /Employee where id='101'" Result : true startCount : 0 endCount : 20 Rows : 1 age | familyName | firstName | id | title --- | ---------- | --------- | --- | -------- 28 | Yamada | Taro | 101 | Engineer NEXT_STEP_NAME : END
  • 43. 43 ということで、gfsh で Apache Geode を弄ってみました。 では、またー。