본문 바로가기

빅데이터413

[hive][개념] 하이브 서버2(hiverserver2), 비라인(beeline) HiveServer2 (HS2)는 클라이언트가 Hive에 대해 쿼리를 실행할 수있게 해주는 서비스입니다. - HiveServer2는 HiveServer1의 후속 버전입니다. - HS2는 다중 클라이언트 동시성 및 인증을 지원합니다.- JDBC 및 ODBC와 같은 공개 API 클라이언트를보다 잘 지원하도록 설계되었습니다. - HS2는 Thrift 기반 하이브 서비스 (TCP 또는 HTTP)와 웹 UI 용 Jetty 웹 서버를 포함하는 복합 서비스로 실행되는 단일 프로세스입니다. HiveServer2 from Schubert Zhang beeline 은 하이브 서버2를 이용하여 원격에서 하이브 쿼리를 실행하기 위한 도구이다. # beeline 커맨드로 실행, hive 실행 폴더에 존재% bin/beeline.. 2016. 8. 26.
[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.
[oozie] 우지에서 쉴에서 실행한 값을 다음 액션의 파라미터로 전달하기 우지 workflow.xml 에서 현재 액션의 스탠다드 아웃풋(출력)을 다음 액션의 파라미터로 이용이 가능하다. 쉘 액션에 를 입력하고다음 액션의 파라미터에서 ${wf:actionData('shellAction')['dateVariable']}와 같이 이용하면 된다. 쉘 액션의 이름과 출력 파라미터를 잘 조정하면 된다. 쉘 액션은 다음과 같이 출력하면 된다. echo "dateVariable=${dateValue}" http://stackoverflow.com/questions/30873891/passing-parameters-from-one-action-to-another-in-oozie 2016. 7. 26.
[하이브] 파티션 복구 하기(repair partitions) 하이브는 기본적으로 폴더 구조이기 때문에 다른쪽에서 처리한 데이터나, 기존에 백업해둔 파일을 복사해서 사용할 수도 있다. hadoop fs -put 명령을 이용하여 기존 파티션 위치에 동일하게 복사하면,데이터 조회가 가능하다. 이때 기존에 등록되어 있던 파티션인 경우는 상관없지만,추가되는 경우 파티션을 새로 등록해주어야 한다. ALTER TABLE ADD PARTITION 명령으로 개별적으로 추가해 줄 수도 있지만, 추가해야할 파티션이 많은 경우 다음의 명령을 이용하여 한꺼번에 처리하면 된다. MSCK REPAIR TABLE table_name;ALTER TABLE table_name RECOVER PARTITIONS; 위의 두 명령중 하나를 이용하면 테이블의 로케이션을 검색하여 파티션을 추가해준다. A.. 2016. 7. 11.
[에러] 하둡 처리중 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.
[에러] hive의 INSERT .. SELECT 작업중 No input paths specified in job 에러 하이브에서 작업중 아래의 오류로 인하여 작업이 중단 되는 경우가 있다. cause:java.io.IOException: No input paths specified in job 이럴때는 두가지 경우인것 같다. 1. MR 작업할 위치에 원천 로그 파일이 없을때2. SELECT 문의 WHERE 조건으로 인하여 조회되는 건수가 0건 일때 즉, 입력할(INSERT) 데이터가 없을 때 발생한다. 이럴경우 데이터가 없어도 처리하게 하면, 에러를 내지 않고 처리한다. set hive.merge.mapfiles=false; https://svn.apache.org/repos/asf/hive/tags/release-0.5.0/conf/hive-default.xmlhttps://kidokim509.wordpress.com.. 2016. 6. 29.
스파크에서 문자열 utf-8 형식으로 처리하기 pyspark에서 spakr 2.x 버전을 이용할 경우 utf-8 버전의 파일을 읽어서 처리할 경우 유니코드 오류가 발생한다. 이럴때 다음과 같이 처리하면 된다. ScalaContext를 이용하여 파일을 읽을 때 use_unicode 옵션을 이용하고, map 함수에서 라인단위로 읽을 때 인코딩을 처리해주면 된다. 2016. 6. 20.
[팁] 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.