본문 바로가기

IT for developer/Hadoop+Nosql

(16)
Snappy in Hbase 현재 Hbase를 로컬모드에서 이용하면서 개발중.Snappy 모듈을 로드하지 못하는 예외가 발생하길래 라이브러리 패스등을 echo하려고 했더니 Zookeeper 에러가 발생한다.echo구문을 빼면 Zookeeper에러가 발생하지 않고.. 뭔짓을 하는 거 같다.. 일단 패스.. 아무것도 찍어주지말자.그리고 Snappy Native Library 모듈은 하둡의 lib/native/플랫폼 폴더에 저장하면 hadoop에서는 자동으로 로딩되고Hbase에서 사용하고자 할때는 이경로를 hbase-env.sh에 다음과 같이 설정해 주자.우선 snappy를 공유 라이브러리로 컴파일한다. 그 과정은 다음에 나와있다. http://code.google.com/p/snappy/ 예) 64비트 리눅스인 경우 JAVA_LIBRA..
Hbase pseudo distributed mode 로컬에서 디버깅환경구축중이다. 로컬모드는 다운받고 그대로 실행만 해주면 끝나지만 가상 분산 모드는 설정파일을 살짝 수정해주어야한다. HBase 를 가상 분산 모드로 실행하기 구글신으로 검색해서 해봤는데 안되서 헤딩했다;. 0.94.1 0.94.2 버전에서 테스트한 결과는 다음과 같다.hbase-site.xml 파일 다음과 같이 추가해준다.처음에는 configuration 엘리먼트만 있을 것이다. hbase.rootdir hdfs://localhost:9000/hbase 그리고 hadoop을 가상분산모드로 실행시킨 후에 hbase를 실행하면 된다.hdfs://localhost:9000 이것은 하둡 설정파일 core-site.xml 에 fs.default.name을 적어주면된다. (거기에 루트 디렉토리 추가..
Hadoop 디버깅 하기. 하둡을 로컬 환경에서 개발하면서 디버깅 하기 위한 방법에 대해서 정리해 보려한다. 구글신의 도움으로 이런 저런 블로그를 둘러보고 테스트한 결과를 토대로 다음과 같은 방법이 가능하다. 싱글모드, 즉 Standalone 모드일때는 디버깅이 사실 쉽다. hadoop-env.sh 파일에 자바 디버깅 옵션을 넣어주고 리모트 디버깅을 수행하면된다. 사실 이런것도 필요없고 이클립스에서 설정만 잘하고 실행시키면 바로 디버깅하면 실행할수 있다. 별도의 플러그인도 필요없다. 그래서 만약에 로컬모드로 실행시키는 경우 리모트디버깅하지 않고 클래스패스만 잘 잡고 이클립스에서 바로 실행하는 것이 오히려 좋다고 본다. 두번째는 가상분산모드이다. 여러 포스트를 살펴보았지만 별다른게 없었다. 별도의 태스크트랙커가 실행되어서 맵리듀스를..
HIVE 0.9.0, HBASE 0.94.0 버그 Hive에서 Insert까지는 되는데 HBASE 0.94.0 버그로 인해 SELECT에서 다음과 같은 예외가 발생한다.Failed with exception java.io.IOException:java.lang.NullPointerException 버전 0.94.1 에서 버그 수정했음
HBase 클라이언트와 통신 플로우 HBase 클라이언트와 통신 플로우클라이언트는 특정 row에 접근을 시도할 때 Zookeeper와 연결한다.-ROOT- region을 호스트하는 서버 이름을 가져온다.-ROOT- 정보를 사용하여 클라이언트는 .META. 테이블 region을 호스트하는 서버 이름을 가져온다..META. 서버에 연결하여 row key를 포함하고 있는 region 을 가진 서버 이름을 가져온다. -ROOT-, .META.를 특별한 용도로 사용되어 카탈로그 테이블이라고 부른다.1) 클라이언트 ---> Zookeeper 2) 클라이언트 ---> Root Region Server3) 클라이언트 ---> Meta Region Server다음과 같이 호출하면 1), 2), 3) 과정을 처리하게됨HTable table = new HTa..
HADOOP_MASTER 프로퍼티 이전 프로젝트에서 네임노드에서 하둡설정파일을 변경후 데이터노드에 일일이 scp를 이용해서 복사한 기억이 나는데, 무지에 의한 노가다 였구나.책 Hadoop.The.Definitive.Guide 3rd 에서 설정부분을 꼼꼼히 살펴보다보니, hadoop-env.sh 파일에 HADOOP_MASTER라는 속성을 지정하면 자동으로 마스터노드와 싱크를 맞추어 준다. 굳이예요~conf/hadoop-env.sh 내에 다음과 같은 속성을 설정한다. (디폴트는 설정 x)export HADOOP_MASTER=hadoop@master:/home/hadoop/hadoop-1.0.3hadoop-dameon.sh 파일을 살펴보면 rsync를 통해 설정파일 동기화를 수행한다. 그러나 클러스터가 너무 큰 환경에서는 데몬 시작시 동시에..
Hadoop YARN (MapReduce 2) Hadoop 0.23.0 부터 새로운 Map/Reduce 구현 방법을 지원하는데 Hadoop The Definitive Guide 3rd 를 발번역해서 살펴봐야겠다.~ YARN (MapReduce 2) 4000노드 이상의 큰 클러스터에 대해 이전 방식의 맵리듀스 시스템은 확장성 병목이 생긴다. 그래서 야후에서는 맵리듀스의 다음 세대를 설계하였다. 그 결과가 YARN (Yet Another Resource Negotiator 또는 YARN Apllication Resource Negotiator) 이였다. YARN은 잡트래커의 책임을 분리된 엔티티로 나누어서 기존 맵리듀스의 확장성 단점을 극복하고 있다. 잡트랙커는 잡 스케쥴링(태스크를 태스크트랙커들에게 매칭)과 태스크 진행상태 모니터링을 다룬다.(태스크의..
HBase - DELETE HTable에 다음 함수를 통해 삭제를 수행한다. void delete (Delete delete) throws IOException put과 유사하게 Delete 객체를 생성해서서 전달하면 된다. Delete 객체를 생성하는 방법도 기존 Get, Put 객체를 생성하는 것과 유사하다. Delete(byte[] row) Delete(byte[] row, long timestamp, RowLock rowLock) 특정 컬럼 패밀리 또는 컬럼을 지정하여 삭제할 수도 있다. 아무것도 지정하지 않으면 해당 rowKey에 해당하는 모든 셸을 지운다. Delete deleteFamily(byte[] family) Delete deleteFamily(byte[] family, long timestamp) Delete..