Sentry Beeline

article/2025/9/28 14:11:39

环境

Ubuntu STL 16.0.4
Hadoop 2.7.4
Hive   2.1.1
sentry 1.7.0
maven  3.5.0//注:伪分布式环境

安装maven

1.apache maven官网下载maven,用于编译sentry源码。 
2.修改~/.bashrc文件,添加maven路径。

export  MAVEN_HOME=/etc/usr/local/maven 
export  PATH=$PATH:MAVEN_HOME/bin

3.使.bashrc生效source ~/.bashrc。 
4.执行mvn -v 可查看maven是否安装成功。

编译sentry源码

  1. 在apache sentry官网下载sentry源码(很有意思,官网上没有直接运行的binary文件,只有源码,所以需要maven编译)。
  2. 在README.md文件里可知,在apache-sentry-1.7.0-src文件夹里执行mvn install -DskiTests 即可进行编译。 
    这里写图片描述
  3. 当终端出现下图情况时即编译成功: 
    这里写图片描述
  4. 编译结果在apache-sentry-1.7.0-src/sentry-dist/target/apache-stnery-1.7.0下。 
    这里写图片描述

编译结果上传至百度网盘,密码: e5hp。

配置sentry环境

  1. 将mysql-connector的jar包拷入sentry/lib下 
    sudo mv mysql-connector-java-5.0.8-bin.jar /usr/local/sentry/lib

  2. 修改sentry-site.xml文件

    注意:在sentry/conf下有sentry-site.xml.service.template和sentry-site.xml.hive-client.template两种类型的文件,其中service文件是用于在sentry/conf下配置sentry环境的,hive-client文件是需要拷贝到hive/conf下配置hive和sentry关联的。

    参考sentry-site.xml.service.template修改sentry-site.xml,sudo cp sentry-site.xml.service.template sentry-site.xml

<!-- 修改内容 -->
<property> <name>sentry.store.jdbc.url</name>  <value>jdbc:mysql://localhost:3306/sentry</value> 
</property>  <property> <name>sentry.store.jdbc.driver</name>  <value>com.mysql.jdbc.Driver</value> 
</property>  <property> <name>sentry.store.jdbc.user</name>  <value>sentry</value> 
</property>  <property> <name>sentry.store.jdbc.password</name>  <value>sentry</value> 
</property> <!-- 关闭security.mode -->
<property><name>sentry.service.security.mode</name><value>kerberos</value>
</property><property><name>sentry.service.server.principal</name><value></value>
</property><property><name>sentry.service.server.keytab</name><value></value>
</property><!-- 添加内容 -->
<property> <name>sentry.service.server.rpc-address</name>  <value>localhost</value> 
</property>  <property> <name>sentry.service.server.rpc-port</name>  <value>8038</value> 
</property>  

注释: 
sentry默认数据库不是mysql,所以默认驱动也不是mysql 的,所以前四个是将数据库相关信息修改为mysql的。 
因为对sentry还不是很了解,所以先把其他多余的服务关闭,配置好环境再说。T_T 
后面添加内容用于监听localhost:8038端口,原本sentry-site.xml.service.template里面没有,是自己添加的。经测试不添加也可以,应该是默认端口号就是8038。

为sentry配置数据库和路径

1.配置数据库

CREATE DATABASE sentry;
CREATE USER sentry IDENTIFIED BY 'sentry';
GRANT all ON sentry.* TO sentry@'%' IDENTIFIED BY 'sentry';
flush privileges;

2.配置sentry路径

export SENTRY_HOME=/usr/local/sentry
export PATH=$PATH:$SENTRY_HOME/bin

执行 sentry -v ,如果出现如下所示即配置成功: 
这里写图片描述

运行sentry服务

如果是第一次运行sentry服务需要提前初始化元数据库,命令如下:

sentry --command schema-tool --conffile /usr/local/sentry/conf/sentry-site.xml --dbType mysql --initSchema
  • 1

运行sentry命令:

sentry --command service --conffile /usr/local/sentry/conf/sentry-site.xml

如果报错: 
could not create SeverSocket on address localhost/127.0.0.1:8038 
这里写图片描述
则可能metastore已经启动,如果想要重新启动sentry需要先关闭之。 
执行命令jps,kill -9 pid即可。 
这里写图片描述

出现如下界面说明已经运行起来了: 
这里写图片描述

serving on localhost/127.0.0.1:8038

hive集成sentry

1.将sentry-site.xml.hive-client.template拷贝到hive/conf下:

sudo mv /usr/local/sentry/conf/sentry-site.xml.hive-client.template  /usr/local/hive/conf/sentry-site.xml

2.修改hive-site.xml

<!-- Hive Metastore集成Sentry -->
<property><name>hive.metastore.pre.event.listeners</name><value>org.apache.sentry.binding.metastore.MetastoreAuthzBinding</value>
</property><property><name>hive.metastore.event.listeners</name><value>org.apache.sentry.binding.metastore.SentryMetastorePostEventListener</value></property><!-- Hive-server2集成Sentry -->
<property><name>hive.server2.enable.impersonation</name><value>true</value>
</property><property><name>hive.security.authorization.task.factory</name><value>org.apache.sentry.binding.hive.SentryHiveAuthorizationTaskFactoryImpl</value>
</property><property><name>hive.server2.session.hook</name><value>org.apache.sentry.binding.hive.HiveAuthzBindingSessionHook</value>
</property><property><name>hive.sentry.conf.url</name><value>file:///usr/local/hive/conf/sentry-site.xml</value>
</property>

3.修改sentry-site.xml 
注意!这里改的是hive/conf/sentry-site.xml而不是sentry/conf下的!!!!

    <property><name>sentry.service.client.server.rpc-port</name><value>8038</value></property><property><name>sentry.service.client.server.rpc-address</name><value>localhost</value></property><property><name>sentry.service.client.server.rpc-connection-timeout</name><value>200000</value></property><!--以下是客户端配置--><property><name>sentry.provider</name><value>org.apache.sentry.provider.file.HadoopGroupResourceAuthorizationProvider</value></property><property><name>sentry.hive.provider.backend</name><value>org.apache.sentry.provider.db.SimpleDBProviderBackend</value></property><property><name>sentry.metastore.service.users</name><value>hive</value><!--queries made by hive user (beeline) skip meta store check--></property><property><name>sentry.hive.server</name><value>localhost</value></property><property><name>sentry.hive.testing.mode</name><value>true</value></property>

注释: 
Sentry 的使用有两种方式,一是基于文件的存储方式(SimpleFileProviderBackend),一是基于数据库的存储方式(SimpleDbProviderBackend),如果使用基于文件的存储则只需要安装sentry,否则还需要安装 sentry-store。

3.hive添加对sentry的依赖

创建软链接:

sudo cp /usr/lcoal/sentry/lib/sentry-binding-hive-1.7.0.jar /usr/lcoal/sentry/lib/sentry-binding-hive.jar
sudo ln -s /usr/lcoal/sentry/lib/sentry-binding-hive.jar /usr/lcoal/hive/lib/sentry-binding-hive.jar 
  • 1
  • 2

4.重新初始化元数据库 
重新配置hive-site.xml之后立马运行hive,执行操作时汇报如下错误: 
这里写图片描述
这时需要重新初始化元数据库。 
需要先把愿元数据库中的hive_metadata删掉,然后在执行初始化操作。

mysql -u hive -p hive
show databases;
drop database hive_metadata;
quit;schematool -dbType mysql -initSchema

这里写图片描述
初始化成功

注意: 
在hive更改完sentry相关配置之后进入hive页面执行查询数据库命令(show databases;)时,会出现错误。 
这时把sentry/lib下sentry*.jar和solr*.jar拷贝到hive/lib/下,然后就能在hive下执行查询操作了

hive集成sentry测试

Sentry权限控制通过Beeline(Hiveserver2 SQL 命令行接口)输入Grant 和 Revoke语句来配置。语法跟现在的一些主流的关系数据库很相似。

需要注意的是:当sentry服务启用后,我们必须使用beeline接口来执行hive查询,Hive Cli并不支持sentry。

参考内容

安装和配置Sentry 
Apache Sentry安装及简单使用 
测试Hive集成Sentry 
Impala和Hive集成Sentry





beeline 常用语法: 
1. beeline -u “jdbc:hive2://nn02:10000/default” -n maxiaoli -e “select * from mxl_hive;” 
-u : 连接信息 
-n:登陆用户 
-e:执行hql 
2. beeline -u “jdbc:hive2://nn02:10000/default” -n maxiaoli -i query.hql 
3. 输入beeline 进入,输入!connect 连接串 在输入用户名和密码 即可登陆 
这里写图片描述

除了进入beeline进行操作,在脚本中以前的hive -e/-f 就不能使用,现在就我遇到的问题进行总结,以及和hive进行对比。假如hive 有这样的一张表 test

nameage
mxl20
zhangsan21
  1. hive -e “select * from ”> test.txt
mxl 20
zhangsan 21
  • 1
  • 2

beeline

beeline -u "jdbc:hive2://localhost:10000/default" -n admin--silent=true --showHeader=false --outputformat=csv  -f new.sh  > mxl.log 
  • 1

不显示查询头,以静默的方式导出csv文件,当然 -f 后面是hql 查询文件,也可以-e “query” 。 
beeline -f 和 -e 默认的查询结果都带有表信息,mr过程等内容。








http://chatgpt.dhexx.cn/article/ag960n72.shtml

相关文章

beeline 使用

最近对hive设置权限&#xff0c;具体设置权限的方法请参考http://blog.csdn.net/qq_31382921/article/details/71133323&#xff0c;使用beeline的时候总会出现各种小问题&#xff0c;毕竟还是跟hive有点区别。 beeline 常用语法&#xff1a; 1. beeline -u “jdbc:hive2://n…

hive之beeline连接与操作

hive之beeline连接与操作 一、连接配置1.连接测试1.1前提1.2启动hive服务1.3测试连接 2.问题解决1.解决方式2.连接 二、操作1.beeline操作 一、连接配置 1.连接测试 1.1前提 hadoop集群、hive已正常安装&#xff0c;hadoop集群已启动 1.2启动hive服务 先启动 metastore 服…

Hive _ Hive2 新版连接工具 beeline 详解

Hive客户端工具后续将使用Beeline 替代HiveCLI &#xff0c;并且后续版本也会废弃掉HiveCLI 客户端工具。 Beeline是Hive新的命令行客户端工具。 Beeline是从 Hive 0.11版本引入的。 HiveServer2 支持一个新的命令行Shell&#xff0c;称为Beeline&#xff0c;它是基于SQLLine …

Hive3详细教程(四)beeline的使用

beeline提供了命令行中以简单字符串拼凑的图形形式的表结构&#xff0c;如下图所示&#xff0c;比hive客户端有更好的用户体验度。 配置beeline连接&#xff0c;需要在hadoop的etc/core.site.xml文件中添加以下配置权限代码&#xff1a; <property><name>hadoop.…

Hive CLI和Beeline命令行的基本使用

一、Hive CLI 1.1 Help 使用 hive -H 或者 hive --help 命令可以查看所有命令的帮助&#xff0c;显示如下&#xff1a; usage: hive-d,--define <keyvalue> Variable subsitution to apply to hive commands. e.g. -d AB or --define AB --定义用户自定义变…

【Qt学习】OpenCV帧差法 车辆识别

目录 一&#xff1a;效果展示 二&#xff1a;Qt UI界面设计 三&#xff1a;源码分享 一&#xff1a;效果展示 使用Qt界面实现 点击 线程启动按钮播放视频 同时 左边界面显示原视频 右边界面显示车辆识别视频 初始界面 点击线程启动后&#xff0c;即可车辆识别 框选车辆 二&a…

【车辆识别】基于卷积神经网络yolov3识别车辆和车辆速度附matlab代码

1 简介 近年来,自动驾驶研究,智慧交通建设突飞猛进,车辆检测技术成为业界的研究热点.由于深度卷积神经网络具有一定的旋转与平移不变性等特点,在车辆检测任务中得到广泛应用,其中,YOLOv3(You Only Look Once version 3)算法是目前主要的检测算法之一. 2 部分代码 clearclc​%…

基于深度学习的车牌+车辆识别(YOLOv5和CNN)

yolov5车牌识别+车辆识别 行人识别yolov5和v7对比 订阅专栏获得源码(提供完整代码,无需看下文) 基于深度学习的车牌识别(YOLOv5和CNN) 目录 一、综述 二、车牌检测 一、综述 本篇文章是面向的是小白,想要学习深度学习上的应用,本文中目前应用了YOLO v5和CNN来对车牌进行…

Qt +opencv 通过级联分类器训练的模型进行识别(车辆识别+人脸识别)

有不对的或更好的方法欢迎交流 一些内容可参照这篇文章&#xff1a;https://blog.csdn.net/m0_64596200/article/details/126748697?spm1001.2014.3001.5502 训练好的的模型&#xff1a; 车辆识别模型&#xff1a;https://download.csdn.net/download/m0_64596200/86507302?…

机器学习1:OpenCV4.5.5加载xml进行车辆识别

深度学习准确率高识别效果好&#xff0c;但是对软硬件环境要求高&#xff0c;使用及部署有一定难度&#xff0c;应用受限。相比之下&#xff0c;机器学习效果差一个量级&#xff0c;但是计算量小&#xff0c;计算迅速&#xff0c;部署相对容易&#xff0c;尤其是在一些计算能力…

基于YOLOv5的车辆识别系统

基于YOLOv5的车辆识别系统&#xff08;展示&#xff09; 文章目录 基于YOLOv5的车辆识别系统&#xff08;展示&#xff09;前言车牌识别车型识别 前言 YOLO能实现图像或视频中物体的快速识别&#xff0c;在相同的识别类别范围和识别准确率条件下&#xff0c;YOLO识别速度最快。…

Review of Vehicle Recognition Technology - 车辆识别技术综述

Review of Vehicle Recognition Technology - 车辆识别技术综述 ZHANG Qiang, LI Jiafeng, ZHUO Li Faculty of Information Technology, Beijing University of Technology, Beijing 100124, China 北京工业大学信息学部&#xff0c;北京 100124 Beijing University of Tech…

deeplearning.36车辆识别YOLO算法实践

车辆识别 下载相关资料导入相关包数据集定义YOLO模型细节分类阈值过滤非最大值抑制非最大值抑制函数对所有框进行过滤 测试训练好的yolo模型定义分类、锚框、图像维度加载已经训练好的模型模型的输出转换为边界框过滤锚框实际图像中运行计算图实际预测一下 下载相关资料 下载本…

基于python的transform行人车辆识别

Transformer是一种神经网络体系结构&#xff0c;由于它能够有效地处理顺序数据中的长期依赖性&#xff0c;因此在自然语言处理(NLP)任务中受到欢迎。它还被应用于各种其他任务&#xff0c;包括图像分类、对象检测和语音识别。 在车辆和行人识别方面&#xff0c;transformer可用…

使用Python和docTR提取车辆识别号

VIN&#xff08;车辆识别号&#xff09;是一个17个字符的字符串&#xff0c;由数字和大写字母组成&#xff0c;用作汽车的指纹。 它可以帮助识别任何一辆汽车的寿命&#xff0c;并获得有关它的具体信息。该唯一标识符在制造过程中打印在车辆的某个位置&#xff0c;以便人们在租…

Opencv python之车辆识别项目(附代码)

文章目录 图片车辆识别视频车辆识别 图片车辆识别 根据文章搭建好环境后开始进行做项目link import sys import cv2 from PyQt5.QtGui import * from PyQt5.QtWidgets import * from PyQt5.QtGui import QIcon, QPalette, QPixmap, QBrush, QRegExpValidatorclass mainWin(QW…

java opencv 之车辆识别

上篇写了人脸识别&#xff0c;因为人脸识别的训练模型 haarcascade_frontalface_alt.xml 之类的官方已经训练好了可以直接用&#xff0c;但是我们要识别车辆或者其它物体就得训练模型&#xff0c;好在废了一点力 找到了一位大神训练好的模型 核心代码 几乎和人脸识别的差不多 s…

如何开发一个车牌识别,车牌识别系统,车辆识别系统毕业设计毕设作品

开发准备 第1步&#xff1a;准备好百度智能云的账号 第2步&#xff1a;在百度智能云领取对应AI开发的免费资源包 第3步&#xff1a;创建对应的应用&#xff0c;然后获取对应的开发信息&#xff0c;主要是下面几个 AppID&#xff1a;应用列表中 API Key&#xff1a;应用列表…

车辆识别

一&#xff1a;简介 车牌识别系统(Vehicle License Plate Recognition&#xff0c;VLPR) 是指能够检测到受监控路面的车辆并自动提取车辆牌照信息&#xff08;含汉字字符、英文字母、阿拉伯数字及号牌颜色&#xff09;进行处理的技术。车牌识别是现代智能交通系统中的重要组成…

【OpenCV】 车辆识别 运动目标检测

目录 一&#xff1a;车辆识别 运动目标检测 二&#xff1a;车辆识别实现 超详细步骤解析 步骤一&#xff1a;灰度化处理 步骤二&#xff1a;帧差处理 步骤三&#xff1a;二值化处理 步骤四&#xff1a;图像降噪 4-1 腐蚀处理 目的 去除白色噪点 4-2 膨胀处理 目的 把白…