apache sentry安装

来源:互联网 发布:java的数据结构有哪些 编辑:程序博客网 时间:2024/05/01 05:39

环境

Ubuntu STL 16.0.4Hadoop 2.7.4Hive   2.1.1sentry 1.7.0maven  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/sentryexport PATH=$PATH:$SENTRY_HOME/bin

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

运行sentry服务

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

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

运行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.jarsudo ln -s /usr/lcoal/sentry/lib/sentry-binding-hive.jar /usr/lcoal/hive/lib/sentry-binding-hive.jar 

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

mysql -u hive -p hiveshow 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

原创粉丝点击