10-18-hive-元数据及其他方式与hive交互
创始人
2024-03-09 07:13:05
0

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

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

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

   hive.metastore.uris thrift://hadoop102:9083  

2)启动 metastore

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

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

3)启动 hive

[root@hadoop202 hive]$ bin/hive

使用 JDBC 方式访问 Hive

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

   hive.server2.thrift.bind.host hadoop102    hive.server2.thrift.port 10000  

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文件中加入:

  dfs.webhdfs.enabled  true  
   

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

hadoop.proxyuser.root.hosts*

hadoop.proxyuser.root.groups*

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 ]
thenmkdir -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_stopsleep 2hive_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 中加入如下两个配置:

 hive.cli.print.headertruehive.cli.print.current.dbtrue

参数配置方式

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

相关内容

热门资讯

雪在路上了!北京今夜局地中雪,... 北京市气象台22日14时发布,今天白天晴转阴,北转南风二三级,最高气温3℃;夜间阴转小雪或零星小雪,...
中国导弹打中国无人机!柬埔寨首... 就在柬埔寨方面传出,柬埔寨军队将中国制造的TH-5711“智能猎手”野战防空导弹系统和前卫-3防空导...
“支持起诉+”让检察温度可感可... 法治日报记者 周文馨 赵志锋 法治日报通讯员 宋琴琴 农民工讨薪难、老年人被遗弃、未成年人权益受侵害...
罗永浩痛批电信宽带“缩水”:斗... 近年来,随着“千兆宽带”的普及,罗永浩痛批电信宽带“缩水”问题再次成为公众关注的焦点。 12月18日...
政策密集落地,2026年买车会... 来源:中国汽车报网 岁末收官之际,为确保“十五五”开好局、起好步,近来车市响起阵阵政策“惊雷”。不久...
好莱坞巨头起诉三个月后,Min... 12月21日晚,MiniMax(稀宇科技)港股IPO招股书对外公布。其中详细披露了公司业务和财务数据...
博世科(300422)披露提起... 截至2025年12月22日收盘,博世科(300422)报收于4.71元,较前一交易日下跌0.63%,...
浙江一小区用手机微信当门铃,业... 近日,浙江温州一小区的“微信无线对讲门铃”受到不少网友的好评。视频显示,一部手机被用胶带固定在小区大...
中国女子在欧洲邮轮上失联,母亲... 极目新闻记者 刘琴 近日,在德国居住的中国女子董秦失联,这一消息牵动人心。12月22日上午,董秦的母...
原创 土... 12月22日,土耳其宣布将归还价值约22亿欧元的四套S-400远程防空系统给俄罗斯,试图重返美国的F...