一、Hive安装地址
- 官网地址:http://hive.apache.org/
- 文档查看地址:https://cwiki.apache.org/confluence/display/Hive/GettingStarted
- github地址:https://github.com/apache/hive
- 下载地址:http://archive.apache.org/dist/hive/
二、部署安装
- 把下载的apache-hive-3.1.2-bin.tar.gz 上传到linux的/opt/software目录下
- 解压apache-hive-3.1.2-bin.tar.gz到/opt/module/目录下面
$ tar -zxvf /opt/software/apache-hive-3.1.2-bin.tar.gz -C /opt/module/
#修改hive名字
$ mv apache-hive-3.1.2-bin hive - 修改 /etc/profile环境变量
$ sudo vim /etc/profile #添加内容 #HIVE_HOME export HIVE_HOME=/opt/module/hive export PATH=$PATH:$HIVE_HOME/bin
#更新环境变量
$ sudo source /etc/profile - 解决Jar包冲突
#hadoop中已经有了log4j $ mv /opt/module/hive/lib/log4j-slf4j-impl-2.10.0.jar /opt/module/hive/lib/log4j-slf4j-impl-2.10.0.jar.bak
以及guava-19.0.jar包的冲突,通过 find命令可以查看与hadoop的包冲突
需要移除hive中的guava-19.0.jar包并将hadoop中的guava-27-jre.0.jar包复制到hive中
$ mv /opt/module/hive/lib/guava-19.0.jar /opt/module/hive/lib/guava-19.0.jar.bak $ cp /opt/module/hadoop-3.2.2/share/hadoop/common/lib/guava-27.0-jre.jar /opt/module/hive/lib/
- 初始化元数据库
$ $HIVE_HOME/bin/schematool -dbType derby -initSchema
测试hive,输入以下内容会报异常
hive> show databases;
原因:
Hive默认使用的元数据库为derby,开启Hive之后就会占用元数据库,且不与其他客户端共享数据,所以我们需要将Hive的元数据地址改为MySQL。
解决办法:
下载安装mysql:在Linux中安装mysql5.7 - 干了这瓶老干妈 - 博客园 (cnblogs.com)
三、Hive元数据配置到MySQL
3.1 下载并拷贝mysql驱动
下载mysql-connector-java-5.1.37.jar并上传到 /opt/software目录下,将MySQL的JDBC驱动拷贝到Hive的lib目录下
$ cp /opt/software/mysql-connector-java-5.1.37.jar $HIVE_HOME/lib
3.2 在$HIVE_HOME/conf目录下新建hive-site.xml文件
$ vim $HIVE_HOME/conf/hive-site.xml
添加以下内容:
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <!-- jdbc连接的URL --> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://hadoop102:3306/metastore?useSSL=false</value> </property> <!-- jdbc连接的Driver--> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <!-- jdbc连接的username--> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <!-- jdbc连接的password --> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>123456</value> </property> <!-- Hive元数据存储版本的验证 --> <property> <name>hive.metastore.schema.verification</name> <value>false</value> </property> <!--元数据存储授权--> <property> <name>hive.metastore.event.db.notification.api.auth</name> <value>false</value> </property> <!-- Hive默认在HDFS的工作目录 --> <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> </property> </configuration>
3.3 登录Mysql并新建Hive的元数据库
$ mysql -uroot -p123456 mysql> create database metastore; mysql> quit;
3.4 初始化Hive数据库
$ schematool -initSchema -dbType mysql -verbose
3.5 再次启动Hive并测试
$ $HIVE_HOME/bin/hive
hive> show databases; hive> show tables; hive> create table test (id int); hive> insert into test values(1); hive> select id form test;
四、配置Hive的访问方式
以上内容我们配置好了hive,但是只能在我们的主机能访问,其他人的都不行,所以我们这里需要配置Hive的访问方式,并且知道有几种访问hive的方式。
4.1 使用 元数据服务的方式 访问Hive
- 在hive-site.xml文件中添加如下配置信息
<!-- 指定存储元数据要连接的地址 --> <property> <name>hive.metastore.uris</name> <value>thrift://node01:9083</value> </property>
- 启动metastore
$ hive --service metastore 2022-01-23 17:09:32: Starting Hive Metastore Server #注意: 启动后窗口不能再操作,需打开一个新的shell窗口做别的操作
- 启动Hive(另外打开一个窗口)
$ bin/hive
4.2 使用 JDBC的方式 访问Hive(推荐方式)
注意,通过JDBC访问hive,是需要提前配置好第一种访问方式,即:元数据服务访问Hive 。JDBC的方式是通过server2访问元数据服务。
- 在hive-site.xml文件中添加如下配置信息
#将以下部分加入到hive-site.xml文件中
# thrift:Hive拥有HiveServer (Thrift)或者Hiveserver2组件,提供了JDBC驱动服务,
#使得我们可以用Java代码或者Python来连接Hive并进行一些关系型数据库的sql语句查询等操作。
<!-- 指定hiveserver2连接的host --> <property> <name>hive.server2.thrift.bind.host</name> <value>node01</value> </property> <!-- 指定 hiveserver2 连接的端口号 --> <property> <name>hive.server2.thrift.port</name> <value>10000</value> </property> - 启动hiveserver2
#建议使用命令 $ /bin/hive --service hiveserver2 #也可以用 $ hiveserver2 //该命令需要校验两次,启动较慢
注意:启动hiveserver2前,要先启动 metastore(见第一种方式)
- 启动beeline客户端(需要多等待一会)
$ beeline -u jdbc:hive2://node01:10000 -n user
- (启动成功)看到如下界面
Connecting to jdbc:hive2://node01:10000 Connected to: Apache Hive (version 3.1.2) Driver: Hive JDBC (version 3.1.2) Transaction isolation: TRANSACTION_REPEATABLE_READ Beeline version 3.1.2 by Apache Hive 0: jdbc:hive2://node01:10000>