본문 바로가기

빅데이터405

[팁] 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.
[Tip/프로퍼티] hive에서 load 할 파일이 없을 때 발생하는 NullPointerException 회피하기 하이브에서 load 명령을 이용하여 테이블에 데이터를 적재하고 파일을 select 할때 지정한 경로나 지정한 경로에 파일이 없으면 NullPointerException 또는 IndexOutBoundException 오류가 발생한다. 이를 회피 하기 위해서는 다음의 프로퍼티를 설정하면 된다. set hive.merge.mapfiles=false; 하이브 설정 2016. 1. 6.
[Hive] 하이브의 정렬, 집계, 유저 함수, 조인, 서브쿼리, 뷰의 정의 정렬과 집계 하이브의 데이터 정렬은 order by 절로 처리 가능 - 하지만 order by 처리하기 위해서는 모든 처리의 결과를 집계해야 하기 때문에 리듀서의 개수가 1개가 되어야 한다. - 마지막 결과파일의 개수가 1개가 된다. 전체적인 정렬의 결과가 필요 없다면, sort by를 사용하면 된다. - sort by는 리듀서당 정렬된 파일을 생성 어떤 경우에는 특정 로우가 특정 리듀서로 가도록 설계하여 집계연산을 사용하는 것이 좋다. - distributed by가 이 역할을 한다. sort by, distributed by에 사용되는 칼럼이 같다면 둘 다를 동시에 지정하기 위해 약칭으로 cluster by를 사용할 수 있다. select year, temperature from records2 di.. 2015. 9. 14.
[개념] 쓰리프트 페이스북에서 데이터 직렬화를 위한 일반화된 데이터 솔루션을 제공하기 위해 개발한 오픈소스 프로젝트다. 이종언어간에도 직렬화 서비스를 지원한다. 페이스북에서 개발되어 아파치 프로젝트로 이전되었다. 직렬화될 데이터를 기술하는 설정 파일을 개발자가 정의할 수 있다. 그리고 나면 코드 생성기가 실행되어 미리 지정한 언어로 데이터 직렬화를 처리하는 서버가 만들어 진다. 구글의 프로토콜 버퍼는 쓰리프트와 아주 비슷하다. 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.
[개념] 스톰 vs 스파크 - 2011년 트위터가 인수한 백타이프가 처음 시작한 프로젝트 - 트위터에서 오픈소스화 -> 아파치 프로젝트로 이동 - 클로저(Clojure)를 주언어로 사용 - 클로저에 기반을 두고 있지만 JVM에서 실행되며, 볼트는 다양한 언어로 개발이 가능 - 확장성이 크고, 내결함성이 강한, 스트림 프로세싱에 최적화된 이벤트 스트림 프로세싱 중심 - UC 버클리 산하 AMPLap에서 시작하여 아파치 프로젝트로 이동 - 범용 분산형 컴퓨팅 플랫폼 - 하둡을 기반으로 처리(불편하지만 하둡 없이도 가능함) - 스칼라, 파이썬을 이용한 인터랙티브 쉘 제공 - 확장성이 높은 실시간 분석과 BI 시스템을 위한 우수한 플랫폼 http://www.itworld.co.kr/news/91022 https://storm.apache.. 2015. 7. 21.
[spark] 아파치 스파크 아파치 스파크 실시간 분산형 컴퓨팅 프로젝트이다. 스트림 지향형 프로세스를 지원한다. 기존 하둡 클러스터에서 실행시킬 수 있다. 스칼라로 작성이 되어 있지만, 스칼라, 자바, 파이선 API를 지원한다. In-Memory 방식으로 처리를 하기 때문에 하둡에 비해 처리속도가 빠르다. 하둡에 비해 100배정도 빠르다고 한다. 예제 코드 # /spark/bin/pyspark 를 실행후 콘솔에서 입력 # README.md 파일은 hdfs 상에 업로드 되어 있어야 함 # hdfs://user/name/README.md 에 위치 # README.md 파일을 입력하여 라인 카운트 확인 lines = sc.textFile("README.md") print lines.count() # README.md 파일의 문장을 공백.. 2015. 6. 24.
[하둡] 기본명령어 사용 팁 하둡의 기본 명령어 사용 팁 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.
우지 4.0 의 특징 Oozie 4.0 특징 1. HCatalog Integration - HCatalog 데이터셋 지원, 파티션 생성에 대한 알림 지원 - 데이터 존재여부를 HCatalog 를 이용하여 확인 가능 2. Job Notifications - JMS 를 통한 상태 변경알림 지원 - 사용자가 지정한 메시지를 알림 지원 3. SLA 모니터링 - SLA 수준 모니터링 정보 제공 - 웹콘솔, REST Api, JMS, Email 을 이용한 정보 제공 - coord, workflow, workflow action 단위로 시작시간, 종료시간에 따른 처리 상황 모니터링, 이메일 알림 기능 참고 우지4 특징 - http://www.slideshare.net/ydn/hadoop-meetup-hug-october-2013-oozi.. 2015. 1. 6.
[hive] 조회 조건에 정규식 이용하기 하이브 데이터 조회 조건을 정규식을 이용하여 분리하는 방법은 다음과 같다. select 칼럼명 from 테이블명 where 칼럼명 rlike '^[a-zA-Z0-9]*$'; 조회 쿼리에 rlike 를 이용하면 된다. regexp 로 대체하여도 동일한 결과를 출력한다. 정규식은 java 에서 사용하는 정규식과 동일하다. 위의 조회에 사용된 표현식은 처음[^] 부터 끝[$] 까지 영문 대소문자와 숫자 의 반복[*]으로 표현된 문자열만 찾는 쿼리이다. https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF 2014. 12. 26.