我的大型物理机有16个CPU,256 GB RAM,20 TB硬盘。我只需要知道制作火花星团的最佳解决方案是什么?
如果我需要处理TB数据 1.只有一台机器,包含驱动程序,执行程序,作业跟踪器和任务跟踪器。 2.创建4个VM,每个VM应包含4个CPU,64 GB RAM 3.创建8个VM,每个VM应包含2个CPU,每个32 GB RAM
请给我你的意见/建议
答案 0 :(得分:1)
Udemy老师Frank Kane在his tutorial上说,选项1更好。为了模拟集群,在一台机器上设置VM是没有意义的。当您设置SparkConf
时,可以使用setMaster("local[*]")
让它利用笔记本电脑上的所有核心并自动分配工作,就像在群集上一样。
答案 1 :(得分:0)
选项1是您的最佳选择。如果您开始创建VM,那么由于并行执行的结果合并,将会出现网络开销。此外,根据您提供的规格,您似乎将在同一台计算机上创建VM。因此,由于VM,这也会增加额外的开销。此外,x vms表示RAM中的x OS内核,而后者可以由spark worker使用。除了spark,您还可以检测机器上的核心并自行并行化操作。
答案 2 :(得分:0)
如果您只有一台机器可以获得最佳性能,请使用本地群集。
将主设置为" local[numthreads]
"设置最适合您工作的线程数。
您可以在本地模式下启动火花,即在代码中设置conf.setMaster("local[numthreads]")
或
在提交作业时使用--master local[numthreads]
。
如果您开始创建虚拟机,则会出现网络开销,CPU和RAM浪费