10-18-hive-元数据及其他方式与hive交互

news2024/11/25 6:54:07

10-hive-元数据及其他方式访问hive:

使用元数据服务的方式访问 Hive (类似将hive提供了一个服务端)

1)在hive-site.xml 文件中添加如下配置信息

 <!-- 指定存储元数据要连接的地址 --> 
 <property> 
 	<name>hive.metastore.uris</name> 
 	<value>thrift://hadoop102:9083</value> 
 </property> 

2)启动 metastore

[root@hadoop202 hive]$ bin/hive --service metastore

注意: 启动后窗口不能再操作,需打开一个新的 shell 窗口做别的操作

3)启动 hive

[root@hadoop202 hive]$ bin/hive

使用 JDBC 方式访问 Hive

1)在 hive-site.xml 文件中添加如下配置信息

 <!-- 指定 hiveserver2 连接的 host --> 
 <property> 
 <name>hive.server2.thrift.bind.host</name> 
 <value>hadoop102</value> 
 </property> 
 <!-- 指定 hiveserver2 连接的端口号 --> 
 <property> 
 <name>hive.server2.thrift.port</name> 
 <value>10000</value> 
 </property> 

2)启动 hiveserver2

[root@hadoop102 hive]$ bin/hive --service hiveserver2

3)启动 beeline 客户端(需要多等待一会)

[root@hadoop102 hive]$ bin/beeline -u jdbc:hive2://hadoop102:10000 -n root

遇见错误,hiveserver2未成功启动。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-viPCUR40-1669556203202)(png/1627203089357.png)]

查看日志提示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EzjegSYY-1669556203202)(png/1627205870169.png)]

主要报错内容是:java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException:User: root is not allowed to impersonate anonymous

解决办法:通过httpfs协议访问rest接口,以root用户包装自己用户的方式操作HDFS

首先需要开启rest接口,在hdfs-site.xml文件中加入:

<property>  
	<name>dfs.webhdfs.enabled</name>  
	<value>true</value>  
</property>   

然后在core-site.xml文件中加入:

<property>
	<name>hadoop.proxyuser.root.hosts</name>
	<value>*</value>
</property>
<property>
	<name>hadoop.proxyuser.root.groups</name>
	<value>*</value>
</property>

4)看到如下界面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ylOaWXw1-1669556203203)(png/1627205833752.png)]

5)编写 hive 服务启动脚本(重点脚本相关命令多了解一下)

(1) 前台启动的方式导致需要打开多个 shell 窗口,可以使用如下方式后台方式启动

nohup: 放在命令开头,表示不挂起,也就是关闭终端进程也继续保持运行状态

/dev/null:是 Linux 文件系统中的一个文件,被称为黑洞,所有写入改文件的内容

都会被自动丢弃

2>&1 : 表示将错误重定向到标准输出上

&: 放在命令结尾,表示后台运行

一般会组合使用: nohup [xxx 命令操作]> file 2>&1 &,表示将 xxx 命令运行的结

果输出到 file 中,并保持命令启动的进程在后台运行。主要使用以下脚本。

[root@hadoop102 hive]$ nohup hive --service metastore 2>&1 &

[root@hadoop102 hive]$ nohup hive --service hiveserver2 2>&1 &

编写脚本,在$HIVE_HOME/bin下创建hiveservices.sh

#!/bin/bash
HIVE_LOG_DIR=$HIVE_HOME/logs
if [ ! -d $HIVE_LOG_DIR ]
then
	mkdir -p $HIVE_LOG_DIR
fi
#检查进程是否运行正常,参数 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 &"
	[ -z "$metapid" ] && eval $cmd || echo "Metastroe 服务已启动"
	server2pid=$(check_process HiveServer2 10000)
	cmd="nohup  hive --service hiveserver2 >$HIVE_LOG_DIR/hiveServer2.log 2>&1 &"
	[ -z "$server2pid" ] && eval $cmd || echo "HiveServer2 服务已启动" 
}

function hive_stop()
{
	metapid=$(check_process HiveMetastore 9083)
	[ "$metapid" ] && kill $metapid || echo "Metastore 服务未启动"
	server2pid=$(check_process HiveServer2 10000)
	[ "$server2pid" ] && kill $server2pid || echo "HiveServer2 服务未启动" 
}

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

3)添加执行权限

[root@hadoop102 hive]$ chmod +x $HIVE_HOME/bin/hiveservices.sh

4)启动 Hive 后台服务

[root@hadoop102 hive]$ hiveservices.sh start

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vPpodRHN-1669556203203)(png/1627211748648.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o9JTE4Uu-1669556203204)(png/1627211772325.png)]

hiveservices.sh start/stop/restart/status

启动客户端 bin/beeline -u jdbc:hive2://hadoop102:10000 -n root

Hive日常其他交互命令(使用于脚本):

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qfJtuTE2-1669556203204)(png/image-20210727193453044.png)]

1)“-e”不进入 hive 的交互窗口执行 sql 语句

[root@hadoop102 hive]# bin/hive -e “select * from test;”

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lIY3BAoZ-1669556203204)(png/image-20210727194222482.png)]

2)“-f”执行脚本中 sql 语句

(1)在/opt/module/hive/下创建 hive-sql文件

[root@hadoop102 hive]# vim hive-sql

(2)文件中写入正确的 sql 语句

select * from test;

select count(id) from test;

(3)执行文件中的 sql 语句

[root@hadoop102 hive]# bin/hive -f hive-sql

(4)执行文件中的 sql 语句并将结果写入文件中

[root@hadoop102 hive]# bin/hive -f hive-sql > hive_result.txt

Hive 其他命令操作(作用不大,了解)

1)退出 hive 窗口:

exit; quit;

2)在hive cli** 命令窗口中如何查看 hdfs 文件系统

hive(default)>dfs -ls /;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rVzM51S6-1669556203205)(png/image-20210727195233049.png)]

3)查看在 hive 中输入的所有历史命令

(1)进入到当前用户的根目录 /root 或/home/atguigu

(2)查看. hivehistory 文件

[root@hadoop102 ~]$ cat .hivehistory

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BzRiGGnX-1669556203205)(png/image-20210727195633203.png)]

Hive 常见属性配置

Hive 运行日志信息配置

Hive 的log默认存放在/tmp/root/hive.log 目录下(当前用户名下)

修改 hive log 存放日志到/opt/module/hive/logs

(1)修改/opt/module/hive/conf/hive-log4j2.properties.template 文件名称为hive-log4j2.properties

[root@hadoop102 hive]#mv hive-log4j2.properties.template hive

log4j2.properties

(2)在 hive-log4j2.properties 文件中修改 log 存放位置

hive.log.dir=/opt/module/hive/logs

打印 当前库 和 表头

在 hive-site.xml 中加入如下两个配置:

 <property>
 <name>hive.cli.print.header</name>
 <value>true</value>
 </property>
 <property>
 <name>hive.cli.print.current.db</name>
 <value>true</value>
 </property>

参数配置方式

1)查看当前所有的配置信息,都是key-value的形式

hive>set;

2)参数的配置三种方式

(1)配置文件方式

默认配置文件:hive-default.xml,用户自定义配置文件:hive-site.xml

注意:用户自定义配置会覆盖默认配置。另外,Hive 也会读入 Hadoop 的配置,因为 Hive是作为 Hadoop 的客户端启动的,Hive 的配置会覆盖 Hadoop 的配置。配置文件的设定对本机启动的所有 Hive 进程都有效。

(2)命令行参数方式

启动 Hive 时,可以在命令行添加-hiveconf param=value 来设定参数。

例:

[root@hadoop102 hive]$ bin/hive -hiveconf mapred.reduce.tasks=10;

注意:仅对本次 hive 启动有效

查看参数设置:

hive (default)> set mapred.reduce.tasks;

(3)参数声明方式

可以在 HQL 中使用 SET 关键字设定参数

例如:

hive (default)> set mapred.reduce.tasks=100;

注意:仅对本次 hive 启动有效。

查看参数设置

hive (default)> set mapred.reduce.tasks;

上述三种设定方式的优先级依次递增。即配置文件<命令行参数<参数声明。注意某些系

select count(*) from test;原因解析,hive写到mysql元数据,hadoop put不往hive元数据中存储。

学习路径:https://space.bilibili.com/302417610/,如有侵权,请联系q进行删除:3623472230

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/53142.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

简易的shell实现

这篇文章的内容主要是利用进程的创建&#xff0c;等待&#xff0c;终止&#xff0c;替换。这些知识来实现一个自己的简易shell。 文章目录1. 大致思路2. 基本实现3. 额外拓展3.1 让文件带上颜色3.2 内建命令3.3 添加环境变量1. 大致思路 我们用了这么长的shell&#xff0c;它…

DolphinDB 四大因子库合集

目前市场上常见两种类型的因子库&#xff1a;技术分析类和基本面类。 常用的技术分析因子库包括 TA-Lib、WorldQuant 的101 alpha、通达信的 mytt、国泰君安的191等。 基本面因子方面&#xff0c;美联储高级经济学家 Andrew Chen 及科隆大学教授 Tom Zimmermann 详细整理总结…

Hadoop原理与技术——Linus命令行基本操作

一、实验目的 Hadoop运行在Linux系统上&#xff0c;因此&#xff0c;需要学习实践一些常用的Linux命令。本实验旨在熟悉常用的Linux操作&#xff0c;为顺利开展后续其他实验奠定基础。 二、实验环境 Windows 10 VMware Workstation Pro虚拟机 Hadoop环境 Jdk1.8 三、实验内…

IP-Guard如何判断Windows客户端是否安装成功?

1.在电脑本地打开services.msc 服务页面&#xff0c;找有没有windows helper service服务&#xff0c;该服务的可执行文件的路径中的进程是winrdgv3.exe是客户端进程。 2.cmd输入netstat -an|find "823",从输出的内容上判断是否连接上服务器连&#xff1b; 客户端开放…

Linux基础知识与实操-篇八:定期任务执行与进程任务处理

文章目录例行工作安排单一工作安排循环执行的任务注意事项唤醒停机期间的任务进程任务处理任务管理job control后台执行进程管理进程的执行顺序系统资源查看特殊文件与进程最后例行工作安排 类似于定时任务、系统安排的任务提醒等 一般在任务中&#xff0c;有两个类型&#x…

MR小区搜索(六)cell reselection

微信同步更新欢迎关注同名modem协议笔记 小区选择和小区重选都是idle态行为&#xff0c;小区重选无非是为了让UE驻留在信号状况最好的小区上&#xff0c;以便之后在connected mode获得更好的体验&#xff0c;小区重选的目标小区也要满足S准则&#xff0c;下面就来具体看下小区…

19c pdb克隆单机到rac,日志出现:WARNING报警处理

打开pdb后&#xff0c;警告日志出现 Violations: Type: 2, Count: 1 *************************************************************** WARNING: Pluggable Database PDB3 with pdb id - 3 is altered with errors or warnings. Please look into PDB_PLUG_IN_VIOLATIONS vie…

运算符-12-多学一招原码反码补码,隐式和强制转换,位运算

下面来解释这些东西是怎么来的 原码 例如&#xff1a; 最左边的叫做符号位&#xff0c;0 为正&#xff0c;1 为负&#xff0c;后面的才是具体的数值 在计算机中&#xff0c;一个 0 或者 1 所占的空间叫 bit 中文名叫比特位&#xff0c;八个 bit 就称为一个字节&#xff0c;字…

Java+Swing学生信息管理系统(含源码+论文+答辩PPT等)

该项目采用技术&#xff1a;JDBCAWTSwing集合面向对象编程等相关技术&#xff0c;项目含有源码、文档、配套开发软件、软件安装教程、项目发布教程等 项目功能介绍&#xff1a; 系统管理&#xff1a;用户登录、退出、注册 学校管理&#xff1a;设置学生学校以及联系方式等信息 …

C语言——矩阵转置

矩阵转置的原理&#xff1a;行元素变成列元素&#xff0c;列元素变成行元素 例如&#xff1a; 矩阵转置代码 #include<stdio.h> #include<malloc.h> #include<stdlib.h> #include<math.h>//矩阵转置 double** Matrix_T(double** arr) {if(arrNULL)e…

Linux服务器配置与管理(基于Centos7.2)任务目标(六)

文章目录一、实验目的&#xff1a;二、实验内容及基本要求&#xff1a;三、实训步骤一、实验目的&#xff1a; ●了解Shell脚本的概念和执行方法&#xff1b;能熟编写Shell脚本来管理系统 二、实验内容及基本要求&#xff1a; 1、使用脚本批量创建用户 2、使用脚本批量删除用…

【895. 最大频率栈】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 设计一个类似堆栈的数据结构&#xff0c;将元素推入堆栈&#xff0c;并从堆栈中弹出出现频率最高的元素。 实现 FreqStack 类: FreqStack() 构造一个空的堆栈。void push(int val) 将一个整数 val …

MySQL索引的底层数据结构原理剖析(二叉树、 红黑树、Hash、B-Tree、B+Tree)

一. 前言 1. 说明 我们平时所说的&#xff1a;聚集索引(主键索引)&#xff0c;次要索引&#xff0c;覆盖索引&#xff0c;复合索引&#xff0c;前缀索引&#xff0c;唯一索引在MySQL5.7和 8.0版本默认都是使用BTree索引&#xff0c;除此之外还有 Hash索引。至于MySQL5.7之前版…

Go-Excelize API源码阅读(三十八)——SetCellStyle

Go-Excelize API源码阅读&#xff08;三十八&#xff09;——SetCellStyle 开源摘星计划&#xff08;WeOpen Star&#xff09; 是由腾源会 2022 年推出的全新项目&#xff0c;旨在为开源人提供成长激励&#xff0c;为开源项目提供成长支持&#xff0c;助力开发者更好地了解开源…

智慧城市运营中心建设方案(SCOC)智慧城市的心脏

一、大数据&#xff1a;智慧城市的基础与引擎 中国每天正以消失100个村庄的速度快速步入城镇化&#xff0c;未来10年内将有5亿以上的人涌入城市。这无疑会给城市的建设带来巨大的压力&#xff0c;城市资源有限&#xff0c;规模不可能无限扩张&#xff0c;城市在就业、教育、住房…

【数据库基础】数据库介绍和三大范式

数据库简介&#x1f33e;第一章 数据库简介&#x1f54a;️1.1 简介&#x1f54a;️1.2 常见数据库管理系统&#x1f54a;️1.3 三大范式&#xff08;规范&#xff09;&#x1f375;第一范式&#xff1a;&#x1f375;第二范式:&#x1f375;第三范式&#x1f33e;第一章 数据库…

实用调试技巧

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 目录什么是bug&#xff1f;调试是什么&#xff1f;有多重要&#xff1f;调试是什么调试的基本步骤debug和release的介绍windows环境调试介绍快捷键调试的时候查看程序当前…

基于51单片机六车道智能交通灯设计(仿真+源程序+PCB+论文)

资料编号&#xff1a;204 功能介绍&#xff1a;&#xff08;全套毕设资料齐全&#xff09; 本设计的交通灯以十字路口为模型&#xff0c;在实现基本的功能前提下增加了时间及温度的液晶显示。从而还增加了路口高峰期的智能化人工管理机制。 实际生活中交通信号灯的规则千变万…

C++ 大作业/课程设计 小型公司工资管理软件

小型公司工资管理软件一、实验目的二、实验要求三、项目分工四、软件设计0.效果图&#xff1a;1.类的继承关系2.类的设计3.程序运行流程4.异常处理1. 用户输入异常2.文件操作异常五、程序代码一、实验目的 熟悉面向对象程序设计思想&#xff0c;掌握类、类的派生、静态成员、多…

JVM之运行时数据区 方法区

JVM方法区概述设置方法区的大小参数如何解决这些OOM内部结构补充non-final的类变量全局变量&#xff1a;static final常量池运行时常量池方法区的演进StringTable为什么要调整&#xff1f;方法区垃圾回收总览概述 《java虚拟机规范》中明确说明&#xff1a;“尽管所有的方法区…