一、Spark和Hadoop对比
尽管Spark相对于Hadoop而言具有较大优势,但Spark并不能完全替代Hadoop
- Spark主要用于替代Hadoop中的MapReduce计算模型。存储依然可以使用HDFS,但是中间结果可以存放在内存中
- Spark已经很好的融入了Hadoop生态圈,并成为其中的重要一员,它可以借助于YARN实现资源调度管理,借助于HDFS实现分布式存储
二、Hadoop的基于进程的计算和Spark基于线程方式优缺点
Hadoop中的MR中每个map/reduce task都是一个java进程方式运行,好处在于进程之间是互相独立的,每个task独享进程资源,没有互相干扰,监控方便,但是问题在于task之间不方便共享数据,执行效率比较低。比如多个map task读取不同数据文件需要将数据源加载到每个map task中,造成重复加载和浪费内存。而基于线程的方式计算是为了数据共享和提高执行效率,Spark采用了线程的最小执行单位,但缺点是线程之期间会有资源竞争
三、常识扩展
- 线程是CPU的基本调度单位
- 一个进程一般包含多个线程,一个进程下的多个线程共享进程的资源
- 不同线程之间的线程相互不可见
- 线程不能独立进行
- 一个线程可以创建和撤销另外一个线程