Hive 本地模式,远程模式模式的搭建、命令行操作、Hive JDBC操作

本文详细介绍了如何在Linux环境下搭建Hive本地和远程模式,包括环境变量配置、MySQL安装与配置、Hive与Hadoop的关联、元数据初始化等步骤。此外,还涵盖了Hive的数据库和表的操作,以及通过JDBC进行Java连接Hive的基本操作。
摘要由CSDN通过智能技术生成

追风赶月莫停留,平芜尽处是春山。

环境

  • VMware 12.0.1
  • JDK 1.8.0
  • Hadoop 2.8.5
  • Zookeeper 3.4.10
  • Intellij IDEA 2019.3.1

下载安装包,解压到合适位置:

  1. 将压缩包 apache-hive-2.3.3-bin.tar.gz,通过上传软件上传至/opt/softwares目录;
    解压软件包并移动至/opt/modules/
    下载传送门,提取码:g1hu

Hive 本地模式的搭建

一、配置相关的文件:

  1. 配置环境变量:
    该文件位于/etc/profile
    在该文件后面追加如下内容:

    export HIVE_HOME=/opt/modules/apache-hive-2.3.3-bin
    export PATH=$PATH:$HIVE_HOME/bin
    

    打开终端运行命令:source /etc/profile
    运行命令hive --version后若能输出当前Hive版本信息,则说明Hive环境变量配置成功。

  2. 关联Hadoop:
    复制Hive目录/opt/modules/apache-hive-2.3.3-bin/conf下的hive-env.sh.template文件为hive-env.sh,然后修改hive-env.sh添加一下内容,来指定Hadoop的安装目录。

    export HADOOP_HOME=/opt/modules/hadoop-2.8.5	# Hadoop安装目录
    
  3. 创建数据仓库目录:
    首先要启动Hadoop集群,然后依次执行以下命令来创建两个目录,并设置同组用户的权限。

    hadoop fs -mkdir /tmp 
    hadoop fs -chmod a+w /tmp
    hadoop fs -mkdir /user/hive/warehouse
    hadoop fs -chmod a+w /user/hive/warehouse
    

    如果提示/tmp文件夹存在,那么先执行hadoop fs -rm -r /tmp命令将其删除。然后再进行创建

  4. 初始化元数据信息:
    进入Hive安装目录/opt/modules/apache-hive-2.3.3-bin
    执行命令schematoll -dbType derby -initSchema
    执行完后Hive在Hive安装目录下创建了一个叫metastore_db的Derby数据库

  5. 启动 Hive CLI:
    进入metastore_db数据库所在的目录(即Hive安装目录)中执行hive命令

二、安装并配置MySQL

  1. 执行wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm命令下载MySQL 5.6安装包
  2. 执行rpm -ivh mysql-community-release-el7-5.noarch.rpm命令进行解压
  3. 执行yum install mysql-server命令进行MySQL的安装。
  4. 执行grep temporary password /var/log/mysqld.log查看初始密码
  5. 执行mysql -u root并利用上一步得到的密码进行登录
  6. 执行set global validate_password_policy=0;set global validate_password_length=4;命令修改MySQL密码策略。
  7. 执行set password for root@localhost = password('123456');把密码改成123456(也可以自行改成其他的)。
  8. 执行exit;退出MySQL。
  9. 执行service mysqld restart命令,重启mysql服务。
  10. 执行mysql -u root -p命令,并利用刚才设置的密码登录mysql
  11. 执行create database hive_db;命令创建一个名叫hive_db的数据库。
  12. 执行create user hive IDENTIFIED by 'hive';命令创建一个名叫hive的用户,密码是hive。
  13. 执行grant all privileges on hive_db.* to hive@'centos01' identified by 'hive';命令为其赋予全局外部访问权限。
  14. 执行flush privileges;命令刷新内存
  15. 执行exit;命令退出mysql

三、配置Hive

  1. 上传驱动包:
    上传Java连接MySQL的驱动包mysql-connector-java-5.1.44-bin.jar到Hive安装目录下的lib文件夹(/opt/modules/apache-hive-2.3.3-bin/lib)中。
    下载传送门,提取码:5vcd
  2. 修改配置文件:
    复制Hive目录/opt/modules/apache-hive-2.3.3-bin/conf下的hive-default.xml.template文件为hive-site.xml,然后把原始内容清空,最加入以下配置。
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
            <!--MySQL数据库连接信息-->
            <property><!--连接 MYSQL的驱动类-->
                    <name>javax.jdo.option.ConnectionDriverName</name>
                    <value>com.mysql.jdbc.Driver</value>
            </property>
            <property><!--MySL连接地址,此处连接远程数据库,可根据实际情况进行修改-->
                    <name>javax.jdo.option.ConnectionURL</name>
                    <value>jdbc:mysql://centos01:3306/hive_db?createDatabaseIfNotExist=true</value>
            </property>
            <property><!-- MYSQL用户名-->
                    <name>javax.jdo.option.ConnectionUserName</name>
                    <value>hive</value>
            </property>
            <property><!-- MYSQL密码-->
                    <name>javax.jdo.option.ConnectionPassword</name>
                    <value>hive</value>
            </property>
    </configuration>
    
  3. 初始化元数据:
    执行schematool -dbType mysql -initSchema命令初始化元数据。
    若输出:
    Initialization script completed
    schemaTool completed
    
    则证明初始化完成
  4. 启动命令行:
    任意目录执行hive即可

本地模式搭建完成。

Hive 远程模式的搭建

将centos01节点作为Hive的服务端,centos02和centos03节点作为Hive的客户端

  1. 安装Hive客户端:
    执行scp -r /opt/modules/apache-hive-2.3.3-bin/ root@centos02:/opt/modules/
    命令,将hive复制到centos02节点上。
    执行scp -r /opt/modules/apache-hive-2.3.3-bin/ root@centos03:/opt/modules/
    命令,将hive复制到centos03节点上。
  2. 修改配置文件:
    修改centos02节点上的Hive安装目录/opt/modules/apache-hive-2.3.3-bin/conf下的配置文件hive-site.xml,清除之前的配置属性,添加以下配置:
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
            <property>
                    <name>hive.metastore.warehouse.dir</name>
                    <value>/user/hive/warehouse</value>
            </property>
            <property>
                    <name>hive.metastore.local</name>
                    <value>false</value>
            </property>
            <property>
                    <name>hive.metastore.uris</name>
                    <value>thrift://centos01:9083</value>
            </property>
    </configuration>
    
  3. 启动Metastore Server:
    在centos01节点上执行hive --service metastore &
    控制台部分启动日志信息如下:
    Starting Hive Metastore Server
    执行jps命令查看进程会有一个名为RunJar的进程
  4. 访问Hive
    在centos02节点上进入安装目录(/opt/modules/apache-hive-2.3.3-bin/)中执行bin/hive命令启动远程hive命令行。
  5. 测试Hive远程访问:
    在centos01节点上进入Hive命令行模式,执行create table student (id INT, name STRING);命令创建一个表
    在centos02和centos03节点上分别执行show tables;命令,若能查到student表则证明Hive远程模式搭建成功。

Hive命令行操作

使用命令hive进入hive命令行操作

数据库操作

一、创建数据库

语法:create database 数据库名称
例如:使用create database hive1命令创建一个叫hive1的数据库

二、修改数据库

语法:ALTER DATABASE 数据库名称 SET DBPROPERTIES (property_name=property_value,...);
语法:ALTER DATABASE 数据库名称 SET OWNER user_or_role;

三、选择数据库

语法:use 数据库名称;
例如:use hive1;

四、显示数据库

show databases;

表操作

一、创建表

语法:

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
	  [(col_name data_type [COMMENT col_comment], ...)]
	  [COMMENT table_comment]
	  [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
	  [CLUSTERED BY (col_name, col_name, ...)
	    [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
	  [ROW FORMAT row_format]
	  [STORED AS file_format]
	  [LOCATION hdfs_path]

二、查看表结构

语法:desc 表名;
例如:desc student;

三、向表中插入数据

语法:insert into 表名(property_name,property_name,...) values(property_value,property_value,...);
例如:insert into student(id,name) values(001,张三);

四、查询表中的数据

语法:select * from 表名;
例如:select * from student;查询student表中的所有内容
例如:select name from student;查询student表中的name
例如:select id from student;查询student表中的id

五、本地文件导入Hive

先创建一个可以从文件导入数据的表 语法:create table 表名(property_name property_type, property_name property_type,...) ROW FORMAT DELIMITED FIELDS TERMINA TED BY '分隔符';
例如:create table student(id INT, name STRING) ROW FORMAT DELIMITED FIELDS TERMINA TED BY '\t';创建了一个student表,里面有id和name,并且导入的时候以制表符为分割符。

六、删除表

语法:drop table 表名;
例如:drop table student;删除student表

Hive JDBC 操作

一、配置Maven依赖

  1. 新建一个叫做Hive_demo的Maven项目在pom.xml中引入以下java api依赖包

    <dependencies>
        <dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-jdbc</artifactId>
            <version>2.3.3</version>
        </dependency>
    </dependencies>
    
  2. 打开设置File-->settings-->Maven-->ImportingImport Maven projects automatically 前面打勾。等待下载完成。

二、创建Java Class

import java.sql.*;

public class Select {
    public static void main(String[] args) {
        String connectionURL = "jdbc:hive1://centos01:10000";
        String drivername = "org.apache.hive.jdbc.HiveDriver";
        String username = "hive";
        String password = "hive";
        try {
            Class.forName(drivername);
        }
        catch (ClassNotFoundException e) {
            e.printStackTrace();
            System.exit(1);
        }
        try {
            Connection con = DriverManager.getConnection(connectionURL, username, password);
            if(con != null) {
                System.out.println("Connected");
            }
            else {
                System.out.println("Not Connected");
            }
            Statement stmt = con.createStatement();
            String sql;
            ResultSet res;
            sql = "select * from u_data limit 10";
            System.out.println("Running: " + sql);
            res = stmt.executeQuery(sql);
            while (res.next()) {
                System.out.println(String.valueOf(res.getString(1)) + "\t" + res.getString(2));
            }
        }
        catch(SQLException se) {
            se.printStackTrace();
        }
    }
}

若有不正确的地方还请批评指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韩国麦当劳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值