Aprimorar o desempenho de cargas de trabalho do Apache Spark usando o Cache de E/S do Azure HDInsight

Observação

  • O Cache de E/S tinha suporte até o Spark 2.3 e não terá suporte no Spark 2.4 (HDInsight 4.0) e no Spark 3.1.2 (HDInsight 5.0)

O Cache de E/S é um serviço de cache de dados para o Azure HDInsight que melhora o desempenho de trabalhos do Apache Spark. O cache de E/S também funciona com Apache TEZ e Apache Hive cargas de trabalho, que podem ser executadas nos clusters Apache Spark. O Cache de E/S usa um componente de cache de software livre chamado RubiX. O RubiX é um cache de disco local para uso com mecanismos de análise de big data que acessam dados de sistemas de armazenamento de nuvem. O RubiX é exclusivo entre os sistemas de cache porque usa unidades de estado sólido (SSDs) em vez de reservar memória operacional para fins de cache. O serviço de Cache de E/S é iniciado e gerencia Servidores de Metadados do RubiX nó de trabalho do cluster. Ele também configura todos os serviços do cluster para uso transparente do cache do RubiX.

A maioria dos SSDs fornece mais de 1 GB por segundo de largura de banda. Essa largura de banda, complementada pelo cache de arquivo na memória do sistema operacional, fornece largura de banda suficiente para carregar os mecanismos de processamento de computação de big data, como o Apache Spark. A memória operacional fica disponível para o Apache Spark processar tarefas altamente dependentes da memória, como as ordens aleatórias. Ter o uso exclusivo da memória operacional permite que o Apache Spark atinja o uso ideal de recursos.

Observação

Atualmente, o Cache de E/S usa o RubiX como um componente de cache, mas isso pode mudar em futuras versões do serviço. Use interfaces de Cache de E/S e não obtenha qualquer dependência diretamente na implementação do RubiX. O cache de E/S só é compatível no armazenamento de blobs do Azure no momento.

Benefícios do Cache de E/S do Azure HDInsight

Usar o Cache de E/S fornece um aumento de desempenho para trabalhos que leem dados do Armazenamento de Blobs do Azure.

Você não precisa fazer nenhuma alteração em seus trabalhos do Spark para ver os aumentos de desempenho ao usar o Cache de E/S. Quando o Cache de E/S é desabilitado, esse código Spark leria os dados remotamente do Armazenamento de Blobs do Azure: spark.read.load('wasbs:///myfolder/data.parquet').count(). Quando o Cache de E/S é ativado, a mesma linha de código causa uma leitura em cache por meio do Cache de E/S. Nas leituras a seguir, os dados são lidos localmente do SSD. Os nós de trabalho no cluster HDInsight são equipados com unidades SSD anexadas localmente e dedicadas. O Cache de E/S do HDInsight usa esse SSDs locais para armazenar em cache, o que fornece um nível mais baixo de latência e maximiza a largura de banda.

Introdução

O Cache de E/S do Azure HDInsight está desativado por padrão na versão prévia. O Cache de E/S está disponível em clusters Spark do Azure HDInsight 3.6+, que executam o Apache Spark 2.3. Para ativar o cache de E/S no HDInsight 4.0, execute as seguintes etapas:

  1. Em um navegador da Web, navegue até https://CLUSTERNAME.azurehdinsight.net, em que CLUSTERNAME é o nome do cluster.

  2. Selecione o serviço Cache de E/S à esquerda.

  3. Escolha Ações (Ações de serviço no HDI 3.6) e Ativar.

    Enabling the IO Cache service in Ambari.

  4. Confirme a reinicialização de todos os serviços afetados no cluster.

Observação

Mesmo que a barra de progresso mostre ativado, o Cache de E/S, na verdade, não estará habilitado até que você reinicie os outros serviços afetados.

Solução de problemas

Você pode receber erros de espaço em disco ao executar trabalhos do Spark depois de habilitar o Cache de E/S. Esses erros acontecem porque o Spark também usa o armazenamento de disco local para armazenar dados durante operações de embaralhamento. O Spark poderá ocupar todo o espaço do SSD, já que o Cache de E/S está habilitado e o espaço para armazenamento do Spark é reduzido. A quantidade de espaço padrão usado pelo Cache de E/S é de metade do espaço total do SSD. O uso de espaço em disco para o Cache de E/S é configurável no Ambari. Se você receber erros de espaço em disco, reduza a quantidade de espaço de SSD usada pelo Cache de E/S e reinicie o serviço. Para alterar o espaço definido para o Cache de E/S, execute as seguintes etapas:

  1. No Apache Ambari, selecione o serviço HDFS à esquerda.

  2. Selecione as guias Configurações e Avançado.

    Edit HDFS Advanced Configuration.

  3. Role para baixo e expanda a área Site principal personalizado.

  4. Localize a propriedade hadoop.cache.data.fullness.percentage.

  5. Altere o valor na caixa.

    Edit IO Cache Fullness Percentage.

  6. Selecione Salvar no canto superior direito.

  7. Selecione Reiniciar>Reiniciar Todos os Afetados.

    Apache Ambari restarts all affected.

  8. Selecione Confirmar Reiniciar Tudo.

Se isso não funcionar, desabilite o cache de E/S.

Próximas etapas

Leia mais sobre o Cache de E/S, incluindo os benchmarks de desempenho nesta postagem no blog: Trabalhos do Apache Spark ficam até nove vezes mais rápidos com o Cache de E/S do HDInsight