zoukankan      html  css  js  c++  java
  • Hadoop之Storm基础

    1、离线计算是什么
      离线计算:批量获取数据,批量传输数据,周期性批量计算数据,数据展示
      代表技术:sqoop批量导入数据,hdfs批量存储数据,mapreduce批量计算数据,hive批量计算数据,***任务调度

    2、流式就算是什么
      流式计算:数据实时产生,数据实时传输,数据实时计算,实时展示
      代表技术:flume实时获取数据,kafka实时数据存储,storm/jstorm实时数据计算,redies实时结果缓存
      ----将源源不断的数据实时收集,并实时计算,尽可能得到计算结果

    3、Storm是什么
      Storm用来实时处理数据,特点:低延迟,高可用,分布式,可扩展,数据不丢失,提供简单容易的接口,便于开发

    4、storm和hadoop的区别
      1)storm用于实时计算,hadoop用于离线计算
      2)storm处理的数据保存在内存中,源源不断,hadoop处理的数据保存在文件系统中,一批一批
      3)storm的数据通过网络传输进来,hadoop的数据保存在磁盘中
      storm hadoop
      应用名称 topology job
      编程接口 spout/bolt Mapper/Reducer

    5、storm应用场景及行业案例
      运用场景
      日志分析 管道系统 消息转化器
      典型案例
        1、一淘-实时分析系统:实时分析用户的属性,并反馈给搜索引擎
        2、携程-网站性能监控:实时分析系统监控携程网的网站性能
        3、阿里妈妈-用户画像:实时计算用户的兴趣数据

    6、Storm的核心组件
      1、Nimbus:负责资源分配和任务调度,对任务监控
      2、Superviser:当前物理机的管理者,负责接受nimbus分配的任务,启动和停止属于自己管理的worker进程
        worker的数量是根据端口来的 ----通过配置文件设置当前superviser上启动多少个worker
      3、worker:执行具体任务的组件,任务类型有两种,spout任务,bolt任务,一个worker
        中可能同时存在 运行具体处理组件逻辑进程
      4、task:worker中每一个spout/bolt的线程称为一个task ,每个线程默认叫做executor

    7、Storm编程模型
      1、topology:storm中运行的一个实例应用程序的名称。
      2、spout:在一个topology中获取源数据流的文件
        通常情况下spout会从外部数据源中读取数据,然后转换为topology内部源数据
      3、bolt:接受数据然后执行处理的组件,用户可以在其中执行自己想要的逻辑
      4、tuple:一次消息传递的基本单元,理解为一组消息就是一个tuple
      5、stream:表示数据的流向

    8、编程模型
      datasource:外部数据源
      spout:接收外部数据源的组件,将外部数据源转化为storm的内部数据源
          以tuple为基本的传输单元下发给bolt
      bolt:接收spout发送的数据,或者上游的bolt的发送数据,根据业务逻辑自行处理,发送给下一个bolt
        或者是存储在某种介质上,介质可以是redis或者mysql。。
      tuple:storm内部中数据传输的基本单元,里面封装了一个list对象,用来保存数据
        streamgrouping:数据分组策略
        7种,shufflegrouping(random函数),non grouping(random函数),fieldgrouping(hash取模)
        local or shufflegrouping 本地或者随机,优先本地

    9、并发度
      用户指定的一个任务,可以被多个线程执行,并发度的数量等于线程的数量
      一个任务的多个线程,,会被运行在多个worker(jvm)上,类似于一种平均算法的负载均衡策略
      尽可能减少网络io,和hadoop中mapreduce中的本地计算道理是一样的

    10、架构
      nimbus;任务分配
      superviser:接收任务,并启动管理worker,worker的数量是根据端口号决定的
      worker:执行任务的具体组件(其实就是一个jvm),可以执行两种类型的任务,spout或者bolt任务
      task:task=线程=executor ,一个task属于一个spout或者bolt并发任务
      zookeeper:保存任务的信息

    11、流式计算的一般架构
      网站系统——Flume集群(获取数据)——kafka集群(用来临时保存数据)——storm集群(用来计算数据)——Redis集群(内存数据库,保存数据)


    12、Storm常用命令
      有许多简单且有用的命令可以用来管理拓扑,它们可以提交、杀死、禁用、再平衡拓扑。
      1)、提交任务命令格式:storm jar 【jar路径】 【拓扑包名.拓扑类名】 【拓扑名称】
        bin/storm jar examples/storm-starter/storm-starter-topologies-0.10.0.jar storm.starter.WordCountTopology wordcount
      2)、杀死任务命令格式:storm kill 【拓扑名称】 -w 10(执行kill命令时可以通过-w [等待秒数]指定拓扑停用以后的等待时间)
        storm kill topology-name -w 10
      3)、 停用任务命令格式:storm deactivte 【拓扑名称】
        storm deactivte topology-name
        我们能够挂起或停用运行中的拓扑。当停用拓扑时,所有已分发的元组都会得到处理,但是spouts的nextTuple方法
        不会被调用。销毁一个拓扑,可以使用kill命令。它会以一种安全的方式销毁一个拓扑,首先停用拓扑,
        在等待拓扑消息的时间段内允许拓扑完成当前的数据流。
      4)、启用任务命令格式:storm activate【拓扑名称】
        storm activate topology-name
      5)、 重新部署任务命令格式:storm rebalance 【拓扑名称】
        storm rebalance topology-name
        再平衡使你重分配集群任务。这是个很强大的命令。比如,你向一个运行中的集群增加了节点。再平衡命令将会
        停用拓扑,然后在相应超时时间之后重分配工人,并重启拓扑。

    13、查看日志信息
      查看nimbus的日志信息
        在nimbus的服务器上
        cd /export/servers/storm/logs
        tail -100f /export/servers/storm/logs/nimbus.log
      查看ui运行日志信息
        在ui的服务器上,一般和nimbus一个服务器
        cd /export/servers/storm/logs
        tail -100f /export/servers/storm/logs/ui.log
      查看supervisor运行日志信息
        在supervisor服务上
        cd /export/servers/storm/logs
        tail -100f /export/servers/storm/logs/supervisor.log
      查看supervisor上worker运行日志信息
        在supervisor服务上
        cd /export/servers/storm/logs
        tail -100f /export/servers/storm/logs/worker-6702.log




  • 相关阅读:
    JQ实现选项卡(jQuery原型插件扩展)
    jQuery的实现原理和核心
    fetch 关于七牛的content-type 的问题
    npm 安装远程包(github的)
    关于dvajs里effects的call和put
    babel6 的 export default bug
    regeneratorRuntime未定义
    babel 解构赋值无法问题
    npm 安装本地包
    datable-默认参数列表
  • 原文地址:https://www.cnblogs.com/atomicbomb/p/9905114.html
Copyright © 2011-2022 走看看