大数据(3c)HIVE开启网络服务并使用IDEA连接

IDEA中使用Java连接Hive并读取数据 有关Java连接Hive数据库, 首先要在Maven项目的pom.xml文件中加载依赖: <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>0.13.1</version> </dependency> 在虚拟机上把Hive启动起来, 阅读详情

本文续:https://yellow520.blog.youkuaiyun.com/article/details/111563044

1、额外配置

1.1、Hadoop

  • proxy意思是代理人
  • 这个配置大概就是,提交给HiveServer2服务端的操作都交由代理人来做
    此处配置这个代理人名字为root,也可以是别的名字
    比如a用户经此HiveServer2上传了文件,该文件权限不是a而是代理人名字
vi $HADOOP_HOME/etc/hadoop/core-site.xml
<!-- HIVE Server2 代理配置 -->
<property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
    <description>哪些主机节点允许通过本代理</description>
</property>
<property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
    <description>哪些组允许通过本代理</description>
</property>
<property>
    <name>hadoop.proxyuser.root.users</name>
    <value>*</value>
    <description>哪些用户允许通过本代理</description>
</property>

记得分发噢~

1.2、HIVE

vi $HIVE_HOME/conf/hive-site.xml
<!-- 这俩配置server2的地址和端口 -->
<property>
    <name>hive.server2.thrift.port</name>
    <value>10000</value>
    <description>
    Port number of HiveServer2 Thrift interface when hive.server2.transport.mode is 'binary'.
    </description>
</property>
<property>
    <name>hive.server2.thrift.bind.host</name>
    <value>hadoop100</value>
    <description>Bind host on which to run the HiveServer2 Thrift service.</description>
</property>
<!-- 用于 metastore的客户端 远程连接 metastore 的URI -->
<property>
    <name>hive.metastore.uris</name>
    <value>thrift://hadoop100:9083</value>
    <description>
    Thrift URI for the remote metastore.
    Used by metastore client to connect to remote metastore.
    </description>
</property>
<!-- -->
<property>
    <name>hive.metastore.schema.verification</name>
    <value>false</value>
    <description>
Enforce metastore schema version consistency.
True:
Verify that version information stored in is compatible with one from Hive jars.
Also disable automatic schema migration attempt.
Users are required to manually migrate schema after Hive upgrade
 which ensures proper metastore schema migration. (Default)
False:
Warn if the version information stored in metastore doesn't match with one from in Hive jars.
    </description>
</property>
<!-- -->
<property>
    <name>hive.metastore.event.db.notification.api.auth</name>
    <value>false</value>
    <description>
Should metastore do authorization against database notification related APIs such as get_next_notification.
If set to true, then only the superusers in proxy settings have the permission
    </description>
</property>
<!-- -->
<property>
    <name>hive.server2.active.passive.ha.enable</name>
    <value>true</value>
    <description>
Whether HiveServer2 Active/Passive High Availability be enabled
 when Hive Interactive sessions are enabled.
This will also require hive.server2.support.dynamic.service.discovery to be enabled.
    </description>
</property>

2、服务启动命令

Xshell两个窗口,分别执行下面两条命令

hive --service metastore
hive --service hiveserver2

3、启动脚本

touch $HIVE_HOME/bin/hiveServices.sh
chmod 777 $HIVE_HOME/bin/hiveServices.sh
vi $HIVE_HOME/bin/hiveServices.sh

下面9083和10000这两个端口号是依据HIVE的配置

#!/bin/bash
HIVE_LOG_DIR=$HIVE_HOME/logs

mkdir -p $HIVE_LOG_DIR

#检查进程是否运行正常,参数1为进程名,参数2为进程端口
function check_process()
{
    pid=$(ps -ef 2>/dev/null | grep -v grep | grep -i $1 | awk '{print $2}')
    ppid=$(netstat -nltp 2>/dev/null | grep $2 | awk '{print $7}' | cut -d '/' -f 1)
    echo $pid
    [[ "$pid" =~ "$ppid" ]] && [ "$ppid" ] && return 0 || return 1
}

function hive_start()
{
    metapid=$(check_process HiveMetastore 9083)
    cmd="nohup hive --service metastore >$HIVE_LOG_DIR/metastore.log 2>&1 &"
    cmd=$cmd" sleep 4; hdfs dfsadmin -safemode wait >/dev/null 2>&1"
    [ -z "$metapid" ] && eval $cmd
    server2pid=$(check_process HiveServer2 10000)
    cmd="nohup hive --service hiveserver2 >$HIVE_LOG_DIR/hiveServer2.log 2>&1 &"
    [ -z "$server2pid" ] && eval $cmd
}

function hive_stop()
{
    metapid=$(check_process HiveMetastore 9083)
    [ "$metapid" ] && kill $metapid
    server2pid=$(check_process HiveServer2 10000)
    [ "$server2pid" ] && kill $server2pid
}

case $1 in
"start")
    hive_start
    ;;
"stop")
    hive_stop
    ;;
"restart")
    hive_stop
    sleep 2
    hive_start
    ;;
"status")
    check_process HiveMetastore 9083 >/dev/null && echo "Metastore在运" || echo "Metastore停运"
    check_process HiveServer2 10000 >/dev/null && echo "HiveServer2在运" || echo "HiveServer2停运"
    ;;
*)
    echo Invalid Args!
    echo 'Usage: '$(basename $0)' start|stop|restart|status'
    ;;
esac

用法

$HIVE_HOME/bin/hiveServices.sh start

启动后jps可以看到多了两个RunJar

4、使用客户端连接到HIVE

4.1、beeline客户端

进入交互界面

beeline -u jdbc:hive2://hadoop100:10000 -n root
SHOW DATABASES;
!quit

执行一次query

beeline -u jdbc:hive2://HOST:10000/库名 -n root -e 'SHOW TABLES'
选项全称参数值
-udatabase URLjdbc:hive2://主机:端口/库名
-nusername用户名
-ppassword密码
-equery执行一次SQL

4.1.1、beeline脚本

touch $HIVE_HOME/bin/beeline.py
chmod 777 $HIVE_HOME/bin/beeline.py
vim $HIVE_HOME/bin/beeline.py
#!/usr/bin/python2
# coding:utf-8
from os import system
from subprocess import check_output
from re import findall

t = check_output('cat $HIVE_HOME/conf/hive-site.xml', shell=True)
host = findall(r'<name>hive.server2.thrift.bind.host</name>\s*<value>(.+?)</value>', t)[0]
port = findall(r'<name>hive.server2.thrift.port</name>\s*<value>([0-9]+?)</value>', t)[0]
user = check_output('whoami', shell=True).strip()
system('beeline -u jdbc:hive2://{}:{} -n {}'.format(host, port, user))

4.2、IDEA连接HIVE(重点!有截图!版本≥2019)


根据提示,下载JDBC

5、配置hiveServer2密码验证

5.1、创建Maven工程,写个Java代码,打包
pom.xml

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

org.custom.MyPwdAuthenticator

package org.custom;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hive.conf.HiveConf;
import org.slf4j.Logger;
import javax.security.sasl.AuthenticationException;

public class MyPwdAuthenticator implements org.apache.hive.service.auth.PasswdAuthenticationProvider{

    private Logger LOG = org.slf4j.LoggerFactory.getLogger(MyPwdAuthenticator.class);
    private static final String HIVE_JDBC_PASSWD_AUTH_PREFIX="hive.jdbc_passwd.auth.%s";
    private Configuration conf=null;

    @Override
    public void Authenticate(String userName, String passwd) throws AuthenticationException {
        LOG.info("Hive2 login info... user: "+ userName +" is trying login.");
        String passwdConf = getConf().get(String.format(HIVE_JDBC_PASSWD_AUTH_PREFIX, userName));
        if(passwdConf==null){
            String message = "Hive2 login error! Configuration null. user:"+userName;
            LOG.info(message);
            throw new AuthenticationException(message);
        }
        if(!passwd.equals(passwdConf)){
            String message = "Hive2 login error! userName or password is error. user:"+userName;
            throw new AuthenticationException(message);
        }
    }

    public Configuration getConf() {
        if(conf==null){
            this.conf=new Configuration(new HiveConf());
        }
        return conf;
    }

    public void setConf(Configuration conf) {
        this.conf=conf;
    }
}

5.2、将jar上传到$HIVE_HOME/lib
5.3、编辑$HIVE_HOME/conf/hive-site.xml

<!-- hiveServer2密码验证 -->
<property>
    <name>hive.server2.authentication</name>
    <value>CUSTOM</value>
    <description>认证模式设定为CUSTOM,默认NONE</description>
</property>
<property>
    <name>hive.server2.custom.authentication.class</name>
    <value>org.custom.MyPwdAuthenticator</value>
    <description>自定义认证的全类名</description>
</property>
<property>
    <name>hive.jdbc_passwd.auth.用户名</name>
    <value>密码</value>
</property>

5.4、重启

hiveServices.sh restart

5.5、beeline客户端测试

beeline -u jdbc:hive2://主机名:10000 -n 用户名 -p 密码

Appendix

en🔉cn
hivehaɪvn. 忙碌的场所;蜂房;蜂群;蜂窝状物体
beebiːn. 蜜蜂;<美>聚会,联谊赛;工作忙碌的人
thriftθrɪftn. 节约,节俭;海石竹;<美>储蓄机构
compatiblekəmˈpætəbladj. 兼容的;可共存的;可和睦相处的;与……一致的;n. 兼容性计算机
consistencykənˈsɪstənsin. 一致性,连贯性;黏稠度,平滑度
migrateˈmaɪɡreɪtv. 迁徙;移居;转移;把(程序,硬件)从一系统转移到另一系统
migrationmigrationn. 移民,迁徙;(计算机系统的)改变,(程序或硬件的)迁移,转移
interactiveˌɪntərˈæktɪvadj. 交互式的,人机对话的;相互交流的,互动的
passiveˈpæsɪvadj. 消极的,被动的;被动语态的;(抵抗)非暴力的;(电路,装置)无源的
notificationˌnoʊtɪfɪˈkeɪʃnn. 通知;通知单
relatedrɪˈleɪtɪdadj. 相关的
authenticationɔːˌθentɪˈkeɪʃnn. 证明真实性,鉴定;身份验证,认证
【信息科学与工程学】计算机科学与自动化——第三百零五篇 数据中心 Scale-Up、Scale-Out、Scale-Across 01 临界带宽B_critical满足:V_orig/B_critical = V_orig/(r·B_critical) + V_orig/R_compress + r·V_orig/R_decompress ⇒ 1/B_critical = 1/(r·B_critical) + 1/R_compress + r/R_decompress ⇒ B_critical = (1 - 1/r) / (1/R_compress + r/R_decompress)。T_original中所有数据均经内存总线传输。 阅读详情

相关推荐

使用IDEA Database Tool连接Hive数据库.html

Idea连接Hive,Idea连接Hive,Idea连接Hive,Idea连接Hive,Idea连接Hive

idea 中连接 hive

一、添加依赖 hive-jdbc 中虽然包括 hadoop-common 的依赖,但是不会主动引入 hadoop-common 的依赖,需要主动添加 <!--添加所用hive版本的jdbc依赖 --> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>1.2.1

qq_45124566的博客 1万+

《计算机科学概论(第13版)》5-12章

定序是按给定语句的顺序应用每个算法步骤。(primitive):建立一组定义明确的构建块,利用它们来构造和执行算法的表示。可以消除歧义,不会引起误解,就像咱们传统的自然语言(用英语来沟通交流)。(programming language):原语的集合以及说明如何组合这些原语来表示比较复杂的想法的规则集合。用程序设计语言描述的算法可以在计算机上执行。每个原语都有自己的语法和语义,语法指的是原语的符号表示,语义是指该原语的含义。伪代码:用户开发过程中非正式表达想法的符号系统。

输入知识,消化知识,输出知识,分享知识,教人让我学习更好,业精于勤荒于嬉,行成于思毁于随 1036

idea连接hive

idea连接hive

windinroad的博客 7389

Visual Studio Git 使用指南

Visual Studio 2022深度集成了Git功能,提供了直观的图形界面管理源代码。本文详细介绍了VS中Git的使用方法:从环境准备、克隆/创建仓库开始,重点讲解了"Git更改"窗口的日常操作,包括查看修改、暂存文件、提交推送等。同时涵盖了分支管理、查看历史、解决冲突等核心功能,以及储藏、重置等高级操作。文章还提供了实用技巧,如提交规范、频繁提交等最佳实践。VS的Git集成覆盖了日常开发需求,图形界面与命令行可互补使用,适合各层次开发者高效管理代码版本。

guigenyi的专栏 1573

【CANoe示例分析】SOMEIPWithvCDL_16

本示例来源于官方提供的示例工程:0004_基于vCDL实现SOMEIP通信_Demo\0004_基于vCDL实现SOMEIP通信_Demo\SOMEIPWithvCDL。

jasonj333 571

idea连接Hive

目录 一、mysql的安装 二、hive的安装 1)hive-site.xml配置文件 三、启动hiveserver2 四、idea连接hive,按照以下步骤 一、mysql的安装 #卸载Centos7自带mariadb rpm -qa|grep mariadb mariadb-libs-5.5.64-1.el7.x86_64 rpm -e mariadb-libs-5.5.64-1.el7.x86_64 --nodeps #创建mysql安装包存放点 mkdi...

weixin_52851430的博客 4616

B07:AI 时代怎么考核团队?我把 KPI 改了 5 版才找到答案

最后说一句掏心窝的话。绩效考核不是"管人"的工具,是"引导团队行为"的工具。你定什么指标,团队就会做什么行为。你定"AI 占比",团队就凑占比你定"效率提升",团队就挑软柿子你定"代码行数",团队就刷行数你定"工具使用率",团队就刷使用只有定"业务价值 + 工程质量 + 能力成长"三个维度的指标,团队才会真正关注长期价值。这套 KPI,我在我带的团队里跑了 6 个月,没有任何一个指标被"刷"出来。考核的是结果,不是过程。永远考核"创造了多少价值",永远不考核"用了多少 AI"。

刘一说的IT专栏 503

大数据分布式基础环境搭建

安装VMware Workstation Pro和3台linux虚拟机 一 centos7最小化安装后不能上网: 首先一定要选网络适配器NAT 选后service network restart cd /etc/sysconfig/network-scripts vi /etc/sysconfig/network-scripts/ifcfg-ens33#刚开始没有vim只有vi BOOTPRO...

706

STM32+ESP8266+MQTT协议连接阿里云物联网平台

一、环境介绍 单片机采用:STM32F103C8T6 上网方式:采用ESP8266,也可以使用其他设备代替,只要支持TCP协议即可。比如:GSM模块、有线网卡等。 开发软件:keil5 二、实现功能 通过阿里云物联网服务器实现设备数据远程上传、下发,实现数据交互。 在当前使用的开发板上有4盏LED灯、一个蜂鸣器、4个按键。 三、阿里云物联网服务器创建步骤 说明:如果没有账号的话,先点击网页右上角,注册一个账号,并完成实名认证再继续下一步。 产品名称根据自己情况填...

6万+

【数据结构】考点二十八 : 二叉树的概念:二叉树的度、完全二叉树、满二叉数结点数、哈夫曼结点数、完全二叉树的深度

二叉树(Binary Tree)是一种常见的数据结构,它或者为空(null),或者由一个根节点(root node)和两个子树(left subtree 和 right subtree)组成,这两个子树又分别是一棵二叉树。二叉树的每个节点最多有两个子节点,通常称为左子节点(left child)和右子节点(right child)。

超越的博客 1738

hive与idea的连接

Hive 是一个建立在 Hadoop 之上的数据仓库系统,提供了类似于 SQL 的查询语言 HiveQL,使用户能够方便地在 Hadoop 分布式存储中执行查询和分析。它将结构化数据映射到 Hadoop 的分布式文件系统(HDFS)中,并利用 MapReduce 处理数据。Hive 的主要目标是提供高效的数据查询和分析,使非技术用户也能轻松地利用 Hadoop 处理大规模数据。二、使用idea连接hive数据库获取 Hive JDBC 驱动程序:首先,你需要下载并获取 Hive JDBC 驱动程序。

Tao9472的博客 2148

RK3566/RK3568 Android 11添加系统服务

【代码】RK3566/RK3568 Android 11添加系统服务。

qq_23921815的博客 641

Idea如何连接hive数据仓库

Tips 备注:本文引用的相关Jar包可以访问https://download.youkuaiyun.com/download/oceanside_yh/11177513下载。 一:添加HIVE数据源 tip1: 首先打开IDEA,调出Database窗口,按如下步骤点击 tip2: 点击+ 创建一个数据源,并选中driver驱动。 tip3: 点击刚创建的数据源Database Dr...

Oceanside_yh的博客 1万+

16、Arduino MEGA 2560 固件与电路详解

本文详细介绍了Arduino MEGA 2560的固件编程与电路设计,涵盖ATmega16U2和ATmega2560的熔丝配置、stk500v2引导加载程序的备份与恢复方法、使用Microchip Studio通过ICSP烧录固件的步骤,以及debugWIRE和JTAG调试接口的选择与配置。同时提供了电路块图解析、组件位置参考及常见问题解决方案,帮助用户深入理解硬件结构并进行高效开发与调试。

swift5iosmith的博客 196

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

IDEA的jdbc连接hive(1、 IDEA中通过API操作hive)

/在左上角输入框中输入:maven,单击下方菜单中的Maven,在右侧的设置界面中,Maven home directory中选择:D:\maven\apache-maven-3.3.9,User settings file中选择:D:\maven\apache-maven-3.3.9\conf\settings.xml,并勾选上Override,Local repository为默认即可,然后单击ok。在IDEA上方的菜单栏中选中File,将光标移动的New上,在弹出的子菜单中选择Project。

weixin_53589204的博客 1669

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

IDEA连接Hive

IDEA连接Hive1、打开IDEA右侧database2、添加Hive连接3、手动下载依赖包3.1、hadoop common下的三个包3.2、hadoop MapReduce下的包3.3、hive lib下的所有包 点击此处获取连接hive所需依赖包 1、打开IDEA右侧database 点击加号,选择Driver 按照图中修改名称,并导入相关依赖: 点此处获取 2、添加Hive连接 按照下图依次配置 连接测试成功 3、手动下载依赖包 3.1、hadoop common下的三个包 3.2、

m0_51691291的博客 4582

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Intellij IDEA连接Hive(CDH6.3.2)

Intellij IDEA连接Hive(CDH6.3.2)

m0_65248736的博客 2058

使用IDEA Database Tool连接Hive数据库

问题: IDEA 是现在很流行的开发工具,其功能很强大,其自带一个数据库连接工具,该工具可以连接mysql,oracle等常用数据库,那么问题来了,我能不能用这个工具连接hive数据库了 经过我的不断尝试,终于可以连接查询hive了!解决办法: 步骤如下图: 1.如果idea中最右侧你没有看到database这个选项卡那么请按照下图将其显示出来 2.因为IDEA没有内置hive的驱动,所以

我家有个艳的博客 2万+

hive-无法启动hiveserver2

启动hiveserver2没有反应,客户端也无法连接( beeline -u jdbc:hive2://node01:10000 -n root)

py_xiaoguaishou的博客 2182

idea连接hive的时候数据源的配置

Could not open client transport with JDBC Uri: jdbc:hive2://localhost:10000: java.net.SocketException: Connection reset.

LJAVAI的博客 550

使用idea连接Hive

使用idea连接Hive

Y521316的博客 314

idea远程连接hive

虽然网上介绍idea远程连接hive的方法挺多的,但是我还是整了一段时间才连接成功,在这边记录一下,方便他人,方便自己。首先看一下我通过xshell5远程连接hive的配置这是登陆时候的界面,可以看到我选择的是10.100.34.110这个服务器 第一种,使用SSH,在idea中Tools--StartSSH session--edit host --172.18.254.49    Port -...

红酒暖心不暖胃 7282
上一篇: MapReduce中文词频统计demo
下一篇: 大数据(3b)HIVE入门补充
小基基o_O
博客等级 码龄9年 4414粉丝 467原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值