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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Storm-Flux简介

發布時間:2023/12/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Storm-Flux简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Fluk

Fluk是storm中的一個框架,主要功能是簡化storm 任務在管理、配置topology中的一些問題和麻煩。

產生的原因背景

在管理storm 的topolgy的過程中,我們最常做的工作就是提交jar包。如下代碼所示:

public static void main(String[] args) throws Exception {// 返回的邏輯值用來判斷我們是否在本地上運行// 創建必要的配置選項...boolean runLocal = shouldRunLocal();if(runLocal){LocalCluster cluster = new LocalCluster();cluster.submitTopology(name, conf, topology);} else {StormSubmitter.submitTopology(name, conf, topology);} }

上述提交任務的代碼,通常都是位于上層的java任務管理器中。同時關于topoplgy的定義也位于其中,每當任務有變動,都需要重新編譯jar包,重新提交才可以。為了減少這部分工作,Fluk就將這部分工作接手了過來,改為配置的方式進行。基于此得出Fluk的主要功能點如下:

  • 安裝和部署storm 拓撲采用配置的方式而不是內置的方式進行。
  • 通過使用yaml dsl 定義storm core api(spouts/bolt)
  • yaml dsl 支持對storm-kafka、storm-hdfs、storm-hbase等。

Flux 使用

在pom 文件中加入對flux的依賴,如下所示:

<!-- 在shaded jar文件中包含FLux和用戶依賴包 --> <dependencies><!-- Flux include --><dependency><groupId>org.apache.storm</groupId><artifactId>flux-core</artifactId><version>${storm.version}</version></dependency><!-- Flux Wrappers include --><dependency><groupId>org.apache.storm</groupId><artifactId>flux-wrappers</artifactId><version>${storm.version}</version></dependency><!-- 在這里添加用戶依賴包... --></dependencies> <!-- 創建一個包括所有依賴包的大大的jar文件 --> <build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>1.4</version><configuration><createDependencyReducedPom>true</createDependencyReducedPom></configuration><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><transformers><transformerimplementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/><transformerimplementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"><mainClass>org.apache.storm.flux.Flux</mainClass></transformer></transformers></configuration></execution></executions></plugin></plugins> </build>

部署和運行Flux

和以前使用storm jar 提交任務的方式基本相同。只是由于當前的任務中可能已經沒有了對topology的定義,所以需要定義你使用的flux的yaml文件是哪一個,以便找到對應的topolgy邏輯,如下所示:

storm jar myTopology-0.1.0-SNAPSHOT.jar org.apache.storm.flux.Flux --local my_config.yaml

根據以上可以看到Flux的和興就在對yaml文件的編寫配置。下面具體說明一下

yaml配置

Flux 拓撲定義

  • 拓撲的名字及拓撲使用資源的配置如topolgy.workers
  • 拓撲組件列表
  • 一個DSL 拓撲定義
    • 一個spouts 列表,每一個項通過一個唯一的ID區別
    • 一個bolts列表,每一個項通過一個唯一的ID區別
    • 一個可以創建 org.apache.storm.generated.StormTopology 實例的JVM類
    name: "yaml-topology" config:topology.workers: 1# spout定義 spouts:- id: "spout-1"className: "org.apache.storm.testing.TestWordSpout"parallelism: 1# bolt定義 bolts:- id: "bolt-1"className: "org.apache.storm.testing.TestWordCounter"parallelism: 1- id: "bolt-2"className: "org.apache.storm.flux.wrappers.bolts.LogInfoBolt"parallelism: 1# stream定義,定義流的流向 streams:- name: "spout-1 --> bolt-1" #name暫時未用上(可以在logging,UI等中作為placeholder)from: "spout-1"to: "bolt-1"grouping:type: FIELDSargs: ["word"]- name: "bolt-1 --> bolt2"from: "bolt-1"to: "bolt-2"grouping:type: SHUFFLE

    上面是一個大的配置框架,下面說一些具體的特征配置

    組件

    組件從本質來說是對象實例,用來在對spouts和bolts的配置選項中獲取。如果你對Spring框架很熟悉,這里的組件大概就類比于Spring中的beans。每一個組件都是可被識別的,至少是可以通過一個唯一的標識符(字符串)和一個類名(字符串)。舉個例子,以下的例子將會創建一個 org.apache.storm.kafka.StringScheme 類的實例作為關鍵字 "stringScheme" 的引用。這里我們假設這個類 org.apache.storm.kafka.StringScheme 有一個默認的構造函數。

    components:- id: "stringScheme"className: "org.apache.storm.kafka.StringScheme"(假設有默認的構造函數)

    上面提到的定義的組件使用的是class類采用的是默認構造函數,如果需要自己構造則采用如下的方法

    自定義構造函數

    通過在yaml文件中增加constructorArgs的方法來定義構造函數。

    - id: "zkHosts"className: "org.apache.storm.kafka.ZkHosts"constructorArgs:- "localhost:2181"(通過調用一個把單個字符串“localhost:2181”作為參數傳遞給構造函數來創建一個對象)

    contructorArgs 是一個列表,其元素是對象。這個列表會被傳遞給類的構造函數們。上面的例子就是將zk的配置用參數的方式傳入到class的構造函數中。

    引用

    每一個組件實例都通過一個唯一的id可悲其他組件重復使用。為了引用一個已存在的組件,你需要在使用 ref 這個標簽的時候指明這個組件的id。

    在以下的例子中,一個名為的組件被創建,之后將被作為另一個組件的構造函數的參數被引用

    components:- id: "stringScheme"className: "org.apache.storm.kafka.StringScheme"- id: "stringMultiScheme"className: "org.apache.storm.spout.SchemeAsMultiScheme"constructorArgs:- ref: "stringScheme" # component with id "stringScheme" must be declared above.
    屬性

    除去允許在調用構造函數的時候傳進不同的參數,Flux同樣允許在配置組件的時候使用被聲明為 public 的類似JavaBean的setter方法和域

    - id: "spoutConfig"className: "org.apache.storm.kafka.SpoutConfig"constructorArgs:# brokerHosts- ref: "zkHosts"# topic- "myKafkaTopic"# zkRoot- "/kafkaSpout"# id- "myId"properties:- name: "ignoreZkOffsets"value: true- name: "scheme"ref: "stringMultiScheme"

    參考鏈接:http://storm.apachecn.org/releases/cn/1.1.0/flux.html

    轉載于:https://www.cnblogs.com/angellst/p/8660686.html

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的Storm-Flux简介的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。