spark学习-18-Spark的Core理解

1.为什么理解它?
有一次我要跑一个任务,spark-submit提交的任务,但是它总是处于ACCEPED等待接受的状态,以前遇到这个问题,这个是内存不够引起的

Spark学习-SparkSQL–05-SparkSQL CLI Application report for application_15_0022 (state: ACCEPTED)
http://blog.csdn.net/qq_21383435/article/details/77027762

2.但是今天却是
spark学习-18-Spark的Core理解_第1张图片

红色的内存明显还够用,还有剩余因此不是内存的问题,主要是出现在橙色的问题,总共36个core被用完了,所以cpu没有能力继续处理新任务了,只能排队等待了。

3。那么什么是core呢?

1 处理器的演变

‘Processor’,’Core’, 和 ‘CPU’这些术语定义都不很明确,在过去的这些年,随着计算机架构的演变,它们的含义也经历了很多变化。在现代的定义中,’Processor’和 ‘CPU’的含义其实是同一个东西,更精确的说,它们是指’处理器包’,因为没有一个标准定义这个包到底应该包含什么。15-20年前的老CPU只包含有执行任务所需要的最小的资源。它包括运算器、取指令和解码硬件,指令管道、中断处理硬件,和部分IO控制硬件,此后,cache内存加入到CPU中用来提高执行效率。

2 核的形成和演变
再往后,执行任务的processor(处理器)数量开始加倍。运算器、取指令和解码硬件,指令管道以及一些cache内存被整合起来成为我们今天所说的 ‘CORE’。每个’核’都可以运行单个程序(当它支持硬件线程比如IntelCPU的超级线程时也可以运行多个程序),维护正确程序的状态、寄存器和正确的执行次序,并通过运算器(ALU)来执行操作,核是CPU的基本计算单元。IO读取控制、中断处理,等等资源在所有的’核’之间共享。
在给定的时间内,一颗CPU/Processor(处理器)可以有多颗核执行任务,这些任务通常是操作系统调度的软件进程和线程。记住操作系统可能有多个线程在运行,但CPU只可以在给定的时间内运行一定数量(X)的任务数,X=CPU的核数*每核的硬件线程数,剩余的线程必须等待操作系统的调度,要么抢占当前正在运行的任务线程,或者其他情况
最近内存控制单元也加入到处理器包中,它居于’核’的一侧但不属于它。因此内存控制单元是处理器包的一部分,或者Processor/CPU的一部分,但不是’核’的一部分。Intel公司习惯用“非计算内核”来特指它。CPU包含核与外部的连接的相互联系,通常是一个大的’末级’共享cache,你可能需要很多其他的要素来让CPU工作,比如上面的内存控制器来和内存进行交互—(这就是上面说的内存控制单元),IO控制器来和存储交互(display,PCIe,USB)等等。此外CPU可能还集成了GPU,CPU设计越来越像我们所称的“SOC”—片上系统。

3 怎么计算机器的核数
当我们讨论一个安装有多颗处理器的系统时,这会变得更加复杂。很多服务器和工作站安装有2、4或者更多的处理器,每个处理器都包含同样的硬件。因此一个机器中的核数可以通过系统中’处理器’的数目乘以每个处理器中的’核’数计算得出,一台有两颗双核处理器的电脑的核数同一台有一颗八核处理器的电脑的核数是相同的
每个处理器插槽(布满引脚和金属的平板)都可以插入一颗AMD皓龙6100系列的处理器,每个皓龙6100处理器都有8或者12核。这意味着一个典型系统可以有8核(装有单颗八核处理器)或者48核(装有4颗12核处理器)
下面形象的展现了SOCKET、CPU/Processor、CORE的关系

spark学习-18-Spark的Core理解_第2张图片

总结:
1。一个CPU有几个核心就有几个core

2。Linux和Windows下查看cpu和core个数

Linux下:
cat /proc/cpuinfo     #这个能看cpu的所有信息.然后里面的proceesor是cpu进程个数.并不是真正物理cpu个数.
cat /proc/cpuinfo |grep "processor"|wc -l    #查看逻辑cpu个数
cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l    #查看物理cpu个数
cat /proc/cpuinfo |grep "cores"|uniq       #查看有几个core

Windows下:
查看处理器个数: cmd.exe /c echo %NUMBER_OF_PROCESSORS%
真正查看物理cpu个数为:systeminfo里面有 标有处理器个数的地方,那才是真正的物理cpu个数!

3.为什么非得要费力气把CPU核心封装到一个盒子里呢?
难道不能通过简单得增加CPU个数来达到同样或者稍弱的性能吗?
简单来说多核cpu的互联速度非常快,多cpu使用系统总线互联,协同工作较慢

4.这就像为什么你要去公司上班而不是在家里上班一样。把办公司看做一个CPU,里面每个人都是一个core,这样交流起来直接不用扭头就能问,数据传输快,共享公司资源。

而单核就是,你自己在家做公司的项目,公司是一个cpu,你家是一个cpu,你是你家的一个core(单核的cpu)这时候你想交流就要打电话了,会很麻烦

你可能感兴趣的:(大数据-spark)