架构师第十三周总结
本周继续学习了大数据的一些应用以及场景。
spark,流处理计算用到的 flink,storm,spark streaming,设计到数据问题使用 HiBench,以及一些涉及到大数据的算法。
spark:spark 的特点就是快,主要是放内存中处理数据
spark 快的原因:DAG 切分的多阶段计算过程更快速;使用内存存储中间计算结果更高效;RDD 的编程模型更简单
流程:切分,本地聚合,根据 key shuffle 到同一个节点。
RDD 是 Spark 的核心概念,是弹性分布式数据集(Resilient Distributed Datasets)的缩写,每次都对上次的 RDD 的结果进行继续转换,增加处理的流程的连贯性。有 2 种类型:一种是转换函数,有返回值。一种是执行函数,无返回值。转换操作也分为两种,一种会出现新的分片,一种不会。主要是针对 key 值是否允许他在同一分片上。
流计算:有 flink,storm,spark streaming
storm 是实时的 hadoop,
Nimbus:负责资源分配和任务调度。
Supervisor:负责接受 Nimbus 分配的任务,启动和停止属于自己管理的 Worker 进程。
Worker:运行具体处理组件逻辑的进程。
Task:Worker 中每一个 Spout/Bolt 的线程称为一个 Task。
Topology:Storm 中运行的一个实时应用程序,因为各个组件间的消息流动形成逻辑上的一个拓扑结构。
Spout:在一个 Topology 中产生源数据流的组件。通常情况下 Spout 会从外部数据源中读取数据,然后转换为 Topology 内部的源数据。Spout 是一个主动的角色,其接口中有个 nextTuple() 函数,Storm 框架会不停地调用此函数,用户只要在其中生成源数据即可。
Bolt:在一个 Topology 中接受数据然后执行处理的组件。Bolt 可以执行过滤、函数操作、合并、写数据库等任何操作。Bolt 是一个被动的角色,其接口中有个 execute(Tuple input) 函数,在接受到消息后会调用此函数,用户可以在其中执行自己想要的操作。
Tuple:一次消息传递的基本单元。本来应该是一个 key-value 的 map,但是由于各个组件间传递的 tuple 的字段名称已经事先定义好,所以 tuple 中只要按序填入各个 value 就行了,所以就是一个 value list.
Stream:源源不断传递的 tuple 就组成了 stream。
Storm 应用场景(淘宝)
Storm 被广泛用来进行实时日志处理,出现在实时统计、实时风控、实时推荐等场景中。一般来说,我们从类 Kafka 的 metaq 或者基于 HBase 的 TimeTunnel 中读取实时日志消息,经过一系列处理,最终将处理结果写入到一个分布式存储中,提供给应用程序访问。我们每天的实时消息量从几百万到几十亿不等,数据总量达到 TB 级。对于我们来说,Storm 往往会配合分布式存储服务一起使用。在我们正在进行的个性化搜索实时分析项目中,就使用了 TimeTunnel + HBase + Storm + UPS 的架构,每天处理几十亿的用户日志信息,从用户行为发生到完成分析延迟在秒级。
数据统计出来后是需要根据你需要的指标进行可视化处理的。折线图,散点图,聚类算法,漏斗图等
评论