Erro de inicialização do Presto: nenhum arquivo ou diretório

1. Descrição do problema

1.1 Não é possível iniciar via sudo -u presto

  • Ao usar uma versão inferior do Presto, no usuário root, use o seguinte comando para alternar para o usuário presto e iniciar o serviço Presto:

    sudo -u presto /install_dir/bin/launcher start
    # 或直接restart,包含stop和start操作
    sudo -u presto /install_dir/bin/launcher restart
    
  • Ao testar a versão 0.280 do Presto, use este método para iniciar o serviço Presto normalmente

  • A partir dos detalhes de inicialização simples, o serviço é iniciado com sucesso e o número do processo do PrestoServer é 26113

    Not running
    Started as 26113
    
  • Mas jps | grep ”PrestoServer"quando passou, verificou-se que não havia nenhum processo correspondente, ou seja, o serviço Presto realmente não foi iniciado com sucesso

  • Ao mesmo tempo, uma linha de log de erros foi encontrada em launcher.log

    ERROR: [Errno 2] No such file or directory
    

1.2 Adicionar -vobter detalhes do erro

  • No comando de inicialização, -vsão adicionadas opções para visualizar os detalhes do erro e, finalmente, a seguinte mensagem de erro aparece no launcher.log:

    ERROR: [Errno 2] No such file or directory
    Traceback (most recent call last):
      File "install_path/bin/launcher.py", line 449, in main
        handle_command(command, o)
      File "install_path/bin/launcher.py", line 332, in handle_command
        start(process, options)
      File "install_path/bin/launcher.py", line 286, in start
        os.execvpe(args[0], args, env)
      File "/usr/lib64/python2.7/os.py", line 353, in execvpe
        _execvpe(file, args, env)
      File "/usr/lib64/python2.7/os.py", line 380, in _execvpe
        func(fullname, *argrest)
    OSError: [Errno 2] No such file or directory
    
  • De acordo com a pilha de erros, leia install_path/bin/launcher.py e, finalmente, descobriu que um erro pode ser relatado ao executar java -cp ...o comando para iniciar o serviço Presto

    ['java', '-cp', 'install_path/lib/*', '-server', '-Xmx45G', '-Xms45G', '-XX:+UseG1GC', '-XX:G1HeapRegionSize=32M', '-XX:+UseGCOverheadLimit', '-XX:+ExplicitGCInvokesConcurrent', '-XX:+ExitOnOutOfMemoryError', '-XX:+PrintGCDetails', '-XX:+PrintGCDateStamps', '-Xloggc:/data/presto/var/log/gc.log', '-XX:+UseGCLogFileRotation', '-XX:NumberOfGCLogFiles=8', '-XX:GCLogFileSize=24M', '-XX:+PrintGCApplicationStoppedTime', '-Dlog.output-file=/data/presto/var/log/server.log', '-Dnode.data-dir=/data/presto', '-Dnode.id=worker-10-102-147-2', '-Dnode.environment=production', '-Dlog.enable-console=false', '-Dlog.levels-file=install_path/etc/log.properties', '-Dconfig=install_path/etc/config.properties', 'com.facebook.presto.server.PrestoServer']
    
  • Ao mesmo tempo, o autor descobriu que alternar diretamente para o usuário do Presto e iniciar o serviço do Presto pode ser bem-sucedido

1.3 Faltando a causa real

  • Embora existam problemas semelhantes encontrados na Internet: OSError: [Errno 2] No such file or directory #7879 , o colaborador do Presto também deu um possível motivo
    insira a descrição da imagem aqui
  • Mas o autor acha que não deve haver problema com a instalação do JDK, porque a instalação do JDK é instalada junto com a operação e manutenção do sistema quando o sistema é reinstalado

2. Solução de problemas

2.1 Procure ajuda para operação e manutenção do sistema

  • Como não estou muito familiarizado com o Python, o mesmo método de inicialização não encontrou esse problema antes, e esta é uma máquina física recém-instalada, então pedi aos meus colegas de operação e manutenção do sistema para ajudar a solucionar o problema
  • Após algumas investigações sobre a operação e manutenção do sistema, eles também suspeitaram que o JDK foi instalado incorretamente, o que resultou na não localização do javacomando ao usar o sudo para iniciar o serviço Presto
  • No final, a operação e manutenção do sistema descobriram o motivo:
    • javaO serviço JDK que eles ajudaram a instalar é puramente para simular a instalação manual do JDK e não irá gerar soft links para comandos no diretório /usr/bin
    • Embora /usr/bin esteja em secure_path em /etc/sudoers, javao comando não está
    • A máquina anterior pode iniciar o serviço por meio de sudo -u presto porque há javaum link suave do comando em /usr/bin
  • Para análise de motivo específico, você pode consultar o blog anterior: Como gerenciar várias versões do JDK no Linux

2.2 Soluções

  • Use o método de instalação de script JDK da própria operação e manutenção de big data, especifique a versão do JDK e yum installinstale o JDK 8 por
  • Este método de instalação criará automaticamente soft links para vários comandos no diretório /usr/bin, incluindo java, javacetc.

Acho que você gosta

Origin blog.csdn.net/u014454538/article/details/131294535
Recomendado
Clasificación