Spark
是一个可应用于大规模数据处理的快速、通用引擎。为了使程序运行更快,提供了内存计算,减少了迭代计算时的IO开销,为了使编写程序更为容易,使用简练的Scala语言编写,提供了交互式的编程体验。
设计遵循:“一个软件栈满足不同应用场景”
主要特点:
- 运行速度快:使用DAG执行引擎以支持循环数据流与内存计算。
- 容易使用:支持Scala、Java、Python和R进行编程
- 通用性:提供了完整而强大的技术栈,包括SQL查询、流式计算、机器学习和图算法组件
运行模式多样:可运行于独立的集群模式中,或者运行于Hadoop中,可以访问HDFS、HBase、Hive多种数据源
与Hadoop对比:
Hadoop缺点:
表达能力有限:计算都必须转化为Map和Reduce任务,难以描述复杂的数据处理过程。
- 磁盘IO开销大:每次执行都需要从磁盘读取数据,并将中间结果写入磁盘中。
- 延迟高:任务之间涉及到IO开销,在前一个任务执行完成之前,其他任务无法开始。
Spark解决
- 计算模式也属于MapReduce,但不局限于Map和Reduce操作,还提供多种数据集操作类型。
- 提供内存计算,中间结果直接放在内存。
- 基于DAG的任务调度机制,优于MapReduce的迭代执行机制。
架构
集群资源管理器Cluster Manager、运行作业任务的工作节点Worker Node、每个应用的任务控制节点Driver和每个工作节点上负责具体任务的执行进程Executor数据仓库Hive
数据仓库数一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。
传统数据仓库面临挑战
- 无法满足快速增长的海量数据存储需求
- 无法有效处理不同类型的数据
- 计算和处理能力不足
特点:
- Hive是一个构建于Hadoop顶层的数据仓库工具
- 支持大规模数据存储、分析,具有良好的可扩展性
- 某种程度上可以看作是用户编程接口,本身不存储和处理数据
- 依赖分布式文件系统HDFS存储数据
- 依赖分布式并行计算模型MapReduce处理数据
- 定义了简单的类似SQL的查询语言——HiveQL,它与大部分的SQL语法兼容, 但是并不完全支持SQL标准, 如HiveQL不支持更新操作, 也不支持索引和事务, 它的子查询和join操作也很局限, 这是因其底层依赖于Hadoop云平台这一特性决定的, 但其有些特点是SQL所无法企及的。
- 可以通过编写HiveQL语句运行MapReduce任务
可以很容易把原来构建在关系数据库上的数据仓库应用程序移植到Hadoop上
与Hadoo生态系统其他组件的关系
Hive依赖于HDFS存储数据
- Hive依赖于MapReduce处理数据
- 在某些场景下Pig可以作为Hive的替代工具
- HBase提供数据的实时访问,HBase于Hive功能互补

用户接口模块:CLI、HWI、JDBC、ODBC、Thrift Server
流计算
流计算框架:strom(实现毫秒级的流计算)、DStream、Super Mario、Spark Streaming(无法实现毫秒级的流计算)
storm没有高吞吐特点
流计算的处理流程
