Apache Storm

数据中台在阿里巴巴集团内部的实践情况

北城余情 提交于 2019-12-01 16:13:22
作者:品鉴 数据中台门在阿里巴巴集团干什么的,由哪个部门掌管?数据中台在阿里巴巴的主要作用是什么呢?外面吹嘘这么神秘的数据中台在阿里实践的如何呢?今天小编正好要采访数据技术及产品部门里面一个老大,带大家来一探究竟。 刚一开头,老大就陷入沉思,沉重的说:“数据技术及产品部门在阿里巴巴集团其实已走过16个年头,掌管着全集团的数据资产,那么多年的积累,帮助阿里建立起了一套完整的数据体系,对业务有全面的支撑。”整个数据中台从基础设施,基础数据技术起步,到数据资产管理;从内部的数据挖掘到体系规范、标准、流程和体系制定;外部产出从数据可视化技术到数据应用,使得内部的小二从方方面面都感受到数据中台的真实存在。 数据技术及产品部门历史 说到数据中台不能不说阿里的底层基础架构的扎实程度,数据中台基于阿里云的基础设施,使用了Maxcompute大数据平台、Analysis database、HBase、ECS等基础组件,基于这些基础组件之上,数据技术及产品部门的智慧工程师们开发了数据资产,它管理着全域大数据,统一的数据建设、管理、服务,服务阿里外部千万用户和内部业务给全集团小二们方便使用全集团的数据,当然这些都有严格的安全和权限管理哦,只有有需要的小二才可以看到和使用哦! 数据技术及产品部门汇集了各种数据,因此数据官们开发了各种各样的数据技术帮助业务部门实现快速而准确的数据

Ubuntu下本地模式的Storm环境搭建

随声附和 提交于 2019-12-01 12:31:56
一、Storm相关介绍 Apache Storm是一个分布式实时大数据处理系统。Storm设计用于在容错和水平可扩展方法中处理大量数据。它是一个流数据框架,具有最高的摄取率。虽然Storm是无状态的,它通过Apache ZooKeeper管理分布式环境和集群状态。它很简单,您可以并行地对实时数据执行各种操作。 Apache Storm继续成为实时数据分析的领导者。Storm易于设置和操作,并且它保证每个消息将通过拓扑至少处理一次。 本次安装列表:jdk+zookeeper+storm+maven+IDEA 二、安装 1 安装jdk 将下载的java压缩包解压到/usr/local目录下: sudo tar -zxvf jdk-8u161-linux-x64.gz -C /usr/local sudo chown -R storm:storm /usr/local/jdk1.8.0_161 #改变文件夹所有者 设置环境变量: vim ~/.bashrc 在末尾添加: export JAVA_HOME=/usr/local/jdk1.8.0_161 export CLASSPATH=$JAVA_HOME/lib/ export PATH=$PATH:$JAVA_HOME/bin 保存并生效: source ~/.bashrc 验证: java -version 2

Storm与Spark、Hadoop框架对比

回眸只為那壹抹淺笑 提交于 2019-12-01 09:29:53
Storm与Spark、Hadoop三种框架对比 Storm与Spark、Hadoop这三种框架,各有各的优点,每个框架都有自己的最佳应用场景。所以,在不同的应用场景下,应该选择不同的框架。 1.Storm是最佳的流式计算框架,Storm由Java和Clojure写成,Storm的优点是全内存计算,所以它的定位是分布式实时计算系统,按照Storm作者的说法,Storm对于实时计算的意义类似于Hadoop对于批处理的意义。 Storm的适用场景: 1)流数据处理 Storm可以用来处理源源不断流进来的消息,处理之后将结果写入到某个存储中去。 2)分布式RPC。由于Storm的处理组件是分布式的,而且处理延迟极低,所以可以作为一个通用的分布式RPC框架来使用。 2.Spark是一个基于内存计算的开源集群计算系统,目的是更快速的进行数据分析。Spark由加州伯克利大学AMP实验室Matei为主的小团队使用Scala开发,类似于Hadoop MapReduce的通用并行计算框架,Spark基于Map Reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点,但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的Map Reduce的算法。 Spark的适用场景: 1

聊聊storm trident的coordinator

倖福魔咒の 提交于 2019-12-01 02:11:25
序 本文主要研究一下storm trident的coordinator 实例 代码示例 @Test public void testDebugTopologyBuild(){ FixedBatchSpout spout = new FixedBatchSpout(new Fields("user", "score"), 3, new Values("nickt1", 4), new Values("nickt2", 7), new Values("nickt3", 8), new Values("nickt4", 9), new Values("nickt5", 7), new Values("nickt6", 11), new Values("nickt7", 5) ); spout.setCycle(false); TridentTopology topology = new TridentTopology(); Stream stream1 = topology.newStream("spout1",spout) .each(new Fields("user", "score"), new BaseFunction() { @Override public void execute(TridentTuple tuple, TridentCollector collector)

聊聊storm trident的state

↘锁芯ラ 提交于 2019-12-01 02:11:09
序 本文主要研究一下storm trident的state StateType storm-2.0.0/storm-client/src/jvm/org/apache/storm/trident/state/StateType.java public enum StateType { NON_TRANSACTIONAL, TRANSACTIONAL, OPAQUE } StateType有三种类型,NON_TRANSACTIONAL非事务性,TRANSACTIONAL事务性,OPAQUE不透明事务 对应的spout也有三类,non-transactional、transactional以及opaque transactional State storm-2.0.0/storm-client/src/jvm/org/apache/storm/trident/state/State.java /** * There's 3 different kinds of state: * * 1. non-transactional: ignores commits, updates are permanent. no rollback. a cassandra incrementing state would be like this 2. * repeat-transactional:

聊聊storm的window trigger

£可爱£侵袭症+ 提交于 2019-12-01 02:10:55
序 本文主要研究一下storm的window trigger WindowTridentProcessor.prepare storm-core-1.2.2-sources.jar!/org/apache/storm/trident/windowing/WindowTridentProcessor.java public void prepare(Map stormConf, TopologyContext context, TridentContext tridentContext) { this.topologyContext = context; List<TridentTuple.Factory> parents = tridentContext.getParentTupleFactories(); if (parents.size() != 1) { throw new RuntimeException("Aggregation related operation can only have one parent"); } Long maxTuplesCacheSize = getWindowTuplesCacheSize(stormConf); this.tridentContext = tridentContext; collector = new

聊聊storm trident spout的_maxTransactionActive

旧时模样 提交于 2019-12-01 02:10:44
序 本文主要研究一下storm trident spout的_maxTransactionActive MasterBatchCoordinator storm-core-1.2.2-sources.jar!/org/apache/storm/trident/topology/MasterBatchCoordinator.java TreeMap<Long, TransactionStatus> _activeTx = new TreeMap<Long, TransactionStatus>(); public void open(Map conf, TopologyContext context, SpoutOutputCollector collector) { _throttler = new WindowedTimeThrottler((Number)conf.get(Config.TOPOLOGY_TRIDENT_BATCH_EMIT_INTERVAL_MILLIS), 1); for(String spoutId: _managedSpoutIds) { _states.add(TransactionalState.newCoordinatorState(conf, spoutId)); } _currTransaction =

美团点评基于 Flink 的实时数仓建设实践

房东的猫 提交于 2019-11-30 21:24:02
引言 近些年,企业对数据服务实时化服务的需求日益增多。本文整理了常见实时数据组件的性能特点和适用场景,介绍了美团如何通过 Flink 引擎构建实时数据仓库,从而提供高效、稳健的实时数据服务。此前我们美团技术博客发布过一篇文章《 流计算框架 Flink 与 Storm 的性能对比 》,对 Flink 和 Storm 俩个引擎的计算性能进行了比较。本文主要阐述使用 Flink 在实际数据生产上的经验。 实时平台初期架构 在实时数据系统建设初期,由于对实时数据的需求较少,形成不了完整的数据体系。我们采用的是“一路到底”的开发模式:通过在实时计算平台上部署 Storm 作业处理实时数据队列来提取数据指标,直接推送到实时应用服务中。 图1 初期实时数据架构 但是,随着产品和业务人员对实时数据需求的不断增多,新的挑战也随之发生。 数据指标越来越多,“烟囱式”的开发导致代码耦合问题严重。 需求越来越多,有的需要明细数据,有的需要 OLAP 分析。单一的开发模式难以应付多种需求。 缺少完善的监控系统,无法在对业务产生影响之前发现并修复问题。 实时数据仓库的构建 为解决以上问题,我们根据生产离线数据的经验,选择使用分层设计方案来建设实时数据仓库,其分层架构如下图所示: 图2 实时数仓数据分层架构 该方案由以下四层构成: ODS 层:Binlog 和流量日志以及各业务实时队列。 数据明细层

Storm目录树、任务提交、消息容错、通信机制

喜夏-厌秋 提交于 2019-11-30 20:41:17
Storm技术增强 注:学习本课程,请先学习Storm基础 课程目标: 通过本模块的学习,能够掌握Storm底层的通信机制、消息容错机制、storm目录树及任务提交流程。 课程大纲: 1、 Storm程序的并发机制 2、 Storm框架通信机制(worker内部通信与外部通信) 3、 Storm组件本地目录树 4、 Storm zookeeper目录树 5、 Storm 任务提交的过程 1、Storm程序的并发机制 1.1、概念  Workers (JVMs): 在一个物理节点上可以运行一个或多个独立的JVM 进程。一个Topology可以包含一个或多个worker(并行的跑在不同的物理机上), 所以worker process就是执行一个topology的子集, 并且worker只能对应于一个topology  Executors (threads): 在一个worker JVM进程中运行着多个Java线程。一个executor线程可以执行一个或多个tasks。但一般默认每个executor只执行一个task。一个worker可以包含一个或多个executor, 每个component (spout或bolt)至少对应于一个executor, 所以可以说executor执行一个compenent的子集, 同时一个executor只能对应于一个component。 

探寻流式计算

天涯浪子 提交于 2019-11-30 03:56:47
一、静态数据和流数据 静态数据:为了支持决策分析而构建的数据仓库系统,其中存放的大量历史数据就是静态数据。 流数据:以大量、快速、时变的流形式持续到达的数据。(例如:实时产生的日志、用户实时交易信息) 流数据具有以下特点: (1)、数据快速持续到达,潜在大小也许是无穷无尽的。 (2)、数据来源众多,格式复杂。 (3)、数据量大,但是不十分关注存储,一旦经过处理,要么被丢弃,要么被归档存储(存储于数据仓库)。 (4)、注重数据的整体价值,不过分关注个别数据。 (5)、数据顺序颠倒,或者不完整,系统无法控制将要处理的新到达的数据元素的顺序。 在传统的数据处理流程中,总是先收集数据,然后将数据放到DB中。然后对DB中的数据进行处理。 流计算:为了实现数据的时效性,实时消费获取的数据。 二、批量计算和流计算 批量计算:充裕时间处理静态数据,如Hadoop。实时性要求不高。 流计算:实时获取来自不同数据源的海量数据,经过实时分析处理,获得有价值的信息(实时、多数据结构、海量)。 流计算秉承一个基本理念,即数据的价值随着时间的流逝而降低,如用户点击流。因此,当事件出现时就应该立即进行处理,而不是缓存起来进行批量处理。流数据数据格式复杂、来源众多、数据量巨大,不适合采用批量计算,必须采用实时计算,响应时间为秒级,实时性要求高。批量计算关注吞吐量,流计算关注实时性。 流计算的特点: 1、实时