빅데이터 하둡 프로그래밍 교육과정] Flow 설정

 

빅데이터 하둡 프로그래밍 교육과정] Flow 설정

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.



Flow 설정
– To Define flow, link ‘source’ and ‘sink’ via ‘channel’

# list the sources, sinks and channels for the  agent
<Agent>.sources = <Source>
<Agent>.sinks = <Sink>
<Agent>.channels = <Channel1> <Channel2>

# set channel for source
<Agent>.sources.<Source>.channels = <Channel1><Channel2> ...

# set channel for sink
<Agent>.sinks.<Sink>.channel = <Channel1>

빅데이터 하둡 프로그래밍 교육과정] Agent

 

빅데이터 하둡 프로그래밍 교육과정] Agent

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.



Agent

* Source
 - avro : Avro 클라이언트에서 전송하는 이벤트를 입력으로 사용,  Agent와 Agent를 연결해줄 때 유용
 - netcat : TCP로 라인 단위 수집
 - seq : 0부터 1씩 증가하는 EVENT 생성
 - exec : System Command를 수행하고 출력 내용을 수집
 - syslogtcp : System 로그를 입력으로 사용
 - spooldir : Spooling Directory 디렉토리에 새롭게 추가되는 파일을 데이터로 사용
 - thirft : Thrift 클라이언트에서 전송하는 이벤트를 입력으로 사용
 - jms : JMS 메시지 수집
 - Customize

*Channel
 - memory : Source에서 받은 이벤트를 Memory에 가지고 있는 구조  로, 간편하고 빠른 고성능(High Throughput)을 제공하지만 이벤트  유실 가능성이 있다. 즉, 프로세스가 비정상적으로 죽을 경우 데이  터가 유실될 수 있다.
 - jdbc : JDBC로 저장
 - file : JDBC와 마찬가지로 속도는 Memory기반에 비해 느리지만, 프  로세스가 비정상적으로 죽더라도 transactional하게 프로세스를 재  시작하여 재처리하여 이벤트 유실이 없는 것이 장점이 있다.
 - Customize

*Sink
 - null : 이벤트를 버림
 - logger : 테스트 또는 디버깅을 위한 로깅
 - avro : 다른 Avro 서버(Avro Source)로 이벤트 전달
 - hdfs : HDFS에 저장
 - hbase : HBase에 저장
 - elasticsearch : 이벤트를 변환해서 ElasticSearch에 저장
 - file_roll : 로컬 파일에 저장
 - thrift : 다른 Thrift 서버(Thrift Source)로 이벤트 전달
 - Customize 

빅데이터 하둡 프로그래밍 교육과정] Event

 

빅데이터 하둡 프로그래밍 교육과정] Event

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.



Event

 - Flume을 통해 전달되어지는 데이터의 기본 payload를 event라 부른다.

 - Event는 O이상의 Header와 body영역으로 나뉜다. (Byte  payload + set of string headers)

 - Header는 key/value 형태이며, 라우팅을 결정하거나, 구조  화된 정보(예를 들어, 이벤트가 발생된 서버의 호스트명,  timestamp 등 추가 가능)를 운반할 때 활용된다

 

빅데이터 하둡 프로그래밍 교육과정] UDF 예제

 

빅데이터 하둡 프로그래밍 교육과정] UDF 예제

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.



UDF 예제

– ‘APPL’을 ‘APPLE’로 변환하는 예제.
package hive.udf.sample;
import java.text.SimpleDateFormat;
import org.apache.hadoop.hive.ql.exec.Description;  import org.apache.hadoop.hive.ql.exec.UDF;
@Description(name="fullname",
value = "_FUNC_(name)- from the input string"+" returns Fullname ",  extended = "Example _Func_('aaple') from src;\n")
public class Fullname extends UDF{  public Fullname (){
SimpleDateFormat df = new SimpleDateFormat("MM-dd-yyyy");
  }
  public String evaluate(String shortname)
  {
    if( "aapl".equals(shortname) || "AAPL".equals(shortname))
   {
        return "AAPLE";
   }
   else
      return shortname;
   }
}


– UDF 등록
0: jdbc:hive2://hadoop01:10000> ADD JAR
/home/hadoop/share/Fullname.jar;
0: jdbc:hive2://hadoop01:10000> CREATE TEMPORARY FUNCTION
fullname AS 'hive.udf.sample.Fullname';


– UDF 사용
0: jdbc:hive2://hadoop01:10000>describe function fullname;
0: jdbc:hive2://hadoop01:10000>DESCRIBE FUNCTION EXTENDED
fullname;
0: jdbc:hive2://hadoop01:10000>SELECT ymd,fullname(symbol) FROM  Stocks where symbol='AAPL';


빅데이터 하둡 프로그래밍 교육과정] UDF 종류

 

빅데이터 하둡 프로그래밍 교육과정] UDF 종류

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

UDF 종류

 * standard function (표준함수)
  - 하나의 로우 (row) 나 다수의 컬럼으로 부터 데이터를 받아서 처리
  - floor(), ucase(), concat() 과 같은 간단한 함수

 * UDAF(User Defined Aggregation Function)
  - 사용자 집계(aggregation)함수
  - 하나이상의 raw와 column으로 부터 데이터를 받아와서 계산을 수  행하는 함수
  - SELECT year(ymd), avg(price_close) FROM stocks WHERE  exchange = 'NASDAQ' AND symbol = 'AAPL'GROUP BY  year(ymd);

 * UDTF(User Defined TablegenerationFunction)
  - 하나의 변수나 컬럼을 입력받아 다수개의 테이블로(row)를 만드는  모든 함수
  - SELECT explode(array(1,2,3)) AS element FROM src; 

 

빅데이터 하둡 프로그래밍 교육과정] UDF 종류

 

빅데이터 하둡 프로그래밍 교육과정] UDF 종류

 

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

UDF 종류

 

빅데이터 하둡 프로그래밍 교육과정] UDF

 

빅데이터 하둡 프로그래밍 교육과정] UDF

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

UDF
 = Before Writing UDF, internal Function is also UDF
0: jdbc:hive2://hadoop01:10000> show functions;

 - 함수의 정의를 보려면 describe 사용
0: jdbc:hive2://hadoop01:10000> describe function abs;

 

빅데이터 하둡 프로그래밍 교육과정] 색인

 

빅데이터 하둡 프로그래밍 교육과정] 색인

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

색인
 - 데이터 베이스의 특정 컬럼에 대해 검색가능한 형태인 자료구조를 만드는것

 - I/O의 범위를 전체적으로 줄여주는 역할을 한다

 - 색인 자체가 기본적인 정렬이 되어 있기 때문에 검색 시간도 줄어든다

 - table에 색인 생성

 - symbol컬럼에 색인 생성
0: jdbc:hive2://hadoop01:10000>CREATE INDEX simple_index ON TABLE  stocks (symbol) AS  'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler' WITH  DEFERRED REBUILD;

 - index 확인
0: jdbc:hive2://hadoop01:10000>SHOW FORMATTED INDEX ON stocks;

 - query수행
0: jdbc:hive2://hadoop01:10000>SELECT s2.year, s2.avg FROM (SELECT  year(ymd) AS year, avg(price_close) AS avg FROM stocks WHERE symbol
= 'AAPL' GROUP BY year(ymd)) s2 WHERE s2.avg > 50.0;

 - 인덱스 생성
0: jdbc:hive2://hadoop01:10000>alter index simple_index on stocks rebuild;

 - 필요한 파일만 다시 로드
0: jdbc:hive2://hadoop01:10000>INSERT OVERWRITE DIRECTORY
"/tmp/index_result" SELECT `_bucketname` , `_offsets` FROM
default  stocks_simple_index  where symbol='AAPL';

 - 기존 테이블과 연결
0: jdbc:hive2://hadoop01:10000>SET hive.index.compact.file=/tmp/index_result;
0: jdbc:hive2://hadoop01:10000>SET  hive.input.format=org.apache.hadoop.hive.ql.index.compact.HiveCompactIndexInputFor  mat;

 - query수행
0: jdbc:hive2://hadoop01:10000>SELECT s2.year, s2.avg FROM (SELECT  year(ymd) AS year, avg(price_close) AS avg FROM stocks WHERE symbol =  'AAPL' GROUP BY year(ymd)) s2 WHERE s2.avg > 50.0; 

 

+ Recent posts