Hướng dẫn về Oozie: Tìm hiểu cách lên lịch công việc trên Hadoop của bạn



Apache Oozie Hướng dẫn: Oozie là một hệ thống lập lịch trình quy trình làm việc để quản lý các công việc Hadoop. Nó là một hệ thống có thể mở rộng, đáng tin cậy và có thể mở rộng.

Trước khi bắt đầu hướng dẫn Apache Oozie này, hãy để chúng tôi hiểu nơi hệ thống lập lịch được sử dụng. Trong các kịch bản thời gian thực, một công việc phụ thuộc vào các công việc khác, như kết quả của một tác vụ MapReduce có thể được chuyển cho công việc Hive để xử lý thêm. Kịch bản tiếp theo có thể là, lên lịch cho một nhóm công việc trên cơ sở thời gian như hàng ngày, hàng tuần, hàng tháng hoặc dựa trên tính khả dụng của dữ liệu. Apache Oozie cung cấp cho bạn sức mạnh để dễ dàng xử lý các loại tình huống này. Đây là lý do tại sao Apache Oozie là một phần quan trọng của .

Trong blog hướng dẫn Apache Oozie này, chúng tôi sẽ đề cập đến:





  • Giới thiệu Apache Oozie
  • Quy trình làm việc Oozie
  • Điều phối viên Oozie
  • Gói Oozie
  • Công việc dòng công việc đếm từ
  • Công việc điều phối viên đếm từ dựa trên thời gian

Chúng tôi sẽ bắt đầu hướng dẫn về Oozie này bằng cách giới thiệu Apache Oozie. Sau đó, chúng ta sẽ hiểu về các loại công việc có thể được tạo và thực hiện bằng Apache Oozie.

Hướng dẫn Apache Oozie: Giới thiệu về Apache Oozie

Apache Oozie - Hướng dẫn về Oozie - EdurekaApache Oozie là một hệ thống lập lịch để quản lý và thực hiện các công việc Hadoop trong một môi trường phân tán. Chúng ta có thể tạo một đường dẫn mong muốn bằng cách kết hợp nhiều loại nhiệm vụ khác nhau. Nó có thể là nhiệm vụ Hive, Pig, Sqoop hoặc MapReduce của bạn. Sử dụng Apache Oozie, bạn cũng có thể lên lịch công việc của mình. Trong một chuỗi nhiệm vụ, hai hoặc nhiều công việc cũng có thể được lập trình để chạy song song với nhau. Nó là một hệ thống có thể mở rộng, đáng tin cậy và có thể mở rộng.



Oozie là một ứng dụng web Java nguồn mở, chịu trách nhiệm kích hoạt các hành động của quy trình làm việc. Đến lượt nó, nó sử dụng công cụ thực thi Hadoop để thực thi các tác vụ.

cách thay đổi double thành int trong java

Apache Oozie phát hiện việc hoàn thành nhiệm vụ thông qua gọi lại và thăm dò ý kiến. Khi Oozie bắt đầu một nhiệm vụ, nó cung cấp một URL HTTP gọi lại duy nhất cho nhiệm vụ và thông báo cho URL đó khi nhiệm vụ hoàn thành. Nếu nhiệm vụ không thể gọi lại URL gọi lại, Oozie có thể thăm dò ý kiến ​​để hoàn thành nhiệm vụ.

Có ba loại công việc trong Apache Oozie:



  • Oozie Workflow Jobs & Trừ Đây là các Đồ thị Vòng có Hướng dẫn (DAG) chỉ định một chuỗi các hành động sẽ được thực hiện.
  • Công việc Điều phối viên Oozie & trừ Chúng bao gồm các công việc quy trình làm việc được kích hoạt theo thời gian và tính khả dụng của dữ liệu.
  • Gói Oozie & Trừ Đây có thể được coi là một gói gồm nhiều người điều phối và công việc quy trình làm việc.

Bây giờ, chúng ta hãy hiểu từng công việc một.

Apache Oozie Tutorial: Oozie Workflow

Quy trình làm việc là một chuỗi các hành động được sắp xếp trong một Đồ thị Acyclic Trực tiếp (DAG). Các hành động phụ thuộc vào nhau, vì hành động tiếp theo chỉ có thể được thực hiện sau đầu ra của hành động hiện tại. Một hành động trong quy trình công việc có thể là hành động Pig, hành động Hive, hành động MapReduce, hành động Shell, hành động Java, v.v. Có thể có cây quyết định để quyết định cách thức và điều kiện công việc sẽ chạy.

Chúng tôi có thể tạo các loại hành động khác nhau dựa trên công việc và mỗi loại hành động có thể có loại thẻ riêng.Dòng công việc và các tập lệnh hoặc các bình phải được đặt trong đường dẫn HDFS trước khi thực thi dòng công việc.

Chỉ huy: oozie job –oozie http: // localhost: 11000 / oozie -config job.properties -run

Để kiểm tra trạng thái của công việc, bạn có thể truy cập bảng điều khiển web Oozie, tức là http: // host_name: 11000 . Bằng cách nhấp vào công việc, bạn sẽ thấy trạng thái của công việc.

Trong các tình huống, nơi chúng ta muốn chạy nhiều công việc song song, chúng ta có thể sử dụng Cái nĩa . Bất cứ khi nào chúng ta sử dụng fork, chúng ta phải sử dụng Join làm nút kết thúc để fork. Đối với mỗi ngã ba nên có một tham gia. Tham gia giả định rằng tất cả các nút thực thi song song, là con của một ngã ba duy nhất. Ví dụ, chúng ta có thể tạo song song hai bảng cùng lúc.

Nếu chúng ta muốn chạy một hành động dựa trên đầu ra của quyết định, chúng ta có thể thêm các thẻ quyết định. Ví dụ: nếu chúng ta đã có bảng tổ ong, chúng ta sẽ không cần tạo lại. Trong trường hợp đó, chúng ta có thể thêm thẻ quyết định để không chạy các bước tạo bảng nếu bảng đã tồn tại. Các nút quyết định có một thẻ switch tương tự như switch case.

Giá trị của job-tracker, name-node, script và param có thể được chuyển trực tiếp. Nhưng, điều này trở nên khó quản lý. Đây là nơi mà một tệp cấu hình (tức là tệp .property) có ích.

Hướng dẫn Apache Oozie: Điều phối viên Oozie

Bạn có thể lập lịch các quy trình làm việc phức tạp cũng như các quy trình làm việc được lên lịch thường xuyên bằng cách sử dụng Coordinator. Oozie Coordinators kích hoạt các công việc của quy trình công việc dựa trên thời gian, dữ liệu hoặc dự đoán sự kiện. Các quy trình công việc bên trong bộ điều phối công việc bắt đầu khi điều kiện đã cho được thỏa mãn.

Các định nghĩa cần thiết cho các công việc điều phối viên là:

  • khởi đầu & trừ Ngày bắt đầu cho công việc.
  • kết thúc & trừ Ngày kết thúc cho công việc.
  • Múi giờ & trừ Múi giờ của ứng dụng điều phối viên.
  • tần số & trừ Tần suất thực hiện công việc, tính bằng phút.

Một số thuộc tính khác có sẵn cho Thông tin Kiểm soát:

  • hết giờ & trừ Thời gian tối đa, tính bằng phút, mà một hành động sẽ đợi để thỏa mãn các điều kiện bổ sung, trước khi bị loại bỏ. 0 chỉ ra rằng nếu tất cả các sự kiện đầu vào không được thỏa mãn tại thời điểm thực hiện hành động, hành động sẽ hết thời gian chờ ngay lập tức. -1 cho biết không có thời gian chờ, hành động sẽ chờ mãi mãi. Giá trị mặc định là -1.
  • đồng thời & trừ Số lượng hành động tối đa cho một công việc có thể chạy song song. Giá trị mặc định là 1.
  • chấp hành - Nó chỉ định thứ tự thực hiện nếu nhiều trường hợp của công việc điều phối viên đã thỏa mãn các tiêu chí thực thi của chúng. Nó có thể:
    • FIFO (mặc định)
    • LIFO
    • LAST_ONLY

Chỉ huy: oozie job –oozie http: // localhost: 11000 / oozie -config -run

Nếu thuộc tính cấu hình được sử dụng trong định nghĩa không được cung cấp cùng với cấu hình công việc trong khi gửi công việc điều phối viên, thì quá trình gửi công việc sẽ không thành công.

Hướng dẫn sử dụng Apache Oozie: Gói Oozie

Hệ thống gói Ooziecho phép bạn xác định và thực thi một tập hợp các ứng dụng điều phối, thường được gọi là đường ống dữ liệu. Trong một gói Oozie, không có sự phụ thuộc rõ ràng giữa các ứng dụng điều phối viên. Tuy nhiên, bạn có thể sử dụng sự phụ thuộc dữ liệu của các ứng dụng điều phối để tạo một đường dẫn ứng dụng dữ liệu ngầm định.Bạn có thể bắt đầu / dừng / tạm ngừng / tiếp tục / chạy lại gói. Nó cho phép kiểm soát hoạt động tốt hơn và dễ dàng.

Thời gian bắt đầu & trừ Thời gian mà một nhóm sẽ bắt đầu và gửi đơn đăng ký điều phối viên.

Tiếp tục trong hướng dẫn Apache Oozie này, chúng ta sẽ hiểu cách tạo Công việc Quy trình làm việc.

Apache Oozie Tutorial: Word Count Workflow Job

Trong ví dụ này, chúng ta sẽ thực hiện Công việc đếm từ bằng Apache Oozie. Ở đây chúng ta sẽ không thảo luận về cách viết chương trình đếm từ MapReduce. Vì vậy, trước khi làm theo hướng dẫn Apache Oozie này, bạn cần tải xuống lọ đếm từ tập tin. Bây giờ, hãy tạo thư mục WordCountTest nơi chúng tôi sẽ đặt tất cả các tệp. Tạo một thư mục lib nơi chúng ta sẽ đặt lọ đếm từ như được hiển thị trong các hình ảnh bên dưới.

Bây giờ, hãy tiếp tục và tạo job.properties & workflow.xml tệp, nơi chúng tôi sẽ chỉ định công việc và các thông số liên quan đến nó.

job.properties

Đầu tiên, chúng tôi đang tạo job.properties tệp, nơi chúng tôi đang xác định đường dẫn của NameNode & ResourceManager. Đường dẫn NameNode là bắt buộc để giải quyết đường dẫn thư mục luồng công việc & đường dẫn jobTracker sẽ giúp gửi công việc tới YARN. Chúng tôi cần cung cấp đường dẫn của workflow.xml tệp này sẽ được lưu trữ trong HDFS.

workflow.xml

Tiếp theo, chúng ta cần tạo workflow.xml tệp, nơi chúng tôi sẽ xác định tất cả các hành động của mình và thực thi chúng. Đầu tiên, chúng ta cần chỉ định tên ứng dụng-dòng công việc, tức là WorkflowRunnerTest . Sau đó, chúng tôi đang chỉ định nút bắt đầu . Nút bắt đầu ( trong các bắt đầu nhãn ) là điểm đầu vào cho một công việc quy trình làm việc. Nó hướng tới nút quy trình công việc đầu tiên từ nơi công việc sẽ bắt đầu. Như bạn có thể thấy trong hình ảnh bên dưới, nút tiếp theo là ngã tư0 từ nơi công việc sẽ bắt đầu.

Tiếp theo, chúng tôi đang chỉ định tác vụ sẽ được thực hiện, trong nút hành động. Chúng tôi đang thực hiện tác vụ MapReduce WordCount tại đây. Chúng tôi cần chỉ định các cấu hình cần thiết để thực hiện tác vụ MapReduce này. Chúng tôi đang xác định công cụ theo dõi công việc và địa chỉ NameNode.

Tiếp theo là phần tử đã chuẩn bị, được sử dụng riêng cho việc dọn dẹp thư mục, trước khi thực hiện hành động. Ở đây chúng tôi đang thực hiện thao tác xóa trong HDFS để xóa out1 nếu nó đã được tạo. Thẻ chuẩn bị được sử dụng để tạo hoặc xóa thư mục trước khi thực hiện công việc. Sau đó, chúng tôi đang chỉ định các thuộc tính MapReduce như tên hàng đợi công việc, lớp ánh xạ, lớp giảm tốc, lớp khóa đầu ra và lớp giá trị đầu ra.

Cấu hình tác vụ MapReduce cuối cùng là thư mục đầu vào và đầu ra trong HDFS. Thư mục đầu vào là dữ liệu thư mục, được lưu trữ trong đường dẫn gốc của NameNode . Cuối cùng, chúng tôi sẽ chỉ định phần tử giết nếu công việc không thành công.

Bây giờ chúng ta cần di chuyển WordCountTest thư mục trong HDFS, như chúng tôi đã chỉ định trong oozie.wf.application.path tài sản trong job.properties tập tin. Vì vậy, chúng tôi đang sao chép WordCountTest trong thư mục gốc Hadoop.

Chỉ huy: hadoop fs -put WordCountTest /

Để xác minh, bạn có thể vào NameNode Web UI và kiểm tra xem thư mục đã được tải lên trong thư mục gốc HDFS hay chưa.

Bây giờ, tất cả chúng ta đã sẵn sàng để tiếp tục và thực hiện công việc quy trình làm việc.

Chỉ huy: oozie job –oozie http: // localhost: 11000 / oozie -config job.properties -run

Khi chúng tôi đã hoàn thành công việc của mình, chúng tôi sẽ nhận được id công việc (tức là 0000009-171219160449620-oozie-edur-W ) như trong hình trên. Bạn có thể truy cập và kiểm tra công việc mà bạn đã nộp trong Giao diện người dùng web Oozie, tức là localhost: 11000 . Bạn có thể thấy trong hình ảnh dưới đây, công việc mà chúng tôi đã nộp được liệt kê xuống.

Nếu bạn quan sát trong hình trên, bạn sẽ thấy ID Công việc, tên Công việc, trạng thái của công việc, người dùng đã gửi công việc, thời gian tạo, bắt đầu và sửa đổi cuối cùng. Bạn có thể click vào công việc để biết thêm thông tin chi tiết như:

  • Thông tin công việc

  • Định nghĩa công việc

  • Cấu hình công việc

Vì trạng thái của công việc đã thành công, vì vậy chúng ta cần phải đi đến thư mục gốc HDFS và kiểm tra xem thư mục đầu ra đã được tạo hay chưa.

Như bạn có thể thấy rằng oozieout thư mục đã được tạo trong HDFS, vì vậy bây giờ hãy xem tệp đầu ra đã được tạo.

Như chúng ta đã biết về cách tạo công việc theo quy trình Oozie, bây giờ chúng ta sẽ tiến tới trong blog Hướng dẫn Apache Oozie này và hiểu cách tạo công việc điều phối viên.

Apache Oozie Hướng dẫn: Công việc Điều phối viên Đếm Từ dựa trên Thời gian

Trong ví dụ này, chúng tôi sẽ tạo một công việc điều phối viên đếm từ dựa trên thời gian sẽ được thực hiện sau một khoảng thời gian cụ thể. Bạn có thể tạo và lên lịch công việc bằng Apache Oozie, công việc này cần được thực hiện hàng ngày hoặc định kỳ.

Hãy để chúng tôi thăng tiến nhanh chóng trong hướng dẫn Apache Oozie này và tạo công việc điều phối viên. Ở đây, chúng tôi sẽ tạo ba tệp, tức là điều phối viên.properties , điều phối viên.xml & workflow.xml tập tin. Một lần nữa, ở đây chúng tôi sẽ đặt w số lượng lọ bên trong lib thư mục như trong hình dưới đây.

Bây giờ chúng ta hãy xem xét các tệp này riêng lẻ. Đầu tiên, chúng ta sẽ bắt đầu với tệp điều phối viên.properties.

Ở đây, chúng tôi đang chỉ định tần suất mà quy trình công việc sẽ được thực thi. Tần số luôn được biểu thị bằng phút. Trong trường hợp của chúng tôi, công việc điều phối viên này sẽ được thực hiện mỗi giờ một lần giữa thời gian được chỉ định. Tần số được sử dụng để nắm bắt các khoảng thời gian định kỳ mà các tập dữ liệu được tạo ra và các ứng dụng điều phối viên được lên lịch chạy.

Để xác định tần suất theo phút, giờ, ngày và tháng, hãy sử dụng định dạng sau:

$ {coord: minutes (int n)} n $ {coord: phút (45)} -> 45
$ {coord: hours (int n)} n * 60 $ {coord: giờ (3)} -> 180
$ {coord: days (int n)} Biến đổi $ {coord: days (2)} -> phút trong 2 ngày đầy đủ kể từ ngày hiện tại
$ {coord: months (int n)} Biến đổi $ {coord: months (1)} -> phút trong 1 tháng đầy đủ kể từ ngày hiện tại

Tiếp theo, chúng ta đang xác định thời gian bắt đầu & kết thúc công việc như trong hình trên. thời gian bắt đầu là ngày bắt đầu cho công việc & thời gian kết thúc là ngày kết thúc công việc.

Tiếp theo, chúng tôi chỉ định url NameNode & ResourceManager, url này sẽ được sử dụng để tham chiếu tệp workflow.xml trong HDFS và gửi công việc tới YARN tương ứng. Cuối cùng, chúng tôi đang chỉ định đường dẫn workflow.xml, mà chúng tôi sẽ lưu trữ trong HDFS. Chúng tôi cũng sẽ chỉ định đường dẫn ứng dụng nơi tất cả các tệp & thư mục lib sẽ được lưu trữ.

Tệp thứ hai là điều phối viên.xml nơi chúng tôi sẽ sử dụng tất cả các thuộc tính mà chúng tôi đã chỉ định trong điều phối viên.properties tập tin. Bây giờ, trước tiên, chúng tôi sẽ chỉ định các thuộc tính của ứng dụng điều phối viên, tức là tên, tần suất và múi giờ. Tiếp theo, chúng tôi sẽ chỉ định từng quy trình công việc. Ở đây, chúng tôi chỉ có một quy trình làm việc. Vì vậy, bên trong phần tử hành động, chúng tôi sẽ tạo phần tử quy trình làm việc, nơi chúng tôi sẽ chỉ định đường dẫn ứng dụng.

Tiếp theo, tiến lên phía trước, chúng ta phải tạo workflow.xml tệp nơi chúng tôi sẽ chỉ định nhiệm vụ. Nó tương tự như workflow.xml tệp mà chúng tôi đã tạo trong công việc quy trình làm việc.

Bây giờ một lần nữa, chúng tôi sẽ chuyển cái này WordCountTest_TimedBased thư mục tới HDFS.

Chỉ huy : hadoop fs -put WordCountTest_TimeBased /

Bây giờ, tất cả chúng ta đã sẵn sàng để tiếp tục và thực hiện công việc điều phối viên này trong Hướng dẫn Oozie này. Hãy tiếp tục và thực hiện nó.

Chỉ huy : oozie job –oozie http: // localhost: 11000 / oozie -config Operatingtor.properties -run

Ghi lại id công việc điều phối viên này (tức là 0000010-171219160449620-oozie-edur-C). Nó sẽ giúp bạn theo dõi công việc của mình trong Oozie Web UI.

Bạn có thể xem công việc được liệt kê trong tab Công việc của Điều phối viên trong Giao diện người dùng Web Oozie. Tương tự với công việc Workflow chúng ta có tên, trạng thái, người dùng, tần suất, thời gian bắt đầu & kết thúc công việc. Khi bạn nhấp vào một công việc cụ thể, bạn sẽ thấy các chi tiết của công việc, như được hiển thị trong các hình ảnh bên dưới.

  • Thông tin công việc của Điều phối viên

  • Định nghĩa Công việc Điều phối viên

  • Cấu hình công việc điều phối viên

Bây giờ, như chúng ta đã xem qua các tab khác nhau. Chúng ta sẽ quay lại thư mục gốc HDFS nơi sẽ tạo thư mục đầu ra. Như bạn có thể thấy trong hình ảnh bên dưới, oozieTimeBasedout thư mục đã được tạo, như chúng tôi đã chỉ định trong workflow.xml tập tin.

Bây giờ, chúng ta hãy xem tệp đầu ra đã được tạo.

Tôi hy vọng bạn tìm thấy blog Hướng dẫn Apache Oozie này nhiều thông tin. Nếu bạn quan tâm để tìm hiểu thêm, bạn có thể xem qua cho bạn biết về Dữ liệu lớn và cách Hadoop đang giải quyết các thách thức liên quan đến Dữ liệu lớn.

Bây giờ bạn đã hiểu Apache Oozie, hãy xem của Edureka, một công ty học trực tuyến đáng tin cậy với mạng lưới hơn 250.000 người học hài lòng trải dài trên toàn cầu. Khóa đào tạo Chứng chỉ Edureka Big Data Hadoop giúp người học trở thành chuyên gia trong lĩnh vực HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume và Sqoop bằng các trường hợp sử dụng thời gian thực trên miền Bán lẻ, Truyền thông xã hội, Hàng không, Du lịch, Tài chính.

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần bình luận và chúng tôi sẽ liên hệ lại với bạn.