Hive provides following three modes for metastore deployment.
a. Embedded metastore
By default metastore service runs in the same JVM as the Hive service. In this mode both metastore service and hive service runs in the same JVM by using embedded Derby Database. In this only one embedded Derby database can access the database files on disk at any one time, so only one Hive session could be open at a time.
b. Local Metastore
This mode allows us to have multiple Hive sessions i.e. multiple users can use the metastore at the same time. In this mode Hive metastore service runs in the same process as the main Hive Server process, but the metastore database runs in a separate process.
c. Remote Metastore
In this mode metastore runs on its own separate JVM not in the Hive service JVM. If other processes want to communicate with the metastore server they can communicate using Thrift Network APIs. We can also have one more metastore servers in this case to provide more availability. This also brings better manageability/security because the database tier can be completely firewalled off. And the clients no longer need share database credentials with each Hive user to access the metastore database.