원격서버의 8080 포트를 내 컴퓨터의 8090 포트로 연결하는 방법 [xshell]등록정보 -> 연결 -> SSH -> 터널링 으로 가서 다음과 같이 추가종류: Local수신 대기 포트: 8090대상 호스트: 127.0.0.1대상 포트: 8080 이렇게 등록하고 연결하면 된다. 추가적으로 위의 방법은 내 컴퓨터 -> 서버1 로 연결하는 방법이고,내 컴퓨터 -> 서버1 -> 서버2 로 연결을 하고자 한다면서버1 -> 서버2 로 연결하는 방법을 다음과 같이 설정한다. ssh -p SERVER_PORT -L 8080:127.0.0.1:80 USER_ID@SERVER_IP 이렇게 설정하면 서버2의 80 포트를 서버1의 8080 포트와 연결하고,서버1의 8080 포트를 내 컴퓨터의 8090 포트와 연결한다.
HCatalog는 하이브 0.11.0 버전에 통합되었습니다. [바로가기] HCatalog Server는 Hive Metastore와 같습니다. 따라서 EMR의 경우 hive-hcatalog-server 로 실행되는 프로세스가 하이브 메타스토어 입니다. 개요 HCatalog는 하둡 에코 시스템의 데이터 처리 도구(Pig, MR, Hive)들 간의 테이블, 저장공간 관리 계층을 제공한다. HDFS 상의 파일들에 대한 추상계층을 제공하여, 사용자가 데이터의 위치, 저장 형태에 대하여 신경쓰지 않아도 되도록 제공한다. HCatalog는 파일을 읽고, 쓰기 위한 SerDe 를 제공한다. RCFile, CSV, JSON, SequenceFile, ORC 포맷을 지원한다. 사용자가 커스텀 포맷을 생성하여 처리할 수도..
래퍼 클래스(Wrapper Class)기본형 변수도 객체로 다루어져야 하는 경우 래퍼 클래스를 이용Integer age = new Integer(30); 박싱 과 언박싱(Boxing, Unboxing)래퍼 클래스는 불변 객체이기 때문에 새로운 객체의 생성 및 참조만 가능기본자료형을 래퍼클래스로 변경하는 것을 박싱, 그 반대를 언박싱이라고 함JDK 1.5 버전 이상에서는 이를 자동으로 처리자동으로 처리하는 것을 오토박싱(AutoBoxing), 오토언박싱(AutoUnBoxing)이라고 함
불변성(Immutability)객체의 정보가 변하지 않는 것 불변 클래스인스턴스가 변경되지 않는 클래스String, 박싱된 원시 클래스, BigInteger, BigDecimal변하는 클래스보다 설계, 구현 및 사용이 용이메모리 할당String 생성시 JVM에서 상수를 이라는 메모리 공간에 할당새로 생성된 String값은 벼경할 수 없고, 이후 동일한 String 이 생성시 String 풀을 참조GC는 String 풀 영역에서는 동작하지 않음
GIL은 한번에 하나의 스레드만 수행할 수 있게 인터프리터에 락(Lock)을 거는 것.이로 인해 파이썬 인터프리터 구현의 편의성, 개발의 편의성이 생겼다. GIL을 피하기 위해서 Multiprocessing 모듈을 이용하면 된다. 파이썬의 GIL은 한번에 하나의 스레드만 동작 할 수 있도록 파이썬 인터프리터에 락이 걸리는 것이다. 이로 인해서 스레드를 이용하여 프로그램을 구현하여 동시에 여러가지 작업을 진행하여도,한번에 하나의 작업만 돌게 되어서 실제로는 작업시간이 더 늘어나는 결과를 가져온다. 이렇게 구현이 된이유는 다음과 같다. 공유자원에 대한 처리를 간단하게 하기 위해서GC를 만들기 편하기 때문에 C/C++ 확장 모듈 개발의 편리성 다음의 두개의 자료를 읽어보면 더욱 확실하게 이해할 수 있을 것이다..
Deadlock두개의 프로세스가 서로의 작업이 종료되기를 기다리면서 대기하는 것이다. 교착상태의 네가지 조건상호배제: 프로세스들이 필요로 하는 자원에 대해 배타적인 통제권을 요구점유대기: 할당된 자원을 가진 상태에서 다른 자원을 기다림비선점: 프로세스가 어떤 자원의 사용을 끝낼때까지 그 자원을 뺏을 수 없다. 순환대기: 프로세스가 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있다. Starvation프로세스가 작업을 대기하는 중 우선순위가 높은 작업이 종료되지 않아서 계속 대기하는 상태 Race Condition프로세스들 끼리 하나의 자원을 갖기 위해 싸우는 것 https://ko.wikipedia.org/wiki/%EA%B5%90%EC%B0%A9_%EC%83%81%ED%83%9C
자바에서 자주 사용하는 자료구조에는 List, Set, Map이 존재한다. List, Set은 Collections 아래 존재하고, Map은 따로 존재한다. - 순서가 있는 저장 공간- 가변적인 저장 공간- 배열은 크기가 정해져 있음- 순서대로 검색하기 때문에 데이터가 뒤에 있는경우 속도가 문제 된다. ArrayListJava 1.2에서 도입된 Collection에서 구현Vector 클래스의 단점인 Thread-Unsafe, 낮은 성능을 보완하기 위해 제공됨인덱스를 통한 아이템의 접근을 지원내부적으로 배열을 가지고 있으며, 사이즈가 늘어날 경우 기존 배열의 데이터를 복사하여 처데이터의 개수가 변하지 않는 경우에 효과적잦은 데이터의 변경은 성능이 하락됨탐색은 빠르지만 추가/삭제가 느림 LinkedList각..
하이브에서 다이나믹 파티션을 이용할 때 리듀서가 100개가 생겨도 하나의 리듀서만 이용하여 데이터를 생성하여 작업이 오래 걸리는 경우가 있다. 예를 들어 작업중 다음과 같은 쿼리를 이용하여 데이터를 적재하면 dynamic_partition 칼럼의 값을 이용하여 파티션을 생성하고 값을 입력하게 된다. INSERT INTO TABLE target_table PARTITION (dynamic_partition_col)SELECT col1, col2, dynamic_partition FROM source_table; 이때 dynamic_partition 칼럼의 값이 2개여서 파티션이 2개만 생성되게 되는데 리듀서가 100개 생성되어도 마지막 리듀서 2개만 사용하여 데이터를 쓰는 문제가 발생하였다. 이때 stat..
JAVA9의 특징에 대하여 정리된 글들이 있어서 찾아서 스크랩 해보았다. - jshell의 제공 - 스크립트 언어와 유사한 shell 제공- JAVA 모듈화 도입 - 필요한 라이브러리만 JAR로 묶어서 경량화 가능 나만 모르고 있던 – Java 9 (Java9 빠르게 훑어 보기)Java 9의 변화와 특징 대충 정리 Java9 특징 훑어보기 from duriepark 유현석 자바9 특징 (Java9 Features) from Chang-Hwan Han
TEZ를 이용하면서 파일 머지를 사용하면 다음과 같은 오류가 발생할 경우가 있다. 2017-11-10 05:21:48,998 INFO [Thread-140] org.apache.hadoop.hive.ql.exec.Task: Dag submit failed due to App master already running a DAGat org.apache.tez.dag.app.DAGAppMaster.submitDAGToAppMaster(DAGAppMaster.java:1368)at org.apache.tez.dag.api.client.DAGClientHandler.submitDAG(DAGClientHandler.java:140)at org.apache.tez.dag.api.client.rpc.DAGClientA..
터미널용 GUI 를 개발하기 위해서 라이브러리를 찾아보던 중에 ncurses 를 이용하면 처리할 수가 있다고 해서 기록한다. 다행히 한글로 번역된 문서가 있어서 개발하는데 도움이 될 것 같다. https://ko.wikipedia.org/wiki/Ncurses프로그래밍 방법(한글) - https://wiki.kldp.org/wiki.php/NCURSES-Programming-HOWTO#s-1.1.1한글 출력 - https://bakyeono.net/post/2015-05-12-ncurses-korean-utf-8.htmlhttps://www.gnu.org/software/ncurses/
http://dongascience.donga.com/news.php?idx=19271 - 국내 은행중 처음으로 IT 시스템을 오픈 소스로 구성- 국내 은행에서 처음으로 리눅스 운영체제를 도입 - DB에도 오픈소스를 도입 - 은행 DB는 정합성이 매우 중요함 - 따라서 안정성과 성능이 검증된 오라클 DB를 주로 사용- 계정계 시스템(여신, 수신 등 은행의 핵심 트랜잭션 처리)은 오라클 DB를 이용- 채널계 시스템은 외부 연계 시스템으로 외부 은행 시스템과의 연동을 처리하는 시스템 - 처음에는 마리아DB 를 선택하였으나 고가용성에서 문제가 발생 - 고가용성: DB를 이중화 구성하여 하나의 DB가 다운되면 다른 DB가 이어서 작업을 처리하는 것, 이를 위해 두개의 DB가 동일한 데이터를 보고 있어야 함, 오..
실패한 적이 없는 사람은 새로운 것을 시도해보지 않은 사람이다.A person who never made a mistake never tried anything new. 지식보다 상상력이 중요하다. 지식에는 한계가 있지만 상상력은 이 세상 전부를 담을 수 있다.Imagination is more important than knowledge. For knowledge is limited, whereas imagination embraces the entire world. 어제와 똑같이 살면서 다른 미래를 기대하는 것은 미친짓이다. insanity as "doing the same thing over and over again and expecting different results"
Apache Tez – Present and Future from DataWorks Summit MR은 일반적으로 다음과 같은 단계를 거칩니다. 1. 파일에서 데이터를 읽음 2. 매퍼작업 - 임시 결과를 출력 3. 셔플과 정렬 - 맵의 임시 결과를 읽고, 이동하고, 다시 씀 4. 리듀서작업 - 임시 결과를 읽음 5. 결과 출력 테즈는 이 모든 작업을 메모리 상에서 처리합니다. 임시 데이터는 메모리에서 처리합니다. 따라서 MR에 비해 디스크 IO가 줄어들어서 속도가 빨라집니다.
작업중 hive에서 tez 엔진으로 처리중 파일 머지를 실행하면 다음과 같은 오류가 발생하는 것을 확인하였다. 2017-10-24 01:26:03,407 INFO [Thread-152] SessionState: File Merge: 0/12017-10-24 01:26:03,412 INFO [Thread-153] org.apache.hadoop.hive.ql.exec.Task: Dag submit failed due to App master already running a DAG at org.apache.tez.dag.app.DAGAppMaster.submitDAGToAppMaster(DAGAppMaster.java:1368) at org.apache.tez.dag.api.client.DAGClientHa..
하둡의 스케줄러중 하나인 커패시티 스케줄러는 큐별로 사용할 수 있는 자원의 총량을 정해놓고 처리하는 방식이다. 하둡설정의 capacity-scheduler.xml 파일을 이용하여 설정할 수 있다. * 운영중에 큐의 추가는 가능하다. * capacity-scheduler.xml 을 수정하고, yarn rmadmin -refreshQueues 를 입력한다. ** 운영중에 큐의 삭제는 불가능하다. ** capacity-scheduler.xml 을 수정하고, 리소스 매니저를 재시작하면 된다. YARN overview from SeongHyun Jeong https://hadoop.apache.org/docs/r2.7.2/hadoop-yarn/hadoop-yarn-site/CapacityScheduler.html
-맵리듀스란?하둡 클러스터를 이용하여 대용량데이터를 병렬로 처리하는 프레임워크맵과 리듀스 2단계로 데이터를 분석 -Context Object의 사용법은?하둡의 매퍼가 다른 하둡 시스템과 통신하기 위해서 사용 -리듀서의 코어 메소드는?setup()입력데이터 사이즈, 힙 사이즈, distribute cache 설정 등을 진행reduce()입력된 데이터를 이용하여 리듀스 작업 진행cleanup()리듀스의 마지막에 임시 파일을 삭제하기 위해 한번만 호출 -파티셔닝, 셔플, 소트 페이즈에 대해서 설명하시오.셔플맵 태스크의 처리 결과로 임시 저장된 중간 파일을 리듀서로 넘기는 작업을 셔플소트맵 단계 결과를 리듀서로 넘기기 전에 키를 기준으로 자동으로 정렬을 진행 하는 것파티셔닝맵의 중간값을 리듀서의 입력으로 넘기기..
하둡의 매퍼 리듀서 개수는 입력사이즈에 의해서 설정하는 방법과 사용자가 개수를 설정하는 방법이있다. set mapreduce.input.fileinputformat.split.maxsize=268435456;set mapreduce.input.fileinputformat.split.minsize=134217728; set mapred.reduce.tasks=-1;set hive.exec.reducers.bytes.per.reducer=134217728; set mapreduce.job.maps=100; set mapreduce.job.reduces=100; * 하둡 위키에 따르면 매퍼의 개수는 하둡이 계산한 매퍼의 개수 이하로는 설정할 수 없다고 한다. 하둡이 매퍼의 개수를 500개로 계산했는데 100개..
- Total
- Today
- Yesterday
- java
- Hadoop
- yarn
- ubuntu
- S3
- 정올
- 알고리즘
- HIVE
- airflow
- SPARK
- AWS
- Python
- HDFS
- 하이브
- mysql
- 백준
- hbase
- 오류
- Tez
- 파이썬
- SQL
- bash
- error
- oozie
- emr
- build
- 다이나믹
- 하둡
- nodejs
- Linux
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |