Tech

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

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.

==>> 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ừ máy chủ web và tổng hợp thành HDFS để phân tích.

Flume trong Hadoop hỗ trợ 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 FlumeFlume 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.

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

cấu trúc Flume

  1. 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.
  2. 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.
  3. 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 bắt đầu với quy trình thực tế, hãy đảm bảo bạn đã cài đặt Hadoop. Thay đổi người dùng thành ‘hduser’ (id được sử dụng trong khi cấu hình Hadoop, bạn có thể chuyển sang userid được sử dụng trong quá trình cấu hình Hadoop của mình)

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

Bước 1) Tạo một thư mục mới với tên ‘FlumeTutorial’

sudo mkdir FlumeTutorial

  1. Cấp quyền  đọc, ghi và thực thi
    sudo chmod -R 777 FlumeTutorial
  2. 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ất cả các tệp này và nếu quyền ‘đọc’ bị thiếu thì hãy cấp quyền tương tự-

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

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.

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

Nhấp chuột tiếp theo

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

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

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

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à  <Thư mục cài đặt của Flume>  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

<Installation Directory of Flume>/lib/

Có thể một trong hai hoặc tất cả JAR được sao chép sẽ phải thực thi quyền. Điều này có thể gây ra sự cố với việc biên dịch mã. Vì vậy, thu hồi 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

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

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 lưu ý 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  <Flume Installation Dir>/lib/* và  ~ / FlumeTutorial / flume / mytwittersource / *

export CLASSPATH = “/ usr / local / apache-flume-1.4.0-bin / lib / *: ~ / FlumeTutorial / flume / mytwittersource / *”

Tạo chương trình FLUME đầu tiên của bạn - Hướng dẫn cho người mới bắt đầu

Bước 3)  Biên dịch mã nguồn bằng lệnh-

javac -d. MyTwitterSourceForFlume.java MyTwitterSource.java

Tạo chương trình FLUME đầu tiên của bạn - Hướng dẫn cho người mới bắt đầu

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.

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

Bây giờ, hãy tạo JAR ‘ MyTwitterSourceForFlume.jar’  as-

jar cfm MyTwitterSourceForFlume.jar Manifest.txt flume / mytwittersource / *. class

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

Bước 5)  Sao chép jar này vào  <Flume Installation Directory>/lib/

sudo cp MyTwitterSourceForFlume.jar <Flume Installation Directory>/lib/

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

Bước 6)  Đi tới thư mục cấu hình của Flume,  <Flume Installation Directory> / conf

Nếu flume.conf không tồn tại, 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

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

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

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

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/

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì
Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

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)

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

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.

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

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’

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

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’

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì
Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

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.

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

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.

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

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 báo truy cập và Bí mật mã thông báo truy cập để cập nhật ‘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 = <Copy consumer key value from Twitter App>

MyTwitAgent.sources.Twitter.consumerSecret = <Copy consumer secret value from Twitter App>

MyTwitAgent.sources.Twitter.accessToken = <Copy access token value from Twitter App>

MyTwitAgent.sources.Twitter.accessTokenSecret = <Copy access token secret value from Twitter App>

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

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

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://<Host Name>:<Port Number>/<HDFS Home Directory>/flume/tweets/

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

Để biết   <Host Name>, <Port Number><HDFS Home Directory>, hãy xem giá trị của tham số  ‘fs.defaultFS’  được đặt trong  $ HADOOP_HOME / etc / hadoop / core-site.xml

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

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=<Installation directory of Java>

FLUME_CLASSPATH=”<Flume Installation Directory>/lib/MyTwitterSourceForFlume.jar”

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

Bước 2) flume động Hadoop

$ HADOOP_HOME / sbin / start-dfs.sh

$ 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  ‘<Flume Installation Directory>/lib’.

Đi tới ‘<Flume Installation Directory>/lib’

cd <Flume Installation Directory>/lib

sudo mv protobuf-java-2.4.1.jar ~ /

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

NS.  Tìm tệp JAR ‘ổi’ như bên dưới

find . -name “guava*”

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

Di chuyển  guava-10.0.1.jar ra flume  ‘<Flume Installation Directory>/lib’.

sudo mv guava-10.0.1.jar ~/

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

C. Tải xuống guava-17.0.jar  từ  http://mvnrepository.com/artifact/com.google.guava/guava/17.0

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

Bây giờ, hãy sao chép tệp jar đã tải xuống này vào  ‘<Flume Installation Directory>/lib’.

Bước 4)  Đi tới  ‘<Flume Installation Directory> / bin’  và bắt đầu Flume as-

./flume-ng agent -n MyTwitAgent -c conf -f <Flume Installation Directory> /conf/flume.conf

Tạo chương trình FLUME đầu tiên của bạn - Hướng dẫn cho người mới bắt đầu

Command prompt window nơi flume đang tìm nạp Tweets-

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

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à-

<HDFS Home Directory>/flume/tweets/

Hướng dẫn Apache Flume: Ví dụ về cấu trúc & Hadoop là gì

Từ khóa tìm kiếm : flume hadoop, apache flume, flume là gì, twitter4j, hadoop du, is flume gay, guru99 hadoop, manh cfm,

Check Also
Close
Back to top button
You cannot copy content of this page