spark集群安装与配置

本文介绍如何在双节点Hadoop集群上安装和配置Spark,并详细解释了安装Scala、配置Spark环境变量及启动Spark的过程。

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

Spark有三种运行模式,分别为:

local模式-只运行在本地,相当于伪分布式

standalone模式-这种模式只需要安装Spark即可,使用自带的资源管理器

Spark on yarn/mesos模式-这种模式Spark将使用yarn/mesos作为资源管理器

一般来说,standalone适合只想体验一把Spark集群的人,如果想将Spark应用于生产环境,还需要借助第三方的资源调度模块来优化Spark的资源管理。

Spark以哪一种模式运行可以在执行spark-shell或者spark-submit命令时通过指定 --master参数来设置,如果不设置默认以local方式单机运行。


本次记录的是Spark 的安装与配置,使用的是基本的配置选项,如果想了解Spark的更多配置选项来优化Spark集群的性能可以参阅官方文档或者关注后续文章。

由于我想在Spark安装完成后运行在yarn之上,所以在配置过程中添加了一些hadoop的配置,如果想使用Spark on yarn需要安装Hadoop2.0以及以上版本。本例是在Hadoop2.4.0平台搭建,当然,如果仅是做学习体验用只使用local或standalone模式可以不用安装Hadoop。

关于Hadoop集群的安装部署,请参考:http://blog.youkuaiyun.com/u013468917/article/details/50965530

本次在上述双节点Hadoop集群的基础上安装Spark。两个节点分别为:
master 192.168.1.131
slave1 192.168.1.125

一、安装Scala

Spark是由Scala语言编写的,所以要想在机器上运行Spark就必须先安装Scala。下载地址: http://www.scala-lang.org/download/
用户需要根据所要安装的Spark版本选择对应的Scala版本。这点在Spark官网上会有说明。这次安装的是Spark1.6.1版本,下载的Scala版本为2.10.4
下载完成后将Scala-2.10.4.tgz上传至linux主机中
解压:
tar -zxvf Scala-2.10.4.tgz -C /cloud/


配置环境变量:
在/etc/profile文件中添加:
export SCALA_HOME=/cloud/scala-2.10.4
export PATH=${SCALA_HOME}/bin:$PATH

保存退出,记得 source /etc/profile

二、安装Spark

进入官网下载Spark程序包,下载地址: http://spark.apache.org/downloads.html
本次示例以Spark1.6.1版本为例:
下载spark-1.6.1-bin-hadoop2.tgz
解压:

tar-zxvf spark-1.6.1-bin-hadoop2.tgz -C /cloud

接下来修改Spark的配置文件,这里对Spark进行简单配置,其他更详细的配置可以参考: http://spark.apache.org/docs/1.6.1/configuration.html
1、修改conf/spark-env.sh,在文件中添加以下参数:
export SCALA_HOME=/cloud/scala-2.10.4
export JAVA_HOME=/cloud/jdk1.7.0_80
export SPARK_WORKER_MEMORY=6g
export SPARK_MASTER_IP=192.168.1.131
export MASTER=spark://192.168.1.131:7077

说明:
参数SPARK_WORKER_MEMORY用于指定在worker可用最大内存。这里分配了6GB,读者可以根据自己机器的配置自行分配,但是要为操作系统和其它服务预留足内存。
参数SPARK_MASTER_IP和MASTER根据自己主机的ip修改即可。
2、修改conf/slaves文件:
本次示例集群有两个节点,一个master节点和一个slave1节点。所以在slaves文件中只需要添加:
slave1

说明:
slave1为节点名,也可以填worker节点的ip地址。


接下来同步至slave节点:
首先,同步scala。
scp -r /cloud/scala-2.10.4username@master:/cloud

然后是spark:
scp -r /cloud/spark-1.6.1-bin-hadoop2/ username@master:/cloud/

最后修改slave1上的 /etc/profile 文件和master节点一致。记得source /etc/profile。
如果有多个从节点,这样同步会很麻烦,可以参考: http://blog.youkuaiyun.com/u013468917/article/details/50977666用pssh批量操作。


三、启动Spark

如果需要使用Spark on yarn,需要在启动spark之前确保hadoop已经启动。
spark启动命令在Spark根目录下的sbin目录下。
cd /cloud/spark-1.6.1-bin-hadoop2/sbin
./start-all.sh

正常情况下,master节点会出现master进程,可以用jps查看:
#jps
23526 Jps
2112 Master
7235 NameNode
7598 SecondaryNameNode
7569 ResourceManager
worker节点会有worker进程:
#jps
23489 Jps
1258 Worker
1364 DataNode
24587 NodeManager


四、关闭Spark
在Master节点:
/cloud/spark-1.6.1-bin-hadoop2/sbin/stop-all.sh



问题记录:
初次安装hadoop时参考网上文章,没有提到要配置HADOOP_CONF_DIR或者YARN_CONF_DIR变量。如果没有配置这两个变量,hadoop可以正常运行,hadoop上的hive也可以运行。但是spark会报错。所以需要确认添加了HADOOP_CONF_DIR或者YARN_CONF_DIR环境变量。配置示例:$HADOOP_HOME/etc/hadoop

### 安装配置 Spark 集群 #### 1. 下载并解压 Spark 软件包 首先需要下载适合版本的 Spark 软件包,例如 `spark-3.0.0-bin-hadoop3.2.tgz`。将其上传至服务器并解压缩到指定目录。 ```bash tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz mv spark-3.0.0-bin-hadoop3.2 /usr/local/spark ``` 此步骤完成后,需确保所有节点均拥有相同的 Spark 文件夹结构[^2]。 --- #### 2. 设置 SPARK_HOME 环境变量 编辑 `/etc/profile` 或者用户的 `.bashrc` 文件,添加如下内容: ```bash export SPARK_HOME=/usr/local/spark export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin ``` 随后通过以下命令使更改生效: ```bash source ~/.bashrc ``` 这一步骤是为了方便后续在终端中直接调用 Spark 的相关工具。 --- #### 3. 修改 Spark 配置文件 Spark配置文件位于其安装路径下的 `conf/` 目录中。以下是主要的几个配置文件及其作用: ##### (1) **`spark-defaults.conf`** 该文件用于定义默认参数设置。可以在此处添加一些常用的属性,比如: ```properties spark.master spark://master:7077 spark.executor.memory 2g spark.driver.memory 1g ``` 上述配置指定了 Master 地址以及 Executor 和 Driver 的内存大小。 ##### (2) **`spark-env.sh`** 这个脚本用来设定环境变量和其他高级选项。如果尚未存在,则可以从模板创建它: ```bash cp conf/spark-env.sh.template conf/spark-env.sh ``` 接着打开文件进行编辑,加入 JDK 和 Scala 的路径声明: ```bash JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 SCALA_HOME=/usr/local/scala ``` 注意这里假设已经完成了 Java 和 Scala 的安装配置[^5]。 ##### (3) **`slaves` 文件** 列出所有的 Worker 节点主机名或 IP 地址。例如: ``` worker1.example.com worker2.example.com worker3.example.com ``` 保存后同步这些改动到其余机器上以保持一致性[^1]。 --- #### 4. 实现免密码 SSH 登陆 为了简化管理流程,建议配置无密码访问机制以便于跨节点通信。具体方法是在 Master 上生成公钥,并将其追加到各 Slave 用户家目录内的 authorized_keys 中去。 --- #### 5. 将 Spark 复制到其他节点 利用 SCP 工具或者 rsync 技术快速传播已调整完毕的数据副本给集群成员们共享使用: ```bash rsync -avz /usr/local/spark user@worker1:/usr/local/ ``` 重复以上指令直至覆盖全部目标位置为止。 --- #### 6. 启动 Spark 集群 进入任意一台作为主控角色的工作站里运行启动命令: ```bash sbin/start-all.sh ``` 此时会自动连接各个子单元形成整体网络体系[^3]。 可以通过浏览器输入 http://<Master_IP>:8080 来验证是否成功加载 Web UI 页面显示当前状态信息。 --- #### 7. 测试功能正常否 最后安排简单的作业来检验整个系统的运转情况。例如提交一段基于 HDFS 存储数据源的任务实例化过程演示效果如何等等。 --- ### 注意事项 在整个过程中需要注意两点:一是确认防火墙策略允许必要的端口开放;二是时刻关注日志记录寻找潜在错误提示加以解决[^4]。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值