아파치 하둡2.0의 YARN 위에서 동작하는 비동기 사이클 그래프 프레임워크이다. pig, hive와 연동하여 사용하면 기존의 mapreduce에 비하여 성능이 향상되는 효과를 얻을 수 있다. hadoop을 크게 저장을 위한 hdfs와 분산 처리를 위한 mapreduce로 나눌 수 있는데,mapreduce 부분이 처리과정이 분할되면 다음 처리를 위한 데이터를 hdfs에 저장하게 되는데 이 부분을 제거하고 데이터를 메모리에 저장하게 함으로써 처리 성능을 높여 준다. 기존에 stage 사이의 정보가 hdfs에 저장되는 것을 메모리를 활용하여 처리함으로써 성능을 높여 주는 것이다. * stage 가 나누어 지지 않는 작업의 경우 크게 향상 되지 않을 수도 있다. ** MR에 비하여 작업이 오히려 늦어질수도 있..
하둡은 현재 리소스 사용현황을 확인할 수 있는 웹 페이지를 제공하고, 이 웹페이지의 포트는 yarn-site.xml 파일을 수정하여 변경할 수 있다. yarn-default.xml 의 기본값은 http는 8088, https는 8090 이다. 하둡이 실행된 서버에서 웹앱으로 접속하기 위해서는아래와 같이 alias를 등록해 두고 사용하면 편리하다. alias rm='lynx http://IP:8088'
하둡은 형식이 없는 데이터를 처리하다보니 처리중 오류가 발생할 경우가 있다. 예를 들어 텍스트 파싱을 진행하는 매퍼 작업의 경우 10개중 1개가 실패할 경우 성공으로 인식하여 처리하게 할 수 있다. 이런 경우 다음의 설정값을 이용하여 처리하면 된다. 매퍼작업과 리듀스 작업을 나눠서 설정이 가능하다. [신버전]mapreduce.map.failures.maxpercent=10;mapreduce.reduce.failures.maxpercent=10; [구버전 Deprecated]mapred.max.map.failures.percent=10;mapred.max.reduce.failures.percent=10; 하둡의 버전이 달라지면서 기존의 설정과 이름이 바뀌었기 때문에 하둡 버전에 맞게 사용해야 한다.
하둡은 대규모 데이터의 이동을 위해서 맵리듀스를 이용한 DistCp를 제공한다. * 여러군데의 파일을 각각의 폴더 위치로 이동시키는 것은 불가* 목적지(destination) 폴더에 파일이 존재하면 파일이 전달되지 않을 수도 있다. 파일 이동시 확인하도록 하자. # distcp 명령hadoop distcp hdfs://source hdfs://destination # update or overwrite# 파일 이름이 동일할 경우 update는 파일사이즈를 비교해서 옮기고, overwrite는 그냥 덮어쓴다. hadoop distcp -update hdfs://source hdfs://destinationhadoop distcp -overwrite hdfs://source hdfs://destination..
하둡 홈페이지에 기술된 특징은 다음과 같다. - Minimum required Java version increased from Java 7 to Java 8- Support for erasure encoding in HDFS- YARN Timeline Service v.2- Shell script rewrite- MapReduce task-level native optimization- Support for more than 2 NameNodes.- Default ports of multiple services have been changed.- Support for Microsoft Azure Data Lake filesystem connector- Intra-datanode balancer- Rew..
hdfs dfsadmin -report 명령을 이용하여 hdfs의 사용량을 확인할 수 있다. 이때 출력되는 정보를 통하여 디스크이 사용량 확인이 가능하다. 이중에서 Non DFS used 항목의 정보가 궁금하여 다음과 같이 확인해 본다. Configured Capacity = Total Disk Space - Reserved Space.사용 가능 용량 = 디스크의 전체 용량 - 예약 용량 디스크의 전체 용량: hdfs-site.xml에서 지정한 디스크의 총용량예약용량: hfds-site.xml에서 dfs.datanode.du.reserved 로 저징한 용량 Non DFS used = Configured Capacity - DFS Remaining - DFS Used 100G 디스크에서 예약용량을 30G로..
[파일 정보 확인] ls- 지정한 디렉토르의 lsr- ls 는 현재 디렉토리만 출력하는 반면 lsr 명령어는 현재 디렉토리의 하위 디렉토리 정보까지 출력한다. count- 파일 사이즈, 디렉토리 용량, 폴더 수 등을 확인합니다. [파일 용량 확인]du- 지정한 디렉토리나 파일의 사용량을 확인하는 명령어로, 바이트 단위로 결과를 출력합니다. dus- du 명령어는 디렉토리와 파일별로 용량을 출력하지만, dus는 전체 합계 용량만 출력합니다. [파일 내용보기]cat- 지정한 파일의 내용을 화면에 출력합니다. text- cat 명령어는 텍스트 파일만 출력할 수 있습니다. text 명령어는 압축된 파일도 확인이 가능합니다. - 확장자에 따라 압축방법을 선택하여 보여주기 때문에 확장자가 다르면 올바르게 출력이 되..
하둡 처리중 다음과 같은 에러가 발생하는 경우가 있다. Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /tmp/hive/blablabla.... could only be replicated to 0 nodes instead of minReplication (=1). There are 3 datanode(s) running and no node(s) are excluded in this operation. 이런 경우 다른 분들의 포스트를 확인해 보면 다들 네임노드를 포맷하라고 되어 있다. 에러의 내용상 데이터노드에 해당 데이터를 ..
HDFS에 파일 업로드시에 권한문제가 발생하여 파일 업로드가 안 될 경우가 있다. Permission denied: user=alice, access=WRITE, inode="staging":hduser:supergroup:rwxr-xr-x 보통 하둡에 설정된 사용자명과 현재 사용자 명이 달라서 발생하는 오류이다. 이럴때는 아래와 같이 하둡 사용자 명을 설정하여 해결한다. System.setProperty("HADOOP_USER_NAME", "hduser") export HADOOP_USER_NAME= http://stackoverflow.com/questions/11041253/set-hadoop-system-user-for-client-embedded-in-java-webapphttp://stacko..
다음의 오류가 발생하면 해결방법은 2개가 있는 것 같다. 우선 하나는 mapreduce.tasktracker.http.threads 를 수정하는 것이고, 다른하나는 slave 파일에 호스트 정보를 추가하는 것이다. 또는 작업을 다시한번 돌려도 될 것 같다. Caused by: java.io.IOException: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out. 1번 mapred-site.xml 의 mapreduce.tasktracker.http.threads 값을 기본 40에서 더 큰수로 설정 하고 하둡을 재시작한다. mapreduce.tasktracker.http.threads: 맵의 출력 데이터를 리듀스 태스크에게 제공하기 위한 태스크 트래커의 워커 스레드개수 ..
맵, 리듀스 태스크는 처리될 때 JVM를 새로 생성한다. 따라서 짧은 작업이 여러개 생성될 경우 JVM을 신규로 생성하는 오버헤드가 클 수도 있다. 이때 JVM을 재사용하여 작업을 처리하는 시간은 줄일 수 있다. 아래의 설정은 JVM에서 처리할 수 있는 작업의 개수를 설정한다. 기본 설정은 1이지만, -1로 설정하면 제한없이 사용할 수 있다. hadoop v1mapred.job.reuse.jvm.num.tasks=-1hadoop v2 mapreduce.job.jvm.numtasks=-1 http://www.nexr.co.kr/upload/mapli_deux.pdfhttps://hadooptips.wordpress.com/2013/03/19/improving-performance-with-jvm-reuse..
하둡에서 자주 사용하는 명령어는 다음과 같다. * 폴더의 용량을 확인할 때 count 를 사용* 파일의 내용을 확인할 때는 cat 보다는 text를 사용하면 더 좋다. 파일 타입을 알아서 판단하기 때문 hadoop fs -cat [경로] - 경로의 파일을 읽어서 보여줌 - 리눅스 cat 명령과 동리함 hadoop fs -count [경로] - 경로상의 폴더, 파일, 파일사이즈를 보여줌 hadoop fs -cp [소스 경로] [복사 경로] - hdfs 상에서 파일 복사 hadoop fs -df /user/hadoop - 디스크 공간 확인 hadoop fs -du /user/hadoop - 파일별 사이즈 확인 hadoop fs -dus /user/hadoop - 폴더의 사이즈 확인 hadoop fs -get..
페이스북에서 데이터 직렬화를 위한 일반화된 데이터 솔루션을 제공하기 위해 개발한 오픈소스 프로젝트다. 이종언어간에도 직렬화 서비스를 지원한다. 페이스북에서 개발되어 아파치 프로젝트로 이전되었다. 직렬화될 데이터를 기술하는 설정 파일을 개발자가 정의할 수 있다. 그리고 나면 코드 생성기가 실행되어 미리 지정한 언어로 데이터 직렬화를 처리하는 서버가 만들어 진다. 구글의 프로토콜 버퍼는 쓰리프트와 아주 비슷하다. http://wikibook.co.kr/article/hosting-and-sharing-terabytes-of-raw-data-2/ http://brad2014.tistory.com/320
AWS에서 우지와 하둡 연동중 다음과 같은 오류가 발생할 경우 Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster 이는 우지에서 지정한 클래스패스와 하둡이 사용하는 클래스패스의 경로가 달라서 그렇다. 따라서 EMR의 하둡에 설정된 yarn-site.xml 의 내용에서 yarn.application.classpath 를 복사하여 우지의 설정에서 하둡으로 전달하는 yarn-site.xml 을 수정한다. source(emr) : hadoop/conf/yarn-site.xml target(oozie) : oozie/conf/hadoop-conf/yarn-site.xml 참고
하둡의 발전은 위와 같다. 녹색 네모 상자는 아파치 하둡의 정식 릴리스 버전이다. 검은색 타원은 아파치 하둡의 정식 릴리스 버전은 아니지만 타볼 형태로 확인할 수 있는 버전이다. 빨간색 타원은 해당 버전에 기반하여 출시된 상업용 버전이다. 즉 0.x 버전은 개발용 버전으로 추가적인 작업이 계속 진행되어 가는 버전이고 1.x 버전은 0.18 -> 0.19 -> 0.20 -> 0.20.2 -> 0.20.205 -> 1.0 순서로 발전되어 현재 안정화된 버전이다. 2.x 버전은 0.23 버전에 기반하여 1.x 에 비하여 HA, YARN 아키텍처가 추가된 버전이다. 2.x 는 다수의 네임노드를 가질 수 있고, YARN 이라는 새로운 MapReduce 아키텍처가 도입된 버전이다. https://blogs.apac..
하둡의 기본 명령어 사용 팁 mkdir 지정한 디렉토리를 만들어 주는 mkdir 명령에는 –p 옵션이 있다. -p 옵션을 사용하면 주어진 경로의 디렉토리를 만들 때 상위 디렉토리부터 하위 디렉토리까지 모두 만들어 준다. mkdir 의 옵션 hadoop fs [generic options] -mkdir [-p] ... Hadoop fs –mkdir –p /dir1/dir2/dir3 명령어 사용시 mkdir: `/dir1/dir2/dir3: No such file or directory 오류가 발생하면 –p 옵션을 사용하여 디렉토리를 생성하도록 하자.
hadoop 2.x 버전 capacity-scheduler.xml 설정방법 하둡은 커패시티 스케줄러를 이용하여, 자원을 효율적으로 분산하여 사용하게 할 수 있다. 계층형 큐를 이용하여 작업을 분산하여 처리할 수 있도록 설정할 수 있다. 큐는 트리구조로 생성되며 최상위 계층은 root 이다. root 아래에 기본적으로 default 큐가 생성되어 있고, 사용자가 큐를 추가할 수 있다. yarn.scheduler.capacity.root.queues queue_name1,queue_name2,default 아래와 같이 설정하여 큐에 할당 할 수 있는 최대의 자원을 % 로 설정한다. 그 외 나머지 설정을 [큐이름]을 지정하여 할당 하면 된다. yarn.scheduler.capacity.root.[큐이름].ca..
- Total
- Today
- Yesterday
- build
- HIVE
- java
- 하둡
- 오류
- bash
- HDFS
- mysql
- 정올
- S3
- Hadoop
- 다이나믹
- emr
- Tez
- yarn
- AWS
- Linux
- nodejs
- 파이썬
- 하이브
- SPARK
- oozie
- Python
- hbase
- 백준
- airflow
- ubuntu
- 알고리즘
- error
- SQL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |