1、概述node
spark分佈式搭建方式大體分爲三種:standalone、yarn、mesos。三種分類的區別這裏就不一一介紹了,不明白可自行了解。standalone是官方提供的一種集羣方式,企業通常不使用。yarn集羣方式在企業中應用是比較普遍的,這裏也是介紹yarn的集羣安裝方式。mesos安裝適合於超大型集羣。shell
集羣節點分配:apache
hadoop01:Zookeeper、NameNode(active)、ResourceManager(active)分佈式
hadoop02:Zookeeper、NameNode(standby)oop
hadoop03:Zookeeper、 ResourceManager(standby)spa
hadoop04: DataNode、 NodeManager、 JournalNode、 sparkscala
hadoop05: DataNode、 NodeManager、 JournalNode、 spark3d
hadoop06: DataNode、 NodeManager、 JournalNode、 sparkcode
2、安裝xml
說明一下:
①選spark的時候要注意與hadoop版本對應。由於hadoop用的是2.7的,因此spark選的是spark-2.1.1-bin-hadoop2.7
②由於spark基於yarn來管理,spark只能安裝在NodeManager節點上。
③spark安裝放在/home/software目錄下。
一、hadoop基於yarn(ha)的搭建,這裏介紹步驟了。在個人上一個教程裏有詳細介紹。
二、安裝scala,並配置好環境變量。
三、在NodeManager節點上解壓spark文件。
tar -xvf spark-2.1.1-bin-hadoop2.7
三、修改spark-2.1.1-bin-hadoop2.7/conf/spark-env.sh,在文件尾部加上如下內容,其中HADOOP_CONF_DIR是必填項
export JAVA_HOME=/home/jack/jdk1.8.0_144
export SCALA_HOME=/home/jack/scala-2.12.3
export HADOOP_HOME=/home/software/hadoop-2.7.4
export HADOOP_CONF_DIR=/home/software/hadoop-2.7.4/etc/hadoop
export SPARK_MASTER_PORT=7077
export SPARK_EXECUTOR_CORES=2
export SPARK_EXECUTOR_MEMORY=1024m
export SPARK_EXECUTOR_INSTANCES=1
四、修改spark-2.1.1-bin-hadoop2.7/conf/slave文件,添加如下內容:
hadoop04
hadoop05
hadoop06
五、在hdfs上傳spark的jar包,並修改/home/software/spark-2.1.1-bin-hadoop2.7/conf/spark-defaults.conf(可不作)
①hadoop fs -mkdir /spark_jars
②hadoop fs -put /home/software/spark-2.1.1-bin-hadoop2.7/jars/* /spark_jars
③修改/home/software/spark-2.1.1-bin-hadoop2.7/conf/spark-defaults.conf,添加如下內容:
spark.yarn.jars=hdfs://hadoop01:9000/spark_jars/*
六、完成以上操做就完成了spark基於yarn的安裝。下面是驗證部分:
在安裝有spark的節點上執行如下命令:
spark-submit --class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 1 \
--num-executors 3 \
/home/software/spark-2.1.1-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.1.1.jar \
10
能看以上三張圖就說明安裝成功了!
備註:若是執行spark-shell --master yarn --deploy-mode client失敗,報rpc鏈接失敗,解決方法以下:
在hadoop的配置文件yarn-site.xml中加入:
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
報錯的緣由是:內存資源給的太小,yarn直接kill掉進程,則報rpc鏈接失敗、ClosedChannelException等錯誤。