[oozie] python을 이용하여 우지 WebService API 호출하기

2016. 10. 10. 11:09·빅데이터/oozie

우지는 REST API로 잡목록 확인, 잡수행을 위한 웹서비스 API를 제공한다. 


웹서비스 https://oozie.apache.org/docs/4.0.0/WebServicesAPI.html


HTTP를 이용하여 우지 콘솔 명령을 수행할 수 있으므로

이를 이용하여 잡 모니터링, 수행이 가능하다. 


- 잡 목록 확인

http://주소/oozie/v1/jobs?jobtype=coord&len=10000&filter=status=RUNNING


- 잡 정보 확인

http://주소/oozie/v1/job/[워크플로우|코디에티어ID]?show=info&len=10000


기본적인 API는 위와 같다. 
  * 우지에서 제공하는 DOC에서 정보 확인이 가능하고, 조건등을 자세하게 확인하기 어렵다면 
    우지에서 기본적으로 제공하는 웹콘솔의 동작을 크롬의 개발자도구 등을 이용하여 네트워크를 감시하여 확인하여도 된다. 

파이썬은 simplejson 모듈을 이용하여 간단하게 처리가 가능하다. 
반환값이 json 형태이므로 정보를 손쉽게 확인이 가능하다. 





#!/usr/bin/python

# -*- coding: utf-8 -*-

import urllib, json

from datetime import datetime


OOZIE_URL = "http://localhost:11000"


class Workflow():


    def __init__(self, wf_info):

        self.wf_info = wf_info


    def __getitem__(self, key):

        return self.wf_info[key]


    def __str__(self):

        return json.dumps(self.wf_info, indent=4, sort_keys=True)


def send_url(request_url):

    '''

    request url 을 호출하여 json

    '''

    json_obj = json.loads(urllib.urlopen(request_url).read())

    print(request_url)

    print(json.dumps(json_obj, indent=4, sort_keys=True))

    return json_obj


# 잡 목록 

def get_job_list(job_type, job_status):

    request_url = "{oozie_url}/oozie/v1/jobs?".format(oozie_url= OOZIE_URL)

    filter_list = [ 'len=10000', 'jobtype='+job_type, 'filter=status='+job_status ]

    url = "{request_url}{filter_list}".format(request_url=request_url, filter_list="&".join(filter_list))

    

    return send_url(url)


def get_running_coord_list():

    get_job_list('coord', 'RUNNING')


def get_running_wf_list():

    get_job_list('wf', 'RUNNING')


def get_killed_wf_list():

    get_job_list('wf', 'KILLED')


def get_killed_wf_job_list():

    return get_job_list('wf', 'KILLED')


# 잡의 정보 

def get_job_info(job_id):

    request_url = '{oozie_url}/oozie/v1/job/{job_id}?show=info&len=10000'.format(oozie_url= OOZIE_URL, job_id = job_id)

    return send_url(request_url)


def main():

    #get_killed_wf_list()

    #get_job_info('C-ID')

    #get_job_info('W-ID')

    get_delay_wf_job_list()

    #get_killed_wf_job_list()


if __name__ == '__main__':

    main()


반응형
저작자표시 비영리 (새창열림)

'빅데이터 > oozie' 카테고리의 다른 글

[oozie] 우지에서 하이브 액션 처리중 java.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.HiveMain not found 오류 처리  (0) 2017.04.06
[oozie] FS 액션을 이용하여 작업 완료용 0바이트 파일 만들기  (0) 2017.01.25
[oozie] 우지의 RUNNING 중인 코디네이터 정보 수정  (0) 2017.01.11
[oozie] 우지에서 쉴에서 실행한 값을 다음 액션의 파라미터로 전달하기  (1) 2016.07.26
우지 4.0 의 특징  (0) 2015.01.06
'빅데이터/oozie' 카테고리의 다른 글
  • [oozie] FS 액션을 이용하여 작업 완료용 0바이트 파일 만들기
  • [oozie] 우지의 RUNNING 중인 코디네이터 정보 수정
  • [oozie] 우지에서 쉴에서 실행한 값을 다음 액션의 파라미터로 전달하기
  • 우지 4.0 의 특징
hs_seo
hs_seo
Hello World!
    반응형
  • hs_seo
    개발자로 살아남기
    hs_seo
  • 전체
    오늘
    어제
    • 전체 (1140)
      • 개발자 (21)
        • 개발에 유의할 점 (0)
        • 면접 (5)
      • IT 소식 (5)
        • 업계 (1)
      • java (51)
        • 디자인패턴 (3)
        • apache-common (1)
      • 개념 (47)
        • 자료구조 (4)
        • 함수형사고 (8)
        • 디자인패턴 (1)
      • 데이터분석 (1)
      • python (67)
        • 코드조각 (12)
        • 라이브러리 (2)
      • 빅데이터 (418)
        • zookeeper (5)
        • hadoop (78)
        • hdfs (12)
        • hive (127)
        • hbase (16)
        • spark (40)
        • scala (4)
        • trino (3)
        • oozie (41)
        • Hue (9)
        • R (5)
        • sqoop (6)
        • flume (3)
        • elasticsearch (2)
        • airflow (16)
        • kafka (3)
        • kubernetes (10)
        • openstack (3)
        • flink (2)
        • redis (2)
      • 빅데이터 강좌 (2)
      • 알고리즘 (131)
        • 알고리즘 (1)
        • 백준 (61)
        • 정올 (41)
        • 더블릿 (5)
        • 프로그래머스 (1)
      • 프로그래밍 언어 (30)
        • go (4)
        • js (9)
        • .Net (6)
        • Jsp (1)
        • ansible (3)
        • terraform (6)
      • Tools (56)
        • docker (2)
        • macbook (6)
        • maven (3)
        • sublime (1)
      • 프레임워크 (25)
        • [JS] angularjs (2)
        • [JS] node.js (19)
        • [Java] spring (2)
        • Android (2)
      • 데이타베이스 (43)
        • SQLD (5)
        • Oracle (1)
        • MySQL (8)
        • ADsP (2)
      • 리눅스 (25)
        • Bash (61)
      • GCP (5)
      • AWS (34)
        • EC2 (2)
        • EMR (14)
      • 정보보안기사 (4)
        • 네트워크 (1)
      • 개인 (80)
        • 업무실수 (0)
        • 책 (9)
        • 교육 (3)
        • 여행 (17)
        • 영화 (12)
        • 음악 (2)
        • 피규어 (4)
        • 게임 (3)
        • 생각 (7)
        • 기타 (10)
        • 좋은글 (5)
        • 좋은 사이트 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • 빅데이터-하둡,하이브로 시작하기
    • 빅데이터-스칼라, 스파크로 시작하기
    • Kaggle에서 파이썬으로 데이터 분석 시작하기
    • 쉘스크립트 개발 시작하기
    • 개발자가 데이터 분석 준전문가 되기
    • 데브쿠마
  • 공지사항

  • 인기 글

  • 태그

    HDFS
    S3
    알고리즘
    정올
    오류
    nodejs
    Linux
    bash
    하이브
    Hadoop
    Python
    java
    AWS
    yarn
    mysql
    파이썬
    k8s
    Tez
    하둡
    HIVE
    oozie
    다이나믹
    error
    백준
    ubuntu
    airflow
    emr
    build
    hbase
    SPARK
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
hs_seo
[oozie] python을 이용하여 우지 WebService API 호출하기
상단으로

티스토리툴바