Hive下载安装

一、Hive安装地址

二、部署安装

  1. 把下载的apache-hive-3.1.2-bin.tar.gz  上传到linux的/opt/software目录下 
  2. 解压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
  3. 修改 /etc/profile环境变量
    $ sudo vim /etc/profile
    
    #添加内容
    #HIVE_HOME 
    export HIVE_HOME=/opt/module/hive 
    export PATH=$PATH:$HIVE_HOME/bin 

    #更新环境变量
    $ sudo source /etc/profile
  4. 解决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下载安装

     需要移除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/
  5. 初始化元数据库
    $ $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

  1. 在hive-site.xml文件中添加如下配置信息
    <!-- 指定存储元数据要连接的地址 -->          
    <property>             
        <name>hive.metastore.uris</name>                         
        <value>thrift://node01:9083</value>     
    </property>
  2. 启动metastore 
    $ hive --service metastore
    2022-01-23 17:09:32: Starting Hive Metastore Server
    
    #注意: 启动后窗口不能再操作,需打开一个新的shell窗口做别的操作 
  3. 启动Hive(另外打开一个窗口
    $ bin/hive 

4.2 使用 JDBC的方式 访问Hive(推荐方式)

注意,通过JDBC访问hive,是需要提前配置好第一种访问方式,即:元数据服务访问Hive 。JDBC的方式是通过server2访问元数据服务。

  1. 在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>
  2. 启动hiveserver2 
    #建议使用命令
    $ /bin/hive --service hiveserver2
    
    #也可以用
    $ hiveserver2  //该命令需要校验两次,启动较慢

    注意:启动hiveserver2前,要先启动 metastore(见第一种方式)

  3. 启动beeline客户端(需要多等待一会) 
    $ beeline -u jdbc:hive2://node01:10000 -n user
  4. (启动成功)看到如下界面 
    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> 

     

 

上一篇:Idea + exe4j + Inno Setup 将javaFx项目集成jdk打包成安装包


下一篇:解决maven加载不了oracle jdbc驱动包的问题