Configuração do ambiente Spark (tutorial em nível de babá)

1. Preparação ambiental

  • Instalação de máquina virtual

    Software de máquina virtual: VMware

    Sistema operacional: Ubuntu1804

    Referência: https://blog.csdn.net/tangyi2008/article/details/120311293

  • JDK1.8

  • Instalação do Hadoop

    Versão: 2.7.7

    Referência: https://blog.csdn.net/tangyi2008/article/details/121908766

2. Construção do ambiente Spark

1. Método de implantação do Spark

  • Modo local: modo autônomo
  • Modo de agrupamento:
    • Modo autônomo: use o gerenciador de cluster simples que vem com o Spark
    • Modo YARN: use YARN como gerenciador de cluster
    • Modo Mesos: use o Mesos como gerenciador de cluster
    • Modo Kubernetes: Fase Experimental

2. Instale a faísca

1) Baixe o Spark

A interface de download do site oficial do Spark https://spark.apache.org/downloads.html tem menos versões opcionais. Em comparação com as páginas abertas aqui, apenas três versões estão disponíveis.

insira a descrição da imagem aqui

Você pode inserir seus arquivos de lançamento na parte inferior da página de download: https://archive.apache.org/dist/spark/ Selecione a versão desejada.

Sobre a escolha da versão

Aqui tomamos como exemplo a versão 2.4.8. O arquivo de instalação que baixamos deve estar no formato: spark-2.4.8-bin-xxxxxx.tgz. Muitas pessoas estão confusas sobre como escolher essas versões.

insira a descrição da imagem aqui

A razão pela qual existem tantas opções de versão é que o Spark requer algumas dependências do cliente Hadoop (requer acesso ao HDFS e YARN). Essas versões são divididas principalmente em duas categorias:

  • binário pré-empacotado, compile as dependências do cliente Hadoop no pacote compactado baixado, como spark-2.4.8-bin-hadoop2.6.tgz e spark-2.4.8-bin-hadoop2.7.tgz,

  • Binário "livre do Hadoop", você precisa configurar SPARK_DIST_CLASSPATHas variáveis , para que possa incluir os pacotes jar relevantes da versão especificada do Hadoop, como: spark-2.4.8-bin-without-hadoop-scala-2.12.tgz , spark-2.4.8 -bin-without-hadoop.tgz .

Aqui escolhemos spark-2.4.8-bin-without-hadoop.tgz no formato binário "Hadoop free" para baixar, usar diretamente o navegador para baixar é muito lento, você pode usar o Thunder para acelerar o download ou pode ir para os seguintes recursos de disco de rede para download.

2) Instale o Spark

Aqui fica acordado que o nome do host da máquina virtual node1, o nome do usuário xiaobaie o caminho de instalação são /home/xiaobai/opt, caso contrário, modifique o arquivo de configuração correspondente por conta própria.

Carregue o pacote de instalação

Carregue o pacote de instalação baixado na máquina virtual (claro, você também pode baixá-lo diretamente na máquina virtual sem fazer upload de arquivos)

Descompacte e crie um link suave

tar -xvf spark-2.4.8-bin-without-hadoop.tgz -C ~/opt
cd ~/opt
ln -s spark-2.4.8-bin-without-hadoop  spark

Estrutura de diretórios do Spark

ls ~/opt/spark

insira a descrição da imagem aqui

  • bin: scripts executáveis, como shell-shell comum, pyspark, etc.
  • dados: dados de uso do programa de exemplo
  • jars: pacotes jar dependentes
  • R: pacote R API
  • yarn: integre conteúdo relacionado a fios
  • conf: diretório do arquivo de configuração
  • exemplos: programas de exemplo
  • kubernetes: conteúdo relacionado ao K8S
  • licenças: arquivos de licença
  • python : API python 包
  • sbin: Scripts usados ​​para gerenciamento, como: start-all.sh, start-master.sh, etc.

Configurar variáveis ​​de ambiente

vi ~/.bashrcModifique o arquivo .bashrc e adicione o caminho PATH do Spark no final do arquivo

export SPARK_HOME=/home/xiaobai/opt/spark
export PATH=$SPARK_HOME/bin:$PATH

Execute o seguinte comando para que a configuração entre em vigor

source ~/.bashrc

Configurar informações do Hadoop

Como baixamos a versão "Hadoop free", SPARK_DIST_CLASSPATHas variáveis ​​de configuração são necessárias para funcionar corretamente.

cd ~/opt/spark/conf
cp spark-env.sh.template  spark-env.sh
vi spark-env.sh

Adicione as seguintes informações de configuração no final do arquivo

export SPARK_DIST_CLASSPATH=$(/home/xiaobai/opt/hadoop/bin/hadoop classpath)

Alterar nível de registro

Esta etapa é opcional, ajuste o nível de log para o nível WARN, para não ver muitas informações de impressão inválidas

cd ~/opt/spark/conf
cp log4j.properties.template log4j.properties #日志配置文件
vi log4j.properties

Modifique a seguinte configuração:

log4j.rootCategory= WARN, console

O log também pode ser ajustado através de código, assumindo que o objeto SparkContext seja sc, o ajuste de nível pode ser feito através do método setLogLevel

sc.setLogLevel("WARN")

3) Instalação de teste

Neste ponto, a instalação do Spark está concluída e o modo local do Spark pode ser usado.

Perceber

A versão do Spark que baixamos é baseada no scala 2.11.12, e o seguinte erro será relatado, mas não afeta o uso do .

[ERROR] Failed to construct terminal; falling back to unsupported
java.lang.NumberFormatException: For input string: "0x100"

insira a descrição da imagem aqui

Você pode modificar TERMo valor da variável de ambiente para xterm-colorresolver:

vi ~/.bashrc

adicionar no final do arquivo

export TERM=xterm-color

fazer a configuração ter efeito

source ~/.bashrc

Entre na interface interativa scala

Use o seguinte comando para entrar na interface interativa scala:

spark-shell

execute o código

var r = sc.parallelize(Array(1,2,3,4))
r.map(_*10).collect()

insira a descrição da imagem aqui

4) Configure o pyspark

instalar python

Se for a versão ubuntu18+, o sistema instalou o Python3 por padrão; antes do ubuntu16, o sistema instalou o python2 por padrão

Para evitar problemas desnecessários causados ​​pelo ambiente Python, aqui estão duas maneiras de instalar o ambiente Python: Recomenda-se escolher a maneira de instalar o Anaconda.

O chamado ambiente Python inclui principalmente o interpretador Python, o diretório Scripts (incluindo, por exemplo, pip.exe) e o diretório Lib (a biblioteca padrão e os pacotes de sites do diretório de instalação de pacotes). é principalmente para especificar em qual diretório executar o Python.interpreter.

Antes de instalar, preste atenção na versão do python. Por exemplo, ao usar a versão do Python 3.8, ocorrerá o seguinte erro ao executar o pyspark. Este artigo instalará a versão do Python 3.6.

insira a descrição da imagem aqui

  • Instale o Python oficial

    (1) Dependências necessárias para instalação

    sudo apt-get install -y gcc make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev
    

    (2) Vá para o site oficial para baixar o código fonte da versão correspondente, aqui está 3.6.15 como exemplo

    https://www.python.org/downloads/source/

    wget https://www.python.org/ftp/python/3.6.15/Python-3.6.15.tar.xz
    

    (3) Instale o Python

    tar -xvf Python-3.6.15.tar.xz
    cd Python-3.6.15
    ./configure  --prefix=/opt/python3 --enable-optimizations
    sudo make && make install
    

    Observe que, se ocorrer o seguinte erro durante o processo de instalação

    subprocess.CalledProcessError: Command ‘(‘lsb_release’, ‘-a’)’ returned non-zero exit status 1
    

    Você pode executar o seguinte comando para resolver

    rm -rf /usr/bin/lsb_release
    

    (4) Definir variáveis ​​de ambiente

    Para usar a versão do Python que você acabou de instalar, você pode adicionar o diretório que contém o interpretador python na frente do caminho, então .bashrcadicione as seguintes configurações no final do arquivo e use source ~/.bashrcpara que a configuração tenha efeito.

    export PATH=/opt/python3/bin:$PATH
    
  • Instalar o Anaconda

    (1) Baixe a versão correspondente do Anaconda

    Você pode selecionar a versão correspondente na página da web https://repo.anaconda.com/archive/ para fazer o download, que será baixado aqui Anaconda3-5.1.0-Linux-x86_64.sh. A versão correspondente do python é 3.6.

    insira a descrição da imagem aqui

    cd ~/soft
    wget https://repo.anaconda.com/archive/Anaconda3-5.1.0-Linux-x86_64.sh
    

    (2) Instale o anaconda

    bash Anaconda3-5.1.0-Linux-x86_64.sh
    

    insira a descrição da imagem aqui

Em seguida, pressione Enter até o fim, aguarde a exibição da interface de licença de aceitação e insira a yeslicença de aceitação.

Então você pode configurar o diretório de instalação do anacoda. O diretório de instalação configurado aqui é:/home/xiaobai/opt/anaconda3

insira a descrição da imagem aqui

Em seguida, configure se deseja configurar automaticamente o caminho PATH, insira-o aqui yes, deixe-o ser configurado automaticamente

insira a descrição da imagem aqui

Por fim, é solicitado se deseja instalar o VSCode, que é inserido aqui noe se recusa a instalar.

insira a descrição da imagem aqui

(3) Faça a configuração ter efeito

O caminho PATH foi configurado automaticamente durante o processo de instalação agora. Você pode visualizar o conteúdo de configuração adicionado:

tail ~/.bashrc

insira a descrição da imagem aqui

source ~/.bashrc

Instale o pacote de desenvolvimento pyspark

Observe que Pyspark aqui se refere ao módulo pyspark que precisa ser usado ao programar com python, semelhante ao relacionamento entre Mysql e pymysql.

Você pode usar um dos formulários de instalação online e instalação de cópia manual, e o método de cópia manual é recomendado.

  • Instalação online
sudo apt install python3-pip  #安装pip3
sudo pip install pyspark==2.4.8 -i https://pypi.tuna.tsinghua.edu.cn/simple
  • Cópia manual

Entre na interface interativa do python e visualize o valor do caminho do python

import sys
sys.path

insira a descrição da imagem aqui

Descompacte e copie py4j-0.10.7-src.zip e pyspark.zip em ~/opt/spark/python/lib para um determinado caminho, por exemplo:

cd ~/opt/spark/python/lib
unzip py4j-0.10.7-src.zip  -d /usr/local/lib/python3.6/dist-packages
unzip pyspark.zip  -d /usr/local/lib/python3.6/dist-packages

5) Configure o modo pseudo-autônomo do Spark

O modo autônomo é configurado aqui. Para a conveniência dos iniciantes, apenas um nó escravo é configurado aqui, por isso é chamado de "modo pseudo-autônomo"

Mude para o diretório do arquivo de configuração

cd ~/opt/spark/conf

spark-env.sh

vi spark-env.sh

Adicione as seguintes informações de configuração

export SPARK_MASTER_HOST=node1          #设置主节点地址
export SPARK_WORKER_MEMORY=2g           #设置节点内存大小,此处为4G。
export SPARK_WORKER_CORES=2              #设置节点参与计算的核心数
export SPARK_WORKER_INSTANCES=1          #设置节点实例数
export JAVA_HOME=/home/xiaobai/opt/jdk
export HADOOP_CONF_DIR=/home/xiaobai/opt/hadoop/etc/hadoop

escravos

vi slaves

Configurar informações do nó escravo

node1

6) Teste o modo autônomo

início autônomo

~/opt/spark/sbin/start-all.sh

Você pode usar start-master.she iniciar o nó mestre, o nó escravo local e todos os nós escravos, start-slave.shrespectivamentestart-slaves.sh

Além disso, historysever é frequentemente usado, e scripts são usados: start-history-server.sh, e os parâmetros precisam spark-env.shser configurados em SPARK_HISTORY_OPTS:

SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://node1:9000/sparklog/ -Dspark.history.fs.cleaner.enabled=true"

Ver progresso

jps

insira a descrição da imagem aqui

visualização da web

node1:8080

insira a descrição da imagem aqui

teste

pyspark --master spark://node1:7077

execute o código de teste

r = sc.parallelize(range(10))
r.map(lambda x:x*2).collect()

insira a descrição da imagem aqui

Pare

~/opt/spark/sbin/stop-all.sh

Você pode usar stop-master.she parar o nó mestre, o nó escravo local e todos os nós escravos, stop-slave.shrespectivamentestop-slaves.sh

7) Configure o ambiente interativo da Web

Instale o jupyter (se você instalou o anaconda ao instalar o python, não precisa instalar o jupyter, porque o próprio anaconda inclui o jupyter)

sudo pip3 install jupyter -i https://pypi.tuna.tsinghua.edu.cn/simple

Inicie o jupyter para entrar na interface interativa

jupyter notebook

ou

jupyter lab

tente executar o código

from pyspark import SparkConf, SparkContext
conf = SparkConf().setMaster('local').setAppName("My App")
sc = SparkContext(conf = conf)
logFile = "file:///home/xiaobai/opt/spark/README.md"
logData = sc.textFile(logFile, 2).cache()
numAs = logData.filter(lambda line: 'a' in line).count()
numBs = logData.filter(lambda line: 'b' in line).count()
print('Lines with a: %s, Lines with b: %s' % (numAs, numBs))

3. Envio de código

Escreva um programa de contagem de palavras

vi wordcount.py

Escreva o código:

from pyspark import SparkConf, SparkContext
conf = SparkConf().setAppName("My App")
sc = SparkContext(conf = conf)
logFile = "file:///home/xiaobai/opt/spark/README.md"
logData = sc.textFile(logFile, 2).cache()
numAs = logData.filter(lambda line: 'a' in line).count()
numBs = logData.filter(lambda line: 'b' in line).count()
print('Lines with a: %s, Lines with b: %s' % (numAs, numBs))

Enviar código para local

 spark-submit  wordcount.py

Enviar código para autônomo

Certifique-se de que o mestre e o trabalhador estejam ligados

 spark-submit  --master spark://node1:7077 wordcount.py

Enviar código para YARN

spark-submit  --master yarn wordcount.py

Nota :

Como estamos usando pseudodistribuição, a memória do host pode não ser suficiente, o que pode causar os seguintes erros

ERROR TransportClient: Failed to send RPC RPC 6184886792270084293 to /192.168.206.129:56372: java.nio.channels.ClosedChannelException

insira a descrição da imagem aqui

Você pode modificar a configuração yarn-site.xml do Hadoop e, em seguida, reiniciar o YARN.

<property>
    <name>yarn.nodemanager.pmem-check-enabled</name>
    <value>false</value>
</property>
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>

Parâmetros comuns do spark-submit, você pode usar o comando help para visualizar:

spark-submit  --help

Parâmetros comuns :

Options:
--master MASTER_URL         spark://host:port, mesos://host:port, yarn,
                           k8s://https://host:port, or local (Default: local[*]).
--deploy-mode DEPLOY_MODE   Whether to launch the driver program locally ("client") or
                           on one of the worker machines inside the cluster ("cluster"), (Default: client).  
--class CLASS_NAME          Your application's main class (for Java / Scala apps).
--name NAME                 A name of your application.
--jars JARS                 Comma-separated list of jars to include on the driver
                           and executor classpaths.
--packages                  Comma-separated list of maven coordinates of jars to include
                           on the driver and executor classpaths. Will search the local
                           maven repo, then maven central and any additional remote
                           repositories given by --repositories. The format for the
                           coordinates should be groupId:artifactId:version

3. Recursos relacionados

链接:https://pan.baidu.com/s/1u3Qbj2VQ8UbuSuGQOWjWCg 
提取码:nuli 

Acho que você gosta

Origin blog.csdn.net/tangyi2008/article/details/123109198
Recomendado
Clasificación