공개 검색엔진 Nutch의 구조

정보검색 2007. 11. 1. 01:03 Posted by 지민아빠

Nutch는 자바로 구현된 오픈소스 검색엔진 입니다. Lucene이 Indexer 와 Searcher로 구성되어 있고, Nutch는 Lucene에 없는 웹검색에 필요한 모든 기본요소를 전부 갖추어서 웹검색 용으로 확장 한 것이라고 보면 될 것 같습니다. 그래서 Nutch Lucene 기반의 공개 웹검색 엔진입니다. Nutch는 많은 부분 구글 검색 엔진 구조를 목표로 하고 있습니다.

전체적인 구조는 일반적인 웹검색 시스템의 구조와 비슷한 것 같습니다.

사용자 삽입 이미지

Nutch의 구조는 그림과 같은데, 이걸 지금 제가 알고 있는 웹검색 시스템의 구조로 이해하기 위해서 대충 나누어 보면 아래처럼 나눌 수 있을 것 같습니다.

  1. Crawler
    • Nutch는 웹데이터 들을 효과적으로 가져올 수 있는 fetcher 들을 가지고 있습니다. 이를 통해서 목표로 하는 URL 들의 데이터를 수집하고, 이 작업은 목표로 하는 깊이까지 도착하면 멈춥니다.
  2. Repository
    • 수집된 웹 데이터 들은 Repository에 저장됩니다. Nutch에서는 특별히 Repository 라는 명칭을 사용하지는 않지만, WebDB와 Segment들이 여기에 해당 한다고 볼 수 있을 것 같습니다.
  3. Indexer
    • 수집된 데이터는 Lucene에서 사용 가능한 Index 형식으로 구성되어야 합니다.
  4. Searcher
    • 구성된 Index는 Lucene Searcher 에서 사용됩니다.

몇일 뒤에 어떤 고마운 분이 Nutch의 구조나 특징에 대하여 조사 한것을 설명 해 주실텐데 Nutch가 어떻게 생긴건지 전혀 몰라서 간단히 살펴 보았습니다. 이제 어느정도 설명을 들을 만한 최소한의 기본 준비는 한 것 같으니 이제 기다려야 겠군요. ^^


참고문헌:

Introduction to Nutch, Part 1: Crawling by Tom White 2006/01/10 번역본

Introduction to Nutch, Part 2: Searching by Tom White 2006/02/16

Nutch: Open-Source Web Search Software by Doug Cutting(doug@nutch.org) 2004/11/26

Open Source Search by Doug Cutting(cutting@apache.org) 2005/12/05

,

구글 페이지 랭크의 이해를 위한 간단설명

정보검색 2007. 10. 30. 14:57 Posted by 지민아빠
사용자 삽입 이미지
요즘 구글에서 페이지 랭크를 업데이트 하고 있다고, 소식이 들리고 있습니다. 들리는 소식에 의하면 블로그 쪽에 특화된 변화가 있다고 합니다만 아직 정확히 밝혀진 내용은 접해보지 못했습니다.

얼마전에 회사에서 Google's PageRank and Beyond 라는 책을 스터디 한 적이 있습니다. 역시 PageRank의 내용은 수학적인 내용이 거의 전부이기 때문에 수학에 취약한 본인은 다른분들의 도움을 받아서 겨우겨우 쫓아가는 것이 전부 였지만, PageRank의 개념을 이해하고 특성을 이해하는 데는 많은 도움이 되어 나름 뿌듯한 스터디 였습니다. ㅜ.ㅜ

구글의 PageRank라는 개념은 쉽게 이야기 해서 "사람들이 Link를 많이 거는 URL은 사람들이 많이 찾아가는 곳일 테고, 그 만큼 정확한 정보가 있는 곳일테니 URL의 랭킹값을 높게 주자." 라는 이론입니다. 이 것은 사람들이 실제로 어디를 얼마나 찾아가는지 모르기 때문에 이것을 계산하기 위하여 구글에서 개발한 방법입니다. 아마 실제로 사람들이 어디를 돌아다니는지 알 수 있으면 PageRank 보다 더 정확한 랭킹값을 계산 할 수 있을 거라고 생각 합니다.

실제로 구글에서 PageRank 를 어떤 값을 가지고 어떻게 계산하는지 전부 다 공개되어 있지는 않지만 추상적으로 보면 아래 그림과 같은 방법으로 계산 될 겁니다.
사용자 삽입 이미지
출처: How PageRank Works

이렇게 계산 된 값은 이론상 원래 하나의 URL당 하나의 상수값을 가지고 전체의 URL이 일렬로 주욱 순위별로 서 있는 형태를 가지게 됩니다. 그러므로 여러분의 블로그에 여러개의 글들은 전부다 PageRank 값을 가지고 있습니다. 다만 대부분 Top URL을 링크로 거는 경우가 많으므로 가장 널리 알려진 Top URL이 PageRank 값이 가장 높을 확률이 높습니다.
이 값을 보기 쉽게 0부터 10까지의 레벨로 표시한 값이 보통 '3'이네 '7'이네 하고 부르는 값이 됩니다. 레벨별로 분포는 보통 아래그림과 같다고 합니다.
사용자 삽입 이미지
분포를 보면 6레벨 이하의 값은 전세계 웹페이지 중에서 밑바닥 이군요. ㅜ.ㅜ (하지만 그래도 3.5 이상의 값을 가지면 Average에 속할 수 있습니다!!!)

여기까지 구글의 PageRank를 이해하기 위한 간단 설명이였습니다.
자아 마지막으로 Rank 9를 먹는 그날까지!! 고고~~
,

Mac OS X 의 부팅 순서 #3 - launchd

컨버전스 2007. 10. 10. 01:20 Posted by 지민아빠

이 글을 읽기전에 먼저 아래의 두개의 글을 읽고 PC의 BIOS 와 인탤맥의 EFI 펌웨어가 다르다는 것을 참고 하시면 좀 더 도움이 될 것 같다.

2007/10/09 - Mac OS X 의 부팅 순서 #2 - EFI
2007/10/08 - Mac OS X 의 부팅 순서 #1 - BIOS, APM

일단 펌웨어와 부트로더를 통해서 커널이 로딩되고 launchd 가 로딩 된다는데 까지는 위에서 언급 했다.

그 이후는 궁금했던 영역에서 벗어나는 관계로 살펴보지 않을 것이다. 그럼 Mac OS X 의 커널 과 유저랜드가 어떻게 생겼는지 좀 살펴 보면 대충 부팅 과정을 살펴 보는 것은 마무리가 될 것 같다.

다행이 이 부분은 요즘들어 많은 사람들이 iPhone 해킹에 관심을 가지면서 참고 할 만한 자료가 좀 있다.


사용자 삽입 이미지
이하는 iPhone OS X Architecture: the BSD Unix Userland글의 번역에서 관심 영역에 필요한 부분을 발췌해 아주 약간 재구성한 내용이다.

The Mac OS X Structure.

OS X 계열의 Kernel 은 모두 Mach Kernel 을 사용 한다. (Apple TV, iPhone, Mac OS X 전부 동일) 여기에는 Kernel Extension 이라는게 들어가게 된다. (참고로 iPhone에 사용된 두가지 종류의 kext는 USB 입력 과 VPN 이란다.) Mac OS X 의 맨 밑단에는 Kernel 이 있고 그 위에는 Mac OS X의 BSD 유닉스 환경이 놓여 있다. 커널 바깥쪽에서 돌아가는 프로세스는, 유닉스에서 유저랜드(userland)에서 돌아간다고 말한다. 맥에서 BSD 유닉스 유저랜드는 보통 데스크톱 사용자가 볼 수 없다. (콘솔을 띄워서만 볼 수 있다.)


The Mac OS X boot step.

일단 EFI 부트로더가 디스크로부터 커널을 읽어들여 RAM으로 불러들이면, 그 후, 커널은 kext를 읽고 BSD 유닉스 유저랜드를 설정한다. 평상시 부팅 과정에는 다중 사용자 환경도 여기에 포함되며, 로그인 창을 띄우게 된다. 특정 사용자가 로그인하면 맥 데스크톱 환경이 설정된다. 이 설정은 디렉토리 안에 저장된 사용자 설정에 따른다.


launchd

표준형 유닉스 배포폰과 맥에서 /bin은 머신 레벨 유닉스 애플리케이션(바이너리)이 있는 곳이다. 터미널셸인 bash나 파일복사인 cp, 파일 삭제인 rm 등이 들어있다. 여기에 launchd 명령을 내리는 launchctl 도 들어있다.

유닉스에서의 세 개의 도메인

  • 머신 레벨 소프트웨어: 모든 사용자용으로 설치
  • 시스템 레벨 소프트웨어: 시스템의 중요 기능 관련
  • 사용자 레벨 소프트웨어: 특정 사용자만으로 설치


표준형 유닉스 배포폰과 맥에서 /sbin은 시스템 레벨 유닉스 애플리케이션(시스템 바이너리)이 있는 곳이다. 디스크 확인용인 fsck와 네트워크 파이어월인 ipfw, 라우팅인 route, 디스크 파일시스템은 mount, 그리고 맥오에스텐 상의 launchd (프로세서 론쳐)가 들어 있다.  kextload 도 여기 들어 있다.


launchd는 여러 가지 유닉스 프로세스를 교체하기 위해 애플이 만들어낸 메커니즘이다. 그 대상은 다음과 같다.

  • 실행시, 혹은 사용자 로그인 시에 프로세스 시작
  • 일정에 따른 프로세스 시작
  • 경로 지정의 파일 변화에 따른 프로세스 시작
  • 리퀘스트의 요구에 따른 프로세스 시작
  • 로깅 레벨과 론치 아규먼트(argument)의 지정
  • 론치 환경 변수의 지정과 작업 디렉토리 프로세스
  • 리소스 제한과 권한 지정
launchd가 처음 소개된 것은 맥오에스텐 타이거이지만, crin이나 init, rc, scripts, inet, xinet, at, watchdog과 같은 기존 유닉스 프로세스도 계속 남아 있다. 그런데 레퍼드에서는 launchd만 남을 예정이다. 애플의 최신 레퍼드 OS 기술에 기반한 아이폰도 launchd만 사용한다.


애플은 또한 다른 유닉스 배포폰들이 쓰게 하기 위해, launchd를 공개하였다. 물론 리눅스 사용자들은 계속 원래 방식을 쓰는 것으로 보인다.
[launchd in Depth - AFP548]
[Leopard Wishlist: Launch Control]


부팅 과정에서 launchd 는

  1. /etc/rc 실행하고,
  2. /System/Library/LaunchAgents/Library/LaunchDaemons 부분을 실행 하고,
  3. login window를 시작 시킨다.

사용자 삽입 이미지

이 글은 스프링노트에서 작성되었습니다.

,
BLOG main image
지민아빠의 해처리

카테고리

분류 전체보기 (78)
블라블라 (7)
정보검색 (15)
컨버전스 (15)
우주전쟁 (41)

최근에 올라온 글

지민아빠의 해처리

지민아빠's Blog is powered by Tattertools
Copyright by 지민아빠 [ http://www.ringblog.com ]. All rights reserved.

Tattertools DesignMyself!
지민아빠's Blog is powered by Textcube. Designed by Qwer999.