hive HA

1、修改hive-site.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hd3:3306/hive?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<property>
<name>datanucleus.readOnlyDatastore</name>
<value>false</value>
</property>
<property>
<name>datanucleus.fixedDatastore</name>
<value>false</value>
</property>
<property>
<name>datanucleus.autoCreateSchema</name>
<value>true</value>
</property>
<property>
<name>datanucleus.schema.autoCreateAll</name>
<value>true</value>
</property>
<property>
<name>datanucleus.autoCreateTables</name>
<value>true</value>
</property>
<property>
<name>datanucleus.autoCreateColumns</name>
<value>true</value>
</property>
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<!-- 显示表的列名 -->
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<!-- 显示数据库名称 -->
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
<property>
<!-- hiveserver2用户名 -->
<name>beeline.hs2.connection.user</name>
<value>root</value>
</property>

<property>
<!-- hiveserver2密码 -->
<name>beeline.hs2.connection.password</name>
<value>123456</value>
</property>

<property>
<!-- hiveserver2端口 -->
<name>beeline.hs2.connection.hosts</name>
<value>localhost:10000</value>
</property>

<property>
<name>hive.security.authorization.enabled</name>
<value>true</value>
<description>enableor disable the hive clientauthorization</description>
</property>

<property>
<name>hive.security.authorization.createtable.owner.grants</name>
<value>ALL</value>
<description>theprivileges automatically granted to the ownerwhenever a table gets created. Anexample like "select,drop" willgrant select and drop privilege to theowner of the table</description>
</property>

<property>
<name>hive.server2.enable.doAs</name>
<value>true</value>
<description>
hive.server2.enable.doAs设置成false则,
yarn作业获取到的hiveserver2用户都为hive用户。
设置成true则为实际的用户名
</description>
</property>

<property>
<name>hive.users.in.admin.role</name>
<value>root</value>
</property>

<property>
<name>hive.security.metastore.authorization.manager</name>
<value>org.apache.hadoop.hive.ql.security.authorization.DefaultHiveMetastoreAuthorizationProvider</value>
<description>authorization manager class name to be used in the metastore for authorization.
The user defined authorization class should implement interface
org.apache.hadoop.hive.ql.security.authorization.HiveMetastoreAuthorizationProvider.
</description>
</property>

<property>
<name>hive.security.metastore.authenticator.manager</name>
<value>org.apache.hadoop.hive.ql.security.HadoopDefaultMetastoreAuthenticator</value>
<description>authenticator manager class name to be used in the metastore for authentication.
The user defined authenticator should implement interface
org.apache.hadoop.hive.ql.security.HiveAuthenticationProvider.
</description>
</property>

<property>
<name>hive.metastore.pre.event.listeners</name>
<value> </value>
<description>pre-event listener classes to be loaded on the metastore side to run code
whenever databases, tables, and partitions are created, altered, or dropped.
Set to org.apache.hadoop.hive.ql.security.authorization.AuthorizationPreEventListener
if metastore-side authorization is desired.
</description>
</property>

<property>
<name>hive.metastore.authorization.storage.checks</name>
<value>true</value>
<description>Should the metastore do authorization checks against
the underlying storage for operations like drop-partition (disallow
the drop-partition if the user in question doesn't have permissions
to delete the corresponding directory on the storage).</description>
</property>

<!-- 更新和删除 -->
<property>
<name>hive.support.concurrency</name>
<value>true</value>
</property>
<property>
<name>hive.enforce.bucketing</name>
<value>true</value>
</property>
<property>
<name>hive.exec.dynamic.partition.mode</name>
<value>nonstrict</value>
</property>
<property>
<name>hive.txn.manager</name>
<value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value>
</property>
<property>
<name>hive.compactor.initiator.on</name>
<value>true</value>
</property>
<property>
<name>hive.compactor.worker.threads</name>
<value>1</value>
</property>

<property>
<name>hive.querylog.location</name>
<value>/usr/hive/hive-3.1.2/log</value>
</property>

<property>
<name>hive.insert.into.multilevel.dirs</name>
<value>true</value>
</property>
<property>
<name>hive.auto.convert.join</name>
<value>false</value>
</property>
<property>
<name>hive.scratch.dir.permission</name>
<value>755</value>
</property>

<property>
<name>hive.server2.support.dynamic.service.discovery</name>
<value>true</value>
</property>

<property>
<name>hive.server2.zookeeper.namespace</name>
<value>hiveserver2</value>
</property>

<property>
<name>hive.zookeeper.quorum</name>
<value>hd1:2181,hd2:2181,hd3:2181</value>
</property>

<property>
<name>hive.zookeeper.client.port</name>
<value>2181</value>
</property>


<property>
<name>hive.server2.thrift.bind.host</name>
<value>172.16.212.131</value>
</property>

<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
<property>
<name>hive.exec.submitviachild</name>
<value>true</value>
</property>

<property>
<name>hive.server2.use.SSL</name>
<value>false</value>
</property>
<property>
<name>hive.security.authorization.sqlstd.confwhitelist</name>
<value>mapred.*|hive.*|mapreduce.*|spark.*</value>
</property>

<property>
<name>hive.security.authorization.sqlstd.confwhitelist.append</name>
<value>mapred.*|hive.*|mapreduce.*|spark.*</value>
</property>

<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>

<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
</configuration>

启动hive,beeline连接测试

!connect jdbc:hive2://hd1:2181,hd2:2181,hd3:2181/datawarehouse;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2root 123456

### Hive高可用性(HA)的基本原理及实现机制 Hive的高可用性(HA)主要通过MetaStore和HiveServer2的高可用机制来实现,确保在分布式环境中提供稳定的服务[^1]。以下是Hive HA的基本原理及实现机制: #### 一. Hive MetaStore HA Hive MetaStore是Hive的核心组件之一,用于存储元数据信息。为了实现MetaStore的高可用性,通常采用以下方法: - **多实例部署**:配置多个MetaStore服务实例,并通过ZooKeeper进行协调,客户端可以动态连接到可用的MetaStore实例[^1]。 - **数据库高可用**:MetaStore依赖于关系型数据库(如MySQL、PostgreSQL等)来存储元数据,因此需要确保底层数据库的高可用性,例如使用主从复制或集群模式[^3]。 #### 二. Hive Server HA HiveServer2是Hive的客户端访问接口,支持Beeline和JDBC连接。为了实现HiveServer2的高可用性,通常采用以下机制: - **多实例部署**:启动多个HiveServer2实例,并通过负载均衡器或ZooKeeper进行调度,确保客户端能够连接到可用的服务实例[^1]。 - **ZooKeeper协调**:利用ZooKeeper注册和管理HiveServer2实例的状态,客户端通过ZooKeeper发现活跃的服务节点[^2]。 - **请求重试机制**:当某个HiveServer2实例不可用时,客户端会自动尝试连接其他可用实例[^2]。 #### 三. 实现机制 Hive HA的实现主要包括以下几个方面: 1. **配置文件调整**:修改`hive-site.xml`文件,添加ZooKeeper相关的配置项,例如`hive.zookeeper.quorum`和`hive.server2.support.dynamic.service.discovery`。 2. **启动多个服务实例**:分别启动多个MetaStore和HiveServer2实例,并确保它们注册到ZooKeeper中[^3]。 3. **客户端连接测试**:使用Beeline工具测试与HiveServer2的连接,验证高可用性是否正常工作[^1]。 ```python # 示例:配置hive-site.xml中的关键参数 <property> <name>hive.zookeeper.quorum</name> <value>zk1:2181,zk2:2181,zk3:2181</value> </property> <property> <name>hive.server2.support.dynamic.service.discovery</name> <value>true</value> </property> ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值