您正在查看9.7 -版本的RapidMiner Radoop文档点击这里查看最新版本
配置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用户/通行证进行身份验证,并且不需要进一步配置。
选择启用安全复选框中的安全设置面板。出现了几个新的参数。
为以下参数提供值(面板上的粗体名称表示必填字段):
场 | 描述 |
---|---|
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 . conf 或krb5.ini ).从您的安全管理员处获取此文件。输入或浏览到文件位置。 |
蜂巢主要 | Hive服务的主体。格式为主要[/ > <实例]@ <领域> ,其中primary通常是服务/用户名,instance是主机名,而REALM是Kerberos领域。不要使用_HOST 关键字作为实例。如果Hive没有配置Kerberos,而是使用其他认证机制(例如LDAP),则将此字段保留为空。例子:蜂巢/ node02.www.turtlecreekpls.com@RAPIDMINER.COM 。 |
SASL QoP水平 | SASL防护质量等级。此设置必须与集群设置相同。(要查找集群设置,请查找hive.server2.thrift.sasl.qop 在hive-site.xml ;默认值为“auth”。) |
从Hive中检索主体 | 如果选中,RapidMiner Radoop会自动从Hive中检索所有其他服务主体,以便更轻松地配置。只有在访问其他服务时出现问题时才禁用此设置。如果禁用,则必须按照格式提供以下服务的主体——NameNode主体、资源管理主体、作业历史服务器主体<主要> / <实例>]@ <领域> 。(例如:神经网络/ _HOST@RAPIDMINER.COM ,rm / _HOST@RAPIDMINER.COM ,jhs / _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认证:
- 将Hive Principal字段保留为空,让Hadoop设置LDAP凭据。
- 配置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文件夹。(您可以更改此路径设置)。最佳实践建议由安全管理员创建这些用户目录,确保只有
要启用数据导入文件夹,请执行以下语句:
授予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.partitions 和hive.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选项。