Hive(3)--Hive环境搭建

392 阅读2分钟

这是我参与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作为元数据存储数据库 )

hive-本地模式.jpg


<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分布式模式.jpg

进入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**&amp;useUnicode=true&amp;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客户端(客户端并不是只能是一台)

远程元数据服务模式.jpg

分别在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**&amp;useUnicode=true&amp;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 命令,无异常则代表搭建成功。

Untitled.png