使用可选组件功能创建 Dataproc 集群时,可以安装 Ranger 等其他组件。本页面介绍了 Ranger 组件。
Apache Ranger 组件是一个开源框架,用于管理 Hadoop 生态系统的权限和审核。Ranger 管理员服务器和网页界面可用于集群第一个主节点上的端口 6080
上。
另请参阅:
安装组件
在创建 Dataproc 集群时安装组件。 组件可添加到使用 Dataproc 版本 1.3 及更高版本创建的 集群中。Ranger 组件需要安装 Solr 组件,如下所示:
如需查看每个 Dataproc 映像版本中包含的组件版本,请参阅支持的 Dataproc 版本。
安装步骤
设置您的 Ranger 管理员密码:
- 将 Cloud KMS CryptoKey Encrypter/Decrypter 角色授予集群服务账号:默认情况下,集群服务账号会设置为 Compute Engine 默认服务账号,该账号的格式如下:
您可以在创建集群时指定其他集群服务账号,见下文。project-number-compute@developer.gserviceaccount.com
- 示例:将 Cloud KMS CryptoKey Encrypter/Decrypter 角色授予 Compute Engine 默认服务账号:
gcloud projects add-iam-policy-binding project-id \ --member=serviceAccount:project-number-compute@developer.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyDecrypter
- 示例:将 Cloud KMS CryptoKey Encrypter/Decrypter 角色授予 Compute Engine 默认服务账号:
- 使用密钥管理服务 (KMS) 密钥加密 Ranger 管理员用户的密码。对于 2.2 之前的映像版本集群,密码必须至少包含 8 个字符,且至少包含一个字母和一个数字字符。对于 2.2 及更高版本的映像版本集群,密码必须至少包含 8 个字符,并且至少包含 1 个大写字母、1 个小写字母和 1 个数字字符。
- 示例:
- 创建密钥环:
gcloud kms keyrings create my-keyring --location=global
- 创建密钥:
gcloud kms keys create my-key \ --location=global \ --keyring=my-keyring \ --purpose=encryption
- 加密您的 Ranger 管理员用户密码:
echo 'my-ranger-admin-password' | \ gcloud kms encrypt \ --location=global \ --keyring=my-keyring \ --key=my-key \ --plaintext-file=- \ --ciphertext-file=admin-password.encrypted
- 创建密钥环:
- 示例:
- 将加密密码上传到项目中的 Cloud Storage 存储分区。
- 示例:
gcloud storage cp admin-password.encrypted gs://my-bucket
- 示例:
- 将 Cloud KMS CryptoKey Encrypter/Decrypter 角色授予集群服务账号:默认情况下,集群服务账号会设置为 Compute Engine 默认服务账号,该账号的格式如下:
创建您的集群:
- 安装 Ranger 组件时,还必须安装 Solr 组件,如下所示。
- Ranger 组件依赖 Solr 组件来存储和查询其审核日志,该日志默认使用 HDFS 作为存储。在删除集群时,HDFS 数据也会被删除。要在 Cloud Storage 上配置 Solr 组件以存储数据(包括 Ranger 审核日志),请在创建集群时使用
dataproc:solr.gcs.path=gs://<bucket>
集群属性。删除集群后,Cloud Storage 数据仍然存在。
- Ranger 组件依赖 Solr 组件来存储和查询其审核日志,该日志默认使用 HDFS 作为存储。在删除集群时,HDFS 数据也会被删除。要在 Cloud Storage 上配置 Solr 组件以存储数据(包括 Ranger 审核日志),请在创建集群时使用
- 通过设置
dataproc:ranger.kms.key.uri
和dataproc:ranger.admin.password.uri
集群属性将 KMS 密钥和密码 Cloud Storage URI 传递给集群创建命令。 - 或者,您可通过设置
dataproc:ranger.db.admin.password.uri
集群属性,通过加密的 Cloud Storage 文件 URI 传递 Ranger 数据库的管理员用户密码。 - 默认情况下,Ranger 组件使用在集群第一个主节点上运行的 MySql 数据库实例。在 MySQL 实例中,通过将变量设置为
ON
来启用log_bin_trust_function_creators
标志。设置此标志可控制是否可以信任存储的函数创建者。成功创建集群并配置 Ranger 后,您可以将log_bin_trust_function_creators
重置为OFF
。 如想在删除集群后保留 Ranger 数据库,请使用 Cloud SQL实例作为外部 MySql 数据库。
- 将
dataproc:ranger.cloud-sql.instance.connection.name
集群属性设置为 Cloud SQL 实例。 - 将
dataproc:ranger.cloud-sql.root.password.uri
集群属性设置为 Cloud SQL 实例的 KMS 密钥加密根密码的 Cloud Storage URI。 - 设置
dataproc:ranger.cloud-sql.use-private-ip
集群属性以指示是否通过专用 IP 与 Cloud SQL 实例连接。
Ranger 组件使用 Cloud SQL 代理连接到 Cloud SQL 实例。如需使用代理:
- 在创建集群时设置
sqlservice.admin
API 范围(请参阅使用 OAuth 2.0 为请求授权)。如果使用的是gcloud dataproc cluster create
命令,请添加--scopes=default,sql-admin
参数。 - 在您的项目中启用 SQL Admin API。
- 确保集群服务账号具有 Cloud SQL Editor 角色。
gcloud 命令
如需创建包含 Ranger 组件的 Dataproc 集群,请使用带有
--optional-components
标志的 gcloud dataproc clusters create cluster-name 命令。gcloud dataproc clusters create cluster-name \ --optional-components=SOLR,RANGER \ --region=region \ --enable-component-gateway \ --properties="dataproc:ranger.kms.key.uri=projects/project-id/locations/global/keyRings/my-keyring/cryptoKeys/my-key,dataproc:ranger.admin.password.uri=gs://my-bucket/admin-password.encrypted" \ ... other flags
REST API
在 SoftwareConfig.Component 字段中指定 Ranger 和 Solr 组件,作为 Dataproc API clusters.create 请求的一部分。您还必须在 SoftwareConfig.Component.properties 字段中设置以下集群属性:
dataproc:ranger.kms.key.uri
: "projects/project-id/locations/global/keyRings/my-keyring/cryptoKeys/my-key"dataproc:ranger.admin.password.uri
: "gs://my-bucket/admin-password.encrypted"
控制台
- 启用组件和组件网关。
- 在 Google Cloud 控制台中,打开 Dataproc 创建集群页面。选中“设置集群”面板。
- 在组件部分中执行以下操作:
- 在“可选组件”下,选择“Ranger”、“Solr”以及其他一些要在集群上安装的可选组件。
- 在“组件网关”下,选择“启用组件网关”(请参阅查看和访问组件网关网址)。
- 将
- 安装 Ranger 组件时,还必须安装 Solr 组件,如下所示。
点击 Web 界面标签页。在组件网关下,点击 Ranger 以打开 Ranger 网页界面。使用 Ranger 管理员用户名(例如“admin”)和密码登录。
Ranger 管理员日志
Ranger 管理员日志可在 Logging 中作为 ranger-admin-root
日志。