SlideShare a Scribd company logo
1 of 20
0.89 -
Online Configuration
brandboat
1
❏ Add a utility to reload configurations in Region Server and HMaster
➢ Create a utility that can talk to the Region Servers and make them reload configurations on
disk.This however, does not make other classes reload, which have their own copies of conf
property values.
❏ Allow individual classes to get notified when Configuration is reloaded
➢ The purpose of this feature is to let individual classes who are interested in observing online
configuration changes, to be notified when the Conf is reloaded from disk.
Online configuration upgrade feature
2
Add a utility to reload configurations in
Region Server [HBASE-8544]
❏ How to run (see the usage):
❏ Flow :
1. get HRegionServer information
2.conf.reloadConfiguration()
3.getConfigurationManager.notifyAllObserver
s(conf)
${HBASE_HOME}/bin/hbase org.jruby.Main ${HBASE_HOME}/bin/reload_rs_config.rb usage
3
Conti. (Flow)
4
HBaseAdmin HRegionServer Configuration
updateConfiguration(address)
updateConfiguration()
// Update configuration for region server at this address.
public void updateConfiguration(HServerAddress address)
throws IOException {
HRegionInterface server =
connection.getHRegionConnection(address);
server.updateConfiguration();
}
// Reload the configuration from disk.
@Override
public void updateConfiguration() {
LOG.info("Reloading the configuration from disk.");
// Reload the configuration from disk.
conf.reloadConfiguration();
// Notify all the observers that the configuration has
// changed.
configurationManager.notifyAllObservers(conf);
}
conf.reloadConfiguration()
/**
* Reload configuration from previously added resources.
*
* This method will clear all the configuration read from the added
* resources, and final parameters. This will make the resources to
* be read again before accessing the values. Values that are added
* via set methods will overlay values read from the resources.
*/
public synchronized void reloadConfiguration() {
properties = null; // trigger reload
finalParameters.clear(); // clear site-limits
}
5
Conti. properties = null ?
private synchronized Properties getProps() {
if (properties == null) {
properties = new Properties();
loadResources(properties, resources, quietmode);
if (overlay!= null)
properties.putAll(overlay);
}
return properties;
}
6
public String get(String name)
public String getRaw(String name)
public void set(String name, String value)
…… has getProps()
/**
* Return the number of keys in the configuration.
*
* @return number of keys in the configuration.
*/
public int size() {
return getProps().size();
}
Added a utility to make the HMaster reload
its configuration from disk [HBASE-8587]
❏ How to run :
❏ Flow :
1. get HMaster information
2.conf.reloadConfiguration()
3.getConfigurationManager.notifyAllObserver
s(conf)
${HBASE_HOME}/bin/hbase org.jruby.Main ${HBASE_HOME}/bin/reload_master_config.rb
7
Allow individual classes to get notified when
Configuration is reloaded [HBASE-8576]
<ConfigurationManager.java> <ConfigurationObserver.java>
❖ If a class has configuration properties which you would like to be able to change on-
the-fly, do the following :
1. Implement the ConfigurationObserver interface.
2. Register the appropriate instance of the class with the ConfigurationManager instance,
using the ConfigurationManager#registerObserver(ConfigurationObserver)
method.
3. Deregister the instance using the
ConfigurationManager#deregisterObserver(ConfigurationObserver) method
when it is going out of scope.
8
ConfigurationManager.java
// The set of Configuration Observers. These classes would like to get
// notified when the configuration is reloaded from disk
private Set<ConfigurationObserver> configurationObservers =
Collections.newSetFromMap(new WeakHashMap<ConfigurationObserver,Boolean>());
// Register an observer class
public void registerObserver(ConfigurationObserver observer)
// Deregister an observer class
public void deregisterObserver(ConfigurationObserver observer)
// The conf object has been repopulated from disk, and we have to notify
// all the observers that are expressed interest to do that.
public void notifyAllObservers(Configuration conf)
// Return the number of observers.
public int getNumObservers()
9
ConfigurationObserver.java
/**
* Every class that wants to observe changes in Configuration properties,
* must implement interface (and also, register itself with the
* <code>ConfigurationManager</code> object.
*/
public interface ConfigurationObserver {
/**
* This method would be called by the <code>ConfigurationManager</code>
* object when the <code>Configuration</code> object is reloaded from disk.
*/
void notifyOnChange(Configuration conf);
}
10
Conti. notifyAllObservers()
// ConfigurationManager.java
public void notifyAllObservers(Configuration conf) {
synchronized (configurationObservers) {
for (ConfigurationObserver observer : configurationObservers) {
try {
observer.notifyOnChange(conf);
} catch (NullPointerException e) {
............
11
Ex. CacheConfig
// HRegionServer.java
public static final ConfigurationManager configurationManager =
new ConfigurationManager();
configurationManager.registerObserver(cacheConfig);
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
// CacheConfig.java
public class CacheConfig implements ConfigurationObserver { . . . . . . .
@Override
public void notifyOnChange(Configuration conf) {
new CacheConfigBuilder(conf).update(this);
}
12
configurationManager.notifyAllObservers(conf);
Others
Online Configuration
13
Number of compaction threads &
CompactionConfiguration class [HBASE-8805]
 Compaction Ratio
 OffPeak Compaction Ratio
 Throttle Point
 OffPeak Start Hour
 OffPeak End Hour
 Major Compaction Period
 Major Compaction Jitter
 Min Files to Compact
 Max Files to Compact
 Min Compact Size
 Max Compact Size
 Should Exclude Bulk
 Should Delete Expired
❏ Making the number of large/small compaction threads and the
properties in the CompactionConfiguration class online-
configurable.
❏ Properties :
14
Make L2 cache online configurable
❏ Allows the L2 cache to be disabled or L2 cache policies
to be modified without restarting the RS. (This is a
preliminary diff ,not fully done testing.)
❏ Properties (CacheConfig.java)
 L2_CACHE_BLOCKS_ON_FLUSH_KEY
 L2_EVICT_ON_PROMOTION_KEY (Not yet implemented!)
 L2_EVICT_ON_CLOSE_KEY
 L2_BUCKET_CACHE_SIZE_KEY
15
Update memstore flush threads in online
fashion
❏ The number of flush thread can be updated in
an online fashion.
❏ hbase.regionserver.flusher.count
16
Online configuration change for loaded
coprocessors
❏ Trying out if online config works when new
coprocessors are added, so far so good.
17
Allow number of SplitLogWorker threads to
be online-configurable
❏ the number of worker threads to use < the number of
workers in use, extraneous workers are stopped.
❏ the number of worker threads to use > the number of
workers in use, the appropriate number of additional
SplitLogWorker threads are added.
❏ hbase.hregionserver.hlog.split.workers.num
18
Make server side profiling online
configurable
❏ Make the parameter to enable/disable server side
profiling configurable online.
19
Hbase 1.0 Online Config Change
[HBASE-12147]
❏ HBASE-8805 HBASE-8544 in 89-fb.
❏ Improves operational efficiency in managing clusters
that are serving production traffic.
❏ The idea is to have a central configuration which can
manage notifying the configuration observers.
❏ The observers in turn should update their local state
from the latest config. Minor caveats where
configuration variables are corelated should be taken
care of with additional care.
20

More Related Content

What's hot

MySQL Backup and Security Best Practices
MySQL Backup and Security Best PracticesMySQL Backup and Security Best Practices
MySQL Backup and Security Best PracticesLenz Grimmer
 
IBM DB2 LUW/UDB DBA Training by www.etraining.guru
IBM DB2 LUW/UDB DBA Training by www.etraining.guruIBM DB2 LUW/UDB DBA Training by www.etraining.guru
IBM DB2 LUW/UDB DBA Training by www.etraining.guruRavikumar Nandigam
 
Highly efficient backups with percona xtrabackup
Highly efficient backups with percona xtrabackupHighly efficient backups with percona xtrabackup
Highly efficient backups with percona xtrabackupNilnandan Joshi
 
Postgres the hardway
Postgres the hardwayPostgres the hardway
Postgres the hardwayDave Pitts
 
Inno db datafiles backup and retore
Inno db datafiles backup and retoreInno db datafiles backup and retore
Inno db datafiles backup and retoreVasudeva Rao
 
All types of backups and restore
All types of backups and restoreAll types of backups and restore
All types of backups and restoreVasudeva Rao
 
Percona xtrabackup - MySQL Meetup @ Mumbai
Percona xtrabackup - MySQL Meetup @ MumbaiPercona xtrabackup - MySQL Meetup @ Mumbai
Percona xtrabackup - MySQL Meetup @ MumbaiNilnandan Joshi
 
MySQL Server Backup, Restoration, and Disaster Recovery Planning
MySQL Server Backup, Restoration, and Disaster Recovery PlanningMySQL Server Backup, Restoration, and Disaster Recovery Planning
MySQL Server Backup, Restoration, and Disaster Recovery PlanningLenz Grimmer
 
Building tungsten-clusters-with-postgre sql-hot-standby-and-streaming-replica...
Building tungsten-clusters-with-postgre sql-hot-standby-and-streaming-replica...Building tungsten-clusters-with-postgre sql-hot-standby-and-streaming-replica...
Building tungsten-clusters-with-postgre sql-hot-standby-and-streaming-replica...Command Prompt., Inc
 
Presentation db2 best practices for optimal performance
Presentation   db2 best practices for optimal performancePresentation   db2 best practices for optimal performance
Presentation db2 best practices for optimal performancesolarisyougood
 
MySQL8.0_performance_schema.pptx
MySQL8.0_performance_schema.pptxMySQL8.0_performance_schema.pptx
MySQL8.0_performance_schema.pptxNeoClova
 
Ibm db2 10.5 for linux, unix, and windows getting started with db2 installa...
Ibm db2 10.5 for linux, unix, and windows   getting started with db2 installa...Ibm db2 10.5 for linux, unix, and windows   getting started with db2 installa...
Ibm db2 10.5 for linux, unix, and windows getting started with db2 installa...bupbechanhgmail
 
Upgrading mysql version 5.5.30 to 5.6.10
Upgrading mysql version 5.5.30 to 5.6.10Upgrading mysql version 5.5.30 to 5.6.10
Upgrading mysql version 5.5.30 to 5.6.10Vasudeva Rao
 
Introducing Xtrabackup Manager
Introducing Xtrabackup ManagerIntroducing Xtrabackup Manager
Introducing Xtrabackup ManagerHenrik Ingo
 
PostgreSQL Replication in 10 Minutes - SCALE
PostgreSQL Replication in 10  Minutes - SCALEPostgreSQL Replication in 10  Minutes - SCALE
PostgreSQL Replication in 10 Minutes - SCALEPostgreSQL Experts, Inc.
 

What's hot (18)

SQL Server vs Postgres
SQL Server vs PostgresSQL Server vs Postgres
SQL Server vs Postgres
 
MySQL Backup and Security Best Practices
MySQL Backup and Security Best PracticesMySQL Backup and Security Best Practices
MySQL Backup and Security Best Practices
 
IBM DB2 LUW/UDB DBA Training by www.etraining.guru
IBM DB2 LUW/UDB DBA Training by www.etraining.guruIBM DB2 LUW/UDB DBA Training by www.etraining.guru
IBM DB2 LUW/UDB DBA Training by www.etraining.guru
 
Highly efficient backups with percona xtrabackup
Highly efficient backups with percona xtrabackupHighly efficient backups with percona xtrabackup
Highly efficient backups with percona xtrabackup
 
Postgres the hardway
Postgres the hardwayPostgres the hardway
Postgres the hardway
 
Inno db datafiles backup and retore
Inno db datafiles backup and retoreInno db datafiles backup and retore
Inno db datafiles backup and retore
 
All types of backups and restore
All types of backups and restoreAll types of backups and restore
All types of backups and restore
 
2 db2 instance creation
2 db2 instance creation2 db2 instance creation
2 db2 instance creation
 
Percona xtrabackup - MySQL Meetup @ Mumbai
Percona xtrabackup - MySQL Meetup @ MumbaiPercona xtrabackup - MySQL Meetup @ Mumbai
Percona xtrabackup - MySQL Meetup @ Mumbai
 
MySQL Server Backup, Restoration, and Disaster Recovery Planning
MySQL Server Backup, Restoration, and Disaster Recovery PlanningMySQL Server Backup, Restoration, and Disaster Recovery Planning
MySQL Server Backup, Restoration, and Disaster Recovery Planning
 
Building tungsten-clusters-with-postgre sql-hot-standby-and-streaming-replica...
Building tungsten-clusters-with-postgre sql-hot-standby-and-streaming-replica...Building tungsten-clusters-with-postgre sql-hot-standby-and-streaming-replica...
Building tungsten-clusters-with-postgre sql-hot-standby-and-streaming-replica...
 
Presentation db2 best practices for optimal performance
Presentation   db2 best practices for optimal performancePresentation   db2 best practices for optimal performance
Presentation db2 best practices for optimal performance
 
MySQL8.0_performance_schema.pptx
MySQL8.0_performance_schema.pptxMySQL8.0_performance_schema.pptx
MySQL8.0_performance_schema.pptx
 
Ibm db2 10.5 for linux, unix, and windows getting started with db2 installa...
Ibm db2 10.5 for linux, unix, and windows   getting started with db2 installa...Ibm db2 10.5 for linux, unix, and windows   getting started with db2 installa...
Ibm db2 10.5 for linux, unix, and windows getting started with db2 installa...
 
ProxySQL para mysql
ProxySQL para mysqlProxySQL para mysql
ProxySQL para mysql
 
Upgrading mysql version 5.5.30 to 5.6.10
Upgrading mysql version 5.5.30 to 5.6.10Upgrading mysql version 5.5.30 to 5.6.10
Upgrading mysql version 5.5.30 to 5.6.10
 
Introducing Xtrabackup Manager
Introducing Xtrabackup ManagerIntroducing Xtrabackup Manager
Introducing Xtrabackup Manager
 
PostgreSQL Replication in 10 Minutes - SCALE
PostgreSQL Replication in 10  Minutes - SCALEPostgreSQL Replication in 10  Minutes - SCALE
PostgreSQL Replication in 10 Minutes - SCALE
 

Similar to Hbase 89 fb online configuration

PuppetConf 2016: An Introduction to Measuring and Tuning PE Performance – Cha...
PuppetConf 2016: An Introduction to Measuring and Tuning PE Performance – Cha...PuppetConf 2016: An Introduction to Measuring and Tuning PE Performance – Cha...
PuppetConf 2016: An Introduction to Measuring and Tuning PE Performance – Cha...Puppet
 
HBase replication
HBase replicationHBase replication
HBase replicationwchevreuil
 
Content server installation guide
Content server installation guideContent server installation guide
Content server installation guideNaveed Bashir
 
Percona Cluster with Master_Slave for Disaster Recovery
Percona Cluster with Master_Slave for Disaster RecoveryPercona Cluster with Master_Slave for Disaster Recovery
Percona Cluster with Master_Slave for Disaster RecoveryRam Gautam
 
Practical solutions for connections administrators
Practical solutions for connections administratorsPractical solutions for connections administrators
Practical solutions for connections administratorsSharon James
 
2011 384 hackworth_ppt
2011 384 hackworth_ppt2011 384 hackworth_ppt
2011 384 hackworth_pptmaclean liu
 
Drupal camp South Florida 2011 - Introduction to the Aegir hosting platform
Drupal camp South Florida 2011 - Introduction to the Aegir hosting platformDrupal camp South Florida 2011 - Introduction to the Aegir hosting platform
Drupal camp South Florida 2011 - Introduction to the Aegir hosting platformHector Iribarne
 
Configuring Your First Hadoop Cluster On EC2
Configuring Your First Hadoop Cluster On EC2Configuring Your First Hadoop Cluster On EC2
Configuring Your First Hadoop Cluster On EC2benjaminwootton
 
Xen Cloud Platform Installation Guide
Xen Cloud Platform Installation GuideXen Cloud Platform Installation Guide
Xen Cloud Platform Installation GuideSusheel Thakur
 
Drupal Deployment Troubles and Problems
Drupal Deployment Troubles and ProblemsDrupal Deployment Troubles and Problems
Drupal Deployment Troubles and ProblemsAndrii Lundiak
 
A Step-By-Step Disaster Recovery Blueprint & Best Practices for Your NetBacku...
A Step-By-Step Disaster Recovery Blueprint & Best Practices for Your NetBacku...A Step-By-Step Disaster Recovery Blueprint & Best Practices for Your NetBacku...
A Step-By-Step Disaster Recovery Blueprint & Best Practices for Your NetBacku...Symantec
 
How To Configure Nginx Load Balancer on CentOS 7
How To Configure Nginx Load Balancer on CentOS 7How To Configure Nginx Load Balancer on CentOS 7
How To Configure Nginx Load Balancer on CentOS 7VCP Muthukrishna
 
Cc Installation Process
Cc Installation ProcessCc Installation Process
Cc Installation Processmadhavamalladi
 
Percona Xtrabackup - Highly Efficient Backups
Percona Xtrabackup - Highly Efficient BackupsPercona Xtrabackup - Highly Efficient Backups
Percona Xtrabackup - Highly Efficient BackupsMydbops
 

Similar to Hbase 89 fb online configuration (20)

PuppetConf 2016: An Introduction to Measuring and Tuning PE Performance – Cha...
PuppetConf 2016: An Introduction to Measuring and Tuning PE Performance – Cha...PuppetConf 2016: An Introduction to Measuring and Tuning PE Performance – Cha...
PuppetConf 2016: An Introduction to Measuring and Tuning PE Performance – Cha...
 
Convert single instance to RAC
Convert single instance to RACConvert single instance to RAC
Convert single instance to RAC
 
HBase replication
HBase replicationHBase replication
HBase replication
 
Content server installation guide
Content server installation guideContent server installation guide
Content server installation guide
 
Percona Cluster with Master_Slave for Disaster Recovery
Percona Cluster with Master_Slave for Disaster RecoveryPercona Cluster with Master_Slave for Disaster Recovery
Percona Cluster with Master_Slave for Disaster Recovery
 
linux installation.pdf
linux installation.pdflinux installation.pdf
linux installation.pdf
 
Practical solutions for connections administrators
Practical solutions for connections administratorsPractical solutions for connections administrators
Practical solutions for connections administrators
 
2011 384 hackworth_ppt
2011 384 hackworth_ppt2011 384 hackworth_ppt
2011 384 hackworth_ppt
 
Puppet
PuppetPuppet
Puppet
 
Drupal camp South Florida 2011 - Introduction to the Aegir hosting platform
Drupal camp South Florida 2011 - Introduction to the Aegir hosting platformDrupal camp South Florida 2011 - Introduction to the Aegir hosting platform
Drupal camp South Florida 2011 - Introduction to the Aegir hosting platform
 
Setup guide nos-v3_5
Setup guide nos-v3_5Setup guide nos-v3_5
Setup guide nos-v3_5
 
Shareplex Presentation
Shareplex PresentationShareplex Presentation
Shareplex Presentation
 
Configuring Your First Hadoop Cluster On EC2
Configuring Your First Hadoop Cluster On EC2Configuring Your First Hadoop Cluster On EC2
Configuring Your First Hadoop Cluster On EC2
 
Xen Cloud Platform Installation Guide
Xen Cloud Platform Installation GuideXen Cloud Platform Installation Guide
Xen Cloud Platform Installation Guide
 
Dc kyiv2010 jun_08
Dc kyiv2010 jun_08Dc kyiv2010 jun_08
Dc kyiv2010 jun_08
 
Drupal Deployment Troubles and Problems
Drupal Deployment Troubles and ProblemsDrupal Deployment Troubles and Problems
Drupal Deployment Troubles and Problems
 
A Step-By-Step Disaster Recovery Blueprint & Best Practices for Your NetBacku...
A Step-By-Step Disaster Recovery Blueprint & Best Practices for Your NetBacku...A Step-By-Step Disaster Recovery Blueprint & Best Practices for Your NetBacku...
A Step-By-Step Disaster Recovery Blueprint & Best Practices for Your NetBacku...
 
How To Configure Nginx Load Balancer on CentOS 7
How To Configure Nginx Load Balancer on CentOS 7How To Configure Nginx Load Balancer on CentOS 7
How To Configure Nginx Load Balancer on CentOS 7
 
Cc Installation Process
Cc Installation ProcessCc Installation Process
Cc Installation Process
 
Percona Xtrabackup - Highly Efficient Backups
Percona Xtrabackup - Highly Efficient BackupsPercona Xtrabackup - Highly Efficient Backups
Percona Xtrabackup - Highly Efficient Backups
 

Recently uploaded

Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Hyundai Motor Group
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 

Recently uploaded (20)

Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 

Hbase 89 fb online configuration

  • 2. ❏ Add a utility to reload configurations in Region Server and HMaster ➢ Create a utility that can talk to the Region Servers and make them reload configurations on disk.This however, does not make other classes reload, which have their own copies of conf property values. ❏ Allow individual classes to get notified when Configuration is reloaded ➢ The purpose of this feature is to let individual classes who are interested in observing online configuration changes, to be notified when the Conf is reloaded from disk. Online configuration upgrade feature 2
  • 3. Add a utility to reload configurations in Region Server [HBASE-8544] ❏ How to run (see the usage): ❏ Flow : 1. get HRegionServer information 2.conf.reloadConfiguration() 3.getConfigurationManager.notifyAllObserver s(conf) ${HBASE_HOME}/bin/hbase org.jruby.Main ${HBASE_HOME}/bin/reload_rs_config.rb usage 3
  • 4. Conti. (Flow) 4 HBaseAdmin HRegionServer Configuration updateConfiguration(address) updateConfiguration() // Update configuration for region server at this address. public void updateConfiguration(HServerAddress address) throws IOException { HRegionInterface server = connection.getHRegionConnection(address); server.updateConfiguration(); } // Reload the configuration from disk. @Override public void updateConfiguration() { LOG.info("Reloading the configuration from disk."); // Reload the configuration from disk. conf.reloadConfiguration(); // Notify all the observers that the configuration has // changed. configurationManager.notifyAllObservers(conf); }
  • 5. conf.reloadConfiguration() /** * Reload configuration from previously added resources. * * This method will clear all the configuration read from the added * resources, and final parameters. This will make the resources to * be read again before accessing the values. Values that are added * via set methods will overlay values read from the resources. */ public synchronized void reloadConfiguration() { properties = null; // trigger reload finalParameters.clear(); // clear site-limits } 5
  • 6. Conti. properties = null ? private synchronized Properties getProps() { if (properties == null) { properties = new Properties(); loadResources(properties, resources, quietmode); if (overlay!= null) properties.putAll(overlay); } return properties; } 6 public String get(String name) public String getRaw(String name) public void set(String name, String value) …… has getProps() /** * Return the number of keys in the configuration. * * @return number of keys in the configuration. */ public int size() { return getProps().size(); }
  • 7. Added a utility to make the HMaster reload its configuration from disk [HBASE-8587] ❏ How to run : ❏ Flow : 1. get HMaster information 2.conf.reloadConfiguration() 3.getConfigurationManager.notifyAllObserver s(conf) ${HBASE_HOME}/bin/hbase org.jruby.Main ${HBASE_HOME}/bin/reload_master_config.rb 7
  • 8. Allow individual classes to get notified when Configuration is reloaded [HBASE-8576] <ConfigurationManager.java> <ConfigurationObserver.java> ❖ If a class has configuration properties which you would like to be able to change on- the-fly, do the following : 1. Implement the ConfigurationObserver interface. 2. Register the appropriate instance of the class with the ConfigurationManager instance, using the ConfigurationManager#registerObserver(ConfigurationObserver) method. 3. Deregister the instance using the ConfigurationManager#deregisterObserver(ConfigurationObserver) method when it is going out of scope. 8
  • 9. ConfigurationManager.java // The set of Configuration Observers. These classes would like to get // notified when the configuration is reloaded from disk private Set<ConfigurationObserver> configurationObservers = Collections.newSetFromMap(new WeakHashMap<ConfigurationObserver,Boolean>()); // Register an observer class public void registerObserver(ConfigurationObserver observer) // Deregister an observer class public void deregisterObserver(ConfigurationObserver observer) // The conf object has been repopulated from disk, and we have to notify // all the observers that are expressed interest to do that. public void notifyAllObservers(Configuration conf) // Return the number of observers. public int getNumObservers() 9
  • 10. ConfigurationObserver.java /** * Every class that wants to observe changes in Configuration properties, * must implement interface (and also, register itself with the * <code>ConfigurationManager</code> object. */ public interface ConfigurationObserver { /** * This method would be called by the <code>ConfigurationManager</code> * object when the <code>Configuration</code> object is reloaded from disk. */ void notifyOnChange(Configuration conf); } 10
  • 11. Conti. notifyAllObservers() // ConfigurationManager.java public void notifyAllObservers(Configuration conf) { synchronized (configurationObservers) { for (ConfigurationObserver observer : configurationObservers) { try { observer.notifyOnChange(conf); } catch (NullPointerException e) { ............ 11
  • 12. Ex. CacheConfig // HRegionServer.java public static final ConfigurationManager configurationManager = new ConfigurationManager(); configurationManager.registerObserver(cacheConfig); ------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------- // CacheConfig.java public class CacheConfig implements ConfigurationObserver { . . . . . . . @Override public void notifyOnChange(Configuration conf) { new CacheConfigBuilder(conf).update(this); } 12 configurationManager.notifyAllObservers(conf);
  • 14. Number of compaction threads & CompactionConfiguration class [HBASE-8805]  Compaction Ratio  OffPeak Compaction Ratio  Throttle Point  OffPeak Start Hour  OffPeak End Hour  Major Compaction Period  Major Compaction Jitter  Min Files to Compact  Max Files to Compact  Min Compact Size  Max Compact Size  Should Exclude Bulk  Should Delete Expired ❏ Making the number of large/small compaction threads and the properties in the CompactionConfiguration class online- configurable. ❏ Properties : 14
  • 15. Make L2 cache online configurable ❏ Allows the L2 cache to be disabled or L2 cache policies to be modified without restarting the RS. (This is a preliminary diff ,not fully done testing.) ❏ Properties (CacheConfig.java)  L2_CACHE_BLOCKS_ON_FLUSH_KEY  L2_EVICT_ON_PROMOTION_KEY (Not yet implemented!)  L2_EVICT_ON_CLOSE_KEY  L2_BUCKET_CACHE_SIZE_KEY 15
  • 16. Update memstore flush threads in online fashion ❏ The number of flush thread can be updated in an online fashion. ❏ hbase.regionserver.flusher.count 16
  • 17. Online configuration change for loaded coprocessors ❏ Trying out if online config works when new coprocessors are added, so far so good. 17
  • 18. Allow number of SplitLogWorker threads to be online-configurable ❏ the number of worker threads to use < the number of workers in use, extraneous workers are stopped. ❏ the number of worker threads to use > the number of workers in use, the appropriate number of additional SplitLogWorker threads are added. ❏ hbase.hregionserver.hlog.split.workers.num 18
  • 19. Make server side profiling online configurable ❏ Make the parameter to enable/disable server side profiling configurable online. 19
  • 20. Hbase 1.0 Online Config Change [HBASE-12147] ❏ HBASE-8805 HBASE-8544 in 89-fb. ❏ Improves operational efficiency in managing clusters that are serving production traffic. ❏ The idea is to have a central configuration which can manage notifying the configuration observers. ❏ The observers in turn should update their local state from the latest config. Minor caveats where configuration variables are corelated should be taken care of with additional care. 20

Editor's Notes

  1. L2_CACHE_BLOCKS_ON_FLUSH_KEY If L2 cache is enabled, this configuration key controls whether or not blocks are cached upon writes. Default: true if L2 cache is enabled. L2_EVICT_ON_PROMOTION_KEY Configuration key to evict keys from the L2 cache once they have been cached in the L1 cache (i.e., the regular Lru Block Cache). Default: false. Not yet implemented! L2_EVICT_ON_CLOSE_KEY Configuration key to enable evicting all blocks associated with an hfile after this hfile has been compacted. Default: true. L2_BUCKET_CACHE_SIZE_KEY Size of the L2 cache. If < 1.0, this is taken as a percentage of available (depending on configuration) direct or heap memory, otherwise it is taken as an absolute size in kb. If omitted or set to 0, L2 cache will be disabled.