Our Community is getting an upgrade! To get everything ready for the relaunch, we’ll be placing the site in read-only mode starting September 21st.
We really appreciate your understanding while we get things set up behind the scenes. Catch up on all the exciting details about the move here.
Need help or have questions? Drop us a line at [email protected]
Created on 01-26-2017 10:39 AM - edited 09-16-2022 03:58 AM
I am wondering if there is a way to restart Solr from the command line? I would like to script a restart of solr every night so that I dont have to do it manually.
Thank You
Jamie
Created 01-26-2017 02:05 PM
If you are using Cloudera Manager, you can use the API present to do that.
The end point you will like to use will be : /cm/service/roleCommands/restart
I would not recommend to do restart outside of the CM cause the management will be difficult.
Created 01-26-2017 02:05 PM
If you are using Cloudera Manager, you can use the API present to do that.
The end point you will like to use will be : /cm/service/roleCommands/restart
I would not recommend to do restart outside of the CM cause the management will be difficult.
Created 01-26-2017 02:11 PM
Thank you that gives me exactly what I needed. Why would you say that management would be difficult?
Jamie
Created 01-26-2017 03:35 PM
Created 03-20-2018 02:45 PM
#!/usr/bin/env python
import ssl,sys,time
from cm_api.api_client import ApiResource
from cm_api.endpoints.types import ApiClusterTemplate
from cm_api.endpoints.cms import ClouderaManager
from cm_api.endpoints import clusters, events, hosts, external_accounts, tools
from cm_api.endpoints import types, users, timeseries, roles, services
ssl._create_default_https_context = ssl._create_unverified_context
try:
cm = ApiResource("CM_SERVER","7183","admin","CM_PASS","true","15")
cluster = cm.get_cluster("CLUSTER_NAME")
except:
print "Failed log into cluster %s" % ("CLUSTER_NAME")
sys.exit(0)
servers = [
"server1.company.com",
"server2.company.com",
"server3.company.com"]
s = cluster.get_service("solr")
ra = []
for r in s.get_roles_by_type("SOLR_SERVER"):
hostname = cm.get_host(r.hostRef.hostId).hostname
if hostname in servers:
ra.append([hostname,r])
ra.sort()
print "\nWill restart %s SOLR instances" % len(ra)
for hostname,r in ra:
print "\nRestarting SOLR on %s" % (hostname)
s.restart_roles(r.name)
r = s.get_role(r.name)
wait = time.time() + 180 # three minutes
while r.roleState != "STARTED":
print "Role State = %s" % (r.roleState)
print "Waiting for role state to be STARTED"
print time.strftime("%H:%M:%S")
if time.time() > wait:
print "SOLR failed to restart on %s" % (hostname)
sys.exit(1)
time.sleep(10)
r = s.get_role(r.name)
print "SOLR restarted on %s" % (hostname)
print "\nAll SOLR roles restarted"
sys.exit(0)