我注意到其他答案是使用Spark Standalone(在VM上,如OP或
127.0.0.1
我想展示一下什么对我运行
jupyter/pyspark-notebook
针对远程AWS Mesos群集,并在Mac上的Docker中本地运行容器。
these instuctions apply
然而
--net=host
重要的一步是在Mesos slaves的操作系统上创建笔记本用户,如链接中所述。
This diagram
有助于调试网络,但没有提及
spark.driver.blockManager.port
,这实际上是使其工作的最后一个参数,我在Spark文档中遗漏了它。否则,Mesos从机上的执行器也会尝试绑定该块管理器端口,而Mesos拒绝分配该端口。
-
Jupyter用户界面(
8888
-
Spark用户界面(
4040
这些端口使Mesos能够回到驾驶员身边:
重要的
-
“libprocess”地址+端口似乎通过
LIBPROCESS_PORT
Mesos documentation
-
火花驱动器端口(随机:33139)+16
spark.port.maxRetries
-
火花块管理器端口(随机:45029)+16
spark.port.maxRetries
不太相关,但我使用的是Jupyter实验室界面
export EXT_IP=<your external IP>
docker run \
-p 8888:8888 -p 4040:4040 \
-p 37899:37899 \
-p 33139-33155:33139-33155 \
-p 45029-45045:45029-45045 \
-e JUPYTER_ENABLE_LAB=y \
-e EXT_IP \
-e LIBPROCESS_ADVERTISE_IP=${EXT_IP} \
-e LIBPROCESS_PORT=37899 \
jupyter/pyspark-notebook
一旦开始,我就去
localhost:8888
地址为Jupyter,只需打开一个终端进行简单
spark-shell
行动我还可以为实际打包的代码添加卷装载,但这是下一步。
spark-env.sh
spark-default.conf
,因此我将所有相关会议传递给
现在。提醒:这是在容器内
spark-shell --master mesos://zk://quorum.in.aws:2181/mesos \
--conf spark.executor.uri=https://path.to.http.server/spark-2.4.2-bin-hadoop2.7.tgz \
--conf spark.cores.max=1 \
--conf spark.executor.memory=1024m \
--conf spark.driver.host=$LIBPROCESS_ADVERTISE_IP \
--conf spark.driver.bindAddress=0.0.0.0 \
--conf spark.driver.port=33139 \
--conf spark.driver.blockManager.port=45029
这将加载Spark REPL,在一些关于查找Mesos主机和注册框架的输出之后,我然后使用NameNode IP从HDFS读取一些文件(尽管我怀疑任何其他可访问的文件系统或数据库都应该工作)
Spark session available as 'spark'.
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 2.4.2
/_/
Using Scala version 2.12.8 (OpenJDK 64-Bit Server VM, Java 1.8.0_202)
Type in expressions to have them evaluated.
Type :help for more information.
scala> spark.read.text("hdfs://some.hdfs.namenode:9000/tmp/README.md").show(10)
+--------------------+
| value|
+--------------------+
| # Apache Spark|
| |
|Spark is a fast a...|
|high-level APIs i...|
|supports general ...|
|rich set of highe...|
|MLlib for machine...|
|and Spark Streami...|
| |
|<http://spark.apa...|
+--------------------+
only showing top 10 rows