SlideShare a Scribd company logo
How-to scheduled jobs in a
Cloudera Cluster without
oozie
Cloudera Manager + Kerberos + Airflow
Introduction
This presentation, it’s for everyone that is looking for an oozie alternative to scheduled
jobs in a secured Cloudera Cluster.
With this, you will be able to add and configure the Airflow Service an manage it with in
Cloudera Manager.
Architecture
Airflow will be the in the same layer of oozie.
Architecture
The Airflow architecture will be the following:
Pre-Assumptions
1. Environment with Centos 7
2. user root or with sudo
3. Cloudera CDH 6.3
4. MariaDB 10.3
5. Kerberos Installed
6. HiveServer with High Availability
7. Know the RabbitMQ and Erlang/OTP Compatibility Matrix
Prepare Airflow Installation
Download EPEL Repo
yum install –y epel-release;
Install Erlang
wget https://bintray.com/rabbitmq-erlang/rpm/download_file?file_path=erlang%2F21%2Fel%2F7%2Fx86_64%2Ferlang-
21.3.8.7-1.el7.x86_64.rpm;
mv download_file?file_path=erlang%2F21%2Fel%2F7%2Fx86_64%2Ferlang-21.3.8.7-1.el7.x86_64.rpm erlang-21.3.8.7-
1.el7.x86_64.rpm;
rpm -Uvh erlang-21.3.8.7-1.el7.x86_64.rpm;
Note: just need to change the highlighted values for your own values.
Prepare Airflow Installation
Test Erlang
erl
Erlang/OTP 22 [erts-10.4.4] [source] [64-bit] [smp:6:6] [ds:6:6:10]
[async-threads:1] [hipe]
Eshell V10.4.4 (abort with ^G)
1>
Install RabbitMQ via YUM
nano /etc/yum.repos.d/rabbitmq.repo;
[bintray-rabbitmq-server]
name=bintray-rabbitmq-rpm
baseurl=https://dl.bintray.com/rabbitmq/rpm/rabbitmq-server/v3.7.x/el/7/
gpgcheck=0
repo_gpgcheck=0
enabled=1
yum -y install rabbitmq-server-3.7.17-1.el7.noarch.rpm;
Note: just need to change the highlighted values for your own values.
Prepare Airflow Installation
Modify Firewall Rules
firewall-cmd --zone=public --permanent --add-port=4369/tcp --add-port=25672/tcp --add-port=5671-5672/tcp --add-
port=15672/tcp --add-port=61613-61614/tcp --add-port=1883/tcp --add-port=8883/tcp;
firewall-cmd --reload;
Start the RabbitMQ server and enable it
systemctl start rabbitmq-server.service;
systemctl enable rabbitmq-server.service;
Check the status of RabbitMQ
rabbitmqctl status;
Enable and use the RabbitMQ management console
rabbitmq-plugins enable rabbitmq_management;
chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/;
Prepare Airflow Installation
Create User
rabbitmqctl add_user mqadmin password;
rabbitmqctl set_user_tags mqadmin administrator;
rabbitmqctl set_permissions -p / mqadmin ".*" ".*" ".*";
Rabbit UI
http://cm630.localdomain:15672/
Note: just need to change the highlighted values for your own values.
Airflow Installation
There’s many ways to do the Airflow installation, such as via pip. But i've found that the most useful it’s via
parcels with the advantage to be in the Cloudera Manager administration scope.
Create User and Database on MariaDB
mysql -uroot –ppassword;
CREATE DATABASE airflow DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
GRANT ALL ON airflow.* TO 'airflow'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON airflow.* TO 'airflow'@'%' IDENTIFIED BY 'password';
Add AirFlow Parcel
Hosts > Parcels > Configuration
Add url: http://archive.clairvoyantsoft.com/airflow/parcels/latest/
Download and Distribute
Note: just need to change the highlighted values for your own values.
Airflow Installation
Install the Airflow CSD
cd /opt/ckoudera/csd;
wget http://archive.clairvoyantsoft.com/airflow/csd/AIRFLOW-2.2.0.jar;
chmod 755 AIRFLOW-2.2.0.jar;
chown cloudera-scm:cloudera-scm cloudera-scm;
Restart Cloudera Server
systemctl restart cloudera-scm-server;
Note: just need to change the highlighted values for your own values.
Enable Kerberos in Airflow
This process can be a bit tricky, please take special attention while configuring the airflow.cfg
AirFlow ProxyUser
HDFS > Cluster-wide Advanced Configuration Snippet (Safety Valve) for core-site.xml
<property>
<name>hadoop.proxyuser.airflow.groups</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.airflow.users</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.airflow.hosts</name>
<value>*</value>
</property>
Note: just need to change the highlighted values for your own values.
Enable Kerberos in Airflow
Edit Airflow Config File
nano /etc/airflow/conf.cloudera.airflow/airflow.cfg;
[core]
[...]
executor = CeleryExecutor
sql_alchemy_conn = mysql://airflow:password@cm630.localdomain:3306/airflow
default_impersonation =
security = Kerberos
[celery]
celery_app_name = airflow.executors.celery_executor
broker_url = pyamqp://mqadmin:password@cm630.localdomain:4369/
result_backend = db+mysql://airflow:password@cm630.localdomain:3306/airflow
[kerberos]
ccache = /var/lib/airflow/airflow_krb5_ccache
principal = airflow
reinit_frequency = 3600
kinit_path = kinit
keytab = /var/lib/airflow/airflow.keytab
Note: just need to change the highlighted values for your own values.
Enable Kerberos in Airflow
Create Airflow Kerberos Principal
kadmin.local <<eoj
addprinc -pw password airflow@DOMAIN.COM
modprinc -maxrenewlife 1week +allow_renewable airflow@DOMAIN.COM
xst -norandkey -k /var/lib/airflow/airflow.keytab airflow@DOMAIN.COM
eoj
chown airflow:airflow /var/lib/airflow/airflow.keytab;
Airflow Impersonation
nano /ets/sudoers;
## Same thing without a password
airflow ALL=(ALL) NOPASSWD: ALL
Note 1: For impersonations to work, Airflow must be run with sudo as subtasks are run with sudo -u and permissions of files are changed.
Furthermore, the unix user needs to exist on the worker. Here is what a simple sudoers file entry could look like to achieve this, assuming as airflow
is running as the airflow user. Which it means that the airflow user must be trusted and treated the same way as the root user.
Note 2: just need to change the highlighted values for your own values.
Add Airflow as a Cloudera Service
After all configuration, now we will add Airflow as a Service on Cloudera Manager.
Add Airflow Service
Add Services -> Airflow
Add Airflow as a Cloudera Service
Airflow Configurations
Add Airflow as a Cloudera Service
Test AirFlow ticket renewer
airflow Kerberos;
Interact with Airflow
On an initial phase the authentication on Airflow UI will de disabled, therefore you will not need any user/pass.
The Airflow UI url is: http://cm630.localdomain:8080/admin/
Create DAG and Plugin Dir
mkdir -p /var/lib/airflow/dags && mkdir -p /var/lib/airflow/plugins && chown airflow:airflow -R /var/lib/airflow/;
Login Airflow UI
Test MySQL/MariaDB Connection
Interact with Airflow
Edit Airflow MySQL/MariaDB Connection
Test HiveServer2 Connection
Interact with Airflow
Edit HiveServer2 Connection
Note: For test purpose it was created a table in Hive (tab_air);
Interact with Airflow
Create Hello World DAG
from __future__ import print_function
import datetime
from airflow import models
from airflow.operators import bash_operator
from airflow.operators import python_operator
default_dag_args = {
'start_date': datetime.datetime(2019, 10, 10),
}
with models.DAG(
'composer_sample_simple_greeting',
schedule_interval=datetime.timedelta(days=1),
default_args=default_dag_args) as dag:
def greeting():
import logging
logging.info('Hello World!')
hello_python = python_operator.PythonOperator(
task_id='hello',
python_callable=greeting)
goodbye_bash = bash_operator.BashOperator(
task_id='bye',
bash_command='echo Goodbye.')
hello_python >> goodbye_bash
Test Hello World DAG
airflow test composer_sample_simple_greeting hello 15/10/2019
Issues with Airflow Service
I've found Airflow Service quite stable, but sometimes the Airflow Scheduler instance got stuck in a Starting/Stopping status.
Airflow Scheduler in Stopping/Starting Status
mysql -uroot -ppassword;
use scm;
select role_id, name, configured_status from ROLES where configured_status in ("STARTING","BUSY","STOPPING");
update ROLES set configured_status = "STOPPED" where role_id = "63";
Note: just need to change the highlighted values for your own values.
Thanks
Big Data Engineer
Tiago Simões

More Related Content

PPTX
How to implement a gdpr solution in a cloudera architecture
PPTX
How to create a multi tenancy for an interactive data analysis
PPTX
How to create a secured cloudera cluster
PPTX
How to configure a hive high availability connection with zeppelin
PPTX
How to create a multi tenancy for an interactive data analysis with jupyter h...
PPT
Hadoop on ec2
PDF
Automated Java Deployments With Rpm
PDF
Kubernetes installation
How to implement a gdpr solution in a cloudera architecture
How to create a multi tenancy for an interactive data analysis
How to create a secured cloudera cluster
How to configure a hive high availability connection with zeppelin
How to create a multi tenancy for an interactive data analysis with jupyter h...
Hadoop on ec2
Automated Java Deployments With Rpm
Kubernetes installation

What's hot (20)

PDF
Failsafe Mechanism for Yahoo Homepage
PDF
Cloudera cluster setup and configuration
PDF
[오픈소스컨설팅] EFK Stack 소개와 설치 방법
PPTX
An intro to Docker, Terraform, and Amazon ECS
PDF
Multinode kubernetes-cluster
PPTX
Exploring the Future of Helm
PDF
How Helm, The Package Manager For Kubernetes, Works
PPTX
IT Infrastructure Through The Public Network Challenges And Solutions
PDF
Build Automation 101
PPTX
Administering and Monitoring SolrCloud Clusters
PDF
Connect Amazon EC2 Linux Instance
PDF
Setup 3 Node Kafka Cluster on AWS - Hands On
PDF
Squid for Load-Balancing & Cache-Proxy ~ A techXpress Guide
PPT
Mysql Fun
 
DOCX
Guide - Migrating from Heroku to AWS using CloudFormation
PDF
k8s-on-azure
PDF
Using Terraform.io (Human Talks Montpellier, Epitech, 2014/09/09)
PDF
Terraform at Scale - All Day DevOps 2017
DOCX
Hadoop sqoop2 server setup and application integration
PPTX
Helm @ Orchestructure
Failsafe Mechanism for Yahoo Homepage
Cloudera cluster setup and configuration
[오픈소스컨설팅] EFK Stack 소개와 설치 방법
An intro to Docker, Terraform, and Amazon ECS
Multinode kubernetes-cluster
Exploring the Future of Helm
How Helm, The Package Manager For Kubernetes, Works
IT Infrastructure Through The Public Network Challenges And Solutions
Build Automation 101
Administering and Monitoring SolrCloud Clusters
Connect Amazon EC2 Linux Instance
Setup 3 Node Kafka Cluster on AWS - Hands On
Squid for Load-Balancing & Cache-Proxy ~ A techXpress Guide
Mysql Fun
 
Guide - Migrating from Heroku to AWS using CloudFormation
k8s-on-azure
Using Terraform.io (Human Talks Montpellier, Epitech, 2014/09/09)
Terraform at Scale - All Day DevOps 2017
Hadoop sqoop2 server setup and application integration
Helm @ Orchestructure
Ad

Similar to How to scheduled jobs in a cloudera cluster without oozie (20)

PPTX
Building drupal web farms with IIS - part 1
PDF
CCCEU15 run cloudstack in docker
PDF
CloudStack Collab Conference 2015 Run CloudStack in Docker
PPTX
Ansible & CloudStack - Configuration Management
PPTX
Docker Networking - Common Issues and Troubleshooting Techniques
PDF
Best Practices For Workflow
PDF
Oracle autovue
PDF
Clouldera Implementation Guide for Production Deployments
PDF
AWS Application Migration Service-Hands-On Guide
PDF
Philly security shell meetup
ODP
Pyramid deployment
PDF
New features of Azure Cloud Provider in OpenShift Container Platform 3.10
PDF
Things I've learned working with Docker Support
PPTX
Simple docker hosting in FIWARE Lab
PPTX
01 - Velociraptor Installation and Overview.pptx
PPTX
01 - Velociraptor Installation and Overview.pptx
PDF
Meet the Committers Webinar_ Lab Preparation
PPTX
Cloudera amazon-ec2
PPTX
Docker container management
PDF
CloudOps CloudStack Days, Austin April 2015
Building drupal web farms with IIS - part 1
CCCEU15 run cloudstack in docker
CloudStack Collab Conference 2015 Run CloudStack in Docker
Ansible & CloudStack - Configuration Management
Docker Networking - Common Issues and Troubleshooting Techniques
Best Practices For Workflow
Oracle autovue
Clouldera Implementation Guide for Production Deployments
AWS Application Migration Service-Hands-On Guide
Philly security shell meetup
Pyramid deployment
New features of Azure Cloud Provider in OpenShift Container Platform 3.10
Things I've learned working with Docker Support
Simple docker hosting in FIWARE Lab
01 - Velociraptor Installation and Overview.pptx
01 - Velociraptor Installation and Overview.pptx
Meet the Committers Webinar_ Lab Preparation
Cloudera amazon-ec2
Docker container management
CloudOps CloudStack Days, Austin April 2015
Ad

Recently uploaded (20)

PPTX
MYSQL Presentation for SQL database connectivity
PDF
cuic standard and advanced reporting.pdf
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PPTX
A Presentation on Artificial Intelligence
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Encapsulation theory and applications.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Electronic commerce courselecture one. Pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
NewMind AI Monthly Chronicles - July 2025
MYSQL Presentation for SQL database connectivity
cuic standard and advanced reporting.pdf
CIFDAQ's Market Insight: SEC Turns Pro Crypto
A Presentation on Artificial Intelligence
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
The Rise and Fall of 3GPP – Time for a Sabbatical?
Encapsulation theory and applications.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Electronic commerce courselecture one. Pdf
Digital-Transformation-Roadmap-for-Companies.pptx
Mobile App Security Testing_ A Comprehensive Guide.pdf
Unlocking AI with Model Context Protocol (MCP)
Spectral efficient network and resource selection model in 5G networks
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
“AI and Expert System Decision Support & Business Intelligence Systems”
Network Security Unit 5.pdf for BCA BBA.
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
20250228 LYD VKU AI Blended-Learning.pptx
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
NewMind AI Monthly Chronicles - July 2025

How to scheduled jobs in a cloudera cluster without oozie

  • 1. How-to scheduled jobs in a Cloudera Cluster without oozie Cloudera Manager + Kerberos + Airflow
  • 2. Introduction This presentation, it’s for everyone that is looking for an oozie alternative to scheduled jobs in a secured Cloudera Cluster. With this, you will be able to add and configure the Airflow Service an manage it with in Cloudera Manager.
  • 3. Architecture Airflow will be the in the same layer of oozie.
  • 4. Architecture The Airflow architecture will be the following:
  • 5. Pre-Assumptions 1. Environment with Centos 7 2. user root or with sudo 3. Cloudera CDH 6.3 4. MariaDB 10.3 5. Kerberos Installed 6. HiveServer with High Availability 7. Know the RabbitMQ and Erlang/OTP Compatibility Matrix
  • 6. Prepare Airflow Installation Download EPEL Repo yum install –y epel-release; Install Erlang wget https://bintray.com/rabbitmq-erlang/rpm/download_file?file_path=erlang%2F21%2Fel%2F7%2Fx86_64%2Ferlang- 21.3.8.7-1.el7.x86_64.rpm; mv download_file?file_path=erlang%2F21%2Fel%2F7%2Fx86_64%2Ferlang-21.3.8.7-1.el7.x86_64.rpm erlang-21.3.8.7- 1.el7.x86_64.rpm; rpm -Uvh erlang-21.3.8.7-1.el7.x86_64.rpm; Note: just need to change the highlighted values for your own values.
  • 7. Prepare Airflow Installation Test Erlang erl Erlang/OTP 22 [erts-10.4.4] [source] [64-bit] [smp:6:6] [ds:6:6:10] [async-threads:1] [hipe] Eshell V10.4.4 (abort with ^G) 1> Install RabbitMQ via YUM nano /etc/yum.repos.d/rabbitmq.repo; [bintray-rabbitmq-server] name=bintray-rabbitmq-rpm baseurl=https://dl.bintray.com/rabbitmq/rpm/rabbitmq-server/v3.7.x/el/7/ gpgcheck=0 repo_gpgcheck=0 enabled=1 yum -y install rabbitmq-server-3.7.17-1.el7.noarch.rpm; Note: just need to change the highlighted values for your own values.
  • 8. Prepare Airflow Installation Modify Firewall Rules firewall-cmd --zone=public --permanent --add-port=4369/tcp --add-port=25672/tcp --add-port=5671-5672/tcp --add- port=15672/tcp --add-port=61613-61614/tcp --add-port=1883/tcp --add-port=8883/tcp; firewall-cmd --reload; Start the RabbitMQ server and enable it systemctl start rabbitmq-server.service; systemctl enable rabbitmq-server.service; Check the status of RabbitMQ rabbitmqctl status; Enable and use the RabbitMQ management console rabbitmq-plugins enable rabbitmq_management; chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/;
  • 9. Prepare Airflow Installation Create User rabbitmqctl add_user mqadmin password; rabbitmqctl set_user_tags mqadmin administrator; rabbitmqctl set_permissions -p / mqadmin ".*" ".*" ".*"; Rabbit UI http://cm630.localdomain:15672/ Note: just need to change the highlighted values for your own values.
  • 10. Airflow Installation There’s many ways to do the Airflow installation, such as via pip. But i've found that the most useful it’s via parcels with the advantage to be in the Cloudera Manager administration scope. Create User and Database on MariaDB mysql -uroot –ppassword; CREATE DATABASE airflow DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; GRANT ALL ON airflow.* TO 'airflow'@'localhost' IDENTIFIED BY 'password'; GRANT ALL ON airflow.* TO 'airflow'@'%' IDENTIFIED BY 'password'; Add AirFlow Parcel Hosts > Parcels > Configuration Add url: http://archive.clairvoyantsoft.com/airflow/parcels/latest/ Download and Distribute Note: just need to change the highlighted values for your own values.
  • 11. Airflow Installation Install the Airflow CSD cd /opt/ckoudera/csd; wget http://archive.clairvoyantsoft.com/airflow/csd/AIRFLOW-2.2.0.jar; chmod 755 AIRFLOW-2.2.0.jar; chown cloudera-scm:cloudera-scm cloudera-scm; Restart Cloudera Server systemctl restart cloudera-scm-server; Note: just need to change the highlighted values for your own values.
  • 12. Enable Kerberos in Airflow This process can be a bit tricky, please take special attention while configuring the airflow.cfg AirFlow ProxyUser HDFS > Cluster-wide Advanced Configuration Snippet (Safety Valve) for core-site.xml <property> <name>hadoop.proxyuser.airflow.groups</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.airflow.users</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.airflow.hosts</name> <value>*</value> </property> Note: just need to change the highlighted values for your own values.
  • 13. Enable Kerberos in Airflow Edit Airflow Config File nano /etc/airflow/conf.cloudera.airflow/airflow.cfg; [core] [...] executor = CeleryExecutor sql_alchemy_conn = mysql://airflow:password@cm630.localdomain:3306/airflow default_impersonation = security = Kerberos [celery] celery_app_name = airflow.executors.celery_executor broker_url = pyamqp://mqadmin:password@cm630.localdomain:4369/ result_backend = db+mysql://airflow:password@cm630.localdomain:3306/airflow [kerberos] ccache = /var/lib/airflow/airflow_krb5_ccache principal = airflow reinit_frequency = 3600 kinit_path = kinit keytab = /var/lib/airflow/airflow.keytab Note: just need to change the highlighted values for your own values.
  • 14. Enable Kerberos in Airflow Create Airflow Kerberos Principal kadmin.local <<eoj addprinc -pw password airflow@DOMAIN.COM modprinc -maxrenewlife 1week +allow_renewable airflow@DOMAIN.COM xst -norandkey -k /var/lib/airflow/airflow.keytab airflow@DOMAIN.COM eoj chown airflow:airflow /var/lib/airflow/airflow.keytab; Airflow Impersonation nano /ets/sudoers; ## Same thing without a password airflow ALL=(ALL) NOPASSWD: ALL Note 1: For impersonations to work, Airflow must be run with sudo as subtasks are run with sudo -u and permissions of files are changed. Furthermore, the unix user needs to exist on the worker. Here is what a simple sudoers file entry could look like to achieve this, assuming as airflow is running as the airflow user. Which it means that the airflow user must be trusted and treated the same way as the root user. Note 2: just need to change the highlighted values for your own values.
  • 15. Add Airflow as a Cloudera Service After all configuration, now we will add Airflow as a Service on Cloudera Manager. Add Airflow Service Add Services -> Airflow
  • 16. Add Airflow as a Cloudera Service Airflow Configurations
  • 17. Add Airflow as a Cloudera Service Test AirFlow ticket renewer airflow Kerberos;
  • 18. Interact with Airflow On an initial phase the authentication on Airflow UI will de disabled, therefore you will not need any user/pass. The Airflow UI url is: http://cm630.localdomain:8080/admin/ Create DAG and Plugin Dir mkdir -p /var/lib/airflow/dags && mkdir -p /var/lib/airflow/plugins && chown airflow:airflow -R /var/lib/airflow/; Login Airflow UI
  • 19. Test MySQL/MariaDB Connection Interact with Airflow Edit Airflow MySQL/MariaDB Connection
  • 20. Test HiveServer2 Connection Interact with Airflow Edit HiveServer2 Connection Note: For test purpose it was created a table in Hive (tab_air);
  • 21. Interact with Airflow Create Hello World DAG from __future__ import print_function import datetime from airflow import models from airflow.operators import bash_operator from airflow.operators import python_operator default_dag_args = { 'start_date': datetime.datetime(2019, 10, 10), } with models.DAG( 'composer_sample_simple_greeting', schedule_interval=datetime.timedelta(days=1), default_args=default_dag_args) as dag: def greeting(): import logging logging.info('Hello World!') hello_python = python_operator.PythonOperator( task_id='hello', python_callable=greeting) goodbye_bash = bash_operator.BashOperator( task_id='bye', bash_command='echo Goodbye.') hello_python >> goodbye_bash Test Hello World DAG airflow test composer_sample_simple_greeting hello 15/10/2019
  • 22. Issues with Airflow Service I've found Airflow Service quite stable, but sometimes the Airflow Scheduler instance got stuck in a Starting/Stopping status. Airflow Scheduler in Stopping/Starting Status mysql -uroot -ppassword; use scm; select role_id, name, configured_status from ROLES where configured_status in ("STARTING","BUSY","STOPPING"); update ROLES set configured_status = "STOPPED" where role_id = "63"; Note: just need to change the highlighted values for your own values.