在Spark Standalone模式下,有主节点和工作节点.
这里有几个问题:
我试图了解如何在YARN群集/客户端上运行spark.我脑子里有以下问题.
是否有必要在纱线群中的所有节点上安装火花?我认为它应该是因为集群中的工作节点执行任务并且应该能够解码驱动程序发送到集群的spark应用程序中的代码(spark API)?
它在文档中说"确保HADOOP_CONF_DIR或YARN_CONF_DIR指向包含Hadoop集群的(客户端)配置文件的目录".为什么客户端节点在将作业发送到集群时必须安装Hadoop?
阅读完这个问题后,我想提出更多问题:
failover hadoop hadoop-yarn apache-spark apache-spark-standalone
所以我有一个带有16个内核和64GB内存的Spark独立服务器.我在服务器上运行主服务器和工作服务器.我没有启用动态分配.我在Spark 2.0上
我不明白的是,当我提交工作并指明:
--num-executors 2
--executor-cores 2
Run Code Online (Sandbox Code Playgroud)
只应占用4个核心.然而,当提交作业时,它会占用所有16个内核,并且无论如何都会绕过num-executors参数旋转8个执行程序.但如果我将executor-cores参数更改为4它将相应调整,4个执行器将旋转.
我的用例如下:
Wrtiting RDDto file saveAsTable(对ORC文件).每个保存创建新文件(因此1000 000着作给我1000 000ORC文件).我知道每个RDD都会创建新的ORC文件是很自然的.但是,我不知道为什么从ThriftServer查询它们的速度太慢.
我的问题是:如何理解这种奇怪的行为?
例如,SELECT COUNT(*)在1000 000行(所以相同的文件)需要大约1 minute(!).
但是,当我将1000 000行保存到一个文件时,相同的查询工作50ms.
我想了解这种差异.毕竟,1000 000文件是小编号.
我用它Standalone Spark Cluster来处理几个文件.当我执行驱动程序时,使用它的核心在每个工作程序上处理数据.
现在,我已经读到了Partitions,但如果它与工作核心不同,我就不会得到它.
设置cores number和partition numbers?之间有区别吗?
我是新来的火花。当我尝试在客户端模式下使用 3 个执行程序运行 spark-submit 时,我希望在执行时显示 3 个 java 进程(因为有 3 个执行程序)ps -ef
$SPARK_HOME/bin/spark-submit --num-executors 3 --class AverageCalculation --master local[1] /home/customer/SimpleETL/target/SimpleETL-0.1.jar hdfs://node1:9000/home/customer/SimpleETL/standard_input.csv
Run Code Online (Sandbox Code Playgroud)
但是,我没有看到 3 个 Java 进程。我的理解是每个 executor 进程都是一个 java 进程。请指教。谢谢。