Hive 安装 以及使用 DataGrip 连接 Hive

Hive 安装 以及使用 DataGrip 连接 Hive

Hive 安装说明

① 环境说明

Hadoop 环境已通过腾讯云服务器完成搭建,我是将 hive 安装到 该 hadoop 集群的某个节点了

Mysql 中间件使用的是阿里云的产品

② 版本说明

Hadoop 2.7.5 +Hive 2.1.1 + Mysql 8.0.18 + Centos 7 + DataGrip 2021

Hive 安装前的准备

① 搭建 Hadoop 环境

Hadoop 介绍及集群搭建_半吊子Kyle的博客-CSDN博客

② 安装 Mysql

我使用的是 阿里云的 Mysql ,如果你需要自己搭建请参考以下文章:

Linux 安装 Mysql_半吊子Kyle的博客-CSDN博客

③ Hive 安装包下载,软件包为 apache-hive-2.1.0-bin.tar.gz

Hive 下载

# 也可以通过该命令,直接下载到服务器,前提是你的服务器可以连接外网
wget http://archive.apache.org/dist/hive/hive-2.1.1/apache-hive-2.1.0-bin.tar.gz

④ 准备 mysql 驱动包

Maven Repository: mysql » mysql-connector-java » 8.0.18 (mvnrepository.com)

⑤ 此时假设你已经安装好了 DataGrip ,安装请参考该文章:

Macbook m1环境配置终极版_半吊子Kyle的博客-CSDN博客

Hive 安装

注意:我们当前已经有了一个 hadoop 集群,集群中有 3 个节点,我们只需要在其中的某个节点安装 Hive 即可

① 解压 Hive 安装包并重命名

# 进入自定义的安装目录,上传安装包
cd /opt/software

# 解压安装包
tar -zxvf apache-hive-2.1.0-bin.tar.gz

# 重命名安装目录
mv apache-hive-2.1.0-bin hive-2.1.0

② 修改 hive-env.sh

# 进入配置文件目录
cd  /opt/server/hive-2.1.0/conf

# 修改 hive 的配置文件 : hive-env.sh 
cp hive-env.sh.template hive-env.sh
vim hive-env.sh

# 增加修改内容:指定 hadoop 安装目录 和 hive 的配置文件目录
HADOOP_HOME=/opt/software/hadoop-2.7.5 
export HIVE_CONF_DIR=/opt/software/hive-2.1.0/conf

③ 修改 hive-site.xml

# 进入配置文件目录
cd  /opt/software/hive-2.1.0/conf

# 编辑 hive-site.xml
vim hive-site.xml

# 增加以下内容,并修改
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 将此处的用户名修改为你自定义的 mysql 用户名 -->
<property>
      <name>javax.jdo.option.ConnectionUserName</name>
      <value>用户名</value>
  </property>
  <!-- 将此处的密码修改为你自定义的 mysql 密码 -->
  <property>
      <name>javax.jdo.option.ConnectionPassword</name>
      <value>密码</value>
  </property>
  <!-- 将此处的 mysql 修改为你自定义的 mysql 地址,我使用的是阿里云的 mysql -->
  <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://xxxx:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</value>
  </property>
  <property>
      <name>javax.jdo.option.ConnectionDriverName</name>
      <value>com.mysql.jdbc.Driver</value>
  </property>
  <property>
      <name>hive.metastore.schema.verification</name>
      <value>false</value>
  </property>
  <property>
    <name>datanucleus.schema.autoCreateAll</name>
    <value>true</value>
 </property>
 <property>
	<name>hive.server2.thrift.bind.host</name>
	<value>node3</value>
   </property>
</configuration>

④ 上传 mysql 的驱动包到 hive 的 lib 目录下

# 就是这个目录
/opt/software/hive-2.1.0/lib

⑤ 将 hive-2.1.0/jdbc/ 目录下的 hive-jdbc-2.1.0-standalone.jar 拷贝到 hive-2.1.0/lib/ 目录

cp /opt/software/hive-2.1.0/jdbc/hive-jdbc-2.1.0-standalone.jar /opt/software/hive-2.1.0/lib/

⑥ 在当前节点上配置 hive 的环境变量

# 修改环境配置文件
vim /etc/profile

# 添加以下内容
export HIVE_HOME=/opt/software/hive-2.1.0
export PATH=:$HIVE_HOME/bin:$PATH

Hive 启动

① 启动服务

# 启动 metastore 服务
nohup /opt/software/hive-2.1.0/bin/hive --service metastore &

# 启动验证:如果出现 RunJar 的进程,则启动成功
jps

② 使用 BeenClient 验证

# 启动 hiveserver2 , beeline 客户端需要使用 hiveserver2
nohup /opt/software/hive-2.1.0/bin/hive --service hiveserver2 &

# 启动 beeline
/opt/software/hive-2.1.0/bin/beeline

# 在命令行连接
!connect jdbc:hive2://node3:10000

Hive 安装 以及使用 DataGrip 连接 Hive

Hive 安装常见的问题

建议启动的时候,先不要通过后台启动的方式,第一次启动难免会遇到问题,这样可以方便排查

# 启动 metastore 服务
/opt/software/hive-2.1.0/bin/hive --service metastore

# 启动如果没问题,则启动 serveice2 服务
/opt/software/hive-2.1.0/bin/hive --service hiveserver2

# 如果没问题

① 第一个问题:datanucleus.schema.autoCreateTables 未启用

javax.jdo.JDODataStoreException: Required table missing : “VERSION” in Catalog “” Schema “”. DataNucleus requires this table to perform its persistence operations. Either your MetaData is incorrect, or you need to enable “datanucleus.schema.autoCreateTables”
at org.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:553)

Hive 安装 以及使用 DataGrip 连接 Hive

问题修复:

# 修改 hive-site.xml
cd /opt/software/hive-2.1.0/conf/
vim hive-site.xml

# 增加以下内容
<property>
    <name>datanucleus.readOnlyDatastore</name>
    <value>false</value>
</property>
<property>
    <name>datanucleus.fixedDatastore</name>
    <value>false</value>
</property>
<property>
    <name>datanucleus.schema.autoCreateSchema</name>
    <value>true</value>
</property>
<property>
    <name>datanucleus.schema.autoCreateTables</name>
    <value>true</value>
</property>
<property>
    <name>datanucleus.schema.autoCreateColumns</name>
    <value>true</value>
</property>

② 问题2:连接拒绝

Could not open client transport with JDBC Uri: jdbc:hive2://node3:10000: java.net.ConnectException: Connection refused (Connection refused) (state=08S01,code=0)

Hive 安装 以及使用 DataGrip 连接 Hive

问题修复:

# 你在 hive-site.xml 中配置的用户名和密码没有在 mysql 中赋权
# 注意如果 mysql 中没有这个用户就创建这个用户

# 如果是 mysql 5.0 + 的版本,在 mysql 中执行以下 sql 
create user 用户名 identified by '密码';
grant all privileges on *.* to '用户名'@'%' identified by '密码'; 
flush privileges;

# 如果是 mysql 8.0 + 的版本,在 mysql 中执行以下 sql 
create user 用户名 identified by '密码';
grant all privileges ON hive.* TO '用户名'@'%';
flush privileges;

③ 问题3:用户权限不足

Error: 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 root (state=,code=0)

Hive 安装 以及使用 DataGrip 连接 Hive

问题修复:

# 修改 hadoop 配置文件 etc/hadoop/core-site.xml,集群中的每个节点都需要修改,修改前记得先停止集群

# 进入 hadoop 配置文件目录
cd /opt/software/hadoop-2.7.5/etc/hadoop/

# 修改 core-site.xml
vim core-site.xml

# 增加以下内容,注意使用什么用户,此处就写什么用户
<!-- 如果是 test 用户,此处就应该为 hadoop.proxyuser.test.hosts,同下-->
<property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>
上一篇:JetBrains的这个软件是真的香!(附使用教程)


下一篇:Effective Java 28 Use bounded wildcards to increase API flexibility