spark集群搭建(完全分布式)

本文档详细介绍了如何在已有的Hadoop和Zookeeper集群上搭建Spark 2.3.0的完全分布式环境,强调了JDK版本要求、配置文件设置以及Master的高可用性验证,包括通过jps检查进程、Zookeeper监控路径以及Web界面状态切换等步骤。

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

说明

说明1、其余的见前几篇博客,本文基于之前安装的集群安装spark,安装的节点如下(标红的为本次安装):

机器

安装软件

进程

focuson1

zookeeper;hadoop namenode;hadoop DataNode;hbase master;hbase regionrerver;spark master;spark worker

JournalNode; DataNode; QuorumPeerMain; NameNode; NodeManager;DFSZKFailoverController;HMaster;HRegionServer;Worker;Master

focuson2

zookeeper;hadoop namenode;hadoop DataNode;yarn;hbase master;hbase regionrerver;spark master;spark worker

NodeManager;ResourceManager;JournalNode; DataNode; QuorumPeerMain; NameNode; DFSZKFailoverController;HMaster;HRegionServer;Worker;Master

focuson3

zookeeper;hadoop DataNode;yarn;hbase regionrerver<

### 安装和配置完全分布式环境下的Spark集群 #### 主机映射配置 在搭建 Spark 集群之前,需要先完成主机之间的相互识别。通过编辑 `/etc/hosts` 文件来实现主机名到 IP 地址的映射[^1]。 ```bash sudo nano /etc/hosts ``` 添加如下内容(假设有 master 和两个 slave 节点): ```plaintext 192.168.1.100 master 192.168.1.101 slave1 192.168.1.102 slave2 ``` #### 解压 Spark 并分发至各节点 在主节点 `master` 上下载并解压 Spark 的安装包,并将其复制到其他工作节点 `slave1` 和 `slave2` 中[^3]。 ```bash tar -zxvf spark-<version>-bin-hadoop<version>.tgz -C /usr/local/ mv /usr/local/spark-<version>-bin-hadoop<version> /usr/local/spark scp -r /usr/local/spark root@slave1:/usr/local/ scp -r /usr/local/spark root@slave2:/usr/local/ ``` #### 修改 Spark 配置文件 进入 Spark 的配置目录,创建或修改必要的配置文件。 ##### 1. 编辑 `conf/slaves` 该文件定义了所有的 Worker 节点列表。 ```bash cd /usr/local/spark/conf/ cp slaves.template slaves nano slaves ``` 写入以下内容: ```plaintext slave1 slave2 ``` ##### 2. 创建 `spark-env.sh` 用于设置 Spark 运行所需的环境变量。 ```bash cp spark-env.sh.template spark-env.sh nano spark-env.sh ``` 添加以下内容: ```plaintext export SPARK_MASTER_HOST=master export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 export HADOOP_CONF_DIR=/etc/hadoop/conf ``` ##### 3. 配置 `spark-defaults.conf` 此文件主要用于指定默认参数,例如 Master URL、日志路径等[^2]。 ```bash cp spark-defaults.conf.template spark-defaults.conf nano spark-defaults.conf ``` 添加以下内容: ```properties spark.master spark://master:7077 spark.eventLog.enabled true spark.eventLog.dir hdfs://master:8020/spark-logs spark.serializer org.apache.spark.serializer.KryoSerializer spark.driver.memory 5g spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three" ``` ##### 4. 启动 HDFS 和 YARN 确保 Hadoop 已经正确启动,HDFS 可用。可以通过以下命令验证: ```bash hdfs dfsadmin -report yarn node -list ``` 如果未启动,则执行以下操作: ```bash start-dfs.sh start-yarn.sh ``` #### 启动 Spark 集群 回到主节点 `master`,依次启动 Spark Master 和 Workers。 ```bash sbin/start-master.sh sbin/start-slave.sh spark://master:7077 ``` 可以访问 Web UI 来确认集群的状态,默认地址为 `http://master:8080`[^1]。 #### 测试 Spark 应用程序 编写简单的测试脚本以验证集群运行正常。例如,在 Scala 或 Python 下提交一个 WordCount 程序。 ```python from pyspark import SparkContext, SparkConf if __name__ == "__main__": conf = SparkConf().setAppName("Word Count").setMaster("spark://master:7077") sc = SparkContext(conf=conf) text_file = sc.textFile("hdfs://master:8020/input.txt") counts = text_file.flatMap(lambda line: line.split()) \ .map(lambda word: (word, 1)) \ .reduceByKey(lambda a, b: a + b) output = counts.collect() for (word, count) in output: print(f"{word}: {count}") sc.stop() ``` 保存为 `word_count.py` 并提交任务: ```bash spark-submit --class com.example.WordCount word_count.py ``` --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值