ApplicationWorkbenchAdvisor 에서 Workbench.initialize() 메소드를 아래와 같이 오버라이드 한다.

    @Override

    public void initialize(IWorkbenchConfigurer configurer) {

        configurer.setSaveAndRestore(true);

    }

 

Posted by 컴바이블
Hadoop Distributed File System 은 리눅스 로컬 디스크와 DFS 사이에 파일 I/O를 위한 API를 제공하지만, 새로운 API를 배우고 사용하는 것은 사용자에게 굉장한 짐이 될 수 있으므로 HDFS를 리눅스에 마운트 시켜보았습니다.

마운트를 시키기 위해서 FUSE를 사용했고, 이에 대한 설명은 김형준님의 블로그에서 확인하시면 됩니다.

설치환경은 다음과 같습니다.
[root@hadoop ~]# uname -a
Linux hadoop.kobic.re.kr 2.6.9-42.0.2.ELsmp #1 SMP Wed Aug 23 13:38:27 BST 2006 x86_64 x86_64 x86_64 GNU/Linux
[root@hadoop ~]# java -version
java version "1.5.0_07"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_07-b03)
Java HotSpot(TM) 64-Bit Server VM (build 1.5.0_07-b03, mixed mode)

Hadoop NameNode Info
Started: Tue May 06 19:40:41 KST 2008
Version: 0.16.2, r642481
Compiled: Sat Mar 29 01:59:04 UTC 2008 by hadoopqa
Upgrades: There are no upgrades in progress.

Hadoop Cluster Summary
8 files and directories, 0 blocks = 8 total. Heap Size is 31.5 MB / 888.94 MB (3%)
Capacity : 453.75 GB
DFS Remaining : 166.13 GB
DFS Used : 1.15 MB
DFS Used% : 0 %
Live Nodes : 59
Dead Nodes : 0

연산용 클러스터라 로컬디스크 크기가 매우 작습니다. mount 테스트라면 디스크 크기가 컸으면 더 좋았을텐데 아쉬운 부분입니다.

Hadoop 및 JDK 설치 등은 이전 포스팅 글 또는 다른 곳에서도 쉽게 정보를 찾아볼 수 있으므로 생략하겠습니다.

Hadoop NameNode 데몬과 DataNode들의 데몬이 잘 실행되고 있다는 가정하에 다음과 같은 순서로 설치를 진행합니다.

FUSE 설치
configure 파일에 실행권한을 줍니다.
[root@hadoop fuse-2.7.3]$ chmod a+x configure

README 파일에 있는 설치과정을 진행합니다.
[root@hadoop fuse-2.7.3]$ ./configure
[root@hadoop fuse-2.7.3]$ make
[root@hadoop fuse-2.7.3]$ make install
[root@hadoop fuse-2.7.3]$ modprobe fuse

디폴트 설정대로 설치를 진행하면 USE library가 /usr/local/lib 밑에 설치가되고, /usr/local/include에 header 파일이 설치가 됩니다.

FUSE가 잘 설치 되었다면, FUSE를 FUSE-J에 연결시켜야 합니다.

FUSE-J 설치
README.html의 Installation에는 그냥 make를 실행하라고 되어있지만, 그전에 common-logging-1.0.4.jar 파일을 lib 폴더에 복사 해 주고, build.conf 파일에 JAVA_HOME과 FUSE_HOME 위치를 설정해주어야 합니다.

ant로 빌드를 실행하여 build 디렉토리와 dist 디렉토리에 필요한 클래스파일과 jar파일들이 잘 생성되는지 확인한 후 make를 실행합니다.

[root@hadoop fuse-j-2.4-prerelease1]$ vi build.conf
# JDK 1.5 or greater HOME
JDK_HOME=/usr/java/jdk1.5.0_05
# FUSE library & headers base directory
FUSE_HOME=/usr/local

[root@hadoop fuse-j-2.4-prerelease1]$ ant
[root@hadoop fuse-j-2.4-prerelease1]$ make

make가 잘 진행이 되었다면, hadoop-fuse에서 사용할 jar 파일을 생성해 줍니다.
[root@hadoop fuse-j-2.4-prerelease1]$ jar cf fuse-j-2.4.jar -C ./build .
현재 디렉토리에 fuse-j-2.4.jar 파일이 잘 생성 되었으면 성공입니다.

fuse-hadoop 설치
먼저 위의 FUSE-J 설치시 제일 마지막에 생성한 fuse-j-2.4.jar 파일을 fuse-hadoop 의 lib 폴더에 복사합니다. 또한 README 파일에는 fuse-hadoop의 버전에 따라 nutch-버전-dev.jar 파일 혹은 hadoop-버전-dev.jar 파일을 lib 폴더에 복사하라고 하고있으나, 현재 테스트 버전인 hadoop-0.16.2 버전에는 dev.jar 파일을 따로 빌드하지 않는듯 하고. 따라서 그냥 hadoop-0.16.2-core.jar 파일을 lib 에 복사하도록 합니다.
README 파일에는 여기서 ant jar 를 실행하라고 나와 있지만, 돌려보면 log4j 를 사용하여 로그를 쓰는 부분이 있는데 jar 파일이 없어서 못찾겠다는 에러메세지를 확인할 수 있습니다. 여기서는 log4j-1.2.14.jar 를 사용했습니다.

[root@hadoop fuse-hadoop]$ ant jar

빌드가 성공하면, script 폴더에 mount.sh 파일을 편집하여, JDK_HOME 등... path 관련 설정들을 환경에 맞게 세팅해 주어야 합니다.

여기까지 되었으면, mount 준비가 완료.

[root@hadoop fuse-hadoop]$ ./script/mount.sh localhost:9000 /mnt/hdfs

hadoop 설치시 NameNode 포트(default:9000)를 사용하여 마운트한다. README 파일에는 12301 포트로 되어있다. 여기에 속으면 고생합니다. ㅎㅎ;;


HDFS를 일단 linux 에 mount 하였는데, 다음번에는 안정성 및 장단점에 대해서 포스팅 해보도록 하겠습니다.

설치 파일 :

이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 컴바이블

SELECT name,phon,add FROM user GROUP BY name,phon,add HAVING count(*)>1 ;

Posted by 컴바이블
태그 SQL

연락 안되던 후배가 파일을 보냈길래..ㅎㅎ;

반가운 마음에 클릭....

했을때는 이미 늦었다. ㅡㅡ..바이러스 였던것이다.

치료법은 다음과 같다.

photo19.zip

MSN 받은 파일 폴더에 가서 저 파일을 지운다.

시작 > 실행 > regedit 를 실행시켜서 레지스트리 편집기를 띄우고,

편집 > 찾기 에서 poolmc 로 검색하면, poolmc.exe 가 찾아지는데, 이놈을 역시 지운다.

C:\WINDOWS\system32 폴더로 가서,

도구 > 폴더옵션 > 보기 > 보호된 운영체제 파일 숨기기 를 체크해제 하고,

그 아래쪽에 숨김 파일 및 폴더 를 체크해제하여 보이도록 한다.

그리고 나면 폴더안에 poolmc.dll 파일이 보인다.

이놈을 지우면 되는데, 이놈이 안지워질 경우에는 안전모드로 재부팅해서 지우면 된다.

끝.

이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 컴바이블

2년 전에 등록 신청한 것인데, 소문대로 오래 걸리긴 하는구나...

Posted by 컴바이블
http://www.alphaworks.ibm.com/tech/mapreducetools/

IBM에서 제공하는 Eclipse의 Map&Reduce 플러그인 이다.
여러모로 많은 기대를 하고 테스트를 해 보았다.

결론적으로는 아직 추가되야할 기능이 많아 보인다고할까...

사용자 삽입 이미지

플러그인을 설치하면 MapReduce Project를 생성할 수 있다.

Java Project를 생성한 것과 별 다를바는 없으며, 생성시에 로컬에 Hadoop 홈 디렉토리를 잡아주도록 되어있고, 필요한 lib 를 classpath에 추가해 주는 정도라고 할 수 있다.

기본적으로 Map&Reduce를 구현하기 위해 Mapper, Reducer 클래스를 생성할 수 있고, MapReduce Driver 라는 클래스의 main 메소드에서 구현된 Mapper와 Reduce 클래스를 지정하여 job을 던지는 형태로 클래스 디자인이 되어있다.
사용자 삽입 이미지

위의 화면 처럼 Mapper, Reducer, MapReduce Driver 를 선택하여 각각 구현한 후 Run on Hadoop 에서 Hadoop server 설정을 한다.

사용자 삽입 이미지



























Validate location을 통해 서버에 접속 테스트를 해볼 수 있고, 생성된 서버 정보는 저장이 된다. 이상한 점은 실행을 하면 항상 비밀번호를 두번씩 물어본다는 것인데.. 이건 버그인 것으로 생각된다.

아쉽게도, 아직은 jar 파일을 서버로 전송하는 ssh 또는 ftp 기능이 구현이 되어있지 않다.

따라서 굉장히 불편하지만, 직접 export 한 jar 파일을 hadoop 서버로 복사를 해주어야 하며, 서버에서 실행되고 있는 job 의 상태를 아래와 같이 모니터링 할 수 있지만, Job 이 fail 된 경우 State가 Running 으로 나오는 깜찍한 버그도 있다.

사용자 삽입 이미지

새로 추가해야 할 기능과 버그 수정이 시급해 보이지만...그럭저럭 쓸만은 한거 같다.

위키에 보면 파일 브라우즈 기능도 있다던데, 어디있는걸까? 플러그인 다운로드 받은지가 한참되서 그런가...흠...
이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 컴바이블
Usage: java FsShell
           [-fs <local | namenode:port>]
           [-conf <configuration file>]
           [-D <[property=value>]
           [-ls <path>]
           [-lsr <path>]
           [-du <path>]
           [-dus <path>]
           [-mv <src> <dst>]
           [-cp <src> <dst>]
           [-rm <path>]
           [-rmr <path>]
           [-expunge]
           [-put <localsrc> <dst>]
           [-copyFromLocal <localsrc> <dst>]
           [-moveFromLocal <localsrc> <dst>]
           [-get [-crc] <src> <localdst>]
           [-getmerge <src> <localdst> [addnl]]
           [-cat <src>]
           [-copyToLocal [-crc] <src> <localdst>]
           [-moveToLocal [-crc] <src> <localdst>]
           [-mkdir <path>]
           [-setrep [-R] <rep> <path/file>]

Posted by 컴바이블

검색엔진 변천사

2008/01/04 11:28
평소 '검색'에 관심이 많기 때문에, 나에게 구글과 관련된 이야기는 항상 흥미로운 주제가 아닐 수 없다.

'검색'이라는 주제로 부담없이 읽어볼 수 있는 책을 찾아보기란 쉽지 않지만, 구글이라는 거인이 등장함으로 이 같은 재미있는 책이 출간도 되나보다.

책을 읽다가, 흥미롭게 정리가 되어있는 검색엔진의 변천사가 있어, 블로그에 정리하고 싶은 마음에 포스팅한다.


검색엔진 변천사


아키

Archie

앨런 엠티지가 1990년에 만든 이전의 검색 애플리케이션으로 최초의 인터넷 검색엔진이라 있다.


베로니카

Veronica

1993년에 네바다대학 학생들이 만든 검색 프로그램으로 인터넷 파일 공유 표준인 고퍼(Gopher) 활용했다.


WWW 원더러

WWW Wanderer

매사추세츠 기술연구소 연구원이던 매튜 그레이가 개발한 초기 인터넷 기반의 검색엔진으로 자동적으로 사이트들의 인덱스를 만들었다.


웹크롤러

WebCrawler

워싱턴대학 연구원이던 브라이언 핀커튼이 1994년에 개발한 것으로, 찾아낸 문서들의 전체 텍스트를 최초로 인덱싱했다. 이것은 검색엔진의 진화에 중요한 역할을 한다.


 

알타비스타

AltaVista

DEC 알파칩이 장착된 컴퓨터에 전체 인터넷의 데이터베이스를 넣은 알파칩의 빠른 처리속도를 보여주기 위해 만들어졌다. 이후 차례나 소유주가 바뀌면서 파란을 겪긴 했지만, 1996년에 알타비스타는 인터넷에서 가장 사랑받는 검색엔진이었다. 알타비스타의 탄생과 성장에 누구보다 깊숙이 관여한 사람이 바로 루이스 모니에르이다.


 

라이코스

Lycos

카네기 멜론대학의 마이클 몰딘 박사가 미국방위고등연구계획국의 보조금을 받아 1994년에 만들었다. 크롤러를 사용해 인터넷을 인덱싱한 것은 이전의 검색엔진들과 같았지만, 라이코스는 주요 검색엔진 최초로 웹사이트와의 링크들을 관련성의 기초로 사용했다.


 

익사이트

Excite

익사이트는 6명의 스탠포드대 동창들에 의해 웹디렉토리와 풀텍스트 검색엔진을 갖추고 1995년에 세상에 나왔다. 익사이트는 웹페이지들을 개념에 따라 그룹으로 묶는 기술을 바탕으로 하는 최초의 검색엔진이었다.


 

야후

Yahoo

제리 양과 데이비드 파일로에 의해 제리와 데이비드의 월드와이드웹 가이드라는 이름으로 1994 시작되었다. 사람은 인터넷 항해에 디렉토리식 접근 방법을 써서 예술, 과학, 비즈니스 등과 같은 카테고리로 링크들을 분류했다. 야후는 1995 후반 검색업체인 오픈 텍스트와의 제휴를 통해 자사의 디렉토리에 검색을 덧붙인다.


 

구글

Google

스탠포드대 대학원생이던 래리 페이지와 세르게이 브린에 의해 만들어진 현재 세계 최고의 검색엔진이다. 구글은 백링크를 쉽게 찾을 있도록 하는 도구를 개발하는 과정에서 태어났다. 또한 과정에서 웹페이지에 랭킹을 매겨 오늘날과 같은 상위 10 결과를 보여주게 되었다.

 

Posted by 컴바이블

public void testRegex() {
    String text =
"<PROTEIN> PEPT1 </PROTEIN> and
                   <PROTEIN> PEPT2 </PROTEIN> is primarily
                   responsible for the renal reabsorption
                   of peptides and peptidomimetics"
;

    String regex = "<PROTEIN>([ \\w]+)</PROTEIN>";

   
    Pattern p = Pattern.compile(regex);

    Matcher m = p.matcher(text);   

    while(m.find()) {

        System.out.println(m.group(1));

    }

}

위의 메소드는 console에 아래와 같은 결과를 출력한다.

PEPT1
PEPT2

w[a-zA-Z_0-9] 와 같기 때문에 다음과 같이 바꿔도 결과는 똑같다.


"<PROTEIN>([ a-zA-Z_0-9]+)</PROTEIN>";






Posted by 컴바이블

Download and hadoop building

 $ cd /usr/local/
 $ wget http://ftp.apache-kr.org/lucene/hadoop/hadoop-$version.tar.gz
 $ tar zxvf hadoop-$version.tar.gz
 $ cd hadoop-$version
 $ ant package

hadoop-env.sh 편집

 $ vi ./conf/hadoop-env.sh

아래와 같이 JAVA_HOME 경로, slaves 설정 파일 경로를 편집합니다. HADOOP_HOME은 실제로 hadoop이 설치된 경로를 설정합니다. 아래의 경우에는 /home/nutch로 가정했습니다.

 export JAVA_HOME=/usr/java/jdk_$version
 export HADOOP_HOME=/home/nutch
 export HADOOP_SLAVES=${HADOOP_HOME}/conf/slaves
 export HADOOP_LOG_DIR=${HADOOP_HOME}/logs

hadoop-site.xml 편집

 $ vi conf/hadoop-site.xml

<configuration>

<property>
  <name>fs.default.name</name>
  <value>마스터서버:9000</value>
  <description>
    The name of the default file system. Either the literal string
    "local" or a host:port for NDFS.
  </description>
</property>

<property>
  <name>mapred.job.tracker</name>
  <value>마스터서버:9001</value>
  <description>
    The host and port that the MapReduce job tracker runs at. If
    "local", then jobs are run in-process as a single map and
    reduce task.
  </description>
</property>

<property>
  <name>mapred.map.tasks</name>
  <value>2</value>
  <description>
    define mapred.map tasks to be number of slave hosts
  </description>
</property>

<property>
  <name>mapred.reduce.tasks</name>
  <value>2</value>
  <description>
    define mapred.reduce tasks to be number of slave hosts
  </description>
</property>

<property>
  <name>dfs.name.dir</name>
  <value>/home/nutch/filesystem/name</value>
</property>

<property>
  <name>dfs.data.dir</name>
  <value>/home/nutch/filesystem/data</value>
</property>

<property>
  <name>mapred.system.dir</name>
  <value>/home/nutch/filesystem/mapreduce/system</value>
</property>

<property>
  <name>mapred.local.dir</name>
  <value>/home/nutch/filesystem/mapreduce/local</value>
</property>

<property>
  <name>dfs.replication</name>
  <value>1</value>
</property>

</configuration>

master node

$ vi /etc/sysconfig/iptables

 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 9000 -j ACCEPT
 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 9001 -j ACCEPT
 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 50010 -j ACCEPT
 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 50030 -j ACCEPT
 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 50040 -j ACCEPT
 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 50050 -j ACCEPT
 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 50060 -j ACCEPT
 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 50070 -j ACCEPT

$ /etc/init.d/iptables restart

slave node

$ vi /etc/sysconfig/iptables

 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 50010 -j ACCEPT
 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 50040 -j ACCEPT
 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 50050 -j ACCEPT
 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 50060 -j ACCEPT

$ /etc/init.d/iptables restart

ssh key 생성


ssh key를 scp를 이용해 각 slave 노드로 복사 (먼저 복사될 파일 시스템이 각 slave노드에 존재해야 한다.

$ scp ~/.ssh/authorized_keys who@server2:~/.ssh/authorized_keys 


! 인증키가 없을 경우(~/.ssh/authorized_keys 파일이 없을 경우)
ssh-keygen으로 공개키를 만들면 된다(버전마다 다를 수 있으며 아래는 한 예임)

$ ssh-keygen -t rsa $ cp rsa.pub authorized_keys 


! scp 설치시 no route to host라고 나오는 경우: 방화벽 때문에 안되는 것임
임시로 방화벽을 무력화하고 복사할 수 있다.

$ /etc/init.d/iptables stop

설정 파일 편집

master node의 slaves 파일 편집. 한줄에 노드이름 하나씩

 $ cd /home/nutch/search/conf
 $ vi slaves
 slave노드(IP가능)

hadoop-site.xml 파일 편집. mapred.map.tasks, mapred.reduce.tasks 두 가지 항목은 각 slave 노드에서도 수정해 줘야 함

 ser1> vi hadoop-site.xml
 mapred.map.tasks : 4
 mapred.reduce.tasks : 2
 dfs.replication : 2

Namenode 포맷

먼저 master 와 모든 slave노드에 hadoop-site.xml 파일에서 설정한 dir 를 생성해 놓아야 한다.(위의 설정에서는 /home/nutch/filesystem/ )
실행 전에 conf/hadoop-env.sh가 실행되면서 $JAVA_HOME등의 값이 변하므로 Java 디렉토리가 맞지 않아서 실행이 안되면, /etc/profile말고, hadoop/conf/hadoop-env.sh에서 수정해야 함

$ ./bin/hadoop namenode -format

데몬 실행

$ ./bin/start-all.sh

마스터와 슬레이브의 모든 데몬을 한꺼번에 실행

master-slave config test

$ ./bin/slaves.sh uptime

실행 후 콘솔 창에 각 노드의 데몬이 잘 올라왔는지 보고 각 서버의 로그 확인

관련링크 :
http://lucene.apache.org/hadoop/docs/current/quickstart.html
http://www.hadoop.co.kr/
http://www.joinc.co.kr/modules/moniwiki/wiki.php/JCvs/Search/Document/nutch/Hadoop

Posted by 컴바이블

BLOG main image
은진신랑 블로그 by 컴바이블

공지사항

카테고리

분류 전체보기 (31)
뉴스 (8)
검색엔진 (8)
프로그래밍 (3)
용어사전 (0)
일기장 (5)
즐겨찾기 (2)
스크랩 (2)
논문 (3)
취미 (0)
업무일지 (0)
리눅스 (0)

최근에 받은 트랙백

Total : 12,134
Today : 1 Yesterday : 0