본문 바로가기

빅데이터/hadoop76

[hadoop][hive] 맵리듀스 처리시 오류가 발생해도 무시하고 진행하게 하는 프로퍼티 하둡은 형식이 없는 데이터를 처리하다보니 처리중 오류가 발생할 경우가 있다. 예를 들어 텍스트 파싱을 진행하는 매퍼 작업의 경우 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; 하둡의 버전이 달라지면서 기존의 설정과 이름이 바뀌었기 때문에 하둡 버전에 맞게 사용해야 한다. 2016. 11. 24.
[hadoop] 하둡 처리중 NoClassDefFoundError 오류가 발생하는 경우 하둡과 스내피 압축을 이용하여 맵리듀스 처리중 NoClassDefFoundError 오류가 발생하는 경우가 있다. 지라에서 버그라고 하는데 스내피 압축을 풀지못해서 발생하는 경우도 있다. 이럴때는 입력 파일의 스내피 압축이 정상적인지 확인해 보아야 한다. https://issues.apache.org/jira/browse/HADOOP-12033 2016. 10. 27.
[hadoop] distcp 사용하기 하둡은 대규모 데이터의 이동을 위해서 맵리듀스를 이용한 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.. 2016. 10. 26.
[hadoop] 하둡 3.0의 신규기능과 이레이져 코딩 하둡 홈페이지에 기술된 특징은 다음과 같다. - 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.. 2016. 10. 12.
[hdfs] Non DFS used 용량 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로.. 2016. 8. 25.
[hadoop] HDFS의 유용한 명령어 [파일 정보 확인] ls- 지정한 디렉토르의 lsr- ls 는 현재 디렉토리만 출력하는 반면 lsr 명령어는 현재 디렉토리의 하위 디렉토리 정보까지 출력한다. count- 파일 사이즈, 디렉토리 용량, 폴더 수 등을 확인합니다. [파일 용량 확인]du- 지정한 디렉토리나 파일의 사용량을 확인하는 명령어로, 바이트 단위로 결과를 출력합니다. dus- du 명령어는 디렉토리와 파일별로 용량을 출력하지만, dus는 전체 합계 용량만 출력합니다. [파일 내용보기]cat- 지정한 파일의 내용을 화면에 출력합니다. text- cat 명령어는 텍스트 파일만 출력할 수 있습니다. text 명령어는 압축된 파일도 확인이 가능합니다. - 확장자에 따라 압축방법을 선택하여 보여주기 때문에 확장자가 다르면 올바르게 출력이 되.. 2016. 7. 27.
[에러] 하둡 처리중 could only be replicated to 0 nodes instead of minReplication (=1) 하둡 처리중 다음과 같은 에러가 발생하는 경우가 있다. 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. 이런 경우 다른 분들의 포스트를 확인해 보면 다들 네임노드를 포맷하라고 되어 있다. 에러의 내용상 데이터노드에 해당 데이터를 .. 2016. 6. 29.
[팁] hdfs 에 파일 업로드시 권한문제가 발생할 때 해결방법 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.. 2016. 6. 16.
[오류] 리듀서 처리중 Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out. 오류 다음의 오류가 발생하면 해결방법은 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: 맵의 출력 데이터를 리듀스 태스크에게 제공하기 위한 태스크 트래커의 워커 스레드개수 .. 2016. 2. 15.
[팁] JVM을 재사용하여 성능을 향상 시키기 맵, 리듀스 태스크는 처리될 때 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.. 2016. 2. 12.
[hadoop] 하둡 명령어, 자주 사용하는 커맨드(hadoop command) 하둡에서 자주 사용하는 명령어는 다음과 같다. * 폴더의 용량을 확인할 때 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.. 2016. 1. 25.
[개념] 쓰리프트 페이스북에서 데이터 직렬화를 위한 일반화된 데이터 솔루션을 제공하기 위해 개발한 오픈소스 프로젝트다. 이종언어간에도 직렬화 서비스를 지원한다. 페이스북에서 개발되어 아파치 프로젝트로 이전되었다. 직렬화될 데이터를 기술하는 설정 파일을 개발자가 정의할 수 있다. 그리고 나면 코드 생성기가 실행되어 미리 지정한 언어로 데이터 직렬화를 처리하는 서버가 만들어 진다. 구글의 프로토콜 버퍼는 쓰리프트와 아주 비슷하다. http://wikibook.co.kr/article/hosting-and-sharing-terabytes-of-raw-data-2/ http://brad2014.tistory.com/320 2015. 9. 14.
[하둡/AWS/오류] 우지와 하둡 연동중 발생하는 Could not find or load main class 오류 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 참고 2015. 8. 21.
[개념] 하둡 0.x, 1.x, 2.x 의 차이 하둡의 발전은 위와 같다. 녹색 네모 상자는 아파치 하둡의 정식 릴리스 버전이다. 검은색 타원은 아파치 하둡의 정식 릴리스 버전은 아니지만 타볼 형태로 확인할 수 있는 버전이다. 빨간색 타원은 해당 버전에 기반하여 출시된 상업용 버전이다. 즉 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.. 2015. 8. 5.
[하둡] 기본명령어 사용 팁 하둡의 기본 명령어 사용 팁 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 옵션을 사용하여 디렉토리를 생성하도록 하자. 2015. 5. 27.
[하둡 2.x] 커패시티 스케줄러(capacity-scheduler.xml) 설정하기 hadoop 2.x 버전 capacity-scheduler.xml 설정방법 하둡은 커패시티 스케줄러를 이용하여, 자원을 효율적으로 분산하여 사용하게 할 수 있다. 계층형 큐를 이용하여 작업을 분산하여 처리할 수 있도록 설정할 수 있다. 큐는 트리구조로 생성되며 최상위 계층은 root 이다. root 아래에 기본적으로 default 큐가 생성되어 있고, 사용자가 큐를 추가할 수 있다. yarn.scheduler.capacity.root.queues queue_name1,queue_name2,default 아래와 같이 설정하여 큐에 할당 할 수 있는 최대의 자원을 % 로 설정한다. 그 외 나머지 설정을 [큐이름]을 지정하여 할당 하면 된다. yarn.scheduler.capacity.root.[큐이름].ca.. 2015. 1. 27.