If you are planning to use Consistent Region Applications in Streams 4.0, you will need to setup the Checkpoint Repository Store. There are 2 options : file system or Redis. If your Streams installation does not use a shared file system you will need to Redis. Also, you might prefer to use Redis to take advantage of Replication and/or Sharding. If you are not familiar with Redis, check out this article first: How to install and configure Redis

First, make sure your redis server is running. In my case, redis is running on host d0428b06, port 6400:


 > hostname
d0428b06.pok.hpc-ng.ibm.com

>ps -ef|grep redis
ivan    5469     1  0 Feb09 ?        00:04:47 ./redis-server *:6400

Assuming you already have your Streams instance created. In my example, I will be using the default instance StreamsInstance:


> streamtool lsinstance
StreamsInstance

Set the checkpointRepository configuration parameter to redis:


> streamtool setproperty instance.checkpointRepository=redis
CDISC0009I The instance.checkpointRepository property was set to the following value: "redis". The previous property value was "notSpecified". This change affects the StreamsInstance instance in the domain_ivan domain when the instance is restarted.

Now set the checkpointRepositoryConfiguration to specify the host and port where Redis is running:


 > streamtool setproperty instance.checkpointRepositoryConfiguration="{\"replicas\" : 1, \"shards\" : 1, \"replicaGroups\" : [{ \"servers\" : [\"d0428b06:6400\"], \"description\" : \"rack1\" }]}"
CDISC0009I The instance.checkpointRepositoryConfiguration property was set to the following value: "{"replicas" : 1, "shards" : 1, "replicaGroups" : [{ "servers" : ["d0428b06:6400"], "description" : "rack1" }]}". The previous property value was "". This change affects the StreamsInstance instance in the domain_ivan domain when the instance is restarted.

Start or restart your instance and let’s check if the parameters were set correctly:


 > streamtool getproperty -a|grep checkpoint
instance.checkpointRepository=redis
instance.checkpointRepositoryConfiguration={"replicas" : 1, "shards" : 1, "replicaGroups" : [{ "servers" : ["d0428b06:6400"], "description" : "rack1" }]}

You can now try to run one of the consistent region sample applications.


>cd $STREAMS_INSTALL/samples/spl/feature/ConsistentRegion
>make
>streamtool submitjob output/MultipleSources/sample.MultipleSources.sab
CDISC0079I The following number of applications were submitted to the StreamsInstance instance: 1. The instance is in the domain_ivan domain.
CDISC0080I The 0 job was submitted for the following application: sample.MultipleSources.sab. The job was submitted to the StreamsInstance instance in the domain_ivan domain.
CDISC0020I Submitted job IDs: 0

Check if the job is healthy:


 > streamtool lsjobs
Instance: StreamsInstance
  Id State   Healthy User   Date                     Name                      Group
   0 Running yes     ivan 2015-02-17T11:21:43-0500 sample::MultipleSources_0 default

And check if output file is being generated:


> ls -al ./data
total 8
drwxr-xr-x 2 ivan ccgroup   40 Feb 17 11:21 .
drwxr-xr-x 6 ivan ccgroup 4096 Feb 17 11:18 ..
-rw-r--r-- 1 ivan ccgroup 3404 Feb 17 11:22 multipleSources.dat

That’s it. The job is healthy and the output file is being generated. You succeed running your first Consistent Region application using Redis as the checkpoint store.

Join The Discussion