Apache Spark 是一个围绕速度、易用性和复杂分析构建的大数据处理框架,最初在 2009 年由加州大学伯克利分校的 AMPLab 开发,并于 2010 年成为 Apache 的开源项目之一,与 Hadoop 和 Storm 等其他大数据技术相比,Spark 有如下优势:
上传解压(『caroly01』)
tar xf spark-2.3.1-bin-hadoop2.6.tgz -C /opt/caroly
cd /opt/caroly
mv spark-2.3.1-bin-hadoop2.6 spark-2.3.1
修改配置文件(『caroly01』)
cd /opt/caroly/spark-2.3.1/conf
cp slaves.template slaves
vi slaves
change 19: 修改 19 行:配置从节点
caroly02
caroly03
cp spark-env.sh.template spark-env.sh
vi spark-env.sh
add 58: 在 58 行增加:指定 master 节点、提交任务端口、每台 worker 核数、每台 worker 可支配的内存、配置 Master - HA
export SPARK_MASTER_HOST=caroly01
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_CORES=2
export SPARK_WORKER_MEMORY=3g
export SPARK_MASTER_WEBUI_PORT=8888
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=caroly02:2181,caroly03:2181,caroly04:2181 -Dspark.deploy.zookeeper.dir=/MasterHA1114"
vi /opt/caroly/spark-2.3.1/sbin/spark-config.sh
add 34:
export JAVA_HOME=/usr/java/jdk1.8.0_251-amd64
为了方便使用 WebUI,可以进行以下配置(客户端配置)
cd /opt/caroly/spark-2.3.1/conf
cp spark-defaults.conf.template spark-defaults.conf
vi spark-defaults.conf
add 28: 在 28 行增加:增加配置
spark.eventLog.enabled true
spark.eventLog.dir hdfs://caroly01:8020/spark/data/log
spark.history.fs.logDirectory hdfs://caroly01:8020/spark/data/log
spark.eventLog.compress true
hdfs dfs -mkdir -p /spark/data/log
分发到其他节点(『caroly01』)
cd /opt/caroly/
scp -r spark-2.3.1/ caroly02:`pwd`
scp -r spark-2.3.1/ caroly03:`pwd`
启动(『caroly01』)
cd /opt/caroly/spark-2.3.1/sbin/
./start-all.sh
启动从节点(『caroly02』)
cd /opt/caroly/spark-2.3.1/sbin/
./start-master.sh
访问
http://caroly01:8080/
在每台节点中的 yarn-site.xml
中配置关闭虚拟内存检查
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
任务提交
./spark-submit --master spark://caroly01:7077 --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100
命令:
./spark-submit --master spark://caroly01:7077 --deploy-mode client --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100
过程:
特点:Spark 基于 standalone-client 模式提交任务,每个 Spark Application 都有自己的独立的 Driver,如果在客户端提交 100 个 Application,会有 100 个 Driver 进程在客户端启动,Driver 负责发送 task,监控 task 执行,回收结果,很容易造成客户端网卡流量激增问题。这种模式适用于程序测试,不适用于生产环境。在客户端可以看到 task 的执行和结果。
命令:
./spark-submit --master spark://caroly01:7077 --deploy-mode cluster --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100
过程:
特点:Spark 基于 Standalone-cluster 模式提交任务,当在客户端提交多个 Application 时,Driver 是随机在某些 Worker 节点启动,客户端就没有网卡流量激增问题,将这种问题分散到集群中。在客户端看不到 task 执行和结果。这种模式适用于生产环境。
命令:
./spark-submit --master yarn --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100
./spark-submit --master yarn-client --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100
./spark-submit --master yarn --deploy-mode client --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100
过程:
特点:Spark 基于 Yarn-client 模式提交任务,当在 Driver 提交多个 Application 时,会有网卡流量激增问题,这种模式适用于程序测试,不适用于生产环境。在客户端可以看到 task 的执行和结果。
Exception in thread "main" java.lang.Exception: When running with master 'yarn' either HADOOP_CONF_DIR or YARN_CONF_DIR must be set in the environment.
at org.apache.spark.deploy.SparkSubmitArguments.validateSubmitArguments(SparkSubmitArguments.scala:288)
at org.apache.spark.deploy.SparkSubmitArguments.validateArguments(SparkSubmitArguments.scala:248)
at org.apache.spark.deploy.SparkSubmitArguments.<init>(SparkSubmitArguments.scala:120)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:130)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
解决方法:在命令行中执行如下指令:
export HADOOP_CONF_DIR=/opt/caroly/hadoop-2.9.2/etc/hadoop/
命令:
./spark-submit --master yarn --deploy-mode cluster --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100
./spark-submit --master yarn-cluster --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100
过程:
特点:Spark 基于 Yarn-cluster 模式提交任务,当有多个 Application 提交时,每个 Application 的 Driver(AM)是分散到集群中的 NM 中启动,没有客户端的网卡流量激增问题。将这种问题分散到集群中。在客户端看不到 task 的执行和结果,要去 webui 中查看。这种模式适用于生产环境。
本文由 caroly 创作,如果您觉得本文不错,请随意赞赏
采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载 / 出处外,均为本站原创或翻译,转载前请务必署名
原文链接:https://caroly.fun/archives/spark-standalone集群搭建
最后更新:2021-05-01 03:27:14
Update your browser to view this website correctly. Update my browser now