这是我参与11月更文挑战的第23天,活动详情查看:2021最后一次更文挑战」
环境搭建前的预准备
下载HIVE:点击下载
###下载hive
wget <https://dlcdn.apache.org/hive/hive-2.3.9/apache-hive-2.3.9-bin.tar.gz>
###解压
tar -zxvf apache-hive-2.3.9-bin.tar.gz && mv apache-hive-2.3.9-bin hive-2.3.9
## 配置环境变量
vim /etc/profile
export HADOOP_HOME=/home/bigdata/hadoop-2.10.1
export HIVE_HOME=/home/bigdata/hive/hive-2.3.9
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin
source /etc/profile
###修改 hive-env.sh 文件,没有就复制 hive-env.sh.template ,并重命名为 hive-env.sh
### 并在里面配置环境变量
export HADOOP_HOME=/home/bigdata/hadoop-2.10.1
export HIVE_HOME=/home/bigdata/hive/hive-2.3.9
在$HIVE_HOME/conf中有一份hive-default.xml.template 需要将其拷贝为hive-site.xml
cd $HIVE_HOME/conf
cp hive-default.xml.template hive-site.xml
配置文件的编辑
本地模式(使用derby作为元数据存储数据库 )
<configuration>
<!--配置默认数据存放目录 也就是在hadoop中的默认hive 数据存放目录-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<!-- 使用本地模式-->
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<!-- 设置derby的databaseName为固定位置,这样可以解决每次启动hive会话时创建一个新的metastore-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:derby:;databaseName=/home/data/hive/metastore;create=true</value>
</property>
</configuration>
分布式模式(使用mysql作为元数据存储数据库)
进入hive-site.xml进行配置
<configuration>
<!--配置默认数据存放目录 也就是在hadoop中的默认hive 数据存放目录-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<!--链接元数据的链接-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://ip:3306/hive?createDatabaseIfNotExist=true**&useUnicode=true&characterEncoding=UTF-8**</value>
</property>
<!--链接元数据数据库的驱动-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!--元数据数据库用户名-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>数据库用户名</value>
</property>
<!--元数据数据库密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>数据库密码</value>
</property>
</configuration>
将 MySQL 驱动包拷贝到 Hive 安装目录的 lib 目录下, MySQL 驱动的下载地址为:
点击下载
当使用的hive的版本为2.x版本的时候需要进行元数据数据库的初始化操作,具体命令如下:
# schematool 命令在安装目录的 bin 目录下,由于上面已经配置过环境变量,在任意位置执行即可
schematool -dbType mysql -initSchema
远程元数据服务模式安装
需要准备两台服务器 下列举例使用hive1与hive2
| 节点 | 功能 |
|---|---|
| hive1 | 服务端 |
| hive2 | 客户端(客户端并不是只能是一台) |
分别在hive1和hive2上解压hive的安装包,并且配置环境具体可看:(#环境搭建前的预准备)
进入hive-site.xml进行配置
hive1的配置文件
<!--配置默认数据存放目录 也就是在hadoop中的默认hive 数据存放目录-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<!--链接元数据的链接-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://ip:3306/hive?createDatabaseIfNotExist=true**&useUnicode=true&characterEncoding=UTF-8**</value>
</property>
<!--链接元数据数据库的驱动-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!--元数据数据库用户名-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>数据库用户名</value>
</property>
<!--元数据数据库密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>数据库密码</value>
</property>
hive2的配置文件
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<!--将元数据的链接修改为远程调用 rpc-->
<property>
<name>hive.metastore.uris</name>
<value>thrift://hive1:9083</value>
</property>
由于已经将 Hive 的 bin 目录配置到环境变量,直接使用以下命令启动,成功进入交互式命令行后执行 show databases 命令,无异常则代表搭建成功。