类别

版本

配置RapidMiner Radoop与Hadoop安全

通常,组织在其集群上实现Hadoop安全性,以防止未经授权的数据访问和其他安全漏洞。尽管Kerberos在各个发行版中广泛用于身份验证,但还有各种其他授权和数据加密技术可用。欲了解更多信息,请阅读RapidMiner的Hadoop的大数据安全OrangePaper。

RapidMiner Radoop目前支持Kerberos身份验证,资料授权Apache哨兵,Apache管理员通过Apache Hive的SQL标准

如果您的Hadoop集群是“Kerberos化”的,那么第三方工具只能通过Kerberos身份验证访问它。在RapidMiner Radoop中,在连接设置窗口。

安全配置需要个人keytab文件或Kerberos密码。控件生成密钥选项卡文件kadmin工具。如果keytab使用256位AES加密,则必须安装Java Cryptography Extension。支持使用Kerberos用户/通行证进行身份验证,并且不需要进一步配置。

  1. 选择启用安全复选框中的安全设置面板。出现了几个新的参数。

  2. 为以下参数提供值(面板上的粗体名称表示必填字段):

描述
Keytab文件 用户keytab文件在客户端机器上的路径。输入或浏览到文件位置。
使用密码代替keytab文件 如果希望使用Kerberos密码进行身份验证,请选中此框。如果选中此选项,密码字段将被启用,Keytab文件字段将被禁用。
密码 客户端主体的Kerberos密码。该值在radoop-connections.xml文件中加密。
客户端主要 访问Hadoop的用户主体。格式为主要[/ > <实例]@ <领域>,其中primary通常是用户名,instance是可选的,REALM是Kerberos领域。例子:用户/ client.www.turtlecreekpls.com@RAPIDMINER.COM).
领域 Kerberos领域。通常是大写字母的域名。例子:RAPIDMINER.COM
KDC地址 Kerberos密钥分发中心地址。例子:kdc.www.turtlecreekpls.com
Kerberos配置文件 为了避免运行RapidMiner的机器与Hadoop集群之间的配置差异,最好提供Kerberos配置文件(通常为krb5 . confkrb5.ini).从您的安全管理员处获取此文件。输入或浏览到文件位置。
蜂巢主要 Hive服务的主体。格式为主要[/ > <实例]@ <领域>,其中primary通常是服务/用户名,instance是主机名,而REALM是Kerberos领域。不要使用_HOST关键字作为实例。如果Hive没有配置Kerberos,而是使用其他认证机制(例如LDAP),则将此字段保留为空。例子:蜂巢/ node02.www.turtlecreekpls.com@RAPIDMINER.COM
SASL QoP水平 SASL防护质量等级。此设置必须与集群设置相同。(要查找集群设置,请查找hive.server2.thrift.sasl.qophive-site.xml;默认值为“auth”。)
从Hive中检索主体 如果选中,RapidMiner Radoop会自动从Hive中检索所有其他服务主体,以便更轻松地配置。只有在访问其他服务时出现问题时才禁用此设置。如果禁用,则必须按照格式提供以下服务的主体——NameNode主体、资源管理主体、作业历史服务器主体<主要> / <实例>]@ <领域>。(例如:神经网络/ _HOST@RAPIDMINER.COMrm / _HOST@RAPIDMINER.COMjhs / _HOST@RAPIDMINER.COM分别)。你可以使用_HOST关键字作为实例。

要配置RapidMiner Server的Hadoop连接,请按照RapidMiner Radoop Server安装指南

  • 如果使用keytab文件进行身份验证和Keytab文件Kerberos配置文件驻留在RapidMiner服务器的不同路径上,更新中的字段radoop_connections.xml
  • 使用Kerberos密码时,可能需要手动编辑radoop_connections.xml文件在多用户环境中的服务器上。

请注意: Impala连接也可以启用Kerberos认证。在这种情况下,提供Impala Principal而不是Hive Principal。使用Impala时不支持其他服务主体的自动检索,因此这些主体也必须在接口上提供。

请注意:由于Spark只支持keytab文件,因此使用Kerberos密码认证可能导致长时间运行的Spark进程无法重新登录。使用更长的Kerberos票据过期时间可能是解决此问题的一种方法。

并发请求

当在RapidMiner Studio上使用RapidMiner Radoop时,它不能与具有不同安全设置的集群并发通信。例如,当进程运行在安全的Hadoop集群上时,不能使用Hadoop数据视图以调查来自另一个集群的数据。当在RapidMiner服务器上使用RapidMiner Radoop时,所有并发运行的进程必须使用相同的安全设置。为了避免任何潜在的并发问题,我们建议为每个安全Hadoop集群使用单独的RapidMiner服务器。有关使用RapidMiner Server保护集群的并发请求的更多信息,请参见在服务器上安装Radoop页面。

RapidMiner Radoop支持对Hive的LDAP认证,而其他服务可以使用Kerberos认证访问。请按照以下步骤配置Hive的LDAP认证:

  1. 将Hive Principal字段保留为空,让Hadoop设置LDAP凭据。
  2. 配置Hive Username和Password字段的用户凭据。

Apache哨兵为存储在Hadoop集群上的数据提供细粒度的、基于角色的授权。这是一种常见的Cloudera集群授权工具(以及其他发行版)。下面的步骤配置Apache Sentry,使RapidMiner Radoop的全部功能可用。

创建RapidMiner Radoop角色

要启用所有RapidMiner Radoop功能,请在Sentry中创建一个或多个可以应用于所有用户的角色。因为哨兵角色只能授予给组,所以最佳实践建议所有RapidMiner Radoop用户属于同一个组。

执行以下语句创建角色,并将角色分配给RapidMiner用户组。对于本节的其余部分,我们将假设radoop_user_role分配给单个RapidMiner用户,其他用户有自己的角色。

创建角色radoop_user_role为组group1授权radoop_user_role;

启用RapidMiner Radoop临时表

RapidMiner Radoop不仅仅是一个使用Hive作为数据源的简单BI工具,它还是一个使用Hadoop作为执行环境的高级分析工具。RapidMiner Radoop将任务和查询推送到集群,以便在Hadoop中执行。为了支持复杂的分析工作流程,RapidMiner Radoop必须能够创建新表并在Hive中存储临时结果。

在使用Sentry时,您需要数据库的所有权限才能创建新表。对于具有细粒度安全设置的共享数据库,授予所有权限可能是不可行的。在这些情况下,为RapidMiner Radoop用户创建一个沙盒数据库,并将必要的输入表作为视图添加到沙盒数据库中。

执行如下语句创建数据库:

创建radoop_user_sandbox数据库将数据库radoop_user_sandbox的所有权限授予radoop_user_role;

对于从其他数据库添加的每个输入表,执行以下语句:

创建视图radoop_user_sandbox。SELECT * FROM other_database.table1;

启用RapidMiner Radoop数据导入功能

RapidMiner可以连接到许多不同的数据源(数据库、noSQL数据存储、云服务、多种文件格式等),并可以将这些数据集导入Hive。在导入过程中,以及在任何其他内部数据具体化步骤中,RapidMiner Radoop使用/ tmp / radoop / <用户名>HDFS文件夹。(您可以更改此路径设置)。最佳实践建议由安全管理员创建这些用户目录,确保只有和Hive用户对其具有所有权限。应该拒绝所有其他用户访问此目录。

要启用数据导入文件夹,请执行以下语句:

授予URI "hdfs:///tmp/radoop//"的所有权限给ROLE radoop_user_role;授予URI "hdfs:///tmp/radoop//"上的所有权限给ROLE radoop_user_role;

取代< fs.defaultFS >通过名称服务名称或< namenode:端口地址>,并替换<用户名>以Hadoop集群的用户名登录。

如果您更改了默认的RapidMiner Radoop临时目录(/ tmp / radoop /),更改上述语句。

启用RapidMiner Radoop udf

Rapidminer Radoop在Hive查询中使用自定义UDF执行。在禁用Sentry的情况下,JAR文件被上传到HDFS, udf是基于这些JAR构建的。启用后,Sentry将禁用从上传到HDFS的jar中定义和执行udf的功能。在这种情况下,必须将jar添加到HiveServer2的本地文件系统中,并将它们添加到Hive类路径中。

要在启用了Sentry的Rapidminer Radoop中支持udf,请遵循手动安装RapidMiner Radoop功能“操作与维护”页签。

看到Cloudera文档以获取udf和Sentry设置的更详细描述。

下面的设置允许使用RapidMiner RadoopApache管理员。此授权用于Hive 0.13及以上版本,并且是一个典型的设置与Hortonworks分布

启用RapidMiner Radoop临时表

当使用Ranger时,您需要数据库的所有权限才能创建新表。对于具有细粒度安全设置的共享数据库,授予所有权限可能是不可行的。在这些情况下,为RapidMiner Radoop用户创建一个沙盒数据库,并将必要的输入表作为视图添加到沙盒数据库中。

执行如下语句创建数据库:

创建radoop_user_sandbox数据库

创建一个Ranger Hive Policy,允许该用户对该数据库的所有表进行所有操作。

对于从其他数据库添加的每个输入表,执行以下语句:

创建视图radoop_user_sandbox。SELECT * FROM other_database.table1;

启用RapidMiner Radoop udf

Rapidminer Radoop在Hive查询中使用自定义UDF执行。在不使用Ranger的情况下,JAR文件被上传到HDFS, udf是基于这些JAR构建的。可以通过创建Ranger Hive Policy来保持这种行为,该策略允许为用户执行该数据库的所有udf。在这种情况下,当您升级到新的RapidMiner Radoop版本时,udf会自动升级。如果由于任何原因无法设置策略,请参阅手动安装RapidMiner Radoop功能节,在集群上手动安装udf。

在Ambari Web界面上设置UDF策略(手动安装功能时不需要):

访问其他HDFS目录

创建一个Ranger HDFS Policy,允许任何HDFS操作在用户的主目录下(在我们的例子中是rapidminer用户)。如果您正在使用SPARK,并且SPARK Assembly位于HDFS上(例如在/ user /火花文件夹),那么这个用户也需要访问这个文件夹。

还请注意,RapidMiner Radoop必须能够创建一个HDFS目录来存储其临时文件。默认路径为/ tmp / radoop。可以通过更改以下内容来更改此路径财产rapidminer.radoop.hdfs_directory

创建/删除功能

Rapidminer Radoop在Hive查询中使用自定义udf。创建这些功能需要将用户包含在admin策略中,否则永久性功能必须由管理员手动创建。有关创建这些函数的更多信息,请参见手动安装RapidMiner Radoop功能“操作与维护”页签。

下面的设置允许使用RapidMiner Radoop基于SQL标准的Hive授权。此授权用于Hive 0.13及以上版本,并且是Hortonworks发行版的典型设置。

Hive命令和语句限制

为了在集群上完全运行,RapidMiner Radoop需要通过HiveServer2服务修改某些属性的权限。这些属性只影响RapidMiner客户端与Hadoop集群的交互,不影响任何其他可能使用HiveServer2服务的应用程序。使用hive.security.authorization.sqlstd.confwhitelist.append属性(定义见下文),以启用设置内置白名单中定义的属性之外的其他属性(参见蜂巢- 8534).为启用的属性使用正则表达式(参见蜂巢- 8937).

如果该属性在集群上为空,则下面显示的值是完整RapidMiner Radoop功能的必要条件。如果它已经有一个值,那么应该完成它的正则表达式以包含以下值。更改此属性需要重新启动Hive服务。

hive.security.authorization.sqlstd.confwhitelist.append到以下(属性值不能包含空格):

radoop \ .operation \ .id | mapred \ .job \ . name |蜂巢\ .warehouse \ .subdir \ .inherit \ .perms |蜂巢\ .exec \ .max \ .dynamic \ .partitions |蜂巢\ .exec \ .max \ .dynamic \ .partitions \ .pernode |火花\ .app \ . name |蜂巢\ .remove \ .orderby \在\ .subquery

下表包含上述正则表达式定义的属性列表。该表描述了每个属性以及RapidMiner Radoop可能为其设置的值。它还描述了软件如何使用这些属性。请注意,您不必设置这些属性,该表只列出了上面regexp启用的属性。

属性名 可能的值 描述
radoop.operation.id 随机的id 帮助识别属于某个Hive查询的MapReduce任务。大多数RapidMiner Radoop操作符都被转换成HiveQL查询。这些查询通常会被转换成MapReduce代码。当RapidMiner用户停止一个进程时,相应的MapReduce作业将被杀死。该软件使用此属性来查找应该杀死哪个作业(由用户拥有)。不是Hadoop内置属性,这对Hadoop代码没有影响。
mapred.job.name 作业名 设置当前HiveQL查询转换为的MapReduce作业的名称。RapidMiner Radoop将作业设置为当前操作符名称,允许用户轻松查看当前在集群上运行的操作符。
hive.warehouse.subdir.inherit.perms 真正的 确保文件系统权限继承父用户目录权限。当数据在Hadoop组件之间传输时(例如Hive和(自定义)MapReduce / Pig / Spark之间),Hive表可能会在HDFS的user目录中创建,但在Hive仓库目录之外。
hive.exec.max.dynamic.partitionshive.exec.max.dynamic.partitions.pernode 自定义设置 允许RapidMiner Radoop使用动态分区。当用户将数据存储在分区表中,或者在典型的数据挖掘工作流(例如Split Validation)中使用Hive分区对数据进行分区时,这可能是必要的。在这些情况下,您可以使用高级参数来覆盖集群端动态分区的默认限制。
spark.app.name 作业名 对于Hive on Spark,设置当前HiveQL查询转换为的Spark作业的名称。
hive.remove.orderby.in.subquery 真正的 如果设置为true,则将删除子查询和视图中的无限制order/sort by。(蜂巢v3.0.0)

启用RapidMiner Radoop临时表

RapidMiner Radoop不仅仅是一个使用Hive作为数据源的简单BI工具,它还是一个使用Hadoop作为执行环境的高级分析工具。RapidMiner Radoop将任务和查询推送到集群,以便在Hadoop中执行。为了支持复杂的分析工作流程,RapidMiner Radoop必须能够创建新表并在Hive中存储临时结果。

如果Hive用户没有CREATE TABLE或CREATE VIEW权限,或者你不希望允许在所选的Hive数据库中创建对象,为RapidMiner Radoop创建一个沙盒数据库:

  • 只对所选对象提供SELECT权限other_database源对象。
  • 创建特定于用户的沙箱数据库(例如,radoop_user_sandbox),由Hive用户所有。
  • 在沙箱数据库中创建视图other_database表和视图(例如,创建视图radoop_user_sandbox。SELECT * FROM other_database.table1;

创建/删除功能

RapidMiner Radoop使用自定义Hive udf。创建或注册这些函数需要管理的角色。否则,永久功能必须由管理员手动创建。更多的信息可以在手动安装RapidMiner Radoop功能“操作与维护”页签。在执行该页描述的函数创建语句之前,请确保已执行以下命令以获取admin角色。

设置管理员角色

RapidMiner Radoop支持HDFS加密,但有以下限制:

  • 如果Radoop HDFS目录位于加密区,也就是用户连接到蜂巢数据库Radoop使用的加密密钥必须具有访问权限。此外,该目录必须与Hive数据库目录位于同一加密区域。
  • 当删除存储在加密区的Hive表时,应该使用清洗选择:

    删除表

    一些Radoop操作符也执行DROP TABLE查询,这些查询有一个复选框参数,启用PURGE选项。