每天写500字

学习笔记 | Storm学习纪录

2019-01-20  本文已影响4人  LY丶Smile

前言

storm是分布式实时大数据处理框架(流计算),此文是学习过程中的笔记,分享出来供有缘人参考~

一、基础知识

  1. 与Hadoop的对比
主节点 工作节点 作业
Storm Nimbus Supervisor topology
Hadoop JobTracker TaskTracker Mapper和Reducer
  1. 术语
  1. 特性

二、Topology组件

  1. 简单示例

    图片来自网络
  1. 复杂示例

    图片来自网络

三、安装

  1. 下载,官网

     http://mirror.bit.edu.cn/apache/storm/apache-storm-1.1.1/apache-storm-1.1.1.tar.gz
    
  2. 配置文件,查看默认配置文件

     storm.zookeeper.servers:
     - "10.1.0.221"
     - "10.1.0.222"
     - "10.1.0.223"
    
     nimbus.seeds: ["SMILE-DEV3", "SMILE-DEV4"]
    
     storm.local.dir: "/home/storm_data"
     storm.log.dir: "/home/storm_data/logs"
     #可用端口号配置,每个对应一个worker,最好设置成OS核数的整数倍
     #Slot数不要大于每台物理机可运行Slot个数:(物理内存-虚拟内存)/单个Java进程最大可占用内存数
     supervisor.slots.ports:
         - 6700
         - 6701
         - 6702
         - 6703
    
  3. 启动

     bin/storm nimbus > /dev/null 2>&1 & 
     bin/storm supervisor > /dev/null 2>&1 & 
     bin/storm ui > /dev/null 2>&1 & 
     
     #或者使用以下命令
     bin/storm nimbus & 
     bin/storm supervisor & 
     bin/storm ui & 
    

四、开发

  1. 构建maven

     <dependency>
           <groupId>org.apache.storm</groupId>
           <artifactId>storm-core</artifactId>
           <version>1.1.1</version>
           <scope>provided</scope>
     </dependency>
    
  2. spout

    //Spout被实例化时会调用一次,一般作一些初始化操作
    //conf:保存配置信息及一些默认参数
    //context:保存上下文信息
    //collector:Spout输出采集器,emit方法将数据以Tuple的形式发送给Bolt
    void open(Map conf, TopologyContext context, SpoutOutputCollector collector) {}     
    
    void nextTuple() {}
    
    //声明由这个Spout输出的流中的每一个Tuple,包含哪些字段。
    void declareOutputFields(OutputFieldsDeclarer declarer) {}
  1. bolt

     //处理自己业务逻辑的方法
     execute()
    
  2. 设置并发

     conf.setNumWorkers() 配置 worker 的数量
     builder.setBolt("NAME", new Bolt(), 并行度) 设置 executor 数量
     spout/bolt.setNumTask() 设置 spout/bolt 的 task 数量
    

    默认情况下,一个 worker 分配 768M 的内存,外加 64M 给 logwriter 进程;因此一个 worker 会耗费 832M 内存;

  3. 提交Topology

     storm jar *.jar com.yjq.*
    

    单机模式下UI界面中Topology Summary无信息,只有提交distributed mode才能显示

  4. Storm UI 常用参数

    • execute latency:消息的平均处理时间
    • process latency:消息从收到 到 被ack掉所花费的时间
    • capacity:处理能力是否已饱和,数据代表占用资源的百分比
  5. storm reblance 重新设置并发,每个设置可以单独使用设置

    重新配置拓扑 “mytopology” 使用5个worker进程。
    spout “blue-spout” 使用3个executor
    bolt “yellow-bolt” 使用10个executor

     storm rebalance mytopology -n 5 -e blue-spout=3 -e yellow-bolt=10
    
  6. Config

     //Storm处理消息的超时时间
     Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS  
     //设置acker的数量,也占有线程数
     Config.TOPOLOGY_ACKER_EXECUTORS    
    

五、参考网站

Storm github
Storm docs

最后

求赞~

上一篇 下一篇

猜你喜欢

热点阅读