• flink的集群的HA高可用


    对于一个企业级的应用,稳定性是首要要考虑的问题,然后才是性能,因此 HA 机制是必不可少的;

    和 Hadoop 一代一样,从架构中我们可以很明显的发现 JobManager 有明显的单点问题(SPOF,single point of failure)。 JobManager 肩负着任务调度以及资源分配,一旦 JobManager 出现意外,其后果可想而知。Flink 对 JobManager HA 的处理方式,原理上基本和 Hadoop 一样;

    对于 Standalone 来说,Flink 必须依赖于 Zookeeper 来实现 JobManager 的 HA(Zookeeper 已经成为了大部分开源框架 HA 必不可少的模块)。在 Zookeeper 的帮助下,一个 Standalone 的 Flink 集群会同时有多个活着的 JobManager,其中只有一个处于工作状态,其他处于 Standby 状态。当工作中的 JobManager 失去连接后(如宕机或 Crash),Zookeeper 会从 Standby 中选举新的 JobManager 来接管 Flink 集群。

    (当然,对于flink的集群模式来说,除了standalone外,还有yarn cluster模式,这种模式的在hadoop节点的HA处搭建)

    1:修改conf/flink-conf.yaml

    jobmanager.rpc.address: hadoop01【注意。HA的需要按照机器分配】
    jobmanager.rpc.port: 6123
    jobmanager.heap.mb: 1024
    taskmanager.heap.mb: 1024
    taskmanager.numberOfTaskSlots: 2
    taskmanager.memory.preallocate: false
    parallelism.default: 1
    jobmanager.web.port: 8081
    taskmanager.tmp.dirs: /opt/cdh/flink-1.5.0/tmp
    #开启HA
    state.backend: filesystem
    state.backend.fs.checkpointdir: hdfs://hadoop01:9000/flink-checkpoints
    high-availability: zookeeper
    high-availability.storageDir: hdfs://hadoop01:9000/flink/ha/
    high-availability.zookeeper.quorum: hadoop01:2181,hadoop02:2181,hadoop03:2181
    high-availability.zookeeper.client.acl: open

    参数解释:

    state.backend 启用检查点,支持两种后端备份点:
    jobmanager:内存状态,备份到JobManager的 ZooKeeper的内存。应仅用于最小状态(Kafka偏移量)或测试和本地调试。
    filesystem:状态在TaskManager的内存中,并且状态快照存储在文件系统中。支持Flink支持的所有文件系统,例如HDFS,S3 ...
    
    state.backend.fs.checkpointdir:用于将检查点存储在Flink支持的文件系统中的目录。注意:状态后端必须可以从JobManager访问,file://仅用于本地设置
    high-availability: zookeeper  定义用于群集执行的高可用性模式
    high-availability.storageDir
    用于存储JobManager元数据的目录; 这是持久的状态后端,只有一个指向这个状态的指针存储在ZooKeeper中。完全像检查点目录一样,它必须可以从JobManager访问
    high-availability.zookeeper.quorum    zookeeper的地址

    2:修改conf/zoo.cfg

    注意:在flink的conf文件架下面是没有zoo.cfg的。我们选择自己搭建zookeeper

    # The number of milliseconds of each tick
    tickTime=2000
    
    # The number of ticks that the initial  synchronization phase can take
    initLimit=10
    
    # The number of ticks that can pass between  sending a request and getting an acknowledgement
    syncLimit=5
    
    # The directory where the snapshot is stored.
    # dataDir=/tmp/zookeeper
    
    # The port at which the clients will connect
    clientPort=2181
    
    # ZooKeeper quorum peers
    server.1=hadoop01:2888:3888
    server.2=hadoop02:2888:3888
    server.3=hadoop03:2888:3888

    3:修改conf/masters

    指定哪些节点作为master,然后由flink选择哪台机器作为activity的master

    hadoop01:8081   
    hadoop02:8082 

    4:修改conf/slave

    hadoop01   
    hadoop02   
    hadoop03 

    5:启动HA的flink

    1:启动zookeeper
    
    Bin/zkServer.sh start (所有的zookeeper确保启动成功)
    
     bin/zkServer.sh   start (所有的zookeeper确保启动成功)  
     
    
    2:启动hdfs(检查点和元数据信息存储在了hdfs)
    
    Start-dfs.sh
    
      start-dfs.sh   
     
    
    3:启动flink
    
    bin/start-cluster.sh
    
      bin/start-cluster.sh 
      

     

     

  • 相关阅读:
    Swift
    Swift
    UVa
    Go如何发送广播包
    人迹罕至的android要完全退出程序的一种方法
    备注ocp_ORACLE专题网络
    JS它DOM
    HDU 1693 Eat the Trees 插头DP
    ubuntu-14.04 系统安装mysql-5.6.21
    1941设置站点模板,一生珍藏,所有玩具
  • 原文地址:https://www.cnblogs.com/niutao/p/10548281.html
Copyright © 2020-2023  润新知