hadoop-0.23 화면

삽집끝에 hadoop-0.23 hdfs 하고 yarn 실행했습니다. 성공 기념 관리화면 인증샷

사용자 삽입 이미지

사용자 삽입 이미지

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 김형준


hbase 0.90 hadoop append 설정

 hbase 0.90  버전부터는 hadoop의 append 기능을 이용하고 있습니다.  hadoop 0.20 정식 릴리즈 버전에서는 append 기능을 제공하지 않기 때문에 hbase의 lib에 있는 hadoop-core-0.20-append-r1056497.jar 파일로 hadoop의 jar 파일을 대체하여 재시작해야 합니다.
이것 말고 주의해야 할 부분이 하나 더 있는데 append 모드를 사용하기 위해서는 dfs.support.append 설정 값을 true로 설정해야 합니다. 이 설정이 dfs의 설정이다 보니 hadoop의 conf/hdfs-site.xml 파일에만 설정하는 경우가 있는데 이렇게 하면 Configuration 객체가 dfs.support.append 값을 로딩하지 못하여 append 기능을 사용하지 않는 모드로 동작하게 됩니다.
Configuration 클래스의 경우 기본 생성자에서는 core-default.xml, core-site.xml 만 로딩하고 별도로 hdfs-default.xml, hdfs-site.xml, mapred-default.xml, mapred-site.xml 을 로딩하기 위해서는 addResource 메소드를 호출해야 합니다.
hbase 코드 상에서 dfs.support.append 값을 읽어 오기 위해 Configuration 객체를 사용합니다. 따라서 dfs.support.append 값을 인식하게 하기 위해서는  hbase의 conf/hbase-site.xml 파일에 설정하거나 hadoop의 conf/core-site.xml에 설정해야 합니다.
그리고 append 기능 및 sync 기능을 이용한다고 해서 WAL 로그가 sync호출 즉시 hdfs에 반영되는 것은 아닙니다. hadoop-0.20-append 버전에서의 sync 메소드를 호출한다고 해서 hdfs 파일에 바로 반영되는 것은 아닙니다. 이 기능은 hadoop-0.21에 적용되어 있습니다.
hadoop-0.20.append 관련 소스는 hadoop의 common branch에 있습니다. 참고하세요.
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 김형준


hadoop memory usage 모니터링

hadoop을 수년간 운영해왔지만 hadoop monitoring metrics 데이터를 자세하게 보지는 않았습니다. 특정 서버 장애는 서비스 운영에 크게 문제가 되지 않았기 때문이죠. 최근 파일이 많아지고 사용량이 많아지면서 일부 서버에 장애가 지속적으로 발생하여 계속 모니터링 해보고 있습니다.
cloumon-enterprise를 이용해서 메모리 상황을 모니터링 해 보았습니다. namenode 쪽은 파일으 급격하게 증가하지는 않기 때문에 안정적인 패턴을 보이고 있습니다.
현재 File, Block 갯수는 4백만개 정도 됩니다. 아래 그림에서 보듯이 600 ~ 700 MB 정도 사용하고 있습니다.

[그림] namenode heap usage
사용자 삽입 이미지
DataNode 쪽은 메모리에 대해서는 별로 신경쓰지 않았는데 cloumon 적용하면서 확인해보니 의외로 많이 사용하고 있었습니다. 아마 블럭 정보를 메모리에 모두 올려 관리하기 때문이 아닌가 생각합니다.
첫번째 그림의 DataNode는 블럭을 50만개 정도 가지고 있는 서버이고 두번째 서버는 13만개 블럭을 가지고 있는 서버입니다. 메모리 사용량은 500MB, 200MB 정도입니다.

[그림] datanode heap usage(50만개 블럭)
사용자 삽입 이미지
[그림] datanode heap usage(13만개 블럭)
사용자 삽입 이미지
* 모니터링 그림은 cloumon에서 제공하는 화면을 이용하였습니다.
http://www.slideshare.net/gruter/cloumon-enterprise-8463593

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 김형준


hadoop 0.21 append 성능 테스트

hadoop이 지난달 0.21로 업그레이드 되면 append 기능이 추가되었습니다.
append에 대해 성능 테스트를 수행해 보았는데 결과 공유합니다.

테스트를 수행한 환경이 VM환경이라 절대적인 성능 수치 보다는 일반 write와 속도 비교가 더 의미 있을 겁니다. 그리고 부하 상황이 아닌 싱글 클라이언트 상황에서의 테스트입니다.

1. 테스트 환경
    . 물리적 서버 3대,   각 서버에 VM5대
    . Hadoop 1 master, 23 datanode
    . Hadoop 버전: 0.21

2. 테스트 프로그램
    . 1024 bytes를 102,400번 수행 -> 100MB
    . 별첨 참고

3. 테스트 결과
    . write(BufferedOutputStream 사용시): 17,654 ms
    . write(DFSOutputStream 사용시): 12,298 ms
    . append(DFSOutputStream 사용시, 매번 flush 호출): 130,436 ms
    . append(DFSOutputStream 사용시, 마지막에 flush 호출): 11,398 ms
   . append(DFSOutputStream 사용시, 1000건 단위로 flush 호출): 16,225 ms
 
4. 결론
    . append의 경우 flush()를 호출하지 않으면 기존 write의 동일한 성능
    . append 연산을 사용하는 용도가 주로 로그 데이터 저장 등인데 이 경우 매번 flush 해주는 경우가 일반적
      -> 이런 상황에서는 10배 정도의 성능 저하 발생
    . append 도중 close를 하지 않은 상태에서 클라이언트가 강제 종료되면 일전 시간(수 분) 내에서는
      파일 읽기 연산 불가

    . append 사용 가능 상황
      -> 쓰기 시간이 중요하지 않고 중요한 데이터
      -> 쓰기 시간이 중요하지만 일부 데이터(1000건 정도) 유실이 발생해도 무방한 데이터


크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 김형준


hadoop의 DataNode 버그

Hadoop의 DataNode에서 여러개의 볼륨을 사용할 경우 하나의 볼륨에만 문제가 있어도 데이터 노드 자체가 죽어버려 정상적인 디스크에 있는 데이터까지 모두 복구 작업이 진행된다. 소스를 보니 다음 코드처럼 구현되어 있으니 당연히... /* Check if there is no disk space and if so, handle the error*/ protected void checkDiskError( ) throws IOException { try { data.checkDataDir(); } catch(DiskErrorException de) { handleDiskError(de.getMessage()); } } private void handleDiskError(String errMsgr) { LOG.warn("DataNode is shutting down.\n" + errMsgr); shouldRun = false; try { namenode.errorReport( dnRegistration, DatanodeProtocol.DISK_ERROR, errMsgr); } catch(IOException ignored) { } }
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 김형준


왕 삽질 후에 성공한 hicc 화면

HICC(Hadoop Infrastructure Care Center)는 chukwa의 서브 모듈로 탑재 되어 있으며 하둡 클러스터를 모니터링 하는 화면을 제공한다.
지난번에 한번 실패하고 이번에 다시 도전해서 성공... 지난번에도 성공헀었는데 화면단에서 조회 조건에서 GMT+0 기준으로 데이터 조회하고 있는 바람에 데이터가 나타나지 않았다는 ㅋㅋㅋ

사용자 삽입 이미지

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 김형준


Hadoop NameNode 이중화 해결?

아래 기사 내용중에 자체적으로 해결했다고 되어있습니다.

http://in.sys-con.com/node/1323620

Appistry explains that the native HDFS architecture is built around a single metadata repository called the NameNode and because the NameNode isn't easily clustered, it represents a single point of failure and a bottleneck for the entire system. CloudIQ Storage fixes that limitation.
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 김형준


MapReduce 특허

구글이 MapReduce 특허권을 받았다고 합니다.

http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=%2Fnetahtml%2FPTO%2Fsrchnum.htm&r=1&f=G&l=50&s1=7,650,331.PN.&OS=PN/7,650,331&RS=PN/7,650,331

http://gigaom.com/2010/01/19/why-hadoop-users-shouldnt-fear-googles-new-mapreduce-patent/

특허에 대해서 걱정할 필요는 없다고 하는데 그 기술을 이용해서 솔루션 만드는 회사에서는 많이 꺼림직 하겠네요... 특히 구글의 경쟁사가 되는 회사라면 더...
Hadoop을 원천 기술로 사용하고 있는 Yahoo를 인수하려고 하는 MS의 입장도 조금은 이상해지네요...
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 김형준


hadoop 0.20 MapReduce도 바뀌었네요.

Hadoop 0.20 잠깐 봤는데 MapReduce 클래스가 모두 바뀌었네요. 기존에는 org.apache.hadoop.mapred 패키지였는데 org.apache.hadoop.mapreduce 라는 패키지가 만들어져 있고 기존의 org.apache.hadoop.mapred 패키지 대부분 클래스는 deplicate 되었습니다.
Mapper 클래스도 기존의 configuration(), map(), close()가 아니라 setup(), map(), cleanup()으로 바뀌었네요.
기타 많이 바뀌었지만 일단 hadoop-0.20과 호환 가능하도록 Neptune의 MapReduceUtil 클래스를 조정해야 겠습니다.
아직 1.0은 아니라고 하지만 너무 심한 변화네요.
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 김형준


Lucene, Nutch, Hadoop으로 이름을 날리고 최근에는 Avro라는 프로젝트를 진행하고 있는 Doug Cutting이 Yahoo를 떠나 Cloudera로 옮긴다고 합니다. 참고하세요.

http://www.cloudera.com/blog/2009/08/10/doug-cutting-joins-cloudera/
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 김형준


« Previous : 1 : 2 : 3 : 4 : 5 : 6 : ... 13 : Next »