实时数仓、基于Flink1.11的SQL构建实时数仓 之hive ha集群搭建

实时数仓、基于Flink1.11的SQL构建实时数仓 之hive集群

目录

实时数仓、基于Flink1.11的SQL构建实时数仓 之hive集群

一.准备环境

二.下载安装包及配置

三. hive客户端


一.准备环境

jdk1.8

hadoop环境

zookeeper环境

mysql

集群规划

192.168.137.121 m1
192.168.137.122 m2
详见:实时数仓、基于Flink1.11的SQL构建实时数仓 环境说明

二.下载安装包及配置

2.1 下载:https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-3.1.2/

安装包:apache-hive-3.1.2-bin.tar.gz

上传到 其中一个主节点 m1:/opt/hadoop/

解压:tar -zvxf apache-hive-3.1.2-bin.tar.gz

2.2 配置环境变量 /etc/profile   两个节点m1 m2 都要配置

export HIVE_HOME=/opt/hadoop/apache-hive-3.1.2-bin
export PATH=$PATH:$HIVE_HOME/bin

2.3 修改配置文件:hive-env.sh

从template模板中复制配置文件:cp hive-env.sh.template hive-env.sh

HADOOP_HOME=/opt/hadoop/hadoop-3.2.1

export HIVE_CONF_DIR=/opt/hadoop/apache-hive-3.1.2-bin/conf

export HIVE_AUX_JARS_PATH=/opt/hadoop/apache-hive-3.1.2-bin/lib

2.4 修改配置文件 hive-site.xml  hive-default.xml 

从 hive-default.xml.template 模板中复制配置文件:cp hive-default.xml.template hive-default.xml 

创建 hive-default.xml 配置文件   下文完全拷贝

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
     <!-- 查询数据时 显示出列的名字 -->
     <name>hive.cli.print.header</name>
     <value>true</value>
  </property>
  <property>
     <!-- 在命令行中显示当前所使用的数据库 -->
     <name>hive.cli.print.current.db</name>
     <value>true</value>
  </property>
  <property>
     <!-- 默认数据仓库存储的位置,该位置为HDFS上的路径 -->
     <name>hive.metastore.warehouse.dir</name>
     <value>/user/hive/warehouse</value>
  </property>
  <!-- 8.x -->
  <property>
     <name>javax.jdo.option.ConnectionURL</name>
     <value>jdbc:mysql://dbmaster:3306/hive?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false</value>
  </property>
  <!-- 8.x -->
  <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>
  <!-- hiveserver2服务的端口号以及绑定的主机名 -->
  <property>
     <name>hive.server2.thrift.port</name>   
     <value>10000</value>  
  </property>
  <property>
     <name>hive.server2.thrift.bind.host</name>
     <value>0.0.0.0</value>
  </property>
<property>
<name>hive.zookeeper.quorum</name>
<value> s1:2181,s2:2181,s3:2181</value>
</property>
<property>
<name>hive.server2.support.dynamic.service.discovery</name>
<value>true</value>
</property>
<property>
<name>hive.server2.zookeeper.namespace</name>
<value>hiveserver2_zk</value>
</property>
<property>
<name>hive.zookeeper.client.port</name>
<value>2181</value>
</property>
 
</configuration>

 

2.5 初始化: 在bin目录下执行

schematool -dbType mysql -initSchema

高可用配置成功 在zookeeper中注册 hiveserver2 如下:

高可用连接地址: !connect jdbc:hive2://s1:2181,s2:2181,s3:2181/default;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2_zk

注:hiveserver2_zk 是 hive.server2.zookeeper.namespace的配置   default 是登陆数据库名称。

2.6 其它配置文件

根据需要都可以从template 复制而来  去掉template 后缀即可。

2.7 上传mysql驱动包到 lib

mysql-connector-java-5.1.41.jar

2.8 在bin目录下创建启动脚本 

[root@m1 bin]# cat start_hiveserver2.sh 
#!/usr/bin/env bash
cd $HIVE_HOME/bin
nohup hiveserver2 start &
nohup hive --service metastore &

2.9 配置第二节点m2

注意:检查hive的 guava版本是否跟你的hadoop 的guava 版本匹配,否则会报错:

Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)

可以从hadoop的lib目录下拷贝过来:cp /opt/hadoop/hadoop-3.2.1/share/hadoop/common/lib/guava-27.0-jre.jar ./

scp -r /opt/hadoop/apache-hive-3.1.2-bin m2:/opt/hadoop/

2.10 启动hive集群  m1 m2 都执行

执行:start_hiveserver2.sh 

 

 

测试连接hive

beeline> !connect jdbc:hive2://m1:10000
Connecting to jdbc:hive2://m1:10000
Enter username for jdbc:hive2://m1:10000: 
Enter password for jdbc:hive2://m1:10000: 
20/12/22 16:31:46 [main]: WARN jdbc.HiveConnection: Failed to connect to m1:10000
Error: Could not open client transport with JDBC Uri: jdbc:hive2://m1:10000: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate anonymous (state=08S01,code=0)

登陆错误:错误引用链接

Error: User: root is not allowed to impersonate root

Stack trace for the error was (for debug purposes):
--------------------------------------
org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: xx is not allowed to impersonate xx

  Hadoop配置文件 core-site.xml错误
             
 <!-- Oozie Server的Hostname -->
 <property>
    <name>hadoop.proxyuser.root.hosts</name>
     <value>*</value>
 </property>

 <!-- 允许被Oozie代理的用户组 -->
    <property>
        <name>hadoop.proxyuser.root.groups</name>
         <value>*</value>
    </property>

解决方案:将root改为xx。

PS:集群所有节点都需要配置,配置完成后需要重启节点,否则不生效。

 

至此hive ha集群已经搭建完成

三. hive客户端

在所有flink节点配置hive客户端。

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值