NoSql
大数据
- 解决大数据的可靠存储(1台计算机不够存储)和处理(1台计算机无法在要求的时间内完成处理)。
- 数据收集,处理,存储
- 告警和监控是大量接入的前提,可以快速定位和解决问题。
产品
- 批处理框架:Apache Hadoop
- 流处理框架:Apache Storm,Apache Samza
- 混合框架:Apache Spark,Apache Flink
项 |
计算 |
用途 |
数据集 |
Hadoop |
离线批量 |
数据挖掘和分析 |
批处理 |
Storm |
实时单条消息 |
热门话题;金融,股票等 |
流处理 |
Spark |
准实时(秒级)批量 |
数据挖掘和机器学习等需要迭代的算法 |
RDD |

技术
项 |
级别 |
说明 |
批处理(MapReduce) |
低层次抽象 |
类似逻辑门电路中的与门,或门和非门 |
RDD(Resilient Distributed Dataset) |
高层次抽象 |
类似逻辑电路中的编码器或译码器等 |
批处理
MapReduce引擎。MapReduce的处理技术符合使用键值对的map、shuffle、reduce算法要求。基本处理过程包括:
- 从HDFS文件系统读取数据集
- 将数据集拆分成小块并分配给所有可用节点
- 针对每个节点上的数据子集进行计算(计算的中间态结果会重新写入HDFS)
- 重新分配中间态结果并按照键进行分组
- 通过对每个节点计算的结果进行汇总和组合对每个键的值进行“Reducing”
- 将计算而来的最终结果重新写入 HDFS
流处理
- 对随时进入系统的数据进行计算,是永久运行的拓扑(topology)。
- 流处理方式无需针对整个数据集执行操作,而是对通过系统传输的每个数据项执行操作。
- 流处理中的数据集是“无边界”的,这就产生了几个重要的影响:
- 完整数据集只能代表截至目前已经进入到系统中的数据总量
- 工作数据集也许更相关,在特定时间只能代表某个单一数据项。
- 处理工作是基于事件的,除非明确停止否则没有“尽头”。处理结果立刻可用,并会随着新数据的抵达继续更新。
RDD
- 是一个不可变的带分区的记录集合
- 提供两类操作,转换和动作。
- 转换:map,filter,flatMap,sample,groupByKey,reduceByKey,union,join,cogroup,mapValues,sort,partionBy
- 动作:count,collect,reduce,lookup,save
- 任何操作都可以像函数式编程中操作内存中的集合一样直观、简便。集合操作的实现是在后台分解成一系列Task发送到几十台上百台服务器组成的集群上完成的。
资料
性能

实例
文章单词数量统计
- 每个句子分解成单词
- 计算每个句子的每个单词的数量
- 合并每个单词的数量
资料