Apache Flume trong Hadoop là gì?
Apache Flume là một hệ thống phân tán và đáng tin cậy để thu thập, tổng hợp và di chuyển một lượng lớn dữ liệu nhật ký. Nó có một kiến trúc đơn giản nhưng linh hoạt dựa trên luồng dữ liệu trực tuyến.
Bạn đang đọc: Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì
==>> Full khóa học miễn phí tại đây
Video Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì
Apache Flume được sử dụng để thu thập dữ liệu nhật ký có trong tệp nhật ký từ sever web và tổng hợp thành HDFS để nghiên cứu và phân tích. Flume trong Hadoop tương hỗ nhiều source như
- ‘Tail’ (dẫn dữ liệu từ một tệp cục bộ và ghi vào HDFS thông qua Flume, tương tự như lệnh Unix ‘tail’)
- Nhật ký hệ thống
- Apache log4j (cho phép các ứng dụng Java ghi sự kiện vào tệp trong HDFS thông qua Flume).
Cấu trúc Flume
Tác nhân Flume là một quy trình JVM có 3 thành phần – source Flume, Kênh Flume và Flume Sink – thông qua đó các sự kiện lan truyền sau khi bắt đầu tại một source bên ngoài.
cấu trúc Flume
- Trong sơ đồ trên, các sự kiện được tạo bởi source bên ngoài (WebServer) được sử dụng bởi source dữ liệu Flume. source bên ngoài gửi các sự kiện đến source Flume ở định dạng được source đích nhận ra.
- source Flume nhận một sự kiện và lưu trữ nó vào một hoặc nhiều kênh. Kênh hoạt động như một kho lưu giữ sự kiện cho đến khi nó được tiêu thụ bởi sink. Kênh này có thể sử dụng hệ thống tệp cục bộ để lưu trữ các sự kiện này.
- flume sink loại bỏ sự kiện flume một kênh và lưu trữ nó vào một kho lưu trữ bên ngoài, chẳng hạn như HDFS. Có thể có nhiều tác nhân tạo flume, trong trường hợp đó flume sink chuyển tiếp sự kiện đến flume source của tác nhân tạo flume tiếp theo trong dòng chảy.
Một số tính năng quan trọng của FLUME
- Flume có thiết kế linh hoạt dựa trên luồng dữ liệu trực tuyến. Nó có khả năng chịu lỗi và mạnh mẽ với nhiều cơ chế flume phục và chuyển đổi dự phòng. Flume Dữ liệu lớn có các mức độ tin cậy khác nhau để cung cấp, bao gồm ‘best-effort delivery‘ và ‘end-to-end delivery‘. Best-effort delivery không chịu đựng bất kỳ lỗi nút Flume nào trong khi chế độ ‘end-to-end delivery’‘ đảm bảo phân phối ngay cả trong trường hợp có nhiều lỗi nút.
- Flume mang dữ liệu giữa các source và sink. Việc thu thập dữ liệu này có thể được lên lịch hoặc theo hướng sự kiện. Flume có công cụ xử lý truy vấn riêng giúp dễ dàng chuyển đổi từng lô dữ liệu mới trước khi nó được chuyển đến sink dự kiến.
- Các sink có thể có Flume bao gồm HDFS và HBase. Flume Hadoop cũng có thể được sử dụng để vận chuyển dữ liệu sự kiện bao gồm nhưng không giới hạn ở dữ liệu lưu lượng mạng, dữ liệu được tạo bởi các trang web truyền thông xã hội và tin nhắn email.
Flume, thư viện và thiết lập mã nguồn
Trước khi chúng tôi khởi đầu với quy trình tiến độ thực tiễn, hãy bảo vệ bạn đã setup Hadoop. Thay đổi người dùng thành ‘ hduser ’ ( id được sử dụng trong khi thông số kỹ thuật Hadoop, bạn hoàn toàn có thể chuyển sang userid được sử dụng trong quy trình thông số kỹ thuật Hadoop của mình )
Bước 1) Tạo một thư mục mới với tên ‘FlumeTutorial’
sudo mkdir FlumeTutorial
- Cấp quyền đọc, ghi và thực thi
sudo chmod -R 777 FlumeTutorial - Sao chép các tệp MyTwitterSource.java và MyTwitterSourceForFlume.java trong thư mục này.
Tải xuống tệp đầu vào từ đây
Kiểm tra quyền tệp của tổng thể những tệp này và nếu quyền ‘ đọc ’ bị thiếu thì hãy cấp quyền tương tự như –
Bước 2) Tải xuống ‘Apache Flume’ từ một trang web- https://flume.apache.org/download.html
Apache Flume 1.4.0 đã được sử dụng trong hướng dẫn Flume này. Nhấp chuột tiếp theo
Bước 3) Sao chép tarball đã tải xuống trong thư mục bạn chọn và trích xuất nội dung bằng lệnh sau
sudo tar – xvf apache-flume-1.4.0-bin.tar.gz
Lệnh này sẽ tạo một thư mục mới có tên apache-flume-1.4.0-bin và giải nén các tập tin vào đó. Thư mục này sẽ được gọi là trong phần còn lại của bài viết.
Bước 4) Thiết lập thư viện Flume
Sao chép twitter4j-core-4.0.1.jar, flume-ng-configuration-1.4.0.jar, flume-ng-core-1.4.0.jar, flume-ng-sdk-1.4.0.jar vào
Có thể một trong hai hoặc tổng thể JAR được sao chép sẽ phải thực thi quyền. Điều này hoàn toàn có thể gây ra sự cố với việc biên dịch mã. Vì vậy, tịch thu quyền thực thi trên JAR đó.
Trong trường hợp của tôi, twitter4j-core-4.0.1.jar đang phải thực thi quyền. Tôi đã thu hồi nó như bên dưới-
sudo chmod – x twitter4j-core-4.0.1.jar
Sau khi lệnh này cấp quyền ‘đọc’ trên twitter4j-core-4.0.1.jar cho tất cả.
sudo chmod + rrr / usr / local / apache-flume-1. 4.0 – bin / lib / twitter4j-core-4.0.1.jar Xin chú ý quan tâm rằng tôi đã tải xuống –
– twitter4j-core-4.0.1.jar từ https://mvnrepository.com/artifact/org.twitter4j/twitter4j-core
– Tất cả các JAR ngọn lửa tức là flume-ng – * – 1.4.0.jar từ http://mvnrepository.com/artifact/org.apache.flume
Tải dữ liệu từ Twitter bằng Flume
Bước 1) Vào thư mục chứa các tệp mã nguồn trong đó.
Bước 2) Đặt CLASSPATH để chứa
export CLASSPATH = “ / usr / local / apache-flume-1. 4.0 – bin / lib / * : ~ / FlumeTutorial / flume / mytwittersource / * ”
Bước 3) Biên dịch mã nguồn bằng lệnh-
javac – d. MyTwitterSourceForFlume. java MyTwitterSource. java
Bước 4) Tạo jar
Đầu tiên, tạo tệp Manifest.txt bằng trình soạn thảo văn bản mà bạn chọn và thêm dòng bên dưới vào đó-
Main-Class : flume. mytwittersource. MyTwitterSourceForFlume
.. ở đây flume.mytwittersource.MyTwitterSourceForFlume là tên của lớp chính. Xin lưu ý rằng bạn phải nhấn phím enter ở cuối dòng này.
Bây giờ, hãy tạo JAR ‘ MyTwitterSourceForFlume.jar’ as-
jar cfm MyTwitterSourceForFlume. jar Manifest. txt flume / mytwittersource / *. class
Bước 5) Sao chép jar này vào
sudo cp MyTwitterSourceForFlume.jar
Bước 6) Đi tới thư mục cấu hình của Flume,
Nếu flume.conf không sống sót, hãy sao chép flume-conf.properties.template và đổi tên nó thành flume.conf sudo cp flume-conf.properties.template flume.conf
Nếu flume-env.sh không tồn tại, hãy sao chép flume-env.sh.template và đổi tên nó thành flume-env.sh
sudo cp flume-env.sh.template flume-env.sh
Tạo ứng dụng Twitter
Bước 1) Tạo ứng dụng Twitter bằng cách đăng nhập vào https://developer.twitter.com/
Bước 2) Đi tới ‘Ứng dụng của tôi’ (Tùy chọn này được thả xuống khi nhấp vào nút ‘Quả trứng’ ở góc trên cùng bên phải)
Bước 3) Tạo ứng dụng mới bằng cách nhấp vào ‘Tạo ứng dụng mới’
Bước 4) Điền thông tin chi tiết về ứng dụng bằng cách chỉ định tên ứng dụng, mô tả và trang web. Bạn có thể tham khảo các ghi chú được đưa ra bên dưới mỗi hộp nhập liệu.
Bước 5) Cuộn xuống trang và chấp nhận các điều khoản bằng cách đánh dấu ‘Có, tôi đồng ý’ và nhấp vào nút ‘Tạo ứng dụng Twitter của bạn’
Bước 6) Trên cửa sổ của một ứng dụng mới được tạo, hãy chuyển đến tab, ‘Khóa API’ cuộn xuống trang và nhấp vào nút ‘Tạo mã thông báo truy cập của tôi’
Bước 7) Làm mới trang.
Bước 8) Nhấp vào ‘Kiểm tra OAuth’. Thao tác này sẽ hiển thị cài đặt ‘OAuth’ của ứng dụng.
Bước 9) Sửa đổi ‘flume.conf’ bằng cách sử dụng các cài đặt OAuth này . Các bước để sửa đổi ‘flume.conf’ được đưa ra bên dưới.
Chúng tôi cần sao chép Khóa người tiêu dùng, Bí mật người tiêu dùng, Mã thông tin truy vấn và Bí mật mã thông tin truy vấn để update ‘ flume.conf ’.
Lưu ý: Những giá trị này thuộc về người dùng và do đó là bí mật, vì vậy không nên chia sẻ.
Sửa đổi tệp ‘flume.conf’
Bước 1) Mở ‘flume.conf’ ở chế độ ghi và đặt giá trị cho các tham số bên dưới-
sudo gedit flume.conf Sao chép nội dung bên dưới – MyTwitAgent. sources = Twitter MyTwitAgent. channels = MemChannel MyTwitAgent. sinks = HDFS MyTwitAgent. sources. Twitter. type = flume. mytwittersource. MyTwitterSourceForFlume MyTwitAgent. sources. Twitter. channels = MemChannel
MyTwitAgent.sources.Twitter.consumerKey =
MyTwitAgent.sources.Twitter.consumerSecret =
MyTwitAgent.sources.Twitter.accessToken =
MyTwitAgent.sources.Twitter.accessTokenSecret =
MyTwitAgent. sources. Twitter. keywords = guru99 MyTwitAgent. sinks. HDFS.channel = MemChannel MyTwitAgent. sinks. HDFS.type = hdfs MyTwitAgent. sinks. HDFS.hdfs.path = hdfs : / / localhost : 54310 / user / hduser / flume / tweets / MyTwitAgent. sinks. HDFS.hdfs.fileType = DataStream MyTwitAgent. sinks. HDFS.hdfs.writeFormat = Text MyTwitAgent. sinks. HDFS.hdfs.batchSize = 1000 MyTwitAgent. sinks. HDFS.hdfs.rollSize = 0 MyTwitAgent. sinks. HDFS.hdfs.rollCount = 10000 MyTwitAgent. channels. MemChannel. type = memory MyTwitAgent. channels. MemChannel. capacity = 10000 MyTwitAgent. channels. MemChannel. transactionCapacity = 1000
Bước 2) Ngoài ra, hãy đặt TwitterAgent.sinks.HDFS.hdfs.path như bên dưới,
TwitterAgent.sinks.HDFS.hdfs.path = hdfs://
Để biết
Bước 3) Để chuyển dữ liệu sang HDFS, khi nó đến, hãy xóa mục nhập bên dưới nếu nó tồn tại,
TwitterAgent.sinks.HDFS.hdfs.rollInterval = 600
Ví dụ: Truyền dữ liệu Twitter bằng Flume
Bước 1) Mở ‘flume-env.sh’ ở chế độ ghi và đặt giá trị cho các tham số bên dưới,
JAVA_HOME=
FLUME_CLASSPATH=”
Bước 2) flume động Hadoop
USD HADOOP_HOME / sbin / start-dfs.sh USD HADOOP_HOME / sbin / start-yarn.sh
Bước 3) Hai trong số các tệp JAR từ tarball Flume không tương thích với Hadoop 2.2.0. Vì vậy, chúng ta sẽ cần làm theo các bước dưới đây trong ví dụ Apache Flume này để làm cho Flume tương thích với Hadoop 2.2.0.
một. Di chuyển protobuf-java-2.4.1.jar ra flume ‘
Đi tới ‘
cd
sudo mv protobuf-java-2.4.1.jar ~ /
NS. Tìm tệp JAR ‘ổi’ như bên dưới
find. – name “ guava * ”
Di chuyển guava-10.0.1.jar ra flume ‘
sudo mv guava-10.0.1.jar ~ /
C. Tải xuống guava-17.0.jar từ http://mvnrepository.com/artifact/com.google.guava/guava/17.0
Bây giờ, hãy sao chép tệp jar đã tải xuống này vào ‘
Bước 4) Đi tới ‘
./flume-ng agent -n MyTwitAgent -c conf -f
Command prompt window nơi flume đang tìm nạp Tweets –
Từ thông báo window command, chúng ta có thể thấy rằng đầu ra được ghi vào thư mục / user / hduser / flume / tweets / .
Bây giờ, hãy mở thư mục này bằng trình duyệt web.
Bước 5) Để xem kết quả tải dữ liệu, sử dụng trình duyệt mở http: // localhost: 50070 / và duyệt qua hệ thống tệp, sau đó chuyển đến thư mục nơi dữ liệu đã được tải, đó là-
Từ khóa tìm kiếm : flume hadoop, apache flume, flume là gì, twitter4j, hadoop du, is flume gay, guru99 hadoop, manh cfm,
Source: https://gauday.com
Category: Blog