【Hive】Hive开启远程连接及访问方法

这篇具有很好参考价值的文章主要介绍了【Hive】Hive开启远程连接及访问方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成,愿将昔日所获与大家交流一二,希望对学习路上的你有所助益。同时,博主也想通过此次尝试打造一个完善的技术图书馆,任何与文章技术点有关的异常、错误、注意事项均会在末尾列出,欢迎大家通过各种方式提供素材。

  • 对于文章中出现的任何错误请大家批评指出,一定及时修改。
  • 有任何想要讨论和学习的问题可联系我:zhuyc@vip.163.com。
  • 发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。

Hive开启远程连接及访问方法

本文关键字:Hive、远程连接、MetaStore、JDBC、SparkSQL

一、Hive连接配置

1. 默认初始配置

一般我们会使用一些关系型数据库,如MySQL作为Hive的MetaStore位置。所以默认会在hive-site.xml中存在如下配置:

<configuration>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/hive_metastore?createDatabaseIfNotExist=true&amp;useSSL=false&amp;serverTimezone=UTC</value>
    <description>Metadata store connection URL</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.cj.jdbc.Driver</value>
    <description>Metadata store JDBC driver</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
    <description>Metadata store username</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>root</value>
    <description>Metadata store password</description>
  </property>
</configuration>

用来配置Hive连接关系型数据库时的连接参数,此时我们已经可以通过hive命令直接进行访问了:
hive开启远程连接,学习路上,# Hive,hive,hadoop,大数据
其它详细安装及初始化步骤可以参考:Hive 3.x的安装部署 - Ubuntu。

2. 开启远程连接

在进行开发时,我们通常需要能够在代码中访问Hive进行查询,此时我们要做一些配置和修改。第一种方式是直接开启一个hiveserver2的Hive服务端,用来提供执行 SQL 查询和获取结果的接口。第二种模式是直接开启一个Metastore服务,以网络模式/远程模式来为访问提供支持。两种模式都有各自的使用场景,在多节点的生产环境中多采用网络模式【有利于保证数据的一致性】,开发测试环境中多采用伪分布模式,因此嵌入模式通常足够。

  • 嵌入模式

HiveServer2 可以接收来自各种客户端(如 Beeline、JDBC/ODBC 驱动、程序语言库等)的请求,然后在 Hive 中执行相应的操作。在这种情况下,Hive依然运行在嵌入模式下,我们只需要在后台开启一个hiveserver2服务,就可以满足Beeline、JDBC的远程访问。使用以下命令:

nohup hive --service hiveserver2 --hiveconf hive.server2.thrift.bind.host=0.0.0.0 --hiveconf hive.server2.thrift.port=10000 &

使用beeline访问:

beeline -u jdbc:hive2://ubuntu:10000

hive开启远程连接,学习路上,# Hive,hive,hadoop,大数据
如果出现连接异常,尝试在Hadoop的core-site.xml添加以下配置【其中hadoop为启动Hadoop进程的用户名】并重启集群与hiveserver2:

<property>
  <name>hadoop.proxyuser.hadoop.hosts</name>
  <value>*</value>
</property>
<property>
  <name>hadoop.proxyuser.hadoop.groups</name>
  <value>*</value>
</property>
  • 网络模式

有很多界面化的工具或插件并不是基于JDBC封装的,因此有时需要手动开启网络模式。特别对于其它大数据集群框架,有时需要直接访问到Hive的Metastore,则也需要开启相关的配置。首先修改hive-site.xml,添加如下配置:

  <property>
    <name>hive.metastore.uris</name>
    <value>thrift://ubuntu:9083</value>
  </property>

特别说明:添加该配置以后必须启动metastore后才能正常使用hive客户端连接。启动命令如下:

nohup hive --service metastore &

如果每次Hadoop集群发生重启或异常,也需要重新启动metastore和hiveserver2。

二、界面化工具

很多基于JDBC封装的软件,如DBeaver、DataGrip都可以使用这样的方式进行连接。只需要填写主机及端口,也可以通过SSH隧道连接,需要已经开启hiveserver2

1. DBeaver

hive开启远程连接,学习路上,# Hive,hive,hadoop,大数据

2. DataGrip

hive开启远程连接,学习路上,# Hive,hive,hadoop,大数据

三、IDEA插件

1. Big Data Tools

这是一款IDEA中使用的比较多并且相对的稳定的大数据插件,整合了多种组件的支持,用起来十分的顺手,有了它基本不需要再切换到其它软件了,远程会话和文件传输也都是可以的。在这个组件中,新建一个Hive的连接使用的是thrift协议,也就代表我们要保证metastore服务的配置和启动。
hive开启远程连接,学习路上,# Hive,hive,hadoop,大数据

2. 内置DataGrip

IDEA中有一款内置的数据源连接插件,也就是停靠在界面右侧的数据库图标,如果没有出现可以在视图 - 工具窗口中找到。界面和DataGrip是一样的,同样是基于hiveserver2,以JDBC的方式连接。
hive开启远程连接,学习路上,# Hive,hive,hadoop,大数据

三、HiveJDBC

1. 所需依赖

在pom.xml中添加如下内容,具体版本可以根据需要修改:

        <dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-jdbc</artifactId>
            <version>3.1.3</version>
        </dependency>

2. 案例代码

以下为使用Java连接Hive的基本步骤,因为JDBC是一个标准化的工作流程,所以只有URLDRIVER需要修改:

import java.sql.*;

public class JDBC {

    private static final String DRIVER_NAME = "org.apache.hive.jdbc.HiveDriver";

    public static void main(String[] args) throws SQLException {
        try {
            Class.forName(DRIVER_NAME);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        // 根据需要替换 Hive的 服务器地址,用户名和密码【如有】
        String hiveUrl = "jdbc:hive2://ubuntu:10000/";
        String user = "";
        String password = "";
        // 建立连接
        Connection con = DriverManager.getConnection(hiveUrl, user, password);
        // 获得操作对象
        Statement stmt = con.createStatement();

        // 使用你自己的 Hive SQL 查询
        String sql = "SELECT * FROM test.user_info";
        System.out.println("Running: " + sql);
        ResultSet res = stmt.executeQuery(sql);
        // 简单遍历输出
        while (res.next()) {
            System.out.println(res.getString(1) + "\t"
                    + res.getString(2) + "\t"
                    + res.getString(3));
        }

        // 关闭资源
        res.close();
        stmt.close();
        con.close();
    }

}

hive开启远程连接,学习路上,# Hive,hive,hadoop,大数据

四、SparkSQL

我们经常会使用Spark去操作Hive中的表,这样做通常会比较高效。在建立连接时,如果Hive使用的是嵌入模式,我们必须告知元数据存储的连接信息,包括连接字符串,用户名,密码等等。如果Hive使用的是网络模式,我们可以直接访问已经配置的uri。

1. 所需依赖

在pom.xml中添加如下内容,具体版本可以根据需要修改:

		<dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-metastore</artifactId>
            <version>2.3.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.12</artifactId>
            <version>3.3.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.12</artifactId>
            <version>3.3.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-hive_2.12</artifactId>
            <version>3.3.2</version>
        </dependency>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <version>8.0.33</version>
        </dependency>

特别注意:使用Java开发时,可能会存在版本兼容问题,这是因为Spark 3.x并没有完全兼容Hive 3.x,因此指定依赖版本时需要使用2.x。但是如果使用SBT构建Scala项目,则不存在这个问题。

2. 嵌入模式连接

如果Hive没有运行单独的Metastore服务,则此时需要保证Spark能够直接访问到存储元数据的关系型数据库,需要添加如下四个配置:

  • javax.jdo.option.ConnectionURL
  • javax.jdo.option.ConnectionDriverName
  • javax.jdo.option.ConnectionUserName
  • javax.jdo.option.ConnectionPassword

也可以直接将hive-site.xml放置在resources文件夹,可以自动读取其中的配置。

import org.apache.spark.sql.*;

public class Hive {

    public static void main(String[] args) {
        SparkSession spark = SparkSession
                .builder()
                .appName("Spark Hive Example")
                .master("local[*]")
                .config("javax.jdo.option.ConnectionURL", "jdbc:mysql://ubuntu:3306/hive_metastore?" +
                        "createDatabaseIfNotExist=true&useSSL=false&serverTimezone=UTC")
                .config("javax.jdo.option.ConnectionDriverName", "com.mysql.cj.jdbc.Driver")
                .config("javax.jdo.option.ConnectionUserName", "root")
                .config("javax.jdo.option.ConnectionPassword", "root")
                .enableHiveSupport()
                .getOrCreate();
        // 使用 Spark SQL 查询 Hive 表
        String sql = "SELECT * FROM test.user_info"; 
        Dataset<Row> result = spark.sql(sql);
        // 打印结果
        result.show();
        // 运行结束
        spark.stop();
    }
}

以上代码为使用本地模式运行Spark,用于快速测试,不需要搭建Spark环境。
hive开启远程连接,学习路上,# Hive,hive,hadoop,大数据

  • 附:Ubuntu - MySQL 8.x开启远程连接步骤

修改配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf

bind-address            = 0.0.0.0

登录mysql执行以下sql语句:

CREATE USER 'root'@'%' IDENTIFIED BY 'root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

3. 网络模式连接

如果Hive开启了Metastore服务,则可以直接通过该端口进行连接,连接时只要保证端口可以访问即可。代码如下:

import org.apache.spark.sql.*;

public class Hive {

    public static void main(String[] args) {
        SparkSession spark = SparkSession
                .builder()
                .appName("Spark Hive Example")
                .master("local[*]")
                .config("hive.metastore.uris", "thrift://ubuntu:9083")
                .enableHiveSupport()
                .getOrCreate();
        // 使用 Spark SQL 查询 Hive 表
        String sql = "SELECT * FROM test.user_info";
        Dataset<Row> result = spark.sql(sql);
        // 打印结果
        result.show();
        // 运行结束
        spark.stop();
    }
}

扫描下方二维码,加入CSDN官方粉丝微信群,可以与我直接交流,还有更多福利哦~
hive开启远程连接,学习路上,# Hive,hive,hadoop,大数据文章来源地址https://www.toymoban.com/news/detail-776597.html

到了这里,关于【Hive】Hive开启远程连接及访问方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在Linux中开启MySQL远程连接访问

    编辑 MySQL 配置文件,该文件通常位于 /etc/mysql/my.cnf 或 /etc/my.cnf ,具体取决于您的 Linux 发行版和版本。 找到 [mysqld] 部分,并找到指定绑定地址参数的行。默认情况下,此参数通常设置为 “127.0.0.1” ,这意味着 MySQL 只监听本地机器上的连接。

    2024年02月12日
    浏览(59)
  • openwrt开启SSH远程访问与开启WEB远程访问——三种方法

    首先,你的电脑用网线连接路由器LAN口是可以访问WEB页面和SSH连接的。 例如,电脑1连接Openwrt路由器,可以进行SSH连接到openwrt 路由器。但是电脑2无法远程访问Openwrt路由器网页和SSH远程连接。 本次操作固件版本为OpenWrt R23.6.6 从电脑1进入WEB页面,系统,管理权,SSH访问,钩选

    2024年02月09日
    浏览(41)
  • 配置开启Docker2375远程连接与解决Docker未授权访问漏洞

    首先 需要安装docker ,参考我这篇文章:基于CentOS7安装配置docker与docker-compose 配置开启Docker远程连接的步骤 : 1-编辑/usr/lib/systemd/system/docker.service 文件 : 配置完成后完整的 docekr.service : systemctl daemon-reload 与systemctl restart docker : systemctl status docker : 查看docker状态 (后面增加的内

    2024年02月05日
    浏览(44)
  • MySQL开启远程连接的方法

    MySQL是一个流行的开源关系型数据库管理系统,它默认情况下只允许本地连接。如果您需要从远程计算机连接到MySQL服务器,则需要进行一些配置更改。以下是详细的步骤和相应的源代码,以帮助您开启MySQL的远程连接。 步骤 1:编辑MySQL配置文件 使用文本编辑器打开MySQL的配

    2024年02月03日
    浏览(35)
  • Spark-SQL连接Hive的五种方法

    若使用Spark内嵌的Hive,直接使用即可,什么都不需要做(在实际生产活动中,很少会使用这一模式) 步骤: 将Hive中conf/下的hive-site.xml拷贝到Spark的conf/目录下; 把Mysql的驱动copy到jars/目录下; 如果访问不到hdfs,则将core-site.xml和hdfs-site.xml拷贝到conf/目录下; 重启spark-shell;

    2024年02月16日
    浏览(44)
  • Ubuntu环境下安装部署mysql5.7&开启远程访问连接&修改数据存放位置&卸载mysql

    本文档适用于在Ubuntu20.04系统下部署mysql5.7,是有网的情况下。 提供了两种安装mysql5.7的方法,并且还讲解了开启mysql远程访问权限,允许远程连接;以及讲解了如何修改数据库数据的存放路径。 1.确认目前服务器上是否存在MySQL 如出现如图所示,提示没有rpm命令,我们需要安

    2024年02月05日
    浏览(44)
  • hive 配置metastore hiveserver2服务开启

    hive-site.xml: hive-site.xml: hive-site.xml: 重启MetaStore服务: 启动hive服务: 启动后需要等待一段时间,jdbc才能连接上hive服务 使用beeline客户端验证是否可以连接:

    2024年02月03日
    浏览(41)
  • CHD6.2.1集群 Hive开启Iceberg

    下载jar包 https://repo1.maven.org/maven2/org/apache/iceberg/iceberg-hive-runtime/1.0.0/iceberg-hive-runtime-1.0.0.jar 存放在/opt/cloudera/parcels/CDH/lib/hive/auxlib/     CDH集群修改hive配置 选择xml格式 粘贴即可 propertynameiceberg.engine.hive.enabled/namevaluetrue/valuefinaltrue/finaldescription集成iceberg/description/propertyproper

    2024年02月15日
    浏览(32)
  • SSH远程连接macOS服务器:通过cpolar内网穿透技术实现远程访问的设置方法

    macOS系统自带有Secure Shell 客户端,它可让您登录到侦听传入SSH连接的远程服务器和台式机。我们可以用 ssh username@ip 来ssh到服务器,但通常局限于局域网内的远程。 本次教程,我们将使用cpolar内网穿透工具,映射ssh服务默认端口:22端口,获取公网地址,实现在公网环境下的

    2024年02月10日
    浏览(64)
  • 【大数据笔记】java jdbc连接hive数据库;java hive连接kerberos

    1、pom.xml配置         dependency             groupIdorg.apache.hive/groupId             artifactIdhive-jdbc/artifactId             scope2.1.1/scope         /dependency 2、驱动 org.apache.hive.jdbc.HiveDriver 3、用传统改的Class.forName,然后DriverManager去拿。 二、java hive连接kerberos

    2024年01月19日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包