Diretório de artigos
- 1. Preparação ambiental
- 2. Construção do ambiente Spark
- 3. Recursos relacionados
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.
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.
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_CLASSPATH
as 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 xiaobai
e 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
- 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 ~/.bashrc
Modifique 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_CLASSPATH
as 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"
Você pode modificar TERM
o valor da variável de ambiente para xterm-color
resolver:
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()
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.
-
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
.bashrc
adicione as seguintes configurações no final do arquivo e usesource ~/.bashrc
para 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.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
Em seguida, pressione Enter até o fim, aguarde a exibição da interface de licença de aceitação e insira a yes
licenç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
Em seguida, configure se deseja configurar automaticamente o caminho PATH, insira-o aqui yes
, deixe-o ser configurado automaticamente
Por fim, é solicitado se deseja instalar o VSCode, que é inserido aqui no
e se recusa a instalar.
(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
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
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.sh
e iniciar o nó mestre, o nó escravo local e todos os nós escravos,start-slave.sh
respectivamentestart-slaves.sh
Além disso, historysever é frequentemente usado, e scripts são usados:
start-history-server.sh
, e os parâmetros precisamspark-env.sh
ser configurados emSPARK_HISTORY_OPTS
:SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://node1:9000/sparklog/ -Dspark.history.fs.cleaner.enabled=true"
Ver progresso
jps
visualização da web
node1:8080
teste
pyspark --master spark://node1:7077
execute o código de teste
r = sc.parallelize(range(10))
r.map(lambda x:x*2).collect()
Pare
~/opt/spark/sbin/stop-all.sh
Você pode usar
stop-master.sh
e parar o nó mestre, o nó escravo local e todos os nós escravos,stop-slave.sh
respectivamentestop-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
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