As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Plugin Apache Spark para integração do Ranger com a Amazon EMR
EMRA Amazon se integrou EMR RecordServer para fornecer controle de acesso refinado para o Spark. SQL EMR's RecordServer é um processo privilegiado executado em todos os nós em um cluster habilitado para Apache Ranger. Quando um driver ou executor do Spark executa uma SQL instrução do Spark, todos os metadados e solicitações de dados passam pelo. RecordServer Para saber mais EMR RecordServer, consulte a EMRComponentes da Amazon para uso com o Apache Ranger página.
Tópicos
Recursos compatíveis
SQLDeclaração/ação do ranger | STATUS | EMRVersão suportada |
---|---|---|
SELECT |
Compatível |
A partir da 5.32 |
SHOW DATABASES |
Compatível |
A partir da 5.32 |
SHOW COLUMNS |
Compatível |
A partir da 5.32 |
SHOW TABLES |
Compatível |
A partir da 5.32 |
SHOW TABLE PROPERTIES |
Compatível |
A partir da 5.32 |
DESCRIBE TABLE |
Compatível |
A partir da 5.32 |
INSERT OVERWRITE |
Compatível |
A partir da 5.34 e 6.4 |
INSERT INTO | Compatível | A partir da 5.34 e 6.4 |
ALTER TABLE |
Compatível |
A partir da 6.4 |
CREATE TABLE |
Compatível |
A partir da 5.35 e 6.7 |
CREATE DATABASE |
Compatível |
A partir da 5.35 e 6.7 |
DROP TABLE |
Compatível |
A partir da 5.35 e 6.7 |
DROP DATABASE |
Compatível |
A partir da 5.35 e 6.7 |
DROP VIEW |
Compatível |
A partir da 5.35 e 6.7 |
CREATE VIEW |
Não suportado |
Os seguintes recursos são compatíveis ao usar o Spark: SQL
-
Controle de acesso refinado em tabelas dentro do Hive Metastore, e é possível criar políticas em nível de banco de dados, tabela e coluna.
-
As políticas do Apache Ranger podem incluir políticas de concessão e políticas de negação para usuários e grupos.
-
Os eventos de auditoria são enviados para o CloudWatch Logs.
Reimplante a definição de serviço para usar INSERTALTER, ou instruções DDL
nota
A partir do Amazon EMR 6.4, você pode usar o Spark SQL com as declarações: INSERTINTO, INSERTOVERWRITE, ou. ALTER TABLE A partir do Amazon EMR 6.7, você pode usar o Spark SQL para criar ou eliminar bancos de dados e tabelas. Se você já tiver uma instalação no servidor Apache Ranger com definições de serviço Apache Spark implantadas, use o código a seguir para reimplantar as definições de serviço.
# Get existing Spark service definition id calling Ranger REST API and JSON processor curl --silent -f -u
<admin_user_login>
:<password_for_ranger_admin_user>
\ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -k 'https://*<RANGER SERVER ADDRESS>
*:6182/service/public/v2/api/servicedef/name/amazon-emr-spark' | jq .id # Download the latest Service definition wget https://s3.amazonaws.com/elasticmapreduce/ranger/service-definitions/version-2.0/ranger-servicedef-amazon-emr-spark.json # Update the service definition using the Ranger REST API curl -u<admin_user_login>
:<password_for_ranger_admin_user>
-X PUT -d @ranger-servicedef-amazon-emr-spark.json \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -k 'https://*<RANGER SERVER ADDRESS>
*:6182/service/public/v2/api/servicedef/<Spark service definition id from step 1>
'
Instalação da definição de serviço
A instalação da definição EMR do serviço Apache Spark exige que o servidor Ranger Admin seja configurado. Consulte Configure um servidor Ranger Admin para integração com a Amazon EMR.
Siga estas etapas para instalar a definição de serviço Apache Spark:
Etapa 1: SSH no servidor Apache Ranger Admin
Por exemplo:
ssh ec2-user@ip-xxx-xxx-xxx-xxx.ec2.internal
Etapa 2: baixar a definição de serviço e o plug-in do servidor Apache Ranger Admin
Em um diretório temporário, baixe a definição de serviço. Essa definição de serviço é compatível com as versões Ranger 2.x.
mkdir /tmp/emr-spark-plugin/ cd /tmp/emr-spark-plugin/ wget https://s3.amazonaws.com/elasticmapreduce/ranger/service-definitions/version-2.0/ranger-spark-plugin-2.x.jar wget https://s3.amazonaws.com/elasticmapreduce/ranger/service-definitions/version-2.0/ranger-servicedef-amazon-emr-spark.json
Etapa 3: instalar o plug-in Apache Spark para Amazon EMR
export RANGER_HOME=.. # Replace this Ranger Admin's home directory eg /usr/lib/ranger/ranger-2.0.0-admin mkdir $RANGER_HOME/ews/webapp/WEB-INF/classes/ranger-plugins/amazon-emr-spark mv ranger-spark-plugin-2.x.jar $RANGER_HOME/ews/webapp/WEB-INF/classes/ranger-plugins/amazon-emr-spark
Etapa 4: registrar a definição do serviço Apache Spark para a Amazon EMR
curl -u *<admin users login>*:*_<_**_password_ **_for_** _ranger admin user_**_>_* -X POST -d @ranger-servicedef-amazon-emr-spark.json \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -k 'https://*<RANGER SERVER ADDRESS>*:6182/service/public/v2/api/servicedef'
Se esse comando for executado com êxito, você verá um novo serviço em sua interface de usuário do Ranger Admin chamado "AMAZON- EMR - SPARK “, conforme mostrado na imagem a seguir (a versão 2.0 do Ranger é mostrada).
Etapa 5: criar uma instância do AMAZON-EMR-SPARK aplicativo
Nome do serviço (se for exibido): o nome do serviço que será usado. O valor sugerido é amazonemrspark
. Anote esse nome de serviço, pois ele será necessário ao criar uma configuração EMR de segurança.
Nome de exibição: o nome a ser exibido para a instância. O valor sugerido é amazonemrspark
.
Nome comum para certificado: o campo CN dentro do certificado usado para se conectar ao servidor de administração com base em um plug-in cliente. Esse valor deve corresponder ao campo CN em seu TLS certificado que foi criado para o plug-in.
nota
O TLS certificado desse plug-in deveria ter sido registrado no armazenamento confiável do servidor Ranger Admin. Consulte TLScertificados para integração do Apache Ranger com a Amazon EMR para obter mais detalhes.
Criação de políticas do Spark SQL
Ao criar uma nova política, os campos a serem preenchidos são:
Nome da política: o nome da política.
Rótulo de política: um rótulo que você pode colocar na política.
Banco de dados: o banco de dados ao qual a política se aplica. O caractere curinga “*” representa todos os bancos de dados.
Tabela: as tabelas às quais a política se aplica. O caractere curinga “*” representa todas as tabelas.
EMRColuna do Spark: as colunas às quais essa política se aplica. O caractere curinga “*” representa todas as colunas.
Descrição: uma descrição da política.
Para especificar usuários e grupos, insira os usuários e grupos abaixo para conceder permissões. Também é possível especificar exclusões para as condições de permissão e negação.
Após especificar as condições de permitir e negar, clique em Salvar.
Considerações
Cada nó dentro do EMR cluster deve ser capaz de se conectar ao nó principal na porta 9083.
Limitações
Estas são as limitações atuais do plug-in Apache Spark:
-
O Record Server sempre se conectará à HMS execução em um EMR cluster da Amazon. Configure HMS para se conectar ao Modo Remoto, se necessário. Você não deve colocar valores de configuração no arquivo de configuração Hive-site.xml do Apache Spark.
-
Tabelas criadas usando fontes de dados do Spark no CSV ou Avro não podem ser lidas usando. EMR RecordServer Utilize o Hive para criar e gravar dados e ler usando Record.
-
As mesas Delta Lake, Hudi e Iceberg não são suportadas.
-
Os usuários precisam ter acesso ao banco de dados padrão. Esse é um requisito do Apache Spark.
-
O servidor Ranger Admin não oferece suporte ao preenchimento automático.
-
O SQL plug-in Spark para Amazon EMR não oferece suporte a filtros de linha ou mascaramento de dados.
-
Ao usar ALTER TABLE com o SparkSQL, um local de partição deve ser o diretório filho de um local de tabela. Não há suporte para inserção de dados em uma partição em que a localização da partição seja diferente da localização da tabela.