Flink介紹與安裝

Apache Flink是一個在有界數據流和無界數據流上進行有狀態計算分布式處理引擎和框架。Flink 設計旨在所有常見的集群環境中運行,以任意規模內存級速度執行計算。

一、主要特點和功能

1. 實時流處理:

  • 低延遲: Flink 能夠以亞秒級的延遲處理數據流,非常適合對時間敏感的應用,如實時分析、監控和告警系統。
  • 狀態管理: Flink 提供了對狀態的內置支持,使得開發有狀態的流式處理應用變得容易,如窗口操作、復雜事件處理等。

2. 批處理和流處理的統一:

  • Flink 既可以用于流處理,也可以用于批處理,允許用戶在一個框架中編寫應用程序,而不必在批處理和流處理之間切換。

  • 事件時間處理: Flink 支持事件時間語義,可以基于數據本身的時間戳進行處理,而不是數據到達的時間,這對于處理無序數據流非常重要。

    // scala table api
    // 引入 Flink 的批處理環境
    val env = ExecutionEnvironment.getExecutionEnvironment//批處理: 讀取文本文件
    env.readTextFile("data/words.txt")// 處理數據: 切換、轉換、分組、聚合.flatMap(_.replaceAll("[^a-zA-Z ]", "").split("\\s+")).map((_, 1)).groupBy(0).sum(1)// 輸出.print()
    
    // 引入 Flink 的流處理環境
    val env = StreamExecutionEnvironment.getExecutionEnvironment
    // 有界流處理: 文件數據
    env.readTextFile("data/words.txt").flatMap(_.replaceAll("[^a-zA-Z ]", "").split("\\s+")).map((_, 1)).keyBy(_._1).sum(1).print()// 無界流處理: Socket 
    env.socketTextStream("nodeIp", 9999).flatMap(_.replaceAll("[^a-zA-Z ]", "").split("\\s+")).map((_, 1)).keyBy(_._1).sum(1).print()// 執行 Flink 作業,并給它命名
    env.execute("Word Count Example")
    

3. 高度可擴展性:

  • Flink 能夠在大規模分布式集群上運行,處理從幾千到上百萬個事件每秒的數據流。
  • 彈性和容錯: Flink 使用檢查點和保存點機制來提供容錯能力,確保在發生故障時可以從之前的狀態恢復,減少數據丟失。

4. 支持多種數據源和接收器:

  • Flink 能夠與多種數據源和接收器集成,如 Kafka、HDFS、Cassandra、Elasticsearch 等,使其可以輕松地處理和存儲來自不同系統的數據。

5. 豐富的 API 和庫:

  • DataStream API: 用于流處理,允許開發者定義復雜的數據流處理邏輯。
  • DataSet API: 用于批處理,提供了豐富的操作符來處理靜態數據集(將在 Flink 2.0 版本被刪除如何遷移 DataSet 到 DataStream | Apache Flink)
  • Table API 和 SQL: 提供了一個更高級別的 API,允許開發者使用 SQL 查詢來處理數據流和數據集。
  • 機器學習和圖處理庫: Flink 提供了機器學習庫(FlinkML)和圖處理庫(Gelly),適用于高級分析任務。

6. 部署靈活性:

  • Flink 可以部署在多種環境中,如獨立集群、YARN、Kubernetes、Mesos 以及本地環境中。
  • 流批一體: Flink 支持將批處理和流處理集成到同一個應用程序中,簡化了部署和管理。

7. 社區與生態系統:

  • Flink 由一個活躍的開源社區維護和發展,生態系統日益壯大,支持越來越多的第三方工具和集成。

典型應用場景

  • 實時數據分析: Flink 可用于處理實時事件流,提供實時分析、告警和監控。
  • 復雜事件處理: Flink 能夠處理和識別復雜事件模式,用于金融監控、欺詐檢測等。
  • 日志處理: 可以實時處理和分析來自各種系統的日志數據,提取有價值的信息。
  • 機器學習: Flink 的流處理能力可以用于實時更新機器學習模型,或在流數據上直接進行預測。

Apache Flink 適用于各種需要實時和批處理的應用程序,尤其是在處理大規模數據流時表現出色。·

二、Flink下載,集群安裝配置

官方下載地址:Downloads | Apache Flink

1. 下載、解壓、配置環境變量

wget https://dlcdn.apache.org/flink/flink-1.20.0/flink-1.20.0-bin-scala_2.12.tgztar -zxvf flink-1.20.0 -C /opt/softwarevim /etc/profile.d/myenv.sh
# FLINK_HOME=...
# PAHT=$PATH:$FLINK_HOME/bin

2. 進入 Flink 配置目錄:

cd $FLINK_HOME/conf

3. 編輯 masters 文件:

在文件中指定 JobManager 的主機名或 IP 地址。如果有多個 JobManager(用于高可用性),每個 JobManager 使用一行。

vim masters
# 格式如下
<JobManager1>:<port>
<JobManager2>:<port>  # 如果有高可用性設置# 示例
master01:8081
master02:8081

4. 編輯 workers 文件:

在文件中列出所有 TaskManager 的主機名或 IP 地址,每個 TaskManager 使用一行

vim workers
# 格式如下
<TaskManager1>
<TaskManager2># 示例
worker01
worker02

5. 編輯 flink-conf.yaml 文件:

flink-conf.yaml 是 Flink 的主要配置文件,用于配置各種集群參數。

vim flink-conf.yaml
# 指定 JobManager 的 RPC 服務監聽的地址
jobmanager.rpc.address: 
# 指定 JobManager 在所有網絡接口上進行綁定
jobmanager.bind-host: 0.0.0.0# 指定 TaskManager 進程的外部地址
taskmanager.host: master01				# 每臺機器這里不同,其他相同
# 指定 TaskManager 綁定的網絡接口
taskmanager.bind-host: 0.0.0.0# 指定 Flink 集群中 REST API 服務的外部地址
rest.address: master01
# 指定 REST API 服務在所有網絡接口上進行綁定。
rest.bind-address: 0.0.0.0

以下看需配置

# TaskManager 內存:
taskmanager.memory.process.size: 1024m# TaskManager 的槽位數:
taskmanager.numberOfTaskSlots: 4# 高可用性配置(如果需要高可用性):
high-availability.type: zookeeper
high-availability.zookeeper.quorum: localhost:2181
high-availability.zookeeper.path.root: /flink
high-availability.cluster-id: /cluster_one
high-availability.storageDir: hdfs:///flink/recovery
state.checkpoints.dir:  hdfs:///flink/checkpoints
state.savepoints.dir: hdfs:///flink/savepoints# 并行度:
parallelism.default: 4# 日志配置:
taskmanager.log.dir: /var/log/flink# HDFS 配置:
fs.default-scheme: hdfs://namenode:9000

6. 啟動 Flink 集群

$FLINK_HOME/bin/stop-cluster.sh
$FLINK_HOME/bin/start-cluster.sh

7. 提交Flink任務

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/899167.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/899167.shtml
英文地址,請注明出處:http://en.pswp.cn/news/899167.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深入解析 JVM 內存區域及核心概念

深入解析 JVM 內存區域及核心概念 Java 虛擬機&#xff08;JVM&#xff09;內部劃分了多個內存區域&#xff0c;每個區域存儲不同類型的數據并承擔不同的職責。本文將詳細介紹以下內容&#xff1a; 程序計數器&#xff1a;記錄當前線程正在執行的字節碼指令及其“行號”信息&a…

Java操作RabbitMQ

文章目錄 Spring集成RabbitMQ1. AMQP&SpringAMQP2. SpringBoot集成RabbitMQ3. 模型work模型 4.交換機Fanout交換機Direct交換機Topic交換機 5.聲明式隊列和交換機基于API聲明基于注解聲明 6.消息轉換器 Spring集成RabbitMQ 1. AMQP&SpringAMQP AMQP&#xff08;高級消…

Kotlin泛型: 協變|逆變|不變

引言 無論java 通配符上限還是下限&#xff0c;都多少存在缺陷&#xff0c;要么存不安全&#xff0c;要么取不安全。而kotlin就解決這個問題。讓out 純輸出&#xff0c; 讓in純輸入。 java這塊知識&#xff1a; java泛型的協變、逆變和不變-CSDN博客 協變 生產者out T 協變…

【Excel使用技巧】某列保留固定字段或內容

目錄 ? 方法一&#xff1a;使用 Excel 公式提取 body 部分 &#x1f50d; 解釋&#xff1a; ? 方法二&#xff1a;批量處理整列數據 &#x1f6a8; 注意事項 &#x1f6a8; 處理效果 我想保留Excel某一列的固定內容&#xff0c;比如原內容是&#xff1a; thread entry i…

C# System.Text.Encoding 使用詳解

總目錄 前言 在C#編程中&#xff0c;處理字符串和字節數組之間的轉換是一個常見的任務。System.Text.Encoding類及其派生類提供了豐富的功能&#xff0c;幫助開發者實現不同字符編碼之間的轉換。本文將詳細講解System.Text.Encoding類的使用方法&#xff0c;包括常用編碼的介紹…

Pre-flash和Main flash

在相機拍照過程中&#xff0c;Pre-flash&#xff08;預閃光&#xff09; 和 Main flash&#xff08;主閃光&#xff09; 是常見的兩種閃光燈使用模式&#xff0c;通常用于提高低光環境下的拍攝質量&#xff0c;尤其在自動曝光&#xff08;AE&#xff09;和自動對焦&#xff08;…

Kafka 4.0 發布:KRaft 替代 Zookeeper、新一代重平衡協議、點對點消息模型、移除舊協議 API

KRaft 全面替代 ZooKeeper Apache Kafka 4.0 是一個重要的里程碑&#xff0c;標志著第一個完全無需 Apache ZooKeeper 運行的主要版本。 通過默認運行在 KRaft 模式下&#xff0c;Kafka 簡化了部署和管理&#xff0c;消除了維護單獨 ZooKeeper 集群的復雜性。 這一變化顯著降…

SFT實驗報告

大模型微調實驗報告* 實驗目標 梳理大模型微調方法&#xff0c;評估各種基座和微調方法的實驗效果。 基礎模型 \1.Llama \2.Qwen \3.Chatglm4 \4. 微調策略 LoRA系列 低秩適配&#xff08;LoRA&#xff09;的核心思想是凍結原始參數&#xff0c;通過低秩分解引入可訓…

LLM - R1 強化學習 DRPO 策略優化 DAPO 與 Dr. GRPO 算法 教程

歡迎關注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/146533892 在強化學習算法中&#xff0c;DAPO (Decoupled Clip and Dynamic Sampling Policy Optimization)&#xff0c;通過解耦裁剪和動態采樣策…

美攝科技智能汽車視頻延遲攝影解決方案,開啟智能出行新視界

在智能汽車時代&#xff0c;車載影像技術正以前所未有的速度發展&#xff0c;成為提升駕乘體驗和滿足用戶多樣化需求的關鍵因素。美攝科技憑借其卓越的技術實力和創新精神&#xff0c;推出了智能汽車視頻延遲攝影解決方案&#xff0c;為智能汽車行業帶來了一場視覺盛宴。 一、…

[250325] Claude AI 現已支持網絡搜索功能!| ReactOS 0.4.15 發布!

目錄 Claude AI 現已支持網絡搜索功能&#xff01;ReactOS 0.4.15 發布&#xff01; Claude AI 現已支持網絡搜索功能&#xff01; 近日&#xff0c;Anthropic 公司宣布&#xff0c;其 AI 助手 Claude 現在可以進行網絡搜索&#xff0c;為用戶提供更及時、更相關的回復。這項新…

代碼規范之Variable Names變量名

代碼規范之Variable Names變量名 golang中 官方文檔&#xff1a;https://go.dev/wiki/CodeReviewComments#variable-names Variable names in Go should be short rather than long. This is especially true for local variables with limited scope. Prefer c to lineCoun…

Mybatis_plus

前言 Mybatis_plus 是在 mybatis 的基礎上進行了增強&#xff0c;在 MyBatis 的基礎上只做增強不做改變&#xff0c;為簡化開發、提高效率而生。本文章只做簡單的使用介紹&#xff0c;更加詳細的內容大家可以參考官網。 下面是mybatis_plus 官網地址&#xff1a; mybatis_plu…

深圳問頂安全科技有限公司asktopsec是做什么的?

深圳問頂安全科技有限公司&#xff0c;是一家專業的AI與應用安全公司。 全球領先的AI、Android、IOS應用安全解決方案提供商&#xff0c;官網&#xff1a;https://asktopsec.com 問頂安全主要為企業提供AI和應用安全服務 移動應用安全檢測、移動應用安全加固、AI智能體安全、AI…

鴻蒙OS 5 架構設計探秘:從分層設計到多端部署

文章目錄 鴻蒙OS架構設計探秘&#xff1a;從分層設計到多端部署一、鴻蒙的分層架構設計二、模塊化設計的精髓三、智慧分發設計&#xff1a;資源的動態調度四、一次開發&#xff0c;多端部署的實踐總結與思考 鴻蒙OS架構設計探秘&#xff1a;從分層設計到多端部署 最近兩年來&a…

idea 沒有 add framework support(添加框架支持)選項

在 IntelliJ IDEA 2023 中&#xff0c;若需通過設置手動添加 “添加框架支持” 菜單項&#xff0c;可按照以下步驟操作&#xff1a; 手動添加 “添加框架支持” 菜單項 打開設置 點擊頂部菜單欄的 File&#xff08;文件&#xff09; -> Settings&#xff08;設置&#xff09…

計算機網絡--傳輸層(2)

傳輸層核心機制深度解析 一、可靠傳輸實現機制 1. 校驗和機制 技術原理&#xff1a; 使用16位二進制反碼求和算法&#xff0c;計算范圍包括TCP偽首部&#xff08;12字節&#xff09;、TCP首部&#xff08;20字節&#xff09;和數據部分接收端重新計算校驗和&#xff0c;若與…

再探帶權并查集

典型例題 Acwing 權值 故名思義&#xff0c;在帶權并查集中&#xff0c;我們需要讓每個節點攜帶一個**“權值”**。 那么這個權值應該是什么呢&#xff1f;其實答案就在并查集當中。 由于在并查集當中我們可以在 O ( 1 ) O(1) O(1) 時間內找到一個節點的根節點&#xff0c;那…

Vala編成語言教程-構造函數和析構函數

構造函數 Vala支持兩種略有不同的構造方案&#xff1a;我們將重點討論Java/C#風格的構造方案&#xff0c;另一種是GObject風格的構造方案。 Vala不支持構造函數重載的原因與方法重載不被允許的原因相同&#xff0c;這意味著一個類不能有多個同名構造函數。但這并不構成問題&…

本地部署Stable Diffusion生成爆火的AI圖片

直接上代碼 Mapping("/send") Post public Object send(Body String promptBody) { JSONObject postSend new JSONObject(); System.out.println(promptBody); JSONObject body JSONObject.parseObject(promptBody); List<S…