Plug-in Apache Spark - Amazon EMR

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á.

Plug-in Apache Spark

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 página.

Atributos 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

Sem suporte

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 Configurar o servidor do Ranger Admin.

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 a 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).

“AMAZON- EMR -SPARK" registrado no Ranger Admin.

Etapa 5: criar uma instância do SPARK aplicativo AMAZON EMR - -

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.

O Ranger Admin cria o serviço.
nota

O TLS certificado desse plug-in deveria ter sido registrado no armazenamento confiável do servidor Ranger Admin. Consulte TLScertificados 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.

O administrador do Ranger cria detalhes da SQL política do Spark.

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.

Os detalhes da SQL política do Ranger Admin Spark permitem condições.

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.

  • Não há suporte para tabelas Delta Lake e Hudi.

  • 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.