大数据在线培训课之storm的学习,时代的发展催促着我们不断地学习,不断地进步。大数据技术以迅雷不及掩耳之势冲击着我们的生活,学习大数据正是当下我们需要做的。今天千锋大数据分析培训给大家分享的就是大数据的核心技术之storm的学习。
大数据培训.png" width="500" height="366" />
Why use Storm?
Apache Storm是一个免费的开源的分布式实时计算系统。Storm使得可靠的实时处理无边界的数据量变得很容易,就如同Hadoop做批处理那样。Storm很简单,可以用任意的编程语言。
Storm有许多使用案例:实时分析、在线机器学习、持续的计算、分布式RPC、ETL等等。Storm速度很快:每个节点每秒钟可以处理一百万个元组。它是可伸缩的、容错的,以确保你的数据将会被处理,并且很容易操作。
Storm集成了队列和数据库技术。一个Storm拓扑结构以任意复杂的方式消费并处理数据流,在计算的每一个阶段会重新分区数据流。
Concepts
Topologies
一个实时应用程序的逻辑被打包成一个Storm topology。Storm topology和MapReduce的Job很类似。一个尤为关键的不同在于,一个MapReduce的Job会结束,而一个topology是永远运行的(除非你手动杀死它)。一个topology是一个由spouts和bolts以及将它们连接起来的stream grouping构成的图。
StreamsStream是Storm中的核心抽象。一个Stream是一个无边界的元组序列。Stream是由元组中的命名字段被定义的。默认情况下,元组可以包含integers, longs, shorts, bytes, strings, doubles, floats, booleans, and byte arrays。你也可以定义自己的序列化方式。
每一个Stream在被声明的时候都会给定一个id。
Spouts
在一个topology中,spouts是流的来源。一般而言,spout从外部的源中读取元组,并将其发送到topology中。Spout可以是可靠的,也可以是不可靠的。一个可靠的spout是如果在Storm中处理失败的话它会重新放一个元组,而不可靠的spout在它发送这个元组以后就忘记它了。
Spouts可以发送到一个或者多个Stream。为了这样做,在声明多个stream的时候OutputFieldsDeclarer的declareStream方法。
Spout中的主要方法是nextTuple。nextTuple发送一个新的元组到topology中或者没有新的元组的时候简单的返回。另一个重要的方法是ack和fail。
Bolts
Topologies中的所有处理都是由Bolts来做的。Bolts可以做许多事情,比如:过滤、聚集、连接数据等等。
Bolts可以做简单的流转换,复杂的流转换通常需要多步,因此也需要多个bolts。
当你声明了一个bolt的输入流的时候,你总是会订阅来自其它组件的特别的流。如果你想订阅所有组件的流,那么你必须一个一个的订阅。
bolt的主要方法是execute
Stream groupings
一个stream grouping是定义流应该怎样被分区到bolt的task中去。
Shuffle grouping:元组被随机分配到task中去,因此每个bolt可以确保获得相等数量的元组
Fields grouping:按特定的字段分区。例如,"user-id"相同的元组总是被分到相同的task中去
Partial Key grouping:跟Fields grouping类似,只不过会考虑下游的bolts的负载均衡
All grouping:流会被复制,并且分发给所有的bolt
Global grouping:整个流只进入到一个bolt的task。特别的,将进入到id更小的那个task
None grouping:你不关心怎么分组。等价于Shuffle grouping
Direct grouping:元组的生产者决定哪些消费者任务可以收到这个元组
Local or shuffle grouping:如果目标bolts在相同的worker中有一个或者多个task,元组将会被随机分配到这些任务中
Reliability
Storm确保每个spout元组被完全处理。这是依靠跟踪由每个元组触发的元组树实现的
Tasks
每一个spout和bolt都执行很多tasks,每一个task对应执行的一个线程,stream grouping定义元组怎么从一个task到另一个task。
Workers
Topologies执行一个或多个worker进程。每个worker进程是一个物理的JVM。
在千锋大数据学习,课程设置紧贴行业发展、着眼未来需求,课程内容包括开发、收集、存储、计算一站式技术,涵盖大数据体系中的核心技术Hadoop、Storm、Spark等,全面涵盖大数据人才所需的技术点。想学习大数据的,千锋大数据在线培训期待你的到来!
相关文章
了解千锋动态
关注千锋教育服务号
扫一扫快速进入
千锋移动端页面
扫码匿名提建议
直达CEO信箱