生产环境基于HA的Spark搭建

本文详细介绍了如何在集群环境中部署和配置Apache Spark,包括修改关键配置文件如slaves、spark-defaults.conf等,以及解决启动过程中遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spark安装:

1、使用hadoop账户登录

2、在相应的软件包中修改slaves,spark-defaults.conf,spark-env.sh,hive-site.xml

其中:slaves中加入从节点的hostname

spark-defaults.conf中修改:

#主节点设置,多个节点高可用
spark.master spark://hadoop001:7077,hadoop002:7077
##Whether to log Spark events, useful for reconstructing the Web UI after the application has
finished.

Log日志存储位置

#一个类, 用于序列化网络传输或者以序列化形式缓存起来的各种对象
##Spark 应用程序Application 所占的内存大小,这里的Driver 对应Yarn 中的
ApplicationMaster
spark.driver.memory 1g

## Amount of memory to use per executor process, in the same format as JVM memory strings
(e.g. 512m, 2g).对应的container ---每个处理器可以使用的内存大小
spark.executor.memory 2g

##Directory to use for "scratch" space in Spark, including map output files and RDDs that get
stored on disk. This should be on a fast, local disk in your system. It can also be a commaseparated list of multiple directories on different disksNOTE: In Spark 1.0 and later this will be overriden by SPARK_LOCAL_DIRS (Standalone, Mesos) or LOCAL_DIRS (YARN) environment
variables set by the cluster manager.设置多个分散io

##Port for your application's dashboard, which shows memory and workload data 应用程序控制面板端口号
spark.ui.port   44444
##job 运行期间的压缩的相关设置
spark.broadcast.compress true  ##广播变量在发送之前是否先要被压缩
spark.rdd.compress false ##是否要压缩序列化的RDD 分区
spark.io.compression.codec snappy ##压缩内部数据使用的编码器
spark.io.compression.snappy.block.size 32768 ##字节为单位
##Default number of tasks to use across the cluster for distributed shuffle operations (groupByKey, reduceByKey, etc) when not set by user.
spark.default.parallelism 12 ##本地机器内核数

spark-env.sh中修改:

Export JAVA_HOME=java home具体位置
export HADOOP_CONF_DIR=hadoop  conf具体位置
export SPARK_HOME= spark home具体位置

##master 节点的webui 端口
export SPARK_MASTER_WEBUI_PORT=18080
##worker 节点的webui 端口
export SPARK_WORKER_WEBUI_PORT=18081
export SPARK_WORKER_DIR=……/spark/work
export SPARK_LOG_DIR=/spark
##pid 文件设置目录, 防止默认/tmp 目录下长时间运行导致的pid 文件丢失。
export SPARK_PID_DIR=/tmp
##为了兼容hive 元数据,设置mysql 连接器
export SPARK_CLASSPATH=$SPARK_CLASSPATH:……/spark/lib/mysql-connector-java-
5.1.23-bin.jar
##这里注意mysql 连接器的版本可以从/hive/lib/里面找到,并将它复制到
/spark/lib
##启动参数里设置zookeeper,提供master 节点的高可用
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER Dspark.deploy.zookeeper.url=hadoop001:2181,hadoop002:2181,hadoop003:2181 -
Dspark.deploy.zookeeper.dir=/spark"
##设置这个为了兼容hadoop 下面的一些lib 库,比如snappy
export LD_LIBRARY_PATH=……/hadoop/lib/native

hive-site.xml中修改:

##这个文件的作用主要是为了spark-sql 能够兼容hive 的元数据。
可以用软连接的方式直接指定到$HIVE_HOME/conf/hive-site.xml
cd /……/spark/conf/
ln -s /……/hive/conf/hive-site.xml hive-site.xml
如果 spark-sql 还是启动不了,注意在 Hive 中拷贝一个 log 文件--hive-log4j.properties 过来
/……/hive/conf 下面

3、将修改好的conf文件scp到其他节点

4、进行启动

……spark/sbin/start-all.sh

5、查看进程

Jps

 

问题:启动不成功,报错:Could not find or load main class Dspark.deploy.zookeeper.url=namenode0:2181,namenode1:2181,datanode1:2181

 

原因:修改配置文件的时候产生了一个垃圾文件没有自动删除,对spark启动产生了影响,手动将垃圾文件删除即可

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值