初識Flink

来源:https://www.cnblogs.com/cjblogs/archive/2019/04/12/10695562.html
-Advertisement-
Play Games

本文主要是簡單介紹一下Flink基礎信息,更多有關Flink的介紹可以查看 "官方文檔" 。 Big Data "wikipedia" 大數據(Big data),又稱為巨量資料,指的是傳統數據處理應用軟體不足以處理它們的大或複雜的數據集的術語。大數據也可以定義為來自各種來源的大量非結構化或結構化數 ...


本文主要是簡單介紹一下Flink基礎信息,更多有關Flink的介紹可以查看官方文檔

Big Data

wikipedia

大數據(Big data),又稱為巨量資料,指的是傳統數據處理應用軟體不足以處理它們的大或複雜的數據集的術語。大數據也可以定義為來自各種來源的大量非結構化或結構化數據。

百度百科

大數據(big data),指無法在一定時間範圍內用常規軟體工具進行捕捉、管理和處理的數據集合,是需要新處理模式才能具有更強的決策力、洞察發現力和流程優化能力的海量、高增長率和多樣化的信息資產。

大數據特點(IBM提出)

Volume(大量)、Velocity(高速)、Variety(多樣)、Value(低價值密度)、Veracity(真實性)。

  • Volume:數據量大,包括採集、存儲和計算的量都非常大。大數據的起始計量單位至少是P(1000個T)、E(100萬個T)或Z(10億個T)。
  • Variety:種類和來源多樣化。包括結構化、半結構化和非結構化數據,具體表現為網路日誌、音頻、視頻、圖片、地理位置信息等等,多類型的數據對數據的處理能力提出了更高的要求。
  • Value:數據價值密度相對較低,或者說是浪里淘沙卻又彌足珍貴。隨著互聯網以及物聯網的廣泛應用,信息感知無處不在,信息海量,但價值密度較低,如何結合業務邏輯並通過強大的機器演算法來挖掘數據價值,是大數據時代最需要解決的問題。
  • Velocity:數據增長速度快,處理速度也快,時效性要求高。比如搜索引擎要求幾分鐘前的新聞能夠被用戶查詢到,個性化推薦演算法儘可能要求實時完成推薦。這是大數據區別於傳統數據挖掘的顯著特征。
  • Veracity:數據的準確性和可信賴度,即數據的質量。

流計算

流計算是針對流式數據的實時計算。

  • 流式數據是指將數據看作數據流的形式來處理,數據流是在時間分佈和數量上無限的一系列動態數據集合體,數據記錄是數據流的最小組成單元。
  • 流數據具有數據實時持續不斷到達、到達次序獨立、數據來源眾多格式複雜、數據規模大且不十分關註存儲、註重數據的整體價值而不關註個別數據等特點。

Flink是什麼

Apache Flink® - Stateful Computations over Data Streams
Apache Flink是一個用於對無界和有界數據流進行狀態計算的框架和分散式處理引擎,它同時支持批處理和流處理,作為流處理看待時輸入數據流是無界的,批處理被作為一種特殊的流處理。

架構原理

基礎架構

Flink集群啟動後,首先會啟動一個JobManger和一個或多個TaskManager。由Client提交任務給JobManager,JobManager再調度任務到各個TaskManager去執行,然後TaskManager將心跳和統計信息彙報給JobManager。TaskManager之間以流的形式進行數據的傳輸。JobManager、TaskManager和Client均為獨立的JVM進程。

JobManager

系統的協調者,負責接收Job,調度組成Job的多個Task的執行,收集Job的狀態信息,管理Flink集群中的TaskManager。

TaskManager

實際負責執行計算的Worker,並負責管理其所在節點的資源信息,在啟動的時候將資源的狀態向JobManager彙報。

Client

負責提交Job,可以運行在任何與JobManager環境連通的機器上,提交Job後,Client可以結束進程,也可以不結束並等待結果返回。

編程模型

Flink程式的基礎構建模塊是流和轉換,每一個數據流都起始於一個或多個source,終止於一個或多個sink。
Flink程式的基礎構建模塊是流(streams)與轉換(transformations),每一個數據流起始於一個或多個source,並終止於一個或多個sink,下麵是一個由Flink程式映射為Streaming Dataflow的示意圖:

基本編程模型

public static void main(String[] args) throws Exception {
    // 創建數據流執行環境
    StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
    // 通過連接socket獲取輸入數據
    DataStream<String> text = env.socketTextStream("localhost", 9009, "\n");
    // 解析數據
    DataStream<Tuple2<String, Integer>> windowCounts = text
            .flatMap(new FlatMapFunction<String, Tuple2<String, Integer>>() {
                @Override
                public void flatMap(String value, Collector<Tuple2<String, Integer>> out) {
                    for (String word : value.split("\\s")) {
                        out.collect(Tuple2.of(word, 1));
                    }
                }
            })
            .keyBy(0)
            .timeWindow(Time.seconds(5))
            .sum(1);
    // 將結果列印到控制台
    windowCounts.print();
    env.execute("Socket Window WordCount");
}

適用場景

Flink支持的最常見類型的應用示例

  • 事件驅動的應用程式
  • 數據分析應用
  • 數據管道應用

容錯機制

Flink的容錯機制的核心部分是分散式數據流和運營商狀態的一致快照,系統發生故障的時候這些快照可以充當一致性檢查點來退回,恢復作業的狀態和計算位置等。

  • Checkpointing
  • Recovery
  • Operator Snapshot Implementation

詳情參考Data Streaming Fault Tolerance


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Redis在3.0版本以後開始支持集群,經過中間幾個版本的不斷更新優化,最新的版本集群功能已經非常完善。本文簡單介紹一下Redis集群搭建的過程和配置方法,redis版本是5.0.4,操作系統是中標麒麟(和Centos內核基本一致)。 1、Redis集群原理 Redis 集群是一個提供在多個Redi ...
  • 首先資料庫的外鍵是資料庫提供的一種完整性約束。在許多資料庫的書上也會介紹到,然而對於外鍵這個完整性性約束究竟應該在資料庫端實現,還是在項目業務端實現很多人有著不同的意見。 在查看了很多大牛的文章後我總結出來如下: 個人開發(小型應用)、資料庫讀寫資源充足(資料庫併發低),集中式資料庫系統,則應該使用 ...
  • 在Oracle資料庫中,兩個表之間的表連接方法有排序合併連接、嵌套迴圈連接、哈希連接和笛卡爾連接四種 1.排序合併連接(sort merge join) 排序合併連接是一種兩表在做表連接時用排序(SORT)操作和合併(MERGE)操作來得到連接結果集的表連接方法 如果t1表和t2表在做表連接時使用的 ...
  • 1.線上釋放記憶體 use admindb.runCommand({closeAllDatabases:1}) 註:3.2 版本 已經去掉了這個命令了 2.rs.status() 查詢複製集狀態 3.db.stats() 查詢指定庫的狀態(包含記憶體和磁碟的使用情況統計) 4.db.collection ...
  • 類型:View Owner: SYS 內容: 記錄了該用戶可訪問的所有資料庫對象的腳本信息(DDL) 欄位: OWNER: 對象的Owner NAME: 對象名稱 TYPE: 對象類型,如FUNCTION, JAVA SOURCE, PACKAGE, PACKAGE BODY, PROCEDURE, ...
  • 6.5 事務實現原理之1:Redo Log 介紹事務怎麼用後,下麵探討事務的實現原理。事務有ACID四個核心屬性:A:原子性。事務要麼不執行,要麼完全執行。如果執行到一半,宕機重啟,已執行的一半要回滾回去。C:一致性。各種約束條件,比如主鍵不能為空、參照完整性等。I:隔離性。隔離性和併發性密切相關, ...
  • > 本文節選自《軟體架構設計:大型網站技術架構與業務架構融合之道》第6.4章節。 作者微信公眾號:> 架構之道與術。進入後,可以加入書友群,與作者和其他讀者進行深入討論。也可以在京東、天貓上購買紙質書。 ## 6.5.5 Redo Log Block結構 Log Block還需要有Check sum ...
  • 參數說明: p_jsonstr:目標JSON字元串 startkey:需要截取的JSON內容key值 endkey:目標key的下一個key 舉例說明:select parsejsonstr(INFO,'AGE', 'HEIGHT') from TTTT 圖為TTTT表中的內容,例子為截取INFO中 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...