spark的集群环境安装搭建

1、spark local模式运行环境搭建

常用于本地开发测试,本地还分为local单线程和local-cluster多线程;

  • 该模式被称为Local[N]模式,是用单机的多个线程来模拟Spark分布式计算,直接运行在本地,便于调试,通常用来验证开发出来的应用程序逻辑上有没有问题。
  • 其中N代表可以使用N个线程,每个线程拥有一个core。如果不指定N,则默认是1个线程(该线程有1个core)。
  • 如果是local[*],则代表 Run Spark locally with as many worker threads as logical cores on your machine 。

上传spark压缩包到/export/softwares并解压。这里我们使用cdh版本。

tar -zxf spark-2.2.0-bin-2.6.0-cdh5.14.0.tgz -C /export/servers/
cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/conf
cp spark-env.sh.template spark-env.sh

启动验证

cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0
./bin/spark-shell  --master  local

退出spark shell客户端

:quit

执行我们spark自带的程序jar包运算圆周率

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master local[2] \
--executor-memory 1G \
--total-executor-cores 2 \
/export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/examples/jars/spark-examples_2.11-2.2.0.jar \
100   

其中100表示迭代计算100次来求取我们圆周率的值,注意迭代计算的次数越多,最终求得的值就会越接近圆周率的值。

2、spark的standAlone模式

第一步:修改配置文件

cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/conf
vim spark-env.sh

以下是配置文件修改内容

export JAVA_HOME=/export/servers/jdk1.8.0_141
export SPARK_MASTER_HOST=node-1
export SPARK_MASTER_PORT=7077
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=4000 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://node-1:8020/spark_log"
  • node-1修改slaves文件
cp slaves.template  slaves
vim slaves

以下是配置文件修改内容,将localhost修改为集群映射名字。

node-2
node-3
  • node-1修改spark-defaults.conf

spark的程序运行,我们为了方便调试开发,一般我们都会配置spark的运行日志,将spark程序的运行日志保存到hdfs上面,方便我们运行程序之后的开发调试。

cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/conf
cp spark-defaults.conf.template spark-defaults.conf
vim spark-defaults.conf

以下是配置文件修改内容

spark.eventLog.enabled  true
spark.eventLog.dir      hdfs://node-1:8020/spark_log
spark.eventLog.compress true

hdfs创建日志文件存放的目录

hdfs dfs -mkdir -p /spark_log

第二步:安装包分发到其他机器

node-1服务器执行以下命令

cd /export/servers/
scp -r spark-2.2.0-bin-2.6.0-cdh5.14.0/ node-2:$PWD
scp -r spark-2.2.0-bin-2.6.0-cdh5.14.0/ node-3:$PWD

第三步:启动spark程序

node-1服务器执行以下命令启动spark程序

cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0
sbin/start-all.sh
sbin/start-history-server.sh

第四步:浏览器页面访问

需要在本机建立IP映射,浏览器页面访问spark。
http://node-1:8080/
查看spark任务的历史日志。
http://node0-1:4000/

第五步:运行spark自带的测试jar包

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://node-1:7077 \
--executor-memory 1G \
--total-executor-cores 2 \
/export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/examples/jars/spark-examples_2.11-2.2.0.jar \
100

3、spark的HA模式

在这里插入图片描述
为了解决master单节点的故障,spark也支持master的高可用配置,其中spark的高可用HA模式支持两种方式,一种是手动切换,另外一种是借助zookeeper实现自动切换。

第一步:停止spark集群

停止spark的所有进程
node-1服务器执行以下命令停止spark集群

cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0
sbin/stop-all.sh
sbin/stop-history-server.sh

第二步:修改配置文件

cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/conf
vim spark-env.sh

以下是配置文件修改内容

export JAVA_HOME=/export/servers/jdk1.8.0_141
# export SPARK_MASTER_HOST=node01
export SPARK_MASTER_PORT=7077
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=4000 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://node-1:8020/spark_log"

export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node-1:2181,node-2:2181,node-3:2181 -Dspark.deploy.zookeeper.dir=/spark"
  • 修改slaves、spark-defaults.conf文件(由于standAlone模式已经修改过,这里不需要再次修改)
  • hdfs创建日志文件存放的目录
hdfs dfs -mkdir -p /spark_log

第三步:配置文件分发到其他服务器

node-1服务器执行以下命令进行分发

cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/conf
scp spark-env.sh node-2:$PWD
scp spark-env.sh node-3:$PWD

第四步:启动spark集群

node-1服务器执行以下命令启动spark集群

cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0
sbin/start-all.sh
sbin/start-history-server.sh

node-2、node-3服务器启动master节点

cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0
sbin/start-master.sh

第五步:浏览器页面访问

http://node-1:8080/
http://node-2:8080/
http://node-3:8080/

spark的HA模式,我们的服务提交方式变成如下

bin/spark-shell --master spark://node-1:7077,node-2:7077,node-3:7077

第六步:运行spark自带的测试jar包

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://node-1:7077,node-2:7077,node-3:7077 \
--executor-memory 1G \
--total-executor-cores 2 \
/export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/examples/jars/spark-examples_2.11-2.2.0.jar \
100

4、spark的on yarn模式

spark on yarn 模式官方文档说明
http://spark.apache.org/docs/latest/running-on-yarn.html

如果我们的spark程序是运行在yarn上面的话,那么我们就不需要spark的standAlone的集群了,我们只需要找任意一台机器配置我们的spark的客户端提交任务到yarn集群上面去即可

小提示:如果yarn集群资源不够,我们可以在yarn-site.xml当中添加以下两个配置,然后重启yarn集群,跳过yarn集群资源的检查。(hadoop3.x中一般需要添加)

<property>
	<name> yarn.nodemanager.pmem-check-enabled</name
	<value>false</value>
</property>
<property>
	<name> yarn.nodemanager.vmem-check-enabled</name
	<value>false</value>
</property>
  • 任意找一台机器修改spark-env.sh即可
HADOOP_CONF_DIR=/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop
YARN_CONF_DIR=/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop
  • 提交任务到yarn集群
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
/export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/examples/jars/spark-examples_2.11-2.2.0.jar \
100

猜你喜欢

转载自blog.csdn.net/a657085961/article/details/88178506
今日推荐