Use o Azure Toolkit for Eclipse para criar aplicativos do Apache Spark para um cluster do HDInsight

Use o HDInsight Tools no Azure Toolkit para Eclipse para desenvolver aplicativos do Apache Spark escritos na Scala e enviá-los para um cluster do Azure HDInsight Spark diretamente do Eclipse IDE. Você pode usar o plug-in Ferramentas do HDInsight de algumas maneiras diferentes:

  • Para desenvolver e enviar um aplicativo Scala Spark em um cluster HDInsight Spark.
  • Para acessar os recursos de cluster do Azure HDInsight Spark.
  • Para desenvolver e executar um aplicativo Scala Spark localmente.

Pré-requisitos

Instalar os plug-ins necessários

Instalar o Azure Toolkit for Eclipse

Para obter instruções de instalação, consulte Instalando o Kit de Ferramentas do Azure para Eclipse.

Instalar o plug-in Scala

Quando você abre o Eclipse, as ferramentas do HDInsight detectam automaticamente se você instalou o plug-in Scala. Selecione OK para continuar e, em seguida, siga as instruções para instalar o plug-in Eclipse Marketplace. Reinicie o IDE após a conclusão da instalação.

Automatic installation of the Scala plug-in.

Confirmar plug-ins

  1. Navegue até Ajuda>Marketplace do Eclipse... .

  2. Selecione a guia Instalado.

  3. Você deve ver pelo menos:

    • <Versão> do Azure Toolkit for Eclipse.
    • <Versão> do IDE Scala.

Entre em sua assinatura do Azure

  1. Inicie o IDE do Eclipse.

  2. Navegue até Janela>Mostrar Exibição>Outro...>Entrar... .

  3. Na caixa de diálogo Mostrar Exibição, navegue até Azure>Azure Explorer e, em seguida, selecione Abrir.

    Apache Spark Eclipse show view.

  4. No Azure Explorer, clique com o botão direito do mouse no nó Azure e, em seguida, selecione Entrar.

  5. Na caixa de diálogo Entrada do Azure, escolha o método de autenticação, selecione Entrar e conclua o processo de entrada.

    Apache Spark Eclipse Azure Sign.

  6. Após a entrada, a caixa de diálogo Suas Assinaturas listará todas as assinaturas do Azure associadas às credenciais. Pressione Selecionar para fechar a caixa de diálogo.

    Select Subscriptions dialog box.

  7. Em Azure Explorer, navegue até Azure>HDInsight para ver os clusters Spark do HDInsight da sua assinatura.

    HDInsight Spark clusters in Azure Explorer3.

  8. Além disso, você pode expandir um nó de nome de cluster para ver os recursos (por exemplo, contas de armazenamento) associados ao cluster.

    Expanding a cluster name to see resources.

Você pode vincular um cluster normal usando o nome de usuário gerenciado do Ambari. Da mesma forma, para um cluster HDInsight ingressado no domínio, crie o vínculo usando o domínio e o nome de usuário, como user1@contoso.com.

  1. No Azure Explorer, clique com o botão direito do mouse em HDInsight e selecione Vincular um Cluster.

    Azure Explorer link cluster menu.

  2. Insira o Nome do Cluster, o Nome de Usuário e a Senha e selecione OK. Opcionalmente, insira a Conta de Armazenamento, Chave de Armazenamento e, em seguida, selecione o Contêiner de Armazenamento para o Gerenciador de armazenamento trabalhar no modo de exibição de árvore à esquerda

    Link New HDInsight cluster dialog.

    Observação

    Usamos a chave de armazenamento vinculada, nome de usuário e senha, se o cluster registrou na assinatura do Azure e vinculou um cluster. Azure Explorer storage accounts.

    Para o usuário que usa somente teclado, quando o foco atual está na Chave de Armazenamento, você precisa usar Ctrl + Tab para focalizar no próximo campo da caixa de diálogo.

  3. Você pode ver o cluster vinculado no HDInsight. Agora, você pode enviar um aplicativo para esse cluster vinculado.

    Azure Explorer hdi linked cluster.

  4. Também é possível desvincular um cluster a partir do Azure Explorer.

    Azure Explorer unlinked cluster.

Configurar um projeto Spark Scala para um cluster HDInsight Spark

  1. No workspace do IDE do Eclipse, selecione Arquivo>Novo>Projeto... .

  2. No assistente Novo Projeto, selecione Projeto HDInsight>Spark no HDInsight (Scala) . Em seguida, selecione Avançar.

    Selecting the Spark on HDInsight (Scala) project.

  3. Na caixa de diálogo Novo Projeto do HDInsight Scala, forneça os seguintes valores e selecione Avançar:

    • Insira um nome para o projeto.
    • Na área JRE, verifique se Usar um ambiente de execução JRE está definido como JavaSE-1.7 ou posterior.
    • Na área Biblioteca do Spark, você pode escolher a opção Usar o Maven para configurar o SDK do Spark. Nossa ferramenta integra a versão apropriada para o SDK do Spark e o SDK do Scala. Você também pode escolher a opção Adicionar o SDK do Spark manualmente, baixar e adicionar o SDK do Spark manualmente.

    New HDInsight Scala Project dialog box.

  4. Na próxima caixa de diálogo, examine os detalhes e depois selecione Concluir.

Criar um aplicativo Scala para cluster Spark no HDInsight

  1. No Explorador de Pacotes, expanda o projeto que você criou anteriormente. Clique com o botão direito do mouse em src, selecione Novo>Outro... .

  2. Na caixa de diálogo Selecionar um assistente, expanda Assistentes Scala>Objeto Scala. Em seguida, selecione Avançar.

    Select a wizard Create a Scala Object.

  3. Na caixa de diálogo Criar Novo Arquivo, insira um nome para o objeto e selecione Concluir. Um editor de texto será aberto.

    New File Wizard Create New File.

  4. No editor de texto, substitua o conteúdo atual pelo código abaixo:

    import org.apache.spark.SparkConf
    import org.apache.spark.SparkContext
    
    object MyClusterApp{
        def main (arg: Array[String]): Unit = {
        val conf = new SparkConf().setAppName("MyClusterApp")
        val sc = new SparkContext(conf)
    
        val rdd = sc.textFile("wasbs:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv")
    
        //find the rows that have only one digit in the seventh column in the CSV
        val rdd1 =  rdd.filter(s => s.split(",")(6).length() == 1)
    
        rdd1.saveAsTextFile("wasbs:///HVACOut")
        }
    }
    
  5. Execute o aplicativo em um cluster HDInsight Spark:

    a. No Explorador de Pacotes, clique com o botão direito do mouse no nome do projeto e escolha Enviar Aplicativo Spark para HDInsight.

    b. Na caixa de diálogo Envio do Spark, forneça os valores a seguir e selecione Enviar:

    • Para Nome do Cluster, selecione o cluster HDInsight Spark no qual você deseja executar o aplicativo.

    • Selecione um artefato do projeto Eclipse ou selecionar uma opção do disco rígido. O valor padrão depende do item no qual você clica com o botão direito do mouse por meio do Gerenciador de Pacotes.

    • Na lista suspensa Nome de classe principal, o assistente de envio exibe todos os nomes de objeto do projeto. Selecione ou insira um que você deseja executar. Se tiver selecionado um artefato de um disco rígido, você deverá inserir o nome de classe principal manualmente.

    • Como o código do aplicativo neste exemplo não exige argumentos de linha de comando ou JARs ou arquivos de referência, você pode deixar as caixas de texto restantes vazias.

      Apache Spark Submission dialog box.

  6. A guia Envio de Spark deve começar a exibir o progresso. Você pode interromper o aplicativo selecionando o botão vermelho na janela Envio do Spark. Você também pode exibir os logs para essa execução de aplicativo específica selecionando o ícone de globo (indicado pela caixa azul na imagem).

    Apache Spark Submission window.

Acessar e gerenciar clusters HDInsight Spark usando as Ferramentas do HDInsight no Kit de Ferramentas do Azure para Eclipse

Você pode executar várias operações usando as Ferramentas do HDInsight, incluindo o acesso à saída do trabalho.

Acessar a exibição do trabalho

  1. No Azure Explorer, expanda HDInsight, expanda o nome do cluster Spark e escolha Trabalhos.

    Azure Explorer Eclipse job view node.

  2. Selecione o nó Trabalhos. Se a versão do Java é menor do que 1.8, as Ferramentas do HDInsight lembram você automaticamente de instalar o plug-in E(fx)clipse. Selecione OK para continuar e, em seguida, siga o assistente para instalá-lo do Eclipse Marketplace e reiniciar o Eclipse.

    Install missing plugin E(fx)clipse.

  3. Abra a Exibição de Trabalho do nó Trabalhos. No painel direito, a guia Exibição de Trabalho do Spark exibe todos os aplicativos que foram executados no cluster. Selecione o nome do aplicativo do qual você deseja ver mais detalhes.

    Apache Eclipse view job logs details.

    Você pode executar uma das seguintes ações:

    • Passe o mouse sobre o grafo de trabalho. Ele exibe informações básicas sobre o trabalho em execução. Selecione o grafo de trabalho e você poderá ver os estágios e as informações que cada trabalho gera.

      Apache Spark job graph stage info.

    • Selecione a guia Log para exibir logs usados frequentemente, como Stderr do Driver, Stdout do Driver e Informações do diretório.

      Apache Spark Eclipse job log info.

    • Abra a IU do histórico do Spark e a IU do Apache Hadoop YARN (no nível do aplicativo) selecionando os hiperlinks na parte superior da janela.

Acessar o contêiner de armazenamento do cluster

  1. No Azure Explorer, expanda o nó raiz HDInsight para ver uma lista de clusters HDInsight Spark disponíveis.

  2. Expanda o nome do cluster para ver a conta de armazenamento e o contêiner de armazenamento padrão do cluster.

    Storage account and default storage container.

  3. Selecione o nome do contêiner de armazenamento associado ao cluster. No painel direito, clique duas vezes na pasta HVACOut. Abra um dos arquivos part- para ver a saída do aplicativo.

Acessar o servidor de histórico do Spark

  1. No Azure Explorer, clique com o botão direito do mouse no nome do cluster Spark e escolha Abrir a Interface do Usuário de Histórico do Spark. Quando solicitado, insira as credenciais de administrador para o cluster. Elas foram especificadas no provisionamento do cluster.

  2. No painel do Servidor de Histórico do Spark, procure o aplicativo que você acabou de executar usando o nome do aplicativo. No código anterior, você definiu o nome do aplicativo usando val conf = new SparkConf().setAppName("MyClusterApp"). Dessa forma, o nome do aplicativo Spark era MyClusterApp.

Iniciar o portal do Apache Ambari

  1. No Azure Explorer, clique com o botão direito do mouse no nome do cluster Spark e escolha Abrir o Portal de Gerenciamento do Cluster (Ambari).

  2. Quando solicitado, insira as credenciais de administrador para o cluster. Elas foram especificadas no provisionamento do cluster.

Gerenciar assinaturas do Azure

Por padrão, a Ferramenta do HDInsight no Kit de Ferramentas do Azure para Eclipse lista os clusters Spark de todas as assinaturas do Azure. Se for necessário, você poderá especificar as assinaturas para as quais deseja acessar o cluster.

  1. No Azure Explorer, clique com o botão direito do mouse no nó-raiz Azure e selecione Gerenciar Assinaturas.

  2. Na caixa de diálogo, desmarque as caixas de seleção da assinatura que você não deseja acessar e selecione Fechar. Você também poderá escolher Sair se quiser sair da sua assinatura do Azure.

Executar um aplicativo Scala Spark localmente

Você pode usar as Ferramentas do HDInsight no Kit de Ferramentas do Azure para Eclipse para executar aplicativos Spark Scala localmente em sua estação de trabalho. Normalmente, esses aplicativos não precisam acessar recursos de cluster como um contêiner de armazenamento e você pode executá-los e testá-los localmente.

Pré-requisito

Durante a execução do aplicativo Spark Scala local em um computador Windows, você pode receber uma exceção, conforme explicado em SPARK-2356. Essa exceção ocorre porque WinUtils.exe está ausente no Windows.

Para resolver esse erro, você precisa baixar Winutils.exe para um local como C:\WinUtils\bin e, depois, adicionar a variável de ambiente HADOOP_HOME e definir o valor da variável como C\WinUtils.

Executar um aplicativo Scala Spark local

  1. Inicie o Eclipse e crie um projeto. Na caixa de diálogo Novo Projeto, faça as opções a seguir e selecione Avançar.

  2. No assistente Novo Projeto, selecione Projeto HDInsight>Amostra de Execução Local do Spark no HDInsight (Scala) . Em seguida, selecione Avançar.

    New project selects a wizard dialog.

  3. Para fornecer os detalhes do projeto, siga as etapas 3 a 6 da seção anterior Configurar um projeto de Spark Scala para um cluster HDInsight Spark.

  4. O modelo adiciona um código de exemplo (LogQuery) na pasta src que pode ser executada localmente em seu computador.

    Location of LogQuery local scala application.

  5. Clique com o botão direito do mouse em LogQuery.scala e selecione Executar Como>1 Aplicativo Scala. Uma saída como essa é exibida na guia Console:

    Spark application local run result.

Função somente leitura

Quando os usuários enviam um trabalho a um cluster com permissão de função somente leitura, as credenciais do Ambari são solicitadas.

  1. Entrar com conta com função somente leitura.

  2. No Azure Explorer, expanda HDInsight para exibir os clusters do HDInsight em sua assinatura. Os clusters marcados "Role:Reader" só tem permissão para a função somente leitura.

    HDInsight Spark clusters in Azure Explorer role reader.

  3. Clique com botão direito do mouse no cluster com permissão para a função somente leitura. Selecione Vincular este cluster no menu de contexto para vincular o cluster. Insira o nome de usuário e a senha do Ambari.

    HDInsight Spark clusters in Azure Explorer link.

  4. Se o cluster for vinculado com êxito, o HDInsight será atualizado. O estágio do cluster será se tornará vinculado.

    HDInsight Spark clusters in Azure Explorer linked.

  1. Clique no nó Trabalhos, a janela Acesso negado ao cluster Trabalhos é exibida.

  2. Clique em Vincular este cluster para vincular o cluster.

    HDInsight Spark clusters in Azure Explorer9.

  1. Crie um Projeto HDInsight.

  2. Clique com o botão direito do mouse no pacote. Em seguida, selecione Enviar Aplicativo Spark para o HDInsight.

    HDInsight Spark clusters in Azure Explorer submit.

  3. Selecione um cluster que tem a permissão de função somente leitura, para Nome do Cluster. A mensagem de aviso é mostrada. Você pode clicar em Vincular este cluster para vincular o cluster.

    HDInsight Spark clusters in Azure Explorer link this.

Exibir Contas de Armazenamento

  • Para clusters com permissão de função somente leitura, clique no nó Contas de Armazenamento, a janela Acesso Negado ao Armazenamento aparece.

    HDInsight Spark clusters in Azure Explorer storage.

    HDInsight Spark clusters in Azure Explorer denied.

  • Para clusters vinculados, clique no nó Contas de Armazenamento, a janela Acesso Negado ao Armazenamento aparece.

    HDInsight Spark clusters in Azure Explorer denied2.

Problemas conhecidos

Ao usar Vincular um Cluster, sugiro que você forneça uma credencial de armazenamento.

link cluster with storage credential eclipses.

Há dois modos para enviar os trabalhos. Se a credencial de armazenamento for fornecida, o modo de lote será usado para enviar o trabalho. Caso contrário, o modo interativo será usado. Se o cluster estiver ocupado, poderá receber o erro abaixo.

eclipse get error when cluster busy.

eclipse get error when cluster busy yarn.

Confira também

Cenários

Criando e executando aplicativos

Ferramentas e extensões

Gerenciando recursos