《Pyflink》Flink集群安装,Python+Flink调研

Flink集群安装,Python+Flink调研

Flink集群部署

  1. 下载对应版本安装包:https://flink.apache.org/downloads.html

    实验环境为hadoop2.7, scala2.11 所以下载flink-1.7.1-bin-hadoop27-scala_2.11.tgz

  2. 配置conf/flink-conf.yaml

    jobmanager.rpc.address : master 节点
    jobmanager.heap.mb : JobManager可用的内存数量
    taskmanager.heap.mb : 每个TaskManager可以用内存数量
    taskmanager.numberOfTaskSlots : 每个机器可用的CPU数量
    parallelism.default : 集群中总的CPU数量
    taskmanager.tmp.dirs : 临时目录
    
  3. 配置conf/slaves

    slave1
    slave2
    

    点击查看更多配置项

  4. 把在master上配置好的,文件夹发送到各个worker节点上

    scp -r flink-1.7.1 hadoop@slavle1:~
    scp -r flink-1.7.1 hadoop@slavle2:~
    
  5. 启动/终止 Flink

    # 启动一个JobManager,并通过SSH连接列在slaves文件中的所有节点以便在每个节点上启动TaskManager
    flink-1.7.1/bin/start-cluster.sh
    # 停止flink集群,直接在master节点运行bin/stop-cluster.sh
    flink-1.7.1/bin/stop-cluster.sh
    

    启动后在web界面输入:master:8081 查看Web-UI

运行Python脚本

  • 以官网的一个示例进行测试,可以复制粘贴这些代码存储为wordcount.py并在本地运行。

  • wordcount.py

    from flink.plan.Environment import get_environment
    from flink.functions.GroupReduceFunction import GroupReduceFunction
        
    class Adder(GroupReduceFunction):
      def reduce(self, iterator, collector):
        count, word = iterator.next()
        count += sum([x[0] for x in iterator])
        collector.collect((count, word))
    # 1. 获取一个运行环境    
    env = get_environment() 
    
    # 2. 加载/创建初始数据
    data = env.from_elements("Who's there?",
     "I think I hear them. Stand, ho! Who's there?")
        
    # 3. 指定对这些数据的操作    
    data \
      .flat_map(lambda x, c: [(1, word) for word in x.lower().split()]) \
      .group_by(1) \
      .reduce_group(Adder(), combinable=True) \
      .output()
     
    # 4. 运行程序    
    env.execute(local=True) # 设置execute(local=True)强制程序在本机运行
    
  • 执行方法

    为了在Flink中运行计划任务,到Flink目录下,运行/bin文件夹下的pyflink.sh脚本。对于python2.7版本,运行pyflink2.sh;对于python3.4版本,运行pyflink3.sh。包含计划任务的脚本应当作为第一个输入参数,其后可添加一些另外的python包,最后,在“-”之后,输入其他附加参数。
    ./bin/pyflink<2/3>.sh

你可能感兴趣的:(大数据分析,环境搭建,flink,pyflink,pyflink,flink,python)