The Apache Hadoop project devolops open-source software for reliable, scalale, distributed computing.
可靠、大规模、分布式计算和开源!
要想学习Spark必定是绕不过Hadoop的,MapReduce和HDFS构成Hadoop的主要内容,MapReduce用来处理(processing),HDFS用来存储(storage)。
Hadoop要求数据应均匀分布在各个机器上,快速写入磁盘(步步为营)——而这就导致了Hadoop处理数据过慢,数据结构是<key, value>。
Spark
特点:
- Lazy Computation 计算优化
- 只读取一次磁盘,然后不断在内存中读取 读取优化
- Pipelining 流水线操作
在这里说一下,Hadoop的可靠是通过不断读取数据到磁盘来保证,而Spark的可靠是通过快速地在内存中处理数据。(天下武功,唯快不破)这时有人可能疑惑,为什么这也能保证可靠呢?如果机器down掉,那么数据不久丢失了吗?这里Spark就是依靠快,数据down后,它马上重新进行读取,尽管之前读取的数据丢失了。
既然Spark是数据库,那么它就像SQL一样有存储数据的形式,SQL里存储数据是用一张张的表table,而Spark是用分布式数据集RDD。
Spark编程步骤 with RDDs
- 创建RDD
- Transformations
- cache() 缓冲 some RDDs for reuse
- Actions