Apache Flume - Nguồn NetCat
Chương này lấy một ví dụ để giải thích cách bạn có thể tạo các sự kiện và sau đó đăng nhập chúng vào bảng điều khiển. Đối với điều này, chúng tôi đang sử dụngNetCat nguồn và logger bồn rửa.
Điều kiện tiên quyết
Để chạy ví dụ được cung cấp trong chương này, bạn cần cài đặt Flume.
Cấu hình Flume
Chúng tôi phải định cấu hình nguồn, kênh và bồn rửa bằng cách sử dụng tệp cấu hình trong confthư mục. Ví dụ được đưa ra trong chương này sử dụngNetCat Source, Memory channel, và một logger sink.
Nguồn NetCat
Trong khi cấu hình nguồn NetCat, chúng ta phải chỉ định một cổng trong khi cấu hình nguồn. Bây giờ nguồn (nguồn NetCat) lắng nghe cổng đã cho và nhận từng dòng chúng ta đã nhập vào cổng đó dưới dạng một sự kiện riêng lẻ và chuyển nó đến bộ chìm thông qua kênh được chỉ định.
Trong khi định cấu hình nguồn này, bạn phải cung cấp giá trị cho các thuộc tính sau:
channels
Source type - netcat
bind - Tên máy chủ hoặc địa chỉ IP để liên kết.
port - Số cổng mà chúng ta muốn nguồn lắng nghe.
Kênh
Chúng tôi đang sử dụng memorykênh. Để cấu hình kênh bộ nhớ, bạn phải cung cấp giá trị cho loại kênh. Dưới đây là danh sách các thuộc tính mà bạn cần cung cấp trong khi định cấu hình kênh bộ nhớ -
type- Nó chứa loại kênh. Trong ví dụ của chúng tôi, loại làMemChannel.
Capacity- Đây là số lượng sự kiện tối đa được lưu trữ trong kênh. Giá trị mặc định của nó là 100. (tùy chọn)
TransactionCapacity- Là số lượng sự kiện tối đa mà kênh chấp nhận hoặc gửi. Giá trị mặc định của nó là 100. (tùy chọn).
Logger Sink
Bồn rửa này ghi lại tất cả các sự kiện được chuyển đến nó. Nói chung, nó được sử dụng cho mục đích thử nghiệm hoặc gỡ lỗi. Để cấu hình bồn rửa này, bạn phải cung cấp các chi tiết sau.
Channel
type - người khai thác gỗ
Tệp cấu hình mẫu
Dưới đây là một ví dụ về tệp cấu hình. Sao chép nội dung này và lưu dưới dạngnetcat.conf trong thư mục conf của Flume.
# Naming the components on the current agent
NetcatAgent.sources = Netcat
NetcatAgent.channels = MemChannel
NetcatAgent.sinks = LoggerSink
# Describing/Configuring the source
NetcatAgent.sources.Netcat.type = netcat
NetcatAgent.sources.Netcat.bind = localhost
NetcatAgent.sources.Netcat.port = 56565
# Describing/Configuring the sink
NetcatAgent.sinks.LoggerSink.type = logger
# Describing/Configuring the channel
NetcatAgent.channels.MemChannel.type = memory
NetcatAgent.channels.MemChannel.capacity = 1000
NetcatAgent.channels.MemChannel.transactionCapacity = 100
# Bind the source and sink to the channel
NetcatAgent.sources.Netcat.channels = MemChannel
NetcatAgent.sinks.LoggerSink.channel = MemChannel
Chấp hành
Duyệt qua thư mục chính của Flume và thực thi ứng dụng như hình dưới đây.
$ cd $FLUME_HOME
$ ./bin/flume-ng agent --conf $FLUME_CONF --conf-file $FLUME_CONF/netcat.conf
--name NetcatAgent -Dflume.root.logger=INFO,console
Nếu mọi thứ diễn ra tốt đẹp, nguồn bắt đầu lắng nghe cổng đã cho. Trong trường hợp này, nó là56565. Dưới đây là ảnh chụp nhanh cửa sổ nhắc lệnh của nguồn NetCat đã khởi động và đang nghe cổng 56565.
Truyền dữ liệu đến nguồn
Để chuyển dữ liệu đến nguồn NetCat, bạn phải mở cổng được cung cấp trong tệp cấu hình. Mở một thiết bị đầu cuối riêng biệt và kết nối với nguồn (56565) bằng cách sử dụngcurlchỉ huy. Khi kết nối thành công, bạn sẽ nhận được thông báo “connected”Như hình bên dưới.
$ curl telnet://localhost:56565
connected
Bây giờ bạn có thể nhập từng dòng dữ liệu của mình (sau mỗi dòng, bạn phải nhấn Enter). Nguồn NetCat nhận mỗi dòng dưới dạng một sự kiện riêng lẻ và bạn sẽ nhận được thông báo “OK”.
Bất cứ khi nào bạn hoàn tất việc chuyển dữ liệu, bạn có thể thoát khỏi bảng điều khiển bằng cách nhấn (Ctrl+C). Dưới đây là ảnh chụp nhanh của bảng điều khiển mà chúng tôi đã kết nối với nguồn bằng cách sử dụngcurl chỉ huy.
Mỗi dòng được nhập vào bảng điều khiển trên sẽ được nguồn nhận như một sự kiện riêng lẻ. Vì chúng tôi đã sử dụngLogger chìm, các sự kiện này sẽ được đăng nhập vào bảng điều khiển (bảng điều khiển nguồn) thông qua kênh được chỉ định (kênh bộ nhớ trong trường hợp này).
Ảnh chụp nhanh sau đây cho thấy bảng điều khiển NetCat nơi các sự kiện được ghi lại.