日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

实时计算框架:Flink集群搭建与运行机制

發(fā)布時(shí)間:2025/3/17 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实时计算框架:Flink集群搭建与运行机制 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、Flink概述

1、基礎(chǔ)簡(jiǎn)介

Flink是一個(gè)框架和分布式處理引擎,用于對(duì)無(wú)界和有界數(shù)據(jù)流進(jìn)行有狀態(tài)計(jì)算。Flink被設(shè)計(jì)在所有常見(jiàn)的集群環(huán)境中運(yùn)行,以?xún)?nèi)存執(zhí)行速度和任意規(guī)模來(lái)執(zhí)行計(jì)算。主要特性包括:批流一體化、精密的狀態(tài)管理、事件時(shí)間支持以及精確一次的狀態(tài)一致性保障等。Flink不僅可以運(yùn)行在包括YARN、Mesos、Kubernetes在內(nèi)的多種資源管理框架上,還支持在裸機(jī)集群上獨(dú)立部署。在啟用高可用選項(xiàng)的情況下,它不存在單點(diǎn)失效問(wèn)題。

這里要說(shuō)明兩個(gè)概念:

  • 邊界:無(wú)邊界和有邊界數(shù)據(jù)流,可以理解為數(shù)據(jù)的聚合策略或者條件;
  • 狀態(tài):即執(zhí)行順序上是否存在依賴(lài)關(guān)系,即下次執(zhí)行是否依賴(lài)上次結(jié)果;

2、應(yīng)用場(chǎng)景

Data Driven

事件驅(qū)動(dòng)型應(yīng)用無(wú)須查詢(xún)遠(yuǎn)程數(shù)據(jù)庫(kù),本地?cái)?shù)據(jù)訪問(wèn)使得它具有更高的吞吐和更低的延遲,以反欺詐案例來(lái)看,DataDriven把處理的規(guī)則模型寫(xiě)到DatastreamAPI中,然后將整個(gè)邏輯抽象到Flink引擎,當(dāng)事件或者數(shù)據(jù)流入就會(huì)觸發(fā)相應(yīng)的規(guī)則模型,一旦觸發(fā)規(guī)則中的條件后,DataDriven會(huì)快速處理并對(duì)業(yè)務(wù)應(yīng)用進(jìn)行通知。

Data Analytics

和批量分析相比,由于流式分析省掉了周期性的數(shù)據(jù)導(dǎo)入和查詢(xún)過(guò)程,因此從事件中獲取指標(biāo)的延遲更低。不僅如此,批量查詢(xún)必須處理那些由定期導(dǎo)入和輸入有界性導(dǎo)致的人工數(shù)據(jù)邊界,而流式查詢(xún)則無(wú)須考慮該問(wèn)題,Flink為持續(xù)流式分析和批量分析都提供了良好的支持,實(shí)時(shí)處理分析數(shù)據(jù),應(yīng)用較多的場(chǎng)景如實(shí)時(shí)大屏、實(shí)時(shí)報(bào)表。

Data Pipeline

與周期性的ETL作業(yè)任務(wù)相比,持續(xù)數(shù)據(jù)管道可以明顯降低將數(shù)據(jù)移動(dòng)到目的端的延遲,例如基于上游的StreamETL進(jìn)行實(shí)時(shí)清洗或擴(kuò)展數(shù)據(jù),可以在下游構(gòu)建實(shí)時(shí)數(shù)倉(cāng),確保數(shù)據(jù)查詢(xún)的時(shí)效性,形成高時(shí)效的數(shù)據(jù)查詢(xún)鏈路,這種場(chǎng)景在媒體流的推薦或者搜索引擎中十分常見(jiàn)。

二、環(huán)境部署

1、安裝包管理

[root@hop01 opt]# tar -zxvf flink-1.7.0-bin-hadoop27-scala_2.11.tgz [root@hop02 opt]# mv flink-1.7.0 flink1.7

2、集群配置

管理節(jié)點(diǎn)

[root@hop01 opt]# cd /opt/flink1.7/conf [root@hop01 conf]# vim flink-conf.yamljobmanager.rpc.address: hop01

分布節(jié)點(diǎn)

[root@hop01 conf]# vim slaveshop02 hop03

兩個(gè)配置同步到所有集群節(jié)點(diǎn)下面。

3、啟動(dòng)與停止

/opt/flink1.7/bin/start-cluster.sh /opt/flink1.7/bin/stop-cluster.sh

啟動(dòng)日志:

[root@hop01 conf]# /opt/flink1.7/bin/start-cluster.sh Starting cluster. Starting standalonesession daemon on host hop01. Starting taskexecutor daemon on host hop02. Starting taskexecutor daemon on host hop03.

4、Web界面

訪問(wèn):http://hop01:8081/

三、開(kāi)發(fā)入門(mén)案例

1、數(shù)據(jù)腳本

分發(fā)一個(gè)數(shù)據(jù)腳本到各個(gè)節(jié)點(diǎn):

/var/flink/test/word.txt

2、引入基礎(chǔ)依賴(lài)

這里基于Java寫(xiě)的基礎(chǔ)案例。

<dependencies><dependency><groupId>org.apache.flink</groupId><artifactId>flink-java</artifactId><version>1.7.0</version></dependency><dependency><groupId>org.apache.flink</groupId><artifactId>flink-streaming-java_2.11</artifactId><version>1.7.0</version></dependency> </dependencies>

3、讀取文件數(shù)據(jù)

這里直接讀取文件中的數(shù)據(jù),經(jīng)過(guò)程序流程分析出每個(gè)單詞出現(xiàn)的次數(shù)。

public class WordCount {public static void main(String[] args) throws Exception {// 讀取文件數(shù)據(jù)readFile () ;}public static void readFile () throws Exception {// 1、執(zhí)行環(huán)境創(chuàng)建ExecutionEnvironment environment = ExecutionEnvironment.getExecutionEnvironment();// 2、讀取數(shù)據(jù)文件String filePath = "/var/flink/test/word.txt" ;DataSet<String> inputFile = environment.readTextFile(filePath);// 3、分組并求和DataSet<Tuple2<String, Integer>> wordDataSet = inputFile.flatMap(new WordFlatMapFunction()).groupBy(0).sum(1);// 4、打印處理結(jié)果wordDataSet.print();}// 數(shù)據(jù)讀取個(gè)切割方式static class WordFlatMapFunction implements FlatMapFunction<String, Tuple2<String, Integer>> {@Overridepublic void flatMap(String input, Collector<Tuple2<String, Integer>> collector){String[] wordArr = input.split(",");for (String word : wordArr) {collector.collect(new Tuple2<>(word, 1));}}} }

4、讀取端口數(shù)據(jù)

在hop01服務(wù)上創(chuàng)建一個(gè)端口,并模擬一些數(shù)據(jù)發(fā)送到該端口:

[root@hop01 ~]# nc -lk 5566 c++,java

通過(guò)Flink程序讀取并分析該端口的數(shù)據(jù)內(nèi)容:

public class WordCount {public static void main(String[] args) throws Exception {// 讀取端口數(shù)據(jù)readPort ();}public static void readPort () throws Exception {// 1、執(zhí)行環(huán)境創(chuàng)建StreamExecutionEnvironment environment = StreamExecutionEnvironment.getExecutionEnvironment();// 2、讀取Socket數(shù)據(jù)端口DataStreamSource<String> inputStream = environment.socketTextStream("hop01", 5566);// 3、數(shù)據(jù)讀取個(gè)切割方式SingleOutputStreamOperator<Tuple2<String, Integer>> resultDataStream = inputStream.flatMap(new FlatMapFunction<String, Tuple2<String, Integer>>(){@Overridepublic void flatMap(String input, Collector<Tuple2<String, Integer>> collector) {String[] wordArr = input.split(",");for (String word : wordArr) {collector.collect(new Tuple2<>(word, 1));}}}).keyBy(0).sum(1);// 4、打印分析結(jié)果resultDataStream.print();// 5、環(huán)境啟動(dòng)environment.execute();} }

四、運(yùn)行機(jī)制

FlinkClient

客戶(hù)端用來(lái)準(zhǔn)備和發(fā)送數(shù)據(jù)流到JobManager節(jié)點(diǎn),之后根據(jù)具體需求,客戶(hù)端可以直接斷開(kāi)連接,或者維持連接狀態(tài)等待任務(wù)處理結(jié)果。

JobManager

在Flink集群中,會(huì)啟動(dòng)一個(gè)JobManger節(jié)點(diǎn)和至少一個(gè)TaskManager節(jié)點(diǎn),JobManager收到客戶(hù)端提交的任務(wù)后,JobManager會(huì)把任務(wù)協(xié)調(diào)下發(fā)到具體的TaskManager節(jié)點(diǎn)去執(zhí)行,TaskManager節(jié)點(diǎn)將心跳和處理信息發(fā)送給JobManager。

TaskManager

任務(wù)槽(slot)是TaskManager中最小的資源調(diào)度單位,在啟動(dòng)的時(shí)候就設(shè)置好了槽位數(shù),每個(gè)槽位能啟動(dòng)一個(gè)Task,接收J(rèn)obManager節(jié)點(diǎn)部署的任務(wù),并進(jìn)行具體的分析處理。

五、源代碼地址

GitHub·地址 https://github.com/cicadasmile/big-data-parent GitEE·地址 https://gitee.com/cicadasmile/big-data-parent

大數(shù)據(jù)系列

  • Hadoop框架

    • 大數(shù)據(jù)簡(jiǎn)介,技術(shù)體系分類(lèi)整理
    • Hadoop框架:單服務(wù)下偽分布式集群搭建
    • Hadoop框架:集群模式下分布式環(huán)境搭建
    • Hadoop框架:HDFS簡(jiǎn)介與Shell管理命令
    • Hadoop框架:HDFS讀寫(xiě)機(jī)制與API詳解
    • Hadoop框架:NameNode工作機(jī)制詳解
    • Hadoop框架:DataNode工作機(jī)制詳解
    • Hadoop框架:HDFS高可用環(huán)境配置
    • Hadoop框架:MapReduce基本原理和入門(mén)案例
    • Hadoop框架:Yarn基本結(jié)構(gòu)和運(yùn)行原理
  • 基礎(chǔ)組件

    • 數(shù)據(jù)倉(cāng)庫(kù)組件:Hive環(huán)境搭建和基礎(chǔ)用法
    • 數(shù)據(jù)倉(cāng)庫(kù)組件:HBase集群環(huán)境搭建和應(yīng)用案例
    • 數(shù)據(jù)采集組件:Flume基礎(chǔ)用法和Kafka集成
    • 數(shù)據(jù)搬運(yùn)組件:基于Sqoop管理數(shù)據(jù)導(dǎo)入和導(dǎo)出
    • 數(shù)據(jù)調(diào)度組件:基于Azkaban協(xié)調(diào)時(shí)序任務(wù)執(zhí)行
    • 數(shù)據(jù)搬運(yùn)組件:基于DataX同步數(shù)據(jù)和源碼分析
  • 實(shí)時(shí)計(jì)算框架

    • 實(shí)時(shí)計(jì)算框架:Spark集群搭建與入門(mén)案例
  • OLAP分析引擎

    • OLAP分析引擎,基于Druid組件數(shù)據(jù)統(tǒng)計(jì)分析
    • OLAP分析引擎:基于Presto組件跨數(shù)據(jù)源分析
    • OLAP查詢(xún)引擎:列式庫(kù)ClickHouse集群管理
新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎(jiǎng)!定制產(chǎn)品紅包拿不停!

總結(jié)

以上是生活随笔為你收集整理的实时计算框架:Flink集群搭建与运行机制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。