Apache Hive Hook

Hive 2013. 8. 13. 15:37

Apache Hive Hook

하이브 훅(Hook)에 대한 내용이 별로 없어서 하나 만듬. 필요한 사람에게 도움이 되길 바람. 메타스토어 이벤트 리스너에 대한 내용도 조금 들어 갔고 release-0.11 태그를 기반으로 작성되었음.


I couldn't find enough info about Hive hooks. So, I made this. I hope this presentation will be useful when you want to use hooks. This included some infomation about metastore event listeners. This was written based on release-0.11 tag.


Posted by 김민우 julingks

댓글을 달아 주세요

  1. hive 2014.02.11 19:44  댓글주소  수정/삭제  댓글쓰기

    안녕하세요 하이브 관심있는 학생인데
    혹시 질문해도 되나요 ?

  2. 전득진 2014.03.14 11:21  댓글주소  수정/삭제  댓글쓰기

    좀더 범용적인 솔루션으로서 Spring의 AOP 같은 기능을 하는 것으로 보면 될까요?

Introduction to apache pig

Hadoop 2011. 2. 24. 11:09

Apache Pig는 데이터 분석 프로그램을 표현하기 위한 high-level 언어로 구성된  대용량 데이터 셋 분석을 위한 플랫폼이다. 또 이들 프로그램을 평가하기 위한 infrastructure 와 짝을 이룬다. Pig 프로그램의 두드러지는 특성은  튼튼한 병렬화를 위한 구조가  의무적이다. 이것은 매우 큰 데이터 셋을 다룰 수 있도록 한다.

현재에는 Pig의 infrastruture 레이어는 이미 존재하는 대용량 병령 구현물들의 Map-Reduce 프로그램의 순서를 실행하는 컴파일러로 구성된다. Pig의 언어 레이어는 Pig Latin으로 불리는 본문 언어로 구성된다. 이 언어는 다음 핵심 특성을 가진다.

  • 프로그래밍 하기 쉽다. 간단한 “놀랍게도 병렬” 데이터 분석 테스크의 병렬 실행을 달성하는 것은 평범한 일이다. 여러 개의 밀접한 관계의 데이터 변환으로 구성된 복잡한 태스크도 명쾌하게 데이터 플로우 시퀀스로 인코드 된다. 이 데이터 플로우는 복잡한 테스크를  쓰고, 이해하고, 유지하기 쉽게 만든다.
  • 최적화 기회. 테스크를 인코드하는 방법은 시스템이 자동적으로 실행을 최적화하도록 허가한다. 이는 용자는 효율성 보다는 시멘틱에 집중하도록 한다.
  • 확장성. 사용자는 특별한 목적의 처리를 하기 위한 자신 만의 함수를 작성할 수 있다.

Reference

Posted by 김민우 julingks

댓글을 달아 주세요

자바 표준 라이브러리는 핵심 클래스들의 조작을 위한 충분한 메서드를 제공하지 못한다.
그래서 아파치 commons lang은 이런 메서드들을 제공한다.
java.lang API를 확장하는 helper 유틸리티들이라고 보면 된다.

그 중 ArrayUtils 클래스를 살펴보자

ArrayUtils의 메서드들
  • add()         주어진 배열을 복사하고 새로운 배열에 끝에 주어진 요소를 추가한다.
  • addAll()     주어진 두 배열의 모든 요소를 새 배열에 추가한다.
  • clone()      배열을 복제한다 (null을 핸들링한다)
  • contains()  주어진 배열 안에 주어진 값이 있는지 검사한다. (null 핸들링)
  • getLength() 주어진 배열의 길이를 반환한다
  • indexOf()    주어진 배열에서 주어진 값의 인덱스를 찾는다.
  • isEmpty()   주어진 배열이 비어있거나 null인지 검사한다
  • isEquals()  equals 메서드를 사용하여 두 배열을 비교한다. (고차원 배열도 핸들링)
  • isNotEmpty()     배열이 비어있지 않거나 null이 아닌지를 검사한다
  • isSameLength() 두 배열이 같은 길이인지 비교한다. (null 배열은 길이가 0으로 다룬다)
  • isSameType()    두 배열이 같은 타입인지 비교한다.
  • lastIndexOf()      배열 안에 주어진 값의 마지막 인덱스를 찾는다.
  • nullToEmpty()    null 레퍼런스를 비어있는 배열로 바꾼다. (방어적인 프로그래밍 기술)
  • remove()           주어진 배열에서 특정 위치의 값을 삭제된 배열을 반환한다.
  • removeElement() 주어진 배열에서 특정 값의 첫번째 요소를 삭제된 배열을 반환한다.
  • reverse()     주어진 배열의 순서를 뒤집는다.
  • subarray()   시작 인덱스와 끝 인덱스 사이의 요소를 포함하는 새 배열을 만든다.
  • toMap()       주어진 배열을 Map으로 변환한다.
  • toObject()    주어진 기본형(primitive type)의 배열을 wrapper 객체 배열로 변환한다.(예 int[] -> Integer[])
  • toPrimitive() 주어진 Wrapper 객체 배열을 기본형(primitive) 배열로 변환 한다. (예 Integer[] -> int[])
  • toString()      배열을 문자열로 출력한다. (null 핸들링)

실제 자바 표준 라이브러리 Arrays에서 제공하는 메서드는 별로 없다. 검색과 정렬, 비교 정도이다.
사실 간단한 배열 조작을 위해서 위해서 List 로 변환하고 다시 배열로 변환하는 작업을 하는 경우가 종종 있다.
또는 배열의 간단한 조작이 불편해서 ArrayList를 사용하는 경우도 더러 있다.

ArrayUtils의 메서드들 중에 주목할 만 것은 add와 remove일 것이다. 
배열에서 요소를 삭제하거나 추가하는 것은 굉장히 번거로운 일인데 ArrayUtils을 사용하면 마치 리스트에서 요소를 추가, 삭제하는 조작을 할 수 있다.

그리고, 기본형(primitive type) 배열에서 wrapper 배열로 변환(또 그 반대로)도 쉽게 할 수 있다.

Reference

Posted by 김민우 julingks

댓글을 달아 주세요

Apache Commons

Mics 2010. 8. 4. 16:52
Commons는 모든 부분의 재사용 가능한 자바 컴포넌트들에 초점이 맞춰진 아파치 프로젝트다.
원래 자카르타 프로젝트에서 시작 되었으나 아파치 프로젝트로 이전되었다.

제공하는 컴포넌트들은 다음과 같다.

Components
Attributes Runtime API to metadata attributes such as doclet tags.
BeanUtils Easy-to-use wrappers around the Java reflection and introspection APIs.
Betwixt Services for mapping JavaBeans to XML documents, and vice versa.
Chain Chain of Responsibility pattern implemention.
CLI Command Line arguments parser.
Codec General encoding/decoding algorithms (for example phonetic, base64, URL).
Collections Extends or augments the Java Collections Framework.
Compress Defines an API for working with tar, zip and bzip2 files.
Configuration Reading of configuration/preferences files in various formats.
Daemon Alternative invocation mechanism for unix-daemon-like java code.
DBCP Database connection pooling services.
DbUtils JDBC helper library.
Digester XML-to-Java-object mapping utility.
Discovery Tools for locating resources by mapping service/reference names to resource names.
EL Interpreter for the Expression Language defined by the JSP 2.0 specification.
Email Library for sending e-mail from Java.
Exec API for dealing with external process execution and environment management in Java.
FileUpload File upload capability for your servlets and web applications.
IO Collection of I/O utilities.
JCI Java Compiler Interface
Jelly XML based scripting and processing engine.
Jexl Expression language which extends the Expression Language of the JSTL.
JXPath Utilities for manipulating Java Beans using the XPath syntax.
Lang Provides extra functionality for classes in java.lang.
Launcher Cross platform Java application launcher.
Logging Wrapper around a variety of logging API implementations.
Math Lightweight, self-contained mathematics and statistics components.
Modeler Mechanisms to create Model MBeans compatible with JMX specification.
Net Collection of network utilities and protocol implementations.
Pool Generic object pooling component.
Primitives Smaller, faster and easier to work with types supporting Java primitive types.
Proxy Library for creating dynamic proxies.
Sanselan A pure-Java image library.
SCXML An implementation of the State Chart XML specification aimed at creating and maintaining a Java SCXML engine. It is capable of executing a state machine defined using a SCXML document, and abstracts out the environment interfaces.
Transaction Implementations for multi level locks, transactional collections and transactional file access.
Validator Framework to define validators and validation rules in an xml file.
VFS Virtual File System component for treating files, FTP, SMB, ZIP and such like as a single logical file system.

References
Posted by 김민우 julingks

댓글을 달아 주세요

Jakarta Project

Mics 2010. 8. 4. 16:16
자카르타 프로젝트는 다양한 오픈 소스 자바 솔루션들을 제공한다.
오픈 소프트웨어 라이센스 아래서 공동, 협업 개발을 장려하는 아파치 소프트웨어 제단(ASF)의 하위기관 이다.
경량 서블릿 컨테이너로 유명한 Tomcat을 진행하였다. (지금은 아파치 프로젝트로 이전되었음)

지금 진행 중인 하위 프로젝트는 다음과 같다
  • BCEL  
  • BSF
  • Cactus
  • ECS
  • JCS
  • JMeter
  • ORO
  • Regexp

BCEL (Byte Code Engineering Library)
 BCEL(JavaClass로 알려져 있는)는 사용자들이 바이너리 기반의 자바 클래스 파일 (.class 확장자를 지니는)을 분석, 제작, 수정을 돕기 위해 만들어 졌다.

BSF (Bean Scripting Framework)
  빈 스크립팅 프레임워크(BSF)는 자바 어플리케이션 내에서 스크립팅 언어 지원과, 스크립팅 언어로부터 자바 객체와 메소드를 접근할 수 있도록 하는 자바 클래스 모음이다.

Cactus
Cactus(선인장)은 단위테스트를 필요로 하는 서버측 자바코드(서블릿, EJB, 태그 라이브러리, 필터, ...)를 위한 간단한 테스트 프레임웍이다.

ECS (Element Construction Set)
 ECS은 다양한 마크업 언어들을 위한 요소들을 생성하기 위한 자바 API이며 HTML 4.0과 XML을 기본 지원한다.

JCS (Java Caching System)
JCS는 서버 사이드 자바 어플리케이션을 위해 자바로 작성한 분산 캐싱 시스템이다.

JMeter
부하 테스트와 성능측정을 하기 위해 설계된 순수 자바 데스크탑 어플리케이션

ORO
치환, 분할, 파일 이름 필터링 등을 처리하기 위해 Perl5 호환 정규식, AWK와 유사한 정규식, glob 표현과 유틸리티 클래스들을 제공하는 텍스트 처리용 자바 클래스들의 모음

Regexp
100% 순수 자바로 된 정규식 패키지


이전 자카르타 프로젝트들을 아파치 프로젝트로 이전 되었다.
  • Ant
  • Avalon
  • Commons
  • DB
  • Excalibur
  • Gump
  • HiveMind
  • HttpComponents
  • James
  • Logging
  • Lucene
  • Maven
  • POI
  • Portals
  • Struts
  • Taglibs
  • Tapestry
  • Tomcat
  • Turbline
  • Velocity
  • Watchdog

Related links

Posted by 김민우 julingks

댓글을 달아 주세요


SSH

서비스 설치 명령어
$sudo apt-get install ssh

 

포트변경
$sudo vi /etc/ssh/sshd_config ( VI 모드 편집)
$sudo gedit /etc/ssh/sshd_config ( Gedit 모드 편집)

 

SSH 서비스 
$sudo /etc/init.d/ssh stop (서비스 중지)
$sudo /etc/init.d/ssh start (서비스 실행)
$sudo /etc/init.d/ssh restart (서비스 재실행)


FTP
$ sudo apt-get install xinetd
$ sudo apt-get install telnetd
$ sudo vi /etc/xinetd.conf   (다음 내용 추가)
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
}
$ sudo /etc/init.d/xinetd restart


FTP
$ sudo apt-get install vsftpd
$ sudo gedit /etc/vsftpd.conf
anonymous_enable=NO // 기본값이 YES 이므로 NOI로 변경
local_enable=YES //주석(#) 제거
write_enable=YES //주석(#) 제거
$ sudo /etc/init.d/vsftpd restart

Apache
$ sudo apt-get install apache2
$ sudo gedit /etc/apache2/apache2.conf
아무곳에 ServerName "localhost" 삽입

설정 변경
$ sudo vi /etc/apache2/sites-enabled/000-default

1행
<VirtualHost*:80>   // 원하는 포트로 변경

4, 9 행
DocumentRoot /home/ni6htmare/www  // 웹 루트디렉토리변경

$ sudo /etc/init.d/apache2 restart //아파치 재시작

PHP
$ sudo apt-get install php5-common php5 libapache2-mod-php5

$ sudo /etc/init.d/apache2 restart //아파치 재시작

//설정파일 위치
$ sudo vi /etc/php5/apache2/php.ini
//수정할 경우 아파치를 재시작함

//테스트
테스트파일 생성 test.php 
<?
phpinfo();
?>

http://localhost/test.php  //페이지 출력이 제대로 되지 않고 파일 다운로드가 되는경우
설치가 제대로 이루어져 있지 않은 경우이므로 재시작 해 준다.

MySQL
MySQL 인증을 위한 모듈 설치
$ sudo apt-get install libapache2-mod-auth-mysql

MySQL 설치
$ sudo apt-get install mysql-server

mysql 접속
$ mysql -u root -p 패스워드

MySQL과 PHP을 연동하기 위한 모듈 설치
$ sudo apt-get install php5-mysql

mysql 재시작
$ sudo /etc/init.d/mysql restart

phpmyadmin
$ sudo apt-get install phpmyadmin

apache2 선택 후 dbconfig-common 설정 'yes'

홈디렉토리에 링크할 파일 생성

$ touch /home/계정/웹루트/phpmyadmin

링크 생성

$ sudo ln -s /usr/share/phpmyadmin/ /home/계정/웹루트/phpmyadmin

apache2.conf 수정

$ sudo gedit /etc/apache2/apache2.conf

마지막줄에 다음내용 추가

# Phpmyadmin
Include /etc/phpmyadmin/apache.conf

아파치 리로드
$ sudo /etc/init.d/apache2 reload
Posted by 김민우 julingks

댓글을 달아 주세요