Hi Huang,

It is possible to use the same Metastore server for 2 HiveServer2 instances, 
but then the HiveServer2 instances will share the metastore. They will have the 
same databases and tables.

As far as I know it is not possible for a metastore to serve different data for 
different HiveServers.
Here someone with more experience might help more.

Thanks,
Peter 


> On Oct 27, 2016, at 4:41 AM, Huang Meilong <ims...@outlook.com> wrote:
> 
> Thanks Peter for your detailed explanation, it works now.
> 
> BTW, can I start 2 HiveServer2 instances with ONLY ONE remote metastore 
> service and make the metastore db stored in the same RDBMS in a different 
> database?
> 发件人: Peter Vary <pv...@cloudera.com>
> 发送时间: 2016年10月26日 21:11:26
> 收件人: Huang Meilong
> 抄送: user@hive.apache.org
> 主题: Re: Can I specify database name in hive metastore service?
>  
> Hi Huang,
> 
> According to the picture you want to start 2 HiveServer2 instances both with 
> embedded metastore, where the metastore db is stored in the same RDBMS in a 
> different database.
> 
> This is certainly possible.
> You have to set the database options according to this:
> https://cwiki.apache.org/confluence/display/Hive/AdminManual+MetastoreAdmin#AdminManualMetastoreAdmin-RemoteMetastoreDatabase
>  
> <https://cwiki.apache.org/confluence/display/Hive/AdminManual+MetastoreAdmin#AdminManualMetastoreAdmin-RemoteMetastoreDatabase>
> 
> You have to set the metastore options according to this:
> https://cwiki.apache.org/confluence/display/Hive/AdminManual+MetastoreAdmin#AdminManualMetastoreAdmin-Local/EmbeddedMetastoreServer
>  
> <https://cwiki.apache.org/confluence/display/Hive/AdminManual+MetastoreAdmin#AdminManualMetastoreAdmin-Local/EmbeddedMetastoreServer>
> 
> 
> Hope this helps,
> Peter
> 
> 
>> On Oct 26, 2016, at 4:48 AM, Huang Meilong <ims...@outlook.com 
>> <mailto:ims...@outlook.com>> wrote:
>> 
>> Look at this local metastore architecture:
>> 
>> <pastedImage.png>
>> 
>> If I set different database name in javax.jdo.option.ConnectionURL, say,
>> "jdbc:mysql://xxxxx/hivemeta_1?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8"
>>  and 
>> "jdbc:mysql://xxxxx/hivemeta_2?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8",
>>  will the to metastore services work fine?
>> 
>> In short, I want to use the same RDBMS database for the two hive metastore 
>> services, and the meta data is isolated form each other. How can I achieve 
>> that?
>> 
>> 
>> 
>> 发件人: Peter Vary <pv...@cloudera.com <mailto:pv...@cloudera.com>>
>> 发送时间: 2016年10月26日 0:49
>> 收件人: user@hive.apache.org <mailto:user@hive.apache.org>
>> 主题: Re: Can I specify database name in hive metastore service?
>>  
>> Hi Huang,
>> Hive metastore is a component of the "Hive database". See: 
>> https://cwiki.apache.org/confluence/display/Hive/Design 
>> <https://cwiki.apache.org/confluence/display/Hive/Design>
>> The metastore uses traditional RDBMS to store "the structure information of 
>> the various tables and partitions in the warehouse". The 
>> javax.jdo.option.ConnectionURL and the javax.jdo.option.ConnectionDriverName 
>> configuration options are used to access this RDBMS database. The 
>> hive.metastore.uris is the endpoint where the metastore will communicate 
>> with the other Hive components, like the HiveServer2.
>> So you can change the database name in the connectionUrl, which will change 
>> only the database name where the metadata is stored in the relational 
>> database and you can not add a database name to the thrift uri (metastore 
>> uri) since HiveServer2 will use the same uri to access metadata regardless 
>> of which Hive database is used by the client.
>> I hope this helps, 
>> Peter
>> 
>> 2016. okt. 25. 17:32 ezt írta ("Huang Meilong" <ims...@outlook.com 
>> <mailto:ims...@outlook.com>>):
>> Hi,
>> 
>> To use hive metastore service, I must set `javax.jdo.option.ConnectionURL`, 
>> `javax.jdo.option.ConnectionDriverName` and `hive.metastore.uris` in 
>> hive-site.xml, like this:
>> 
>>   <property>
>>     <name>javax.jdo.option.ConnectionURL</name>
>>     
>> <value>jdbc:mysql://xxxxx/hivemeta?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8</value>
>>   </property>
>>   <property>
>>     <name>javax.jdo.option.ConnectionDriverName</name>
>>     <value>com.mysql.jdbc.Driver</value>
>>   </property>
>> <property>
>>     <name>hive.metastore.uris</name>
>>     <value>thrift://xxx:9083 <thrift://xxx:9083></value>
>>   </property>
>> 
>> 
>> I'm confused that can I change the database name (usually it's `hivemeta`) 
>> for other names?
>> 
>> If I changed the database name from `hivemeta` to `my_hivemeta`, can hive 
>> metastore work? We can not specify database name in `hive.metastore.uris`, 
>> we can only specify hostname and port of metastore service.

Reply via email to