摘要:在,我們使用作為事件流架構的一部分。在源斷和端,它使非常容易建立以及丟棄的。因此,第一步就是創建一個預安裝了的鏡像。一個基礎的拓撲一個拓撲由組成,它有個核心概念和。
注:該文的原文為 Using Docker with Apache Flume - Part 1,由 Alex Wilson 編寫。
在 Unruly ,我們使用 Apache Flume 作為事件流架構的一部分。在源斷和 sinks 端,它使非常容易建立以及丟棄的。在我的創新時間,我嘗試創立一些 Flume 技術來獲得 Docker 和集裝箱運輸的知識。
建立一個基礎鏡像Docker 有鏡像的概念,在這個鏡像中我們能運行一個容器。因此,第一步就是創建一個預安裝了 Flume 的鏡像。Flume 僅僅依賴 java(它是一個java工程),我在一個 Ubuntu 基礎鏡像的基礎上創建了它,創建它需要執行以下步驟:
安裝 java 和 wget
下載和解壓 flume 工程到 /opt/flume 目錄下
設置 JAVA_HOME 和把 flume-ng 添加進 PATH
如下所做,創建一個 dockerfile :
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 .),將給我們一個基礎鏡像,以使 Flume 容器使用。它是可用的,你可以在 Docker index 找到它。
一個基礎的 Flume 拓撲一個 Flume 拓撲由 agent 組成,它有3個核心概念:sources、channels 和 sinks。
我們從 sources 接收數據,把它放入一個或是多個的 channels ,它能被 sinks 讀取和加工。大部分的基礎拓撲由一個節點組成,我們建立了以下一個由 Docker 創建的節點,使用:
一個 NetcatSource,從一個端口讀取數據并且變成事件
一個 MemoryChannel,存放在內存中的事件 buffering 。
一個 LoggerSink,記錄它接收到的事件
這個拓撲的配置文件,我們稱之為 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 在監聽這個端口。
一旦我們創建了這個新鏡像(我們叫做 flume-example),我們就可以通過使用命令 docker run -p 444:44444 -t flume-example 啟動這個容器,p 444:44444 指令將讓容器中的 4444 端口和本機的 444 端口做映射。現在我們可以通過 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 的特性和 Flume 的建立整合起來(比如共享一個卷和只讀的掛載)。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28104.html
摘要:在,我們使用作為事件流架構的一部分。在源斷和端,它使非常容易建立以及丟棄的。因此,第一步就是創建一個預安裝了的鏡像。一個基礎的拓撲一個拓撲由組成,它有個核心概念和。 注:該文的原文為 Using Docker with Apache Flume - Part 1,由 Alex Wilson 編寫。 在 Unruly ,我們使用 Apache Flume 作為事件流架構的一部分...
摘要:注該文的作文是原文地址為在,我們使用處理我們架構的一部分,因為它很容易設置和減少自定義和,在我的創新時間,我嘗試設置一些拓撲來學習和集裝箱化。酷現在我們有一個工作的可以提取和處理數據了。第二部分的地址 注:該文的作文是 mrwilson ,原文地址為 Using Docker with Apache Flume - Part 1 在 Unruly,我們使用 Apache Fl...
摘要:健康監控檢查,可以說是集群中最重要的一部分了。我們在這里沒有使用推薦的方式,我們自己將其與內部的系統做了結合,通過來對整個集群進行監控報警自動化操作。 在公司內部,基于kubernetes實現了簡單的docker應用集群系統,拿出來和大家分享下,在這個系統中,實現了應用的自動部署、動態擴容、節點切換、健康檢查、AB式版本更新等功能,也歡迎大家將各自的實現也分享給我。 整體架構 整體架構...
摘要:健康監控檢查,可以說是集群中最重要的一部分了。我們在這里沒有使用推薦的方式,我們自己將其與內部的系統做了結合,通過來對整個集群進行監控報警自動化操作。 在公司內部,基于kubernetes實現了簡單的docker應用集群系統,拿出來和大家分享下,在這個系統中,實現了應用的自動部署、動態擴容、節點切換、健康檢查、AB式版本更新等功能,也歡迎大家將各自的實現也分享給我。 整體架構 整體架構...
閱讀 1733·2021-11-24 10:18
閱讀 2207·2021-11-18 13:20
閱讀 2332·2021-08-23 09:46
閱讀 993·2019-08-30 15:56
閱讀 2840·2019-08-30 15:53
閱讀 738·2019-08-30 14:22
閱讀 470·2019-08-29 15:34
閱讀 2532·2019-08-29 12:14