centos7 spark-submit 部署spark on yarn分布式集群

spark-submit / spark on yarn分布式集群

flask项目中用到了pyspark和es数据库
项目api中使用subprocess python自置模块来调用shell执行./spark-submit命令执行pyspark脚本启动spark查询es数据库然后把查询的数据注册成临时表再使用sparksql再筛选数据。

spark on yarn基础配置
http://spark.apache.org/docs/latest/running-on-yarn.html
HADOOP_CONF_DIR 和YARN_CONF_DIR两个变量
然后spark-submit参数加上 --master yarn --deploy-mode cluster
hadoop-conf和yarn-conf:hadoop和yarn的配置文件,下载解压
elasticsearch-spark-13_2.11-5.6.9.jar和spark-2.32-bin-hadoop2.7来搭桥梁。需要在spark-2.3.2-bin-hadoop2.7中的conf文件夹中copy spark-env.sh.template文件并改名spark-env.sh

  1. cd spark-2.3.2-bin-hadoop2.7/conf/
    cp spark-env.sh.template spark-env.sh
    vi spark-env.sh
    export HADOOP_CONF_DIR=/home/python/hadoop-conf
    export YARN_CONF_DIR=/home/python/yarn-conf
    添加完毕然后再启动hadoop参数上加上
    ./bin/spark-submit --master yarn --deploy-mode cluster --conf spark.yarn.submit.waitAppCompletion=True

如果报错

### 搭建 Spark 分布式计算集群教程 搭建 Spark 分布式计算集群需要遵循一系列步骤,包括环境准备、软件安装与配置、集群初始化以及测试验证。以下是详细的搭建过程: #### 1. 环境准备 确保所有节点(Master 和 Slave 节点)的系统环境一致,包括操作系统版本和基础软件包。推荐使用 CentOS 或 Ubuntu 系统[^4]。 - 安装 Java 环境:推荐使用 JDK 1.8 版本。例如,可以下载 `jdk-8u171-linux-x64.tar` 并解压到指定目录。 - 安装 Scala:Spark 基于 Scala 开发,建议安装 Scala 2.11.x 版本。 - 配置 SSH 免密登录:在 Master 和所有 Slave 节点之间配置无密码 SSH 登录,方便后续操作。 #### 2. 安装 Hadoop 由于 Spark 任务通常依赖 HDFS 存储数据,因此需要先搭建 Hadoop 分布式文件系统。 - 下载并解压 Hadoop 2.9.1 的安装包[^4]。 - 配置 Hadoop 的核心文件(如 `core-site.xml`、`hdfs-site.xml` 和 `yarn-site.xml`),并启动 HDFS 和 YARN 服务。 - 验证 Hadoop 是否正常工作,可以通过访问 Web 界面(如 http://<namenode-ip>:50070)进行检查。 #### 3. 安装 Spark - 下载 Spark 安装包(如 `spark-2.3.1-bin-hadoop2.7`)[^4],并将其解压到目标目录。 - 修改 Spark 配置文件: - 编辑 `conf/spark-env.sh`,设置 `JAVA_HOME` 和 `HADOOP_CONF_DIR` 环境变量。 - 编辑 `conf/slaves` 文件,添加所有 Slave 节点的主机名或 IP 地址。 - 如果使用 YARN 调度,则需配置 `conf/spark-defaults.conf`,添加以下内容: ```bash spark.master yarn spark.submit.deployMode cluster ``` - 启动 Spark 集群:进入 Spark 的 `sbin` 目录,运行 `start-all.sh` 脚本。 #### 4. 测试 Spark 集群 - 访问 Spark Web 界面(如 http://<master-ip>:8080),确认集群状态是否正常[^2]。 - 进入 Spark 的 `bin` 目录,启动 `spark-shell` 控制台,测试基本功能。 - 使用以下代码读取 HDFS 上的文件并执行 WordCount 程序: ```scala val textFile = sc.textFile("hdfs://<namenode-ip>:9000/log.txt") val wordCounts = textFile.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _) wordCounts.saveAsTextFile("hdfs://<namenode-ip>:9000/output3") ``` #### 5. 性能优化建议 -Spark 的依赖上传到 HDFS,以实现高可用性(HA)[^1]。 - 确保 Spark 的纯净版 JAR 包不包含 Hadoop 和 Hive 的相关依赖,避免兼容性问题[^1]。 - 根据实际需求调整 Spark 的资源配置(如 `executor-memory` 和 `executor-cores` 参数)[^3]。 ### 注意事项 - 确保所有节点的时间同步,避免因时间差异导致的问题。 - 在生产环境中,建议使用 Kerberos 认证机制增强安全性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值