Python+PySpark文件本地连接到远程HDFS/Spark/Yarn集群

j91ykkif  于 2022-11-01  发布在  Spark
关注(0)|答案(1)|浏览(584)

我一直在尝试使用HDFS和Spark。我在网络上设置了一个五节点集群,运行HDFS和Spark,并由Yarn管理。Workers以客户端模式运行。从主节点,我可以很好地启动PySpark shell。运行示例jar,作业被分割到工作节点,并很好地执行。
我有几个关于是否以及如何在这个集群上运行python/Pyspark文件的问题。
1.如果我有一个python文件在其他地方调用了PySpark,比如我的本地dev笔记本电脑或某个docker容器,有没有办法在本地运行或提交这个文件,然后在远程Spark集群上执行它呢?我想知道的方法包括在本地/docker环境中运行spark-submit,但是文件中有SparkSession.builder.master()配置到远程集群。
1.相关的,我在spark-submit中看到了--master的配置,但是唯一的yarn选项是传递“yarn”,它似乎只在本地排队?有没有办法指定远程yarn?
1.如果我可以远程设置和运行文件,我该如何设置SparkSession.builder.master()呢?该URL是否仅指向hdfs://指向端口9000的URL,或者我是否要将其提交到其中一个Yarn端口?
TIA!

bf1o4zei

bf1o4zei1#

一种在本地运行或提交该文件并在远程Spark集群上执行的方法
是的,当然是“YARN”,而不是“remote Spark cluster”。当你用spark-submit运行时,你设置--master=yarn,这将在配置的yarn-site.xmlin HADOOP_CONF_DIR环境变量下运行。你可以在操作系统级别定义它,或者在spark-env.sh中定义。
您也可以在程式码中使用SparkSession.builder.master('yarn')。如果同时提供两个选项,其中一个会被覆写。
要在“群集中”完全运行,还应设置--deploy-mode=cluster
有没有办法指定遥纱?
如前所述,这是从yarn-site.xml配置的,用于提供资源管理器位置。
我如何设置SparkSession.builder.master()?该url是否仅指向hdfs://端口9000的url
不-YARN资源管理器有自己的RPC协议,而不是hdfs://......不过,你可以使用spark.read("hdfs://namenode:port/path")来读取HDFS文件。如前所述,.master('yarn')--master yarn是你唯一需要的Spark专用配置。
如果你想使用Docker容器,YARN确实支持这一点,但Spark的Kubernetes master更容易设置,你可以在Kubernetes中使用Hadoop Ozone或MinIO,而不是HDFS。

相关问题