spark standlone 集群离线安装

环境: centos7

安装计划

为最轻量化实现部署,安装不依赖CDH,只安装大数据以及做大数据处理必须的组件

  • 安装 java
  • 安装 scala
  • 安装 zookeeper
  • 安装 kafka
  • 安装 spark
安装实施
安装java
  • 查看系统架构
uname -m
x86_64
  • 根据系统架构下载对应的jdk, 要注意 64位的是下面两个,x86 是 32 位的
    在这里插入图片描述

  • 放到服务器上,解压并配置

# 解压
tar -zxvf jdk-8u441-linux-x64.tar.gz

# 创建软连接,之前有软连接的可以删掉
cd /usr/bin
rm java
ln -s /home/demo/tools/jdk1.8.0_441/bin/java java

# 配置 JAVA_HOME
vim ~/.bashrc
export JAVA_HOME=/home/demo/tools/jdk1.8.0_441
export PATH=$JAVA_HOME/bin:$PATH

source ~/.bashrc

# 验证 
java -version
javac -version
安装 zookeeper
  • 官网下载,注意下二进制包,这样就不用编译了,另外版本需要和kafka的版本匹配,这里下载 apache-zookeeper-3.5.6-bin.tar.gz
  • 配置修改
# zookeeper 设置为集群,需要修改的地方: 日志目录、数据目录

# 1.修改解压包名称(直观区分) 
mv apache-zookeeper-3.5.5-bin zk 

# 2.新建data,logs 目录来存放数据和日志 
cd zk 
mkdir data logs 

# 3.进入conf,将zoo_sample.cfg复制重命名zoo.cfg 
cd conf 
cp zoo_sample.cfg zoo.cfg 

# 4.修改conf下zoo.cfg 
# ① 修改:dataDir=/usr/local/zookeeper-cluster/zk/data 
# ② 添加:dataLogDir=/usr/local/zookeeper-cluster/zk/logs 
# ③ clientPort=2181【clientPort是客户端的请求端口】 
# ④ 在zoo.cfg文件末尾追加 server.1=10.1.240.150:2888:3888 server.2=10.1.240.151:2888:3888 server.3=10.1.240.152:2888:3888
vi zoo.cfg  
server.1=10.1.240.150:2888:3888 
server.2=10.1.240.151:2888:3888 
server.3=10.1.240.152:2888:3888

# 5.在zk的data目录下创建一个myid文件,内容为1,每一台的 myid 不一样,可以依次设置为 1, 2, 3
cd ../data/ 
echo 1 > myid
  • 启动及验证
    集群所有配置都修改完后启动
# 进入 bin 目录
cd ../zookeeper/bin
./zkServer.sh start

# 查看启动状态
./zkServer.sh status
  • 设置开机启动
vim /etc/systemd/system/zookeeper.service

# 加入下面内容
[Unit]
Description=Apache ZooKeeper
After=network.target

[Service]
Type=forking
User=root
Group=root
ExecStart=/home/demo/bigdata/apache-zookeeper-3.5.6-bin/bin/zkServer.sh start
ExecReload=/home/demo/bigdata/apache-zookeeper-3.5.6-bin/bin/zkServer.sh restart
ExecStop=/home/demo/bigdata/apache-zookeeper-3.5.6-bin/bin/zkServer.sh stop
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

# 停止当前的zookeeper
/home/demo/bigdata/apache-zookeeper-3.5.6-bin/bin/zkServer.sh stop

# 使用systemctl启动,并设置开机自启
systemctl start zookeeper
systemctl enable zookeeper
安装kafka
  • 官网下载,注意下二进制包,这样就不用编译了,下载的版本需要和zookeeper匹配,这里下载 kafka_2.12-2.5.1.tgz
  • 配置修改
cd /home/demo/bigdata/kafka_2.12-2.5.1/config
vim server.properties

# 修改必须处理的配置
broker.id=1 # 设置 broker.id 每个节点不一样,按顺序来就可以
listeners=PLAINTEXT://172.16.150.154:9092 # 修改为本机地址 每个节点不一样
log.dirs=/Data/kafka-logs # 数据目录,kafka-logs会自动采集 
zookeeper.connect=172.16.150.154:2181,172.16.150.155:2181,172.16.150.156:2181  # zokeeper集群地址,以","为分割其他的不用改

# 其它的配置根据需要调整
  • 启动及验证
# 启动 后台运行
./kafka-server-start.sh -daemon ../config/server.properties

# 创建一个测试 topic,验证是否搭建成功
./kafka-topics.sh --create --topic test-tpc --partitions 3 --replication-factor 2 --bootstrap-server 192.168.12.113:9092
# 查看主题详情
./kafka-topics.sh --describe --topic test-tpc --bootstrap-server 192.168.12.113:9092
  • 创建快捷方式

  • 设置开机启动

vim /etc/systemd/system/kafka.service

# 加入下面的内容
[Unit]
Description=Apache Kafka
After=network.target zookeeper.service

[Service]
Type=simple
User=root
Group=root
ExecStart=/home/demo/bigdata/kafka_2.12-2.5.1/bin/kafka-server-start.sh /home/demo/bigdata/kafka_2.12-2.5.1/config/server.properties 
ExecStop
<think>好的,我需要回答用户关于Spark Standalone模式下Worker是否可以运行多个Spark任务的问题。首先,我得回忆一下Spark的架构和资源分配机制。根据之前的引用内容,Standalone模式下,Worker负责启动Executor,而Executor的数量和资源分配受配置参数影响。用户提到引用[2]中说,默认情况下每个Worker节点最多分配一个Executor。这可能意味着默认配置下,一个Worker只能处理一个任务的一个Executor。但用户的问题是关于运行多个任务,所以可能需要多个Executor或者调整资源配置。 接下来,我需要确认Worker如何管理多个任务。每个Spark应用会启动自己的Executor,所以如果配置允许,多个应用可以共享同一个Worker节点,每个应用有自己的Executor。但需要参数如spark.deploy.defaultCores和资源分配策略的支持。 另外,资源静态分配和动态分配的区别也很重要。默认是静态的,可能需要调整到动态分配以更灵活地分配资源。同时,Worker的资源总量(CPU和内存)必须足够支持多个Executor,否则会被限制。还需要考虑配置参数,比如spark.executor.cores设置每个Executor的核心数,如果设置较低,可以启动更多Executor。例如,如果Worker有4个核心,每个Executor用1个核心,就可以启动4个Executor,从而运行多个任务。 最后,总结机制和配置步骤,确保回答结构清晰,涵盖资源隔离、配置参数、调度策略等,并给出相关问题的建议,帮助用户进一步理解。</think>在Spark Standalone模式下,一个Worker节点能否运行多个Spark任务取决于资源配置策略和参数设置。其核心机制涉及**资源分配粒度**和**Executor管理策略**,具体分析如下: --- ### 一、Worker运行多任务的机制 1. **Executor与任务的关系** - 每个Spark应用(Application)会向Master申请独立的Executor进程,每个Executor可运行多个Task线程[^2] - Worker节点通过`spark.executor.cores`参数控制单个Executor使用的CPU核数 - 若Worker总核数$N$,当$N > spark.executor.cores$时,可启动多个Executor 2. **资源分配策略** ```properties # 关键参数配置 spark.deploy.defaultCores=无限(默认值) # 控制单个Worker可分配的总核数 spark.executor.instances=1 # 单个应用在Worker上分配的Executor数量 ``` 通过调整`spark.cores.max`可控制单个应用占用的最大核数,允许多个应用共享Worker资源[^2] 3. **资源隔离层级** - **静态分配**(默认):资源在应用启动时固定分配 - **动态分配**:需启用`spark.dynamicAllocation.enabled=true`,允许运行时调整资源[^4] --- ### 二、配置多任务运行的实现方式 1. **调整Worker资源容量** ```shell # 启动Worker时指定资源总量 ./start-worker.sh -c 4 -m 8g spark://master:7077 ``` - `-c`指定CPU核数 - `-m`指定内存容量 2. **优化Executor配置** ```python SparkConf() .set("spark.executor.cores", "1") # 每个Executor使用1核 .set("spark.executor.memory", "2g") ``` 此配置允许4核Worker同时运行4个Executor 3. **调度策略调整** - **FIFO调度**(默认):任务按提交顺序独占资源 - **FAIR调度**:需配置`spark.scheduler.mode=FAIR`,支持资源池共享[^4] --- ### 三、多任务运行示例 假设Worker配置为4核8GB: 1. 应用A申请2核4GB → 启动Executor1 2. 应用B申请1核2GB → 启动Executor2 3. 剩余1核2GB可继续接收新任务 此时Worker上同时运行两个Executor,对应两个不同的Spark应用。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值