目錄一、Flink概述1.1、基礎簡介
我們提供的服務有:成都網站設計、成都網站制作、微信公眾號開發(fā)、網站優(yōu)化、網站認證、廬江ssl等。為成百上千企事業(yè)單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的廬江網站制作公司
主要特性包括:批流一體化、精密的狀態(tài)管理、事件時間支持以及精確一次的狀態(tài)一致性保障等。Flink不僅可以運行在包括YARN、Mesos、Kubernetes在內的多種資源管理框架上,還支持在裸機集群上獨立部署。在啟用高可用選項的情況下,它不存在單點失效問題。
這里要說明兩個概念:邊界:無邊界和有邊界數據流,可以理解為數據的聚合策略或者條件; 狀態(tài):即執(zhí)行順序上是否存在依賴關系,即下次執(zhí)行是否依賴上次結果;1.2、應用場景
Data Driven
事件驅動型應用無須查詢遠程數據庫,本地數據訪問使得它具有更高的吞吐和更低的延遲,以反欺詐案例來看,DataDriven把處理的規(guī)則模型寫到DatastreamAPI中,然后將整個邏輯抽象到Flink引擎,當事件或者數據流入就會觸發(fā)相應的規(guī)則模型,一旦觸發(fā)規(guī)則中的條件后,DataDriven會快速處理并對業(yè)務應用進行通知。
Data Analytics
和批量分析相比,由于流式分析省掉了周期性的數據導入和查詢過程,因此從事件中獲取指標的延遲更低。不僅如此,批量查詢必須處理那些由定期導入和輸入有界性導致的人工數據邊界,而流式查詢則無須考慮該問題,Flink為持續(xù)流式分析和批量分析都提供了良好的支持,實時處理分析數據,應用較多的場景如實時大屏、實時報表。
Data Pipeline
與周期性的ETL作業(yè)任務相比,持續(xù)數據管道可以明顯降低將數據移動到目的端的延遲,例如基于上游的StreamETL進行實時清洗或擴展數據,可以在下游構建實時數倉,確保數據查詢的時效性,形成高時效的數據查詢鏈路,這種場景在媒體流的推薦或者搜索引擎中十分常見。二、環(huán)境部署2.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.72.2、集群配置
管理節(jié)點
[root@hop01 opt]# cd /opt/flink1.7/conf
[root@hop01 conf]# vim flink-conf.yaml
jobmanager.rpc.address: hop01
分布節(jié)點
[root@hop01 conf]# vim slaves
hop02
hop03
兩個配置同步到所有集群節(jié)點下面。2.3、啟動與停止
/opt/flink1.7/bin/start-cluster.sh
/opt/flink1.7/bin/stop-cluster.sh
啟動日志:
[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.2.4、Web界面
訪問:http://hop01:8081/三、開發(fā)入門案例3.1、數據腳本
分發(fā)一個數據腳本到各個節(jié)點:
/var/flink/test/word.txt3.2、引入基礎依賴
這里基于Java寫的基礎案例。<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.3、讀取文件數據
這里直接讀取文件中的數據,經過程序流程分析出每個單詞出現的次數。public class WordCount { public static void main(String[] args) throws Exception { // 讀取文件數據 readFile () ; } public static void readFile () throws Exception { // 1、執(zhí)行環(huán)境創(chuàng)建 ExecutionEnvironment environment = ExecutionEnvironment.getExecutionEnvironment(); // 2、讀取數據文件 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、打印處理結果 wordDataSet.print(); } // 數據讀取個切割方式 static class WordFlatMapFunction implements FlatMapFunction<String, Tuple2<String, Integer>> { @Override public void flatMap(String input, Collector<Tuple2<String, Integer>> collector){ String[] wordArr = input.split(","); for (String word : wordArr) { collector.collect(new Tuple2<>(word, 1)); } } }}3.4、讀取端口數據
在hop01服務上創(chuàng)建一個端口,并模擬一些數據發(fā)送到該端口:
[root@hop01 ~]# nc -lk 5566
c++,java
通過Flink程序讀取并分析該端口的數據內容:public class WordCount { public static void main(String[] args) throws Exception { // 讀取端口數據 readPort (); } public static void readPort () throws Exception { // 1、執(zhí)行環(huán)境創(chuàng)建 StreamExecutionEnvironment environment = StreamExecutionEnvironment.getExecutionEnvironment(); // 2、讀取Socket數據端口 DataStreamSource<String> inputStream = environment.socketTextStream("hop01", 5566); // 3、數據讀取個切割方式 SingleOutputStreamOperator<Tuple2<String, Integer>> resultDataStream = inputStream.flatMap( new FlatMapFunction<String, Tuple2<String, Integer>>() { @Override public 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、打印分析結果 resultDataStream.print(); // 5、環(huán)境啟動 environment.execute(); }}四、運行機制4.1、FlinkClient
客戶端用來準備和發(fā)送數據流到JobManager節(jié)點,之后根據具體需求,客戶端可以直接斷開連接,或者維持連接狀態(tài)等待任務處理結果。4.2、JobManager
在Flink集群中,會啟動一個JobManger節(jié)點和至少一個TaskManager節(jié)點,JobManager收到客戶端提交的任務后,JobManager會把任務協(xié)調下發(fā)到具體的TaskManager節(jié)點去執(zhí)行,TaskManager節(jié)點將心跳和處理信息發(fā)送給JobManager。4.3、TaskManager
任務槽(slot)是TaskManager中最小的資源調度單位,在啟動的時候就設置好了槽位數,每個槽位能啟動一個Task,接收JobManager節(jié)點部署的任務,并進行具體的分析處理。五、源代碼地址
GitHub·地址
GitEE·地址
以上就是淺談實時計算框架Flink集群搭建與運行機制的詳細內容,更多關于實時計算框架 Flink集群搭建與運行機制的資料請關注腳本之家其它相關文章!
分享標題:淺談實時計算框架Flink集群搭建與運行機制
轉載注明:http://www.ekvhdxd.cn/article28/dijcp.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站排名、面包屑導航、微信公眾號、靜態(tài)網站、品牌網站設計、App開發(fā)
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)