modo de fio
00_Introdução
O cliente Spark se conecta diretamente ao Yarn, sem a necessidade de construir um cluster Spark. Existem dois modos de yarn-client e yarn-cluster.A principal diferença está no nó em execução do programa Driver.
Cliente Yarn: O programa Driver roda no cliente e é adequado para interação e depuração.Você deseja ver a saída do aplicativo imediatamente.
Yarn-cluster: O programa Driver roda em AP (APPMaster) iniciado por RM (ResourceManager) e é adequado para ambientes de produção.
O modo de operação do fio é mostrado na figura:
01_Configuração
1.1, modifique o arquivo de configuração do Hadoop yarn-site.xml e distribua-o para outros nós.
Porque nosso ambiente de teste tem poucas máquinas virtuais para evitar que tarefas futuras sejam eliminadas acidentalmente.
cd /usr/hadoop/hadoop-2.10.0/etc/hadoop/
vi yarn-site.xml
#添加以下在configuration标签中间
<!--是否启动一个线程检查每个任务正使用的物理内存量。如果任务使用的内存量超出分配值,则会被中断。默认是true -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!--是否启动一个线程检查每个任务正在使用的虚拟内存量。如果任务使用的内存量分配超出分配值,会被选择中断。默认是true-->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
#分发
scp -r yarn-site.xml slave1:/usr/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r yarn-site.xml slave2:/usr/hadoop/hadoop-2.10.0/etc/hadoop/
1.2, copie faísca e nomeie-o fio-faísca
cp -r spark-2.4.0-bin-hadoop2.7 spark-yarn
1.3, modifique o arquivo spark-env.sh
mv spark-env.sh.template spark-env.sh
for i in *.template; do mv ${i} ${i%.*}; done
HADOOP_CONF_DIR=/usr/hadoop/hadoop-2.10.0/etc/hadoop
1.4, modificar variáveis de ambiente
vi /etc/profile
export SPARK_HOME=/usr/hadoop/spark-yarn
export PATH=$PATH:$SPARK_HOME/sbin:$SPARK_HOME/bin
source /etc/profile
1.5, adicionar serviço de histórico
1.5.1 Configurar env.sh
vi spark-env.sh
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=30 -Dspark.history.fs.logDirectory=hdfs://node1:8020/spark-logs-yarn"
1.5.2 Crie um diretório de log, o hadoop deve ser ativado
bin/hadoop fs -mkdir /spark-logs-yarn
1.5.3 Configurar defaults.conf
vi spark-defaults.conf
spark.eventLog.enabled true
spark.eventLog.dir hdfs://node1:8020/spark-logs-yarn
1.6, exemplo
No log do spark-shell, você pode ver que o comando spark-shell --master yarn-client está obsoleto desde o Spark 2.0 e pode ser substituído pelo cliente spark-shell --master yarn --deploy-mode.
Nota:
(1) O cluster HDFS e YARN precisa ser iniciado antes de enviar a tarefa.
(2) Se você tiver alguma dúvida sobre o número da porta de acesso à página hadoopUI, consulte o artigo Big Data Platform-Hadoop Environment Configuration
(1) Na casca
spark-shell --master yarn --deploy-mode client
scala> val rdd=sc.parallelize(1 to 100,5)
rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at parallelize at <console>:24
scala> rdd.count
res0: Long = 100
(2) Diretamente em fio de faísca
bin/spark-submit \
--master yarn \
--class org.apache.spark.examples.SparkPi \
--deploy-mode client \
./examples/jars/sp,,,,, \ #架包的路径
100
02_Summary
(1) Os modos autônomo e yarn não podem ser configurados no mesmo, a configuração das variáveis de ambiente do spark entrará em conflito e o yarn-UI também não pode ser acessado
(2) O modo Yarn não precisa ser equipado com um cluster de faísca. Ao usá-lo, inicie o hadoop primeiro