Hướng dẫn về Apache Oozie: Là gì, Quy trình làm việc, Ví dụ – Hadoop

OOZIE là gì?

Apache Oozie là một công cụ lập lịch trình công việc cho Hadoop. Nó là một hệ thống chạy quy trình làm việc của các công việc phụ thuộc. Tại đây, người dùng được phép tạo Đồ thị Acyclic có hướng quy trình công việc có thể chạy song song và tuần tự trong Hadoop.

Nó bao gồm hai phần:

  • Công cụ quy trình công việc: Trách nhiệm của công cụ quy trình làm việc là lưu trữ và chạy các quy trình công việc bao gồm các công việc của Hadoop, ví dụ: MapReduce, Pig, Hive.
  • Động cơ điều phối: Nó chạy các công việc trong quy trình công việc dựa trên lịch trình được xác định trước và tính sẵn có của dữ liệu.

Oozie có khả năng mở rộng và có thể quản lý việc thực hiện kịp thời hàng nghìn quy trình công việc (mỗi quy trình bao gồm hàng chục công việc) trong cụm Hadoop.

OOZIE

Oozie cũng rất linh hoạt. Người ta có thể dễ dàng bắt đầu, dừng, tạm dừng và chạy lại công việc. Oozie giúp việc chạy lại các quy trình công việc bị lỗi trở nên rất dễ dàng. Người ta có thể dễ dàng hiểu được việc bắt kịp các công việc bị bỏ lỡ hoặc thất bại do thời gian ngừng hoạt động hoặc thất bại khó khăn như thế nào. Thậm chí có thể bỏ qua một nút bị lỗi cụ thể.

OOZIE hoạt động như thế nào?

Oozie chạy như một dịch vụ trong cụm và khách hàng gửi định nghĩa quy trình công việc để xử lý ngay lập tức hoặc sau đó.

Quy trình làm việc của Oozie bao gồm nút hành độngnút luồng điều khiển.

An nút hành động thể hiện một tác vụ quy trình làm việc, ví dụ: di chuyển tệp vào HDFS, chạy MapReduce, Pig hoặc Tổ ong công việc, nhập dữ liệu bằng Sqoop hoặc chạy tập lệnh shell của chương trình được viết bằng Java.

A nút luồng điều khiển kiểm soát việc thực hiện quy trình công việc giữa các hành động bằng cách cho phép các cấu trúc như logic có điều kiện trong đó các nhánh khác nhau có thể được tuân theo tùy thuộc vào kết quả của nút hành động trước đó.

Nút bắt đầu, Nút cuốiNút lỗi thuộc loại nút này.

Nút bắt đầu, chỉ định sự bắt đầu của công việc trong quy trình công việc.

Nút cuối, báo hiệu kết thúc công việc.

Nút lỗi chỉ định sự xuất hiện của lỗi và thông báo lỗi tương ứng sẽ được in.

Khi kết thúc quá trình thực thi quy trình công việc, Oozie sử dụng lệnh gọi lại HTTP để cập nhật trạng thái quy trình làm việc cho máy khách. Việc truy cập hoặc thoát khỏi nút hành động cũng có thể kích hoạt lệnh gọi lại.

Sơ đồ quy trình làm việc mẫu

Sơ đồ quy trình làm việc mẫu

Đóng gói và triển khai ứng dụng quy trình làm việc Oozie

Ứng dụng quy trình làm việc bao gồm định nghĩa quy trình công việc và tất cả các tài nguyên liên quan như tệp MapReduce Jar, tập lệnh Pig, v.v. Các ứng dụng cần tuân theo cấu trúc thư mục đơn giản và được triển khai để HDFS để Oozie có thể truy cập chúng.

Một cấu trúc thư mục ví dụ được hiển thị bên dưới-

<name of workflow>/</name>
??? lib/
? ??? hadoop-examples.jar
??? workflow.xml

Cần phải giữ Workflow.xml (tệp định nghĩa quy trình làm việc) trong thư mục cấp cao nhất (thư mục mẹ có tên quy trình làm việc). Thư mục Lib chứa các tệp Jar chứa các lớp MapReduce. Ứng dụng quy trình làm việc phù hợp với bố cục này có thể được xây dựng bằng bất kỳ công cụ xây dựng nào, ví dụ: Ant hoặc Maven.

Ví dụ: bản dựng như vậy cần được sao chép sang HDFS bằng lệnh –

% hadoop fs -put hadoop-examples/target/<name of workflow dir> name of workflow

Các bước để chạy công việc quy trình làm việc Oozie

Trong phần này, chúng ta sẽ xem cách chạy một công việc theo quy trình công việc. Để chạy cái này, chúng tôi sẽ sử dụng công cụ dòng lệnh Oozie (một chương trình máy khách giao tiếp với máy chủ Oozie).

1. Xuất biến môi trường OOZIE_URL để báo cho lệnh oozie biết máy chủ Oozie nào sẽ sử dụng (ở đây chúng tôi đang sử dụng một máy chủ chạy cục bộ):

% export OOZIE_URL="http://localhost:11000/oozie"

2. Chạy công việc quy trình làm việc bằng cách sử dụng-

% oozie job -config ch05/src/main/resources/max-temp-workflow.properties -run

Tùy chọn -config đề cập đến một địa chỉ cục bộ Java tệp thuộc tính chứa các định nghĩa cho các tham số trong tệp XML của quy trình làm việc, cũng như oozie.wf.application.path, cho Oozie biết vị trí của ứng dụng quy trình làm việc trong HDFS.

Nội dung ví dụ của tệp thuộc tính:

nameNode=hdfs://localhost:8020
jobTracker=localhost:8021
oozie.wf.application.path=${nameNode}/user/${user.name}/<name of workflow>

3. Nhận trạng thái công việc của quy trình làm việc-

Có thể xem trạng thái công việc của quy trình công việc bằng cách sử dụng lệnh phụ 'job' với tùy chọn '-info' và chỉ định id công việc sau '-info'.

e.g., % oozie job -info <job id>

Đầu ra hiển thị trạng thái là ĐANG CHẠY, ĐÃ GIẾT hoặc THÀNH CÔNG.

4. Có thể xem kết quả thực hiện quy trình công việc thành công bằng lệnh Hadoop như-

% hadoop fs -cat <location of result>

Tại sao nên sử dụng Oozie?

Mục đích chính của việc sử dụng Oozie là quản lý các loại công việc khác nhau đang được xử lý trong hệ thống Hadoop.

Sự phụ thuộc giữa các công việc được người dùng chỉ định dưới dạng Đồ thị chu kỳ có hướng. Oozie sử dụng thông tin này và đảm nhiệm việc thực hiện chúng theo đúng thứ tự như được chỉ định trong quy trình làm việc. Bằng cách đó, người dùng sẽ tiết kiệm được thời gian quản lý toàn bộ quy trình làm việc. Ngoài ra, Oozie còn có điều khoản quy định tần suất thực hiện một công việc cụ thể.

Đặc điểm của Oozie

  • Oozie có API máy khách và giao diện dòng lệnh có thể được sử dụng để khởi chạy, kiểm soát và giám sát công việc từ Java ứng dụng.
  • Sử dụng API dịch vụ web của nó, người ta có thể kiểm soát công việc từ mọi nơi.
  • Oozie có điều khoản để thực hiện các công việc được lên kế hoạch thực hiện định kỳ.
  • Oozie có chức năng gửi thông báo qua email khi hoàn thành công việc.