我是Apache Spark的新手,试图在我的集群上运行一个简单的程序.问题是驱动程序将所有任务分配给一个工作程序.
我在2台计算机上作为Spark独立集群模式
运行:1 - 运行主服务器和4核的工作服务器:1用于主服务器,3用于工作服务器.Ip:192.168.1.101
2 - 只运行一个有4个核心的工人:全部为工人.Ip:192.168.1.104
这是代码:
public static void main(String[] args) {
SparkConf conf = new SparkConf().setAppName("spark-project");
JavaSparkContext sc = new JavaSparkContext(conf);
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
JavaRDD<String> lines = sc.textFile("/Datasets/somefile.txt",7);
System.out.println(lines.partitions().size());
Accumulator<Integer> sum = sc.accumulator(0);
JavaRDD<Integer> numbers = lines.map(line -> 1);
System.out.println(numbers.partitions().size());
numbers.foreach(num -> System.out.println(num));
numbers.foreach(num -> sum.add(num));
System.out.println(sum.value());
sc.close();
}
Run Code Online (Sandbox Code Playgroud)
注意:使用Thread.sleep()命令,因为我试过这个:https://issues.apache.org/jira/browse/SPARK-3100
我使用了提交脚本:
bin/spark-submit --class spark.Main --master spark://192.168.1.101:7077 --deploy-mode cluster /home/sparkUser/JarsOfSpark/JarForSpark.jar
Run Code Online (Sandbox Code Playgroud)
这是我从驱动程序stdout得到的结果:
7
7
50144
Run Code Online (Sandbox Code Playgroud)
来自主人的日志:
log4j:WARN …Run Code Online (Sandbox Code Playgroud)