Apache spark 纱线资源管理器上的火花:纱线容器和火花执行器之间的关系
我是一个新手,不了解纱线Apache spark 纱线资源管理器上的火花:纱线容器和火花执行器之间的关系,apache-spark,containers,yarn,hortonworks-data-platform,executor,Apache Spark,Containers,Yarn,Hortonworks Data Platform,Executor,我是一个新手,不了解纱线容器和火花执行器之间的关系。根据warn utils.py脚本的结果,我尝试了以下配置,可用于找到最佳集群配置 我正在研究的Hadoop集群(HDP2.4): 1主节点: CPU:2个CPU,每个6核=12核 内存:64 GB SSD:2 x 512 GB 5个从节点: CPU:2个CPU,每个6核=12核 内存:64 GB 硬盘驱动器:4 x 3 TB=12 TB 已安装HBase(这是下面脚本的参数之一) 因此,我运行了python-thread-util
容器
和火花执行器
之间的关系。根据warn utils.py
脚本的结果,我尝试了以下配置,可用于找到最佳集群配置
我正在研究的Hadoop集群(HDP2.4):
- 1主节点:
- CPU:2个CPU,每个6核=12核
- 内存:64 GB
- SSD:2 x 512 GB
- 5个从节点:
- CPU:2个CPU,每个6核=12核
- 内存:64 GB
- 硬盘驱动器:4 x 3 TB=12 TB
- 已安装HBase(这是下面脚本的参数之一)
python-thread-utils.py-c12-m64-d4-ktrue
(c=cores,m=memory,d=hdds,k=hbase installed),得到了以下结果:
Using cores=12 memory=64GB disks=4 hbase=True
Profile: cores=12 memory=49152MB reserved=16GB usableMem=48GB disks=4
Num Container=8
Container Ram=6144MB
Used Ram=48GB
Unused Ram=16GB
yarn.scheduler.minimum-allocation-mb=6144
yarn.scheduler.maximum-allocation-mb=49152
yarn.nodemanager.resource.memory-mb=49152
mapreduce.map.memory.mb=6144
mapreduce.map.java.opts=-Xmx4915m
mapreduce.reduce.memory.mb=6144
mapreduce.reduce.java.opts=-Xmx4915m
yarn.app.mapreduce.am.resource.mb=6144
yarn.app.mapreduce.am.command-opts=-Xmx4915m
mapreduce.task.io.sort.mb=2457
我通过Ambari接口进行了这些设置,并重新启动了集群。这些值也大致与我之前手动计算的值相匹配
我现在有问题了
- 为我的
spark提交
脚本找到最佳设置
- 参数
,--num executors
和--executor cores
--executor memory
- 参数
- 获得纱线容器和火花执行器之间的关系
- 了解Spark History UI中的硬件信息(设置时显示的内存较少(通过乘以工作节点数量计算到总内存时))
- 为了理解纱线中
的概念,我在这里还找不到任何有用的例子vcores
有人能帮助解决一个或多个问题吗?我将在这里一步一步地报告我的见解:
- 首先重要的是这个事实(来源:): 在纱线上运行火花时,每个火花执行器作为纱线容器运行。[……]
- 这意味着容器的数量将始终与Spark应用程序创建的执行器相同,例如通过Spark submit中的
参数--num executors
- 由
每个容器始终至少分配此内存量。这意味着,如果参数warn.scheduler设置。最小分配mb
设置为例如仅--executor memory
但1g
为例如warn.scheduler。最小分配mb
,则容器比Spark应用程序所需的大得多6g
- 反过来说,如果参数
设置为高于--executor memory
值,例如纱线调度程序的最小分配mb
,则容器将动态分配更多内存,但是仅当请求的内存量小于或等于12g
值时warn.scheduler.maximum allocation mb
warn.nodemanager.resource.memory mb的值决定了一台主机的所有容器可以分配多少内存
纱线调度程序。最小分配mb
允许您运行较小的容器,例如为较小的执行器(否则将浪费内存)
=>将
纱线.调度器.最大分配mb
设置为最大值(例如等于纱线.节点管理器.资源.内存mb
)允许您定义更大的执行器(如果需要,可分配更多内存,例如通过--执行器内存
参数).我们是否必须在每个群集节点上设置/更改warn.nodemanager.resource.memory mb
?