Hadoop是一个能够对大量数据进行分布式处理的软件框架。具有可靠、高效、可伸缩的特点。
-
HDFS:全称为Hadoop分布式文件系统(Hadoop Distributed File System),提供了高吞吐量的访问应用程序数据。
-
Hadoop YARN:Hadoop集群资源管理框架(Yet Another Resource Negotiator),用于作业调度和集群资源管理。
-
Hadoop MapReduce:基于YARN的大数据集的并行处理系统。
-
Hadoop Common:支持其他Hadoop模块的通用功能,包括序列化、Java RPC和持久化数据结构等。
-
Ambari:是一个部署、管理和监视Apache Hadoop集群的开源框架。
-
Hbase:可扩展的分布式列式数据库,支持大表的结构化存储。
-
Hive:分布式数据仓库系统,提供基于类SQL的查询语言。
-
Storm :Twitter开源的分布式实时大数据处理框架,最早开源于github,从0.9.1版本之后,归于Apache社区,被业界称为实时版Hadoop。
-
Mathout:机器学习和数据挖掘领域经典算法的实现。
-
Pig:一个高级数据流语言和执行环境,用来检索海量数据集。
-
Spark:一个快速和通用的计算引擎。Spark提供了一个简单而富有表现力的编程模型,支持多种应用,包括ETL、机器学习、数据流处理和图形计算。
-
Sqoop:在关系型数据库与Hadoop系统之间进行数据传输的工具。
-
Tez:是从MapReduce计算框架演化而来的通用DAG计算框架,可作为MapReduce/Pig/Hive等系统的底层数据处理引擎,它天生融入Hadoop2.0的资源管理平台YARN。
-
Zookeeper:提供Hadoop集群高性能的分布式的协调服务。
以下就Storm展开进行详解。
一、Storm简介
Apache Storm是开源分布式实时计算系统,2014年9月,Storm正式升级为Apache顶级项目,同Hadoop一样Storm也可以处理大批量的数据,然而Storm在保证高可靠性的前提下还可以让处理进行得更加实时,也就是说,所有的信息都会被处理。Storm同样还具备容错和分布计算这些特性,这就让Storm可以扩展到不同的机器上进行大批量的数据处理。
Storm可水平扩展,支持容错,保证所有数据被处理,易于安装维护,可以使用各种程序设计语言开发,具备高性能,单节点每秒可以处理上百万记录。
二、Storm架构
Storm是典型Master-Slave架构,Storm集群中有两种节点,一种是控制节点(Nimbus节点),另一种是工作节点(Supervisor节点)。Topology任务提交给Nimbus节点,Nimbus分配给其他Supervisor节点进行处理。Nimbus节点首先将提交的Topology进行分片,分成一个个的Task,并将Task和Supervisor相关的信息提交到ZooKeeper集群上,Supervisor会去ZooKeeper集群上认领自己的Task,通知自己的Worker进程进行Task的处理。
Nimbus:主控守护进程,用于调度分布在集群中的节点,分配任务和监测故障。
Supervisor:工作节点守护进程,用于收听工作指派并根据Nimbus要求启动worker进程。每个工作节点都是topology中一个子集的实现。
ZooKeeper:ZooKeeper是完成Supervisor和Nimbus之间协调的服务。
Worker进程:运行具体处理组件逻辑的进程,Storm集群的任务构造者,构造Spoult或Bolt的Task实例,启动Executor线程。
Executor线程:Storm集群的任务执行者,循环执行Task代码。
Task:1个Task执行实际的数据处理逻辑,Task是最终运行Spout或Bolt中代码的单元。
三、Storm特性
-
简单的编程模型: 类似于 MapReduce 降低了并行批处理复杂性,Storm降低了进行实时处理的复杂性,主要通过 Tuple 元组在各个组件之间传递数据。
-
支持多种编程语言: 默认支持 Clojure、Java、Ruby 和 Python,要增加对其他语言的支持,只需实现一个简单的 Storm 通信协议即可
-
容错性: Storm 会管理工作进程和节点的故障
-
水平扩展: 计算是在多个线程、进程和服务器之间并行进行的
-
可靠的消息处理: Storm 提供了 Ack 机制,保证每个消息至少能得到一次完整处理。任务失败时, 它会负责从消息源重试消息
-
高性能与低延迟: 系统的设计保证了消息能得到快速的处理,使用 ØMQ[1] 作为其底层消息队列
-
本地模式: Storm 有一个“本地模式”, 可以在处理过程中完全模拟 Storm 集群
四、Storm数据流模型
Storm实现了一种数据流模型,其中数据持续地流经一个转换实体网络。一个数据流的抽象称为一个流,这是一个无限的元组序列。元组就像一种使用一些附加的序列化代码来表示标准数据类型(比如整数、浮点和字节数组)或用户定义类型的结构。每个流由一个唯一ID定义,这个ID用于构建数据源和接收器(sink)的拓扑结构——Topology(实时计算任务)。流起源于喷嘴Spout,喷嘴将数据从外部来源流入Storm拓扑结构中。计算处理器称为螺栓Bolt,通过实现Spout和Bolt接口完成对业务逻辑的处理。
Storm的Topology从启动开始就一直运行,只要有tuple到来,各个环节就会被出发执行。需要注意的是,所有的Spout方法尽量不要有能够引入阻塞的逻辑,因为所有的Spout方法是在同一个线程中调用的,如果某个方法被阻塞,后续的方法调用也将会被阻塞。
Bolt是Storm中处理数据的核心,可以做很多种的数据处理工作,例如filtering、functions、aggregations、joins等。
五、Storm使用场景
Apache Storm 有许多用例:实时分析,在线机器学习,连续计算,分布式 RPC,ETL 等。Apache Storm 速度很快:基准测试表明它每秒可处理每个节点超过一百万个元组。它具有可扩展性,容错性,可确保您的数据将得到处理,并且易于设置和操作。
-
信息流处理 Stream Processing 处理源源不断产生的消息,并将处理之后的结果存储到某个存储系统中去,典型的架构是 Kafka + Storm + HBase(或redis)。
-
连续计算 Continuous Computation Storm可进行连续查询并把结果即时反馈给客户端,比如把微博上的热门话题发送到浏览器上。
-
分布式远程过程调用 Distributed RPC 用来处理并行密集查询,客户端向Storm提交一个查询请求和查询参数,Storm 运行 Topology 并行处理,并将结果同步返回给客户端。
-
在线机器学习。
-
日志分析: 在线实时分析业务系统或者网站产生的日志数据。
-
管道传输: 能够使数据在不同系统之间进行传输。
-
统计分析: 实时获取日志或者消息,对待定得到字段进行统计计数或累加计算。
优培东方送你一张风险审计:
风 险 审 计
项目名称: 准备日期:
项目审计: 审计日期:
风险事件审计:事 件 原 因 响 应 说 明 事 件 响 应 成 功 改进措施 过 程 要遵守的规定 所使用的工具和技术 规划风险管理 识别风险 进行定性风险分析 进行定量风险分析 规划风险响应 监督和控制风险
第1页/共1页