---
# System prepended metadata

title: Apache Flume 實作紀錄
tags: [' Flume', Apache]

---

---
title: Apache Flume 實作紀錄
tags: Apache, Flume
description: Apache Flume 實作記錄
---

# Apache Flume 實作記錄

## Apache Flume
Apache Flume 是高可用、高可靠的分散式日誌收集系統，與flume、hadoop、Hbase、Hive 等等具有高相融性。

## Flume installation
***注意：您的本地環境必須安裝 Java 8+***

先去[flume](https://downloads.apache.org/flume/)網站下載最新版本的安裝包，本次測試下載版本為1.9.0。

![](https://i.imgur.com/h8mY5Sp.png)

```
$ wget https://downloads.apache.org/flume/1.9.0/apache-flume-1.9.0-bin.tar.gz
$ tar -zxvf apache-flume-1.9.0-bin.tar.gz
$ mv apache-flume-1.9.0-bin flume
```

進入 flume 下的 conf 目錄，將底下的 flume-env.sh.template 檔案複製一份並改名為 flume-env.sh
```
$ cd flume/
$ cp conf/flume-env.sh.template conf/flume-env.sh
$ nano conf/flume-env.sh
```

在flume-env.sh中新增JAVA_HOME。
```
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
```

安裝netcat測試工具
```
$ apt-get install -y netcat
```


建立配置檔案
```
$ nano conf/flume-netcat-logger.conf
```

flume-netcat-logger.conf 內容如下
```
a1.sources = r1
a1.sinks = k1
a1.channels = c1

a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444

a1.sinks.k1.type = logger

a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
```

### 測試
開啟flume開始監聽資料
```
$ bin/flume-ng agent --conf conf/ --name a1 --conf-file conf/flume-netcat-logger.conf -Dflume.root.logger=INFO,console
```

* conf: 表示配置檔案儲存在conf/目錄，--conf也可以使用-c表示。
* name: a1表示給agent起名為a1，--name也可以使用-n代替。
* conf-file: flume本次啟動讀取的配置檔案是在conf目錄下的flume-netcat-logger.conf檔案。
* Dflume.root.logger：-D表示flume執行時動態修改flume.root.logger引數屬性值，並將控制檯日誌列印級別設定為INFO級別。日誌級別包括:log、info、warn、error。

啟動port傳送資料
```
$ nc localhost 44444
```

```
> test00
OK
> test01
OK
> test02
OK
```
![](https://i.imgur.com/k3X1ZZ3.png)

在監聽器頁面可以看到已經接收到了資料：

![](https://i.imgur.com/eaZw3cy.png)

---

## 參考
* https://iter01.com/575347.html

## Thank you! :dash: 

You can find me on
- GitHub: https://github.com/shaung08
- Email: a2369875@gmail.com
