摘要:注該文的作文是原文地址為在,我們使用處理我們架構的一部分,因為它很容易設置和減少自定義和,在我的創新時間,我嘗試設置一些拓撲來學習和集裝箱化。酷現在我們有一個工作的可以提取和處理數據了。第二部分的地址
注:該文的作文是 mrwilson ,原文地址為 Using Docker with Apache Flume - Part 1
在 Unruly,我們使用 Apache Flume 處理我們 event-streaming 架構的一部分,因為它很容易設置和減少自定義 sources 和 sinks,在我的創新時間,我嘗試設置一些 Flume 拓撲來學習 Docker 和 集裝箱化。
設置基礎鏡像Docker 有鏡像的概念,從鏡像中我們可以啟動一個容器,因此,第一步就是創建一個 Flume pre-installed 的鏡像。Flume 僅僅依賴 JAVA(它是一個 JAVA 工程),我從 Ubuntu 基礎鏡像中創建它,將執行以下步驟:
安裝 java 和 wget
下載和解壓 flume 工程到 /opt/flume
設置 JAVA_HOME 并且把 flume-ng 加入 PATH
下面是我們需要做的
FROM ubuntu # install wget + java RUN apt-get update -q RUN DEBIAN_FRONTEND=noninteractive apt-get install -qy --no-install-recommends wget openjdk-7-jre # download and unzip Flume RUN mkdir /opt/flume RUN wget -qO- https://archive.apache.org/dist/flume/stable/apache-flume-1.4.0-bin.tar.gz | tar zxvf - -C /opt/flume --strip 1 # set environment variables ENV JAVA_HOME /usr/lib/jvm/java-7-openjdk-amd64 ENV PATH /opt/flume/bin:$PATH
從這個 Dockerfile 中構建一個鏡像(使用 docker build -t flume .),可行的版本在 Docker index 中。
一個基礎的 Flume 拓撲一個 Flume 拓撲由 agents 組成,它由三個核心概念:sources, channels, 和 sinks。
我們從 sources 接收數據,把它傳遞進一個或多個 channels,然后被 sinks 讀取和處理。大部分基礎的拓撲包含一個多帶帶的節點,下面我構建一個叫做 Docker 的 agent,有以下結構:
一個 NetcatSource,從一個端口讀取數據,并且傳遞進 events。
一個 MemoryChannel,在內存中 buffering events 。
一個 LoggerSink,僅僅記錄它接收到的 events。
這個拓撲的配置文件如下,我們會以 flume-example.conf 作為參考,看起來像這樣:
docker.sinks = logSink docker.sources = netcatSource docker.channels = inMemoryChannel docker.sources.netcatSource.type = netcat docker.sources.netcatSource.bind = 0.0.0.0 docker.sources.netcatSource.port = 44444 docker.sources.netcatSource.channels = inMemoryChannel docker.channels.inMemoryChannel.type = memory docker.channels.inMemoryChannel.capacity = 1000 docker.channels.inMemoryChannel.transactionCapacity = 100 docker.sinks.logSink.type = logger docker.sinks.logSink.channel = inMemoryChannel
從這里,我們可以通過這個配置文件創建一個新的容器,并且啟動這個 docker agent。
FROM probablyfine/flume ADD flume-example.conf /var/tmp/flume-example.conf EXPOSE 44444 ENTRYPOINT [ "flume-ng", "agent", "-c", "/opt/flume/conf", "-f", "/var/tmp/flume-example.conf", "-n", "docker", "-Dflume.root.logger=INFO,console" ]
在 ENTRYPOINT 點的 flume-ng 命令將在容器啟動的時候被運行(需要配置目錄,配置文件,和 agent 的名字),EXPOSE 指令使得端口在運行時可用,這個端口 NetcatSource 將監聽。
注:關于 CMD、RUN、ENTRYPOING 的區別請看這里 http://segmentfault.com/q/1010000000417103
一旦我們構建了這個新的鏡像(我們稱作 flume-example),我們使用 ocker run -p 444:44444 -t flume-example 命令啟動這個容器,
-p 444:44444 參數將容器中的 44444 端口映射到本地主機上的 444 端口?,F在我們可以給它寫消息,使用 echo foo bar baz | nc localhost 444 然后看事件被記錄。
... 2014-05-05 19:26:13,218 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:70)] Event: { headers:{} body: 66 6F 6F 20 62 61 72 20 62 61 7A foo bar baz } ...
酷!現在我們有一個工作的 Flume agent 可以提取和處理數據了。
下一篇文章將展示一些有趣的 Flume 拓撲,以及使得我們怎樣能更加容易的把 Docker 的功能(比如 共享卷以及只讀 mounting)整合進一個 Flume 中設置。
第二部分的地址 Using Docker with Apache Flume - Part 2
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26339.html
摘要:在,我們使用作為事件流架構的一部分。在源斷和端,它使非常容易建立以及丟棄的。因此,第一步就是創建一個預安裝了的鏡像。一個基礎的拓撲一個拓撲由組成,它有個核心概念和。 注:該文的原文為 Using Docker with Apache Flume - Part 1,由 Alex Wilson 編寫。 在 Unruly ,我們使用 Apache Flume 作為事件流架構的一部分...
摘要:在,我們使用作為事件流架構的一部分。在源斷和端,它使非常容易建立以及丟棄的。因此,第一步就是創建一個預安裝了的鏡像。一個基礎的拓撲一個拓撲由組成,它有個核心概念和。 注:該文的原文為 Using Docker with Apache Flume - Part 1,由 Alex Wilson 編寫。 在 Unruly ,我們使用 Apache Flume 作為事件流架構的一部分...
閱讀 3690·2021-10-13 09:40
閱讀 3149·2021-10-09 09:53
閱讀 3551·2021-09-26 09:46
閱讀 1849·2021-09-08 09:36
閱讀 4248·2021-09-02 09:46
閱讀 1314·2019-08-30 15:54
閱讀 3179·2019-08-30 15:44
閱讀 1023·2019-08-30 11:06