Spark - 大数据Big Data处理框架

 Spark是一个针对超大数据集合的低延迟的集群分布式计算系统,比MapReducer快40倍左右。

  Spark是hadoop的升级版本,Hadoop作为第一代产品使用HDFS,第二代加入了Cache来保存中间计算结果,并能适时主动推Map/Reduce任务,第三代就是Spark倡导的流Streaming。

  Spark兼容Hadoop的APi,能够读写Hadoop的HDFS HBASE 顺序文件等。

  传统Hadoop如下图 性能慢原因有:磁盘IO 复制和序列化等等,涉及图中的HDFS

spark原理

而在Spark中,使用内存替代了使用HDFS存储中间结果:

Spark架构图

Spark的编程模型

弹性的分布数据集(RDD) :分布式对象集合能够跨集群在内存中保存。多个并行操作,失败自动恢复。

使用内存集群计算, 内存访问要比磁盘快得多。有Scala Java Python API,能够从Scala和Python访问。

下面是一个简单的对日志log计数的代码:


/*** SimpleJob.scala ***/

import spark.SparkContext
import SparkContext._

object SimpleJob {
def main(args: Array[String]) {

val logFile = "/var/log/syslog" // Should be some file on your system
val sc = new SparkContext("local", "Simple Job", "$YOUR_SPARK_HOME",
List("target/scala-2.9.3/simple-project_2.9.3-1.0.jar"))
val logData = sc.textFile(logFile, 2).cache()
val numAs = logData.filter(line => line.contains("a")).count()
val numBs = logData.filter(line => line.contains("b")).count()
println("Lines with a: %s, Lines with b: %s".format(numAs, numBs))
}
}

运行原理图:

sparkp

当进行filter操作是,是一种transformed RDD,RDD跟踪这种转换,当有数据丢失失败时,重新计算 得到这个数据。

Spark支持物流logistic表达式,如下图:

sparklogic

物流表达式相比Hadoop的遍历性能:

sparklogistic

支持以下数据分析操作:

Spark流处理

以推流方式处理数据:

spark stream

Shark

Shark是基于Spark上的“Hive”,看看基于hadoop的Hive:

hive

而Shark的结构图:

spark

Hive是记录每行记录一个对象,而shark是每列记录:

shark hive

执行SQL时间对比:

sharksql

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值