摘要:在,我們使用作為事件流架構(gòu)的一部分。在源斷和端,它使非常容易建立以及丟棄的。因此,第一步就是創(chuàng)建一個(gè)預(yù)安裝了的鏡像。一個(gè)基礎(chǔ)的拓?fù)湟粋€(gè)拓?fù)溆山M成,它有個(gè)核心概念和。
注:該文的原文為 Using Docker with Apache Flume - Part 1,由 Alex Wilson 編寫。
在 Unruly ,我們使用 Apache Flume 作為事件流架構(gòu)的一部分。在源斷和 sinks 端,它使非常容易建立以及丟棄的。在我的創(chuàng)新時(shí)間,我嘗試創(chuàng)立一些 Flume 技術(shù)來獲得 Docker 和集裝箱運(yùn)輸?shù)闹R(shí)。
建立一個(gè)基礎(chǔ)鏡像Docker 有鏡像的概念,在這個(gè)鏡像中我們能運(yùn)行一個(gè)容器。因此,第一步就是創(chuàng)建一個(gè)預(yù)安裝了 Flume 的鏡像。Flume 僅僅依賴 java(它是一個(gè)java工程),我在一個(gè) Ubuntu 基礎(chǔ)鏡像的基礎(chǔ)上創(chuàng)建了它,創(chuàng)建它需要執(zhí)行以下步驟:
安裝 java 和 wget
下載和解壓 flume 工程到 /opt/flume 目錄下
設(shè)置 JAVA_HOME 和把 flume-ng 添加進(jìn) PATH
如下所做,創(chuàng)建一個(gè) 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
通過這個(gè) Dockerfile 構(gòu)建一個(gè)鏡像(使用 docker build -t flume .),將給我們一個(gè)基礎(chǔ)鏡像,以使 Flume 容器使用。它是可用的,你可以在 Docker index 找到它。
一個(gè)基礎(chǔ)的 Flume 拓?fù)?/b>一個(gè) Flume 拓?fù)溆?agent 組成,它有3個(gè)核心概念:sources、channels 和 sinks。
我們從 sources 接收數(shù)據(jù),把它放入一個(gè)或是多個(gè)的 channels ,它能被 sinks 讀取和加工。大部分的基礎(chǔ)拓?fù)溆梢粋€(gè)節(jié)點(diǎn)組成,我們建立了以下一個(gè)由 Docker 創(chuàng)建的節(jié)點(diǎn),使用:
一個(gè) NetcatSource,從一個(gè)端口讀取數(shù)據(jù)并且變成事件
一個(gè) MemoryChannel,存放在內(nèi)存中的事件 buffering 。
一個(gè) LoggerSink,記錄它接收到的事件
這個(gè)拓?fù)涞呐渲梦募覀兎Q之為 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
我們將使用這個(gè)配置文件創(chuàng)建一個(gè)新容器,并且啟動(dòng) 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 的命令將在一個(gè)啟動(dòng)的容器中運(yùn)行(配置文件的目錄,配置文件,和agent 名字),并且 EXPOSE 指令使得端口在運(yùn)行期是可用的。NetcatSource 在監(jiān)聽這個(gè)端口。
一旦我們創(chuàng)建了這個(gè)新鏡像(我們叫做 flume-example),我們就可以通過使用命令 docker run -p 444:44444 -t flume-example 啟動(dòng)這個(gè)容器,p 444:44444 指令將讓容器中的 4444 端口和本機(jī)的 444 端口做映射。現(xiàn)在我們可以通過 echo foo bar baz | nc localhost 444 給它發(fā)送消息了,然后看被記錄的事件。
... 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 } ...
簡(jiǎn)直酷斃了!現(xiàn)在我們有一個(gè)工作的 Flume agent 可以獲取和處理數(shù)據(jù)了。
下一篇文章,將展示更多的有趣的 Flume 技術(shù),并且我們可以更早的把 Docker 的特性和 Flume 的建立整合起來(比如共享一個(gè)卷和只讀的掛載)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/35727.html
摘要:在,我們使用作為事件流架構(gòu)的一部分。在源斷和端,它使非常容易建立以及丟棄的。因此,第一步就是創(chuàng)建一個(gè)預(yù)安裝了的鏡像。一個(gè)基礎(chǔ)的拓?fù)湟粋€(gè)拓?fù)溆山M成,它有個(gè)核心概念和。 注:該文的原文為 Using Docker with Apache Flume - Part 1,由 Alex Wilson 編寫。 在 Unruly ,我們使用 Apache Flume 作為事件流架構(gòu)的一部分...
摘要:注該文的作文是原文地址為在,我們使用處理我們架構(gòu)的一部分,因?yàn)樗苋菀自O(shè)置和減少自定義和,在我的創(chuàng)新時(shí)間,我嘗試設(shè)置一些拓?fù)鋪韺W(xué)習(xí)和集裝箱化。酷現(xiàn)在我們有一個(gè)工作的可以提取和處理數(shù)據(jù)了。第二部分的地址 注:該文的作文是 mrwilson ,原文地址為 Using Docker with Apache Flume - Part 1 在 Unruly,我們使用 Apache Fl...
摘要:健康監(jiān)控檢查,可以說是集群中最重要的一部分了。我們?cè)谶@里沒有使用推薦的方式,我們自己將其與內(nèi)部的系統(tǒng)做了結(jié)合,通過來對(duì)整個(gè)集群進(jìn)行監(jiān)控報(bào)警自動(dòng)化操作。 在公司內(nèi)部,基于kubernetes實(shí)現(xiàn)了簡(jiǎn)單的docker應(yīng)用集群系統(tǒng),拿出來和大家分享下,在這個(gè)系統(tǒng)中,實(shí)現(xiàn)了應(yīng)用的自動(dòng)部署、動(dòng)態(tài)擴(kuò)容、節(jié)點(diǎn)切換、健康檢查、AB式版本更新等功能,也歡迎大家將各自的實(shí)現(xiàn)也分享給我。 整體架構(gòu) 整體架構(gòu)...
摘要:健康監(jiān)控檢查,可以說是集群中最重要的一部分了。我們?cè)谶@里沒有使用推薦的方式,我們自己將其與內(nèi)部的系統(tǒng)做了結(jié)合,通過來對(duì)整個(gè)集群進(jìn)行監(jiān)控報(bào)警自動(dòng)化操作。 在公司內(nèi)部,基于kubernetes實(shí)現(xiàn)了簡(jiǎn)單的docker應(yīng)用集群系統(tǒng),拿出來和大家分享下,在這個(gè)系統(tǒng)中,實(shí)現(xiàn)了應(yīng)用的自動(dòng)部署、動(dòng)態(tài)擴(kuò)容、節(jié)點(diǎn)切換、健康檢查、AB式版本更新等功能,也歡迎大家將各自的實(shí)現(xiàn)也分享給我。 整體架構(gòu) 整體架構(gòu)...
閱讀 4233·2021-09-26 10:17
閱讀 877·2021-09-22 15:02
閱讀 3450·2021-09-06 15:00
閱讀 1059·2021-07-25 16:52
閱讀 2740·2019-08-29 16:16
閱讀 2519·2019-08-29 13:25
閱讀 1595·2019-08-26 13:51
閱讀 2189·2019-08-26 10:58