1. 最小化安装Hive
本次安装的版本是Hive的3.1.3版本
-
解压缩Hive压缩包
shell# 解压缩 tar -zxvf apache-hive-3.1.3-bin.tar.gz、 # 修改文件夹名称(看个人习惯,可以不执行) mv apache-hive-3.1.3-bin apache-hive-3.1.3
-
在conf目录下,新增hive-env.sh,添加如下配置
shell# 修改hive-env.sh vim hive-env.sh export HADOOP_HOME=/home/hadoop/hadoop-3.1.3 export HIVE_CONF_DIR=/home/hadoop/apache-hive-3.1.3/conf export HIVE_AUX_JARS_PATH=/home/hadoop/apache-hive-3.1.3/lib # source一下 source /home/hadoop/apache-hive-3.1.3/conf/hive-env.sh
-
初始化元数据库
shellbin/schematool -dbType derby -initSchema -verbose
执行过程中报错,这是因为Hive和Hadoop的guava版本冲突导致的
解决方法:
shell
# 进入Hive的lib目录
rm guava-19.0.jar
# 将Hadoop的share/hadoop/hdfs/lib目录下的guava拷贝到hive的lib目录下
cp guava-27.0-jre.jar /home/hadoop/apache-hive-3.1.3/lib/
# 拷贝完成后重新执行初始化元数据操作
bin/schematool -dbType derby -initSchema
如果看到下面的输出,表示初始化完成:
-
启动Hive
shell/bin/hive
-
使用Hive
shellhive> show databases; hive> show tables; hive> create table stu(id int, name string); hive> insert into stu values(1,"ss"); hive> select * from stu;
-
观察HDFS的路径/user/hive/warehouse/stu
至此,完成了Hive的最小化安装
2. 配置Hive元数据存储到MySQL
MySQL需要提前安装,我这里使用的是之前云服务器上安装好的MySQL数据库
-
新建Hive元数据库
-
将MySQL的 JDBC 驱动拷贝到Hive的lib目录下
shellcp /opt/software/mysql-connector-java-5.1.37.jar $HIVE_HOME/lib
-
在Hive的conf目录下新建 hive-site.xml文件
shell# 新建hive-site.xml文件 vim 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默认在HDFS的工作目录 --> <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> </property> </configuration>
-
初始化Hive元数据库
shellbin/schematool -dbType mysql -initSchema -verbose
观察到如下输出,表示初始化完成:
-
启动Hive
shellbin/hive
-
使用Hive
shellhive> show databases; hive> show tables; hive> create table stu(id int, name string); hive> insert into stu values(1,"ss"); hive> select * from stu;
3. 部署HiveServer2
Hive的hiveserver2服务的作用是提供jdbc/odbc接口,为用户提供远程访问Hive数据的功能,例如用户期望在个人电脑中访问远程服务中的Hive数据,就需要用到Hiveserver2。
3.1 配置模拟用户功能
hivesever2的模拟用户功能,依赖于Hadoop提供的proxy user(代理用户功能),只有Hadoop中的代理用户才能模拟其他用户的身份访问Hadoop集群。因此,需要将hiveserver2的启动用户设置为Hadoop的代理用户,配置方式如下:
修改Hadoop的core-site.xml文件,然后将文件分到其他机器
shell
# 修改core-site.xml
vim core-site.xml
# 增加如下配置
<!--配置所有节点的hadoop用户都可作为代理用户-->
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<!--配置hadoop用户能够代理的用户组为任意组-->
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
<!--配置hadoop用户能够代理的用户为任意用户-->
<property>
<name>hadoop.proxyuser.hadoop.users</name>
<value>*</value>
</property>
修改Hive配置,在hive-site.xml文件中添加如下配置信息
shell
<!-- 指定hiveserver2连接的host -->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>hadoop1</value>
</property>
<!-- 指定hiveserver2连接的端口号 -->
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
3.2 启动HiveServer2
-
启动
shellbin/hive --service hiveserver2
-
使用图形化客户端访问hive
-
测试Hive是否可以正常执行
至此,就完成了Hive的安装部署