The Apache Hive ™ data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage using SQL. Structure can be projected onto data already in storage. A command line tool and JDBC driver are provided to connect users to Hive.
hive官网下载地址 在这里我用的版本是 apache-hive-3.1.3-bin.tar.gz
百度网盘地址 提取码:0326
首先咱们得要有两台及以上的服务器因为metastore相当于hive与MySQL关系型数据之间的插件并且提供远程的rpc服务、它能够有效的与MySQL解耦合,如果我们不用metastore的话、MySQL的链接是在hive的配置文件中配置的、如果MySQL挂了、或者数据库切换了、用户名密码被修改了,那咱们需要修改hive配置并且重启hive、这样显然是不允许的
解压已下载的hive安装包到 (/opt/bigdata)可以是任意目录
mkdir /opt/bigdata
tar -zxvf apache-hive-3.1.3-bin.tar.gz
mv apache-hive-3.1.3-bin /opt/bigdata
配置环境变量 /etc/profile
vim /etc/profile
#然后在最下面添加export /opt/bigdata/hive-3.1.3是你hive解压后的地址
export HIVE_HOME=/opt/bigdata/hive-3.1.3
#然后在export PATH中添加引用在最后面添加
:$HIVE_HOME/bin
# hive metastore的文件夹位置
hive.metastore.warehouse.dir</name>
/user/hive_remote/warehouse</value>
</property>
# hive mysql的连接地址(因为是在mysql中保存元数据的)
javax.jdo.option.ConnectionURL</name>
jdbc:mysql://master:3306/hive_remote?createDatabaseIfNotExist=true</value>
</property>
# mysql 的驱动
javax.jdo.option.ConnectionDriverName</name>
com.mysql.jdbc.Driver</value>
</property>
# mysql 的用户名
javax.jdo.option.ConnectionUserName</name>
root</value>
</property>
#mysql的密码
javax.jdo.option.ConnectionPassword</name>
root</value>
</property>
</configuration>
```
#与主服务器配置的地址一致
hive.metastore.warehouse.dir</name>
/user/hive_remote/warehouse</value>
</property>
#metastore是通过Thrift与hive通信的
hive.metastore.uris</name>
thrift://master:9083</value>
</property>
然后需要将MySQL驱动放到hive的lib下、不然又可能启动hive的时候会报错说驱动找不到
MySQL驱动地址 提取码:0326
然后将驱动放入到 hive的lib目录下 /opt/bigdata/hive-3.1.3/lib
因为要使用hiveserver2、要使用beeline进行连接hive 所以要在Hadoop中配置伪装、不然启动hive的话会提示、root用户无法伪装root
修改Hadoop中的 core-site.xml 添加以下内容 groups中value 可以改成Hadoop组名称、hosts 是IP,在这里我都设置成 * 代表所有
hadoop.proxyuser.root.groups</name>
*</value>
</property>
hadoop.proxyuser.root.hosts</name>
*</value>
</property>
初始化元数据(主服务器),启动metastore(从服务器),启动hiveserver2(主服务器),启动beeline(从服务器)
#初始化元数据
schematool -dbType mysql -initSchema
# 启动 metastore、启动完成
hive --service metastore
# 启动 hiveserver2
hive --service hiveserver2
# 启动 beeline
beeline
!connect jdbc:hive2://slave1:10000/default root 123
# 也可以这样启动
beeline -u jdbc:hive2://slave1:10000/default
1.Error: Could not open client transport with JDBC Uri: jdbc:hive2://slave1:10000/default: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.security.AccessControlException: Permission denied: user=anonymous, access=EXECUTE, inode=“/tmp”:Administrator:supergroup:drwx------
在使用 beeline时会遇到、代表当前用户没有 hdfs /tmp的权限,修改权限即可
hdfs dfs -chmod 777 /tmp