When applying a patch manually, apply the patch to CLDB secondary nodes prior to
applying the patch on the primary CLDB node. After you apply a patch to a CLDB node, you
must verify that container 1 is fully replicated before proceeding to apply the patch to the
next CLDB node.
About this task
For large clusters with many containers, when you do not patch CLDB nodes in the
prescribed order, there may be a considerable delay before the cluster can process
client operations. For smaller clusters, this is not critical as the cluster can
generally start accepting client operations in about 5 minutes.Complete the following
steps on each CLDB secondary node and then on the CLDB primary node:
Procedure
-
Stop the Warden and ZooKeeper (if installed) services:
-
To stop Warden, run the following command:
sudo service mapr-warden stop
-
If ZooKeeper is installed on the node, run this command:
sudo service mapr-zookeeper stop
-
If there is already a patch installed on the cluster, run one of the following
commands to uninstall it:
- On CentOS/RedHat:
sudo rpm -e mapr-patch
- On SLES:
sudo zypper remove mapr-patch
- On Ubuntu:
sudo apt-get -y remove mapr-patch
-
Install the patch using one of the following commands:
- On CentOS/RedHat:
sudo rpm -ivh
mapr-patch-<new_patch_number>.rpm
- On SLES:
sudo zypper install
mapr-patch-<new_patch_number>.rpm
- On Ubuntu:
sudo dpkg -i
mapr-patch<new_patch_number>.deb
-
Start the Warden and ZooKeeper (if installed) services:
-
If ZooKeeper is installed on the node, run this command to start
ZooKeeper:
sudo service mapr-zookeeper start
-
To start Warden, run this command:
sudo service mapr-warden start
-
To verify that the patch was installed successfully, run one of the following
commands:
- On CentOS/RedHat or SLES:
sudo rpm -ql
mapr-patch-<new_patch_number>
- On Ubuntu:
sudo dpkg -l | grep
mapr-patch-<new_patch_number>
-
Verify that the CLDB node that you patched is running and that container 1 on
that node is fully replicated.
Run
maprcli dump containerinfo -ids 1 -json.
In the
output, the CLDB node that you just patched should be listed under
ActiveServers, and should report a VALID state for container 1.
For
example:
...
"data":[
{
"ContainerId":1,
"Epoch":3,
"Master":"<masterCLDB_IP>:5660--3-VALID",
"ActiveServers":{
"IP:Port":[
"<masterCLDB_IP>:5660--3-VALID",
"<slaveCLDB_IP>:5660--3-VALID",
"<slaveCLDB_IP>:5660--3-VALID"
]
},
"InactiveServers":{
},
"UnusedServers":{
},
...
NOTE
The RESYNC state will display when container 1 is
not fully replicated on that node. You must wait until the CLDB node that
you just patched has a VALID state for container 1.
For more
information, see dump containerinfo