ec2를 할당 받을 때 사용하는 기본 host 이름을 사용하면, 해당 host로 접근하기가 상당히 불편하기 때문에 보통은 아래와 같이 host 명과 도메인 명을 설정하게 된다. hostname 변경 sudo hostname -F t001 domain 변경 /etc/resolv.conf 맨 마지막에 search recopick.com 그런 다음 아래와 같이 FQDN을 확인할 수 있다. $ hostname –f t001.recopick.com 그리고 난 다음, https://kr.dnsever.com/ 와 같은 서비스를 통해 원하는 도메인을 특정 ip로 mapping을 시켜주면 된다. ec2의 경우, elastic IP를 연결하거나, 혹은 nslookup 을 통해 해당 instance의 public ip를 ..
팀 매니저님께서 결과를 보시며 의문을 표하시기에, 조사해봄. 일단 Hadoop Definite Guide 책에서 Combiner Function에 대해 찾아보면, Many MapReduce jobs are limited by the bandwidth available on the cluster, so it pays to minimize the data transferred between map and reduce tasks. Hadoop allows the user to specify a combiner function to be run on the map output—the combiner function’s output forms the input to the reduce function. from ..
Hug - March - HDFS Federation View more presentations from Yahoo! Developer Network Hadoop World 2011에서 발표되었던 HDFS Federation 요약 video를 보고 이해한 거 + 대략적인 소스 분석을 토대로 한 거라 틀린 부분이 있을 수도 있음 한 마디로 요약하면? 하나의 cluster에서 여러 namespace (namenode)를 쓸 수 있도록 한 것! 왜 이런 걸 했는지, 어떻게 했는지, 그리고 앞으로는 어떻게 발전할 것인지에 대해 소개함. 현재 HDFS Architecture에 대한 요약 : 자세한 내용은 여기 참조 Namespace와 Block Storage의 조합 Namespace : directory, fil..
의외로 자료가 별로 없어서.. 직접 소스코드와 로그를 뒤지면서 정리를 해 보았다. 출처 : Hadoop: The Definitive Guide, Second Edition 일단 책에 나와 있는 내용은 저 정도이고, 실제 소스코드를 찾아보면, 책에는 생략된 block management에 대한 내용도 있다. (사실 요 부분이 궁금해서..) 테스트 환경은 hadoop 0.20.5 / pseudo-distribute 모드이며, protocol 자체는 최근에 릴리즈된 hadoop 1.0 버전과 크게 차이는 없을 것이라고 생각된다. 아래는 local에 있는 102 MB (정확히는 106,168,320 byte) 샘플 파일을 hdfs에 upload하는 과정에서 발생한 log (debug log 포함)들을 모아서 정..
Hadoop World 2011에서 Arun 아저씨가 발표한 Apache Hadoop 0.23 자료 정리 Hadoop World 2011: Apache Hadoop 0.23 - Arun Murthy, Horton Works View more presentations from Cloudera, Inc. 발표 video : http://www.cloudera.com/videos/hadoop-world-2011-presentation-video-apache-hadoop-0.23 Hortonworks에서 일하는 Arun 아저씨는 Apache Hadoop PMC (Project Management Committe)의 Chair임. 그리고 hadoop 0.23의 release manager hadoop에 대한 간단..
예를 들어 hadoop의 TextInputFormat 을 보자. 이 포맷은 하둡의 default input format인데, 파일에서 text들을 라인 단위로 읽어서 map task에게 제공해주는 역할을 한다. (참고로 key는 파일 내에서 각 라인의 시작 지점까지의 바이트 오프셋 값이다.) 여기서 당연히 한 가지 의문이 생기는데, 기본적으로 InputSplit은 HDFS의 블록으로 쪼개진다. (특별히 따로 InputSplit을 정의하지 않았다면) 그럼 HDFS block boundary가 TextInputFormat의 line boundary와 정확히 일치하지 않을 텐데, hadoop에서는 이를 어떻게 처리하고 있을까? Hadoop: The Definite Guide 책을 보면, 아래와 같은 그림이 나..
hadoop은 기본적으로 input split에 의해 계산된 각 split에 대해 하나의 map task를 생성한다. (여담이지만, 실제 map task의 개수는 mapred.map.tasks의 값이나 setNumMapTasks() 에 의해 결정되지 않는다. 자세한 이야기는 여기 참조) InputSplit은 딱 두 개의 method를 가진 abstract class로 정의되어 있고, 각 method는 다음과 같다. public abstract long getLength(); // split의 size를 반환 public abstract String[] getLocations(); //split의 data가 저장된 node들을 반환 실제 split을 구현한 class로 FileSplit class가 있다...
* 정보 공유 차원에서 오늘 한 삽질을 기록으로 남김 상황 map/reduce 프레임웍이 필요한 것은 아니고, 단순하지만 처리하는데 오래 걸리는 작업들을 여러 컴퓨터에 분산하여 처리하고자 함. reduce task 개수를 0으로 주고 mapper only로 설정하여 작업을 시작. 문제 : 현재 hadoop의 scheduler는 preemptive 하지 않기 때문에, 한 번 map task가 시작되면, priority가 낮더라도 해당 map task가 끝날 때 까지 계속 진행됨. 덕분에 나의 단순하고 오래 걸리는 작업들이 한 번 hadoop에서 돌기 시작하면, 다른 긴급한 작업들이 처리되지 못하는 상황이 발생! 시도된 해결책 나의 job에서 동시에 실행되는 map task 개수를 제한하여, 다른 긴급한 작..
요즘 업무 때문에 hadoop을 많이 사용하고 있다. 오늘의 삽질 항목은 hadoop에서 iterator를 재사용할 수 없을까? 하는 것이다. hadoop의 reducer는 동일한 key로 묶인 value들을 가져올 수 있도록, Iterable type을 반환해 준다. 그런데 쓰다 보면, 이 reducer의 값들을 두 번 이상 읽고 싶을 때가 있다. 예를 들면, 전체 value들의 개수를 세어서 값들을 출력할 때 함께 찍어주고 싶다거나.. 기타 max, min 값을 구해서 같이 출력 하고 싶다거나 등 은근 필요한 경우가 많다. 처음에는 단순하게 Iterable values 변수를 복사해 뒀다가, 다시 iterator를 호출해서 쓰는 것을 시도했다. 대충 돌려보니 컴파일 오류 안 나고 실행도 잘 되는 듯 ..