블로그 이미지
홍신[弘信]

카테고리

분류 전체보기 (59)
보안 (34)
공부 (20)
영어 (4)
자바 (3)
하둡(Hadoop) (10)
그린IT (3)
개발 (0)
재테크 (0)
여행 (0)
문화 (1)
기록 (0)
나름 (3)
Total
Today
Yesterday

달력

« » 2025.1
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

공지사항

최근에 올라온 글

'공부/하둡(Hadoop)'에 해당되는 글 10건

  1. 2010.05.26 Hbase Configuration 3
  2. 2010.05.26 하둡 관련
  3. 2010.05.18 Hadoop Mapreduce Example - WordCount.java
  4. 2010.05.18 Hadoop Reference 1
  5. 2010.05.18 Hadoop Fully-Distributed Operation
  6. 2010.05.18 Hadoop Pseudo-Distributed Operation
  7. 2010.05.18 Hadoop Stand-Alone Operation
  8. 2010.05.18 Hadoop Preparation
  9. 2010.05.18 Hadoop Overview
  10. 2010.05.18 Hadoop Troubleshooting
환경 : hadoop-0.20.2.tar.gz / hbase-0.20.4.tar.gz

Hbase는 하둡에서 사용하는 데이터베이스 이다.

하둡 계정의 하둡 폴더에 하둡이 설치되었다면 경로는 다음과 같을 것이다.
/home/hadoop/hadoop

hbase를 Apache.org에서 다운받고 아래 경로에 압축을 해제하도록 한다.
/home/hadoop/hadoop/hbase

1. 파일 수정
1) /hbase/conf/hbase-env.sh
아래의 내용과 같이 자바홈과 하둡홈을 설정해준다
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk/
export HBASE_HOME=/home/hadoop/hadoop/hbase

2) /hbase/conf/hbase-site.xml
<configuration>
  <property>
    <name>hbase.master</name>
    <value>MASTER_IP:9000</value>
    <description>The host and port that the HBase master runs at.
    </description>
  </property>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://MASTER_IP:9000/hbase</value>
    <description>The directory shared by region servers.
    </description>
  </property>
</configuration>

3) /hadoop/conf/hadoop-env.sh
아래의 항목을 추가한다.
export HBASE_HOME=/home/hadoop/hadoop/hbase
export HADOOP_CLASSPATH=${HBASE_HOME}:${HBASE_HOME}/hbase-0.2.0.jar:${HBASE_HOME}/conf

2. 설정 파일 복사
1) /hadoop/conf/hdfs-site.xml, mapred-site.xml, core-site.xml 파일들을
    /hadoop/hbase/conf/ 로 복사한다. -> (하란대로 하긴 했는데 안해도 돌아가는지 확인은 안했음)

3.  regionservier 파일 생성
1) /hadoop/conf/slaves를 복사하여 regionservers 파일을 생성한다.
   $ cp /hadoop/conf/slaves regionservers

4. /hbase/lib에 있는 hadoop 버전을 맞춘다.
1) /hadoop/hadoop-0.20.2-core.jar = /hadoop/hbase/lib/hadoop-0.20.2-core.jar

5. hbase 실행
1) 실행 /hbase/bin/start-hbase.sh
hadoop@hadoop:~/hadoop/hbase/bin$ jps
5902 SecondaryNameNode
5976 JobTracker
8617 Jps
6132 TaskTracker
5584 NameNode
5746 DataNode
8281 HQuorumPeer
8340 HMaster
2) 중지 /hbase/bin/stop-hbase.sh
3) 검사 /hbase/bin/hbase [shell | migrate]

ref. http://tenny.egloos.com/2038390
Posted by 홍신[弘信]
, |

하둡 관련

공부/하둡(Hadoop) / 2010. 5. 26. 10:58

 하둡 프로세서 설명
http://gmyoul.tistory.com/entry/하둡-설치후-jps-로-본-프로세스-설명

Hadoop MapReduce의 가장 기본 예제 – WordCount -> 간략한 코드 설명
http://www.edwardkim.pe.kr/?p=66


Linux Hadoop HDFS에 읽고 쓰기 코드
http://www.cherrynet.co.kr/bbs_view.php?s=84&pseq=10&mnid=1

Beautiful Code의 23장 MapReduce를 이용한 분산 프로그래밍 내용 중에,
word count를 처리하기 위한 몇가지 시도들이 소개된다.
http://harebox.tistory.com/entry/Beautiful-Code-23장-예제-몇가지

하둡 스트리밍을 통한 아파치 쿼리 로그 분석
http://dm4ir.tistory.com/41

Posted by 홍신[弘信]
, |
Other people do this without any problems. However why I can't do this!!
That because there is some missing line at blogs and web pages which I found from google. Holy shit.

You can run with this command very nicely. Your welcome? No Sweat.



$ mkdir wordcount_classes
$ javac -classpath hadoop-0.20.2-core.jar -d wordcount_classes WordCount.java
$ jar cvf wordcount.jar -C wordcount_classes/ .

$ mkdir -p wordcount/input
$ echo "Hello Word Bye World" > wordcount/input/file01
$ echo "Hello Hadoop Goodbye Hadoop" > wordcount/input/file02
$ bin/hadoop fs -put wordcount/input wordcount/input
$ bin/hadoop dfs -ls wordcount/input/
Found 2 items
/usr/local/oss/hadoop-0.17.0/wordcount/input/file02     <r 1>   28      2008-08-05 01:44        rw-rw-r--       makoto  makoto
/usr/local/oss/hadoop-0.17.0/wordcount/input/file01     <r 1>   21      2008-08-05 01:45        rw-rw-r--       makoto  makoto

$ bin/hadoop dfs -cat wordcount/input/file01
Hello World By World
$ bin/hadoop dfs -cat wordcount/input/file02
Hello Hadoop GoodBye Hadoop

$ bin/hadoop jar wordcount.jar org.myorg.WordCount wordcount/input wordcount/output

$ bin/hadoop fs -ls wordcount/output
Found 2 items
drwxr-xr-x   - root supergroup          0 2010-01-05 17:46 /user/root/wordcount/output/_logs
-rw-r--r--   2 root supergroup         41 2010-01-05 17:46 /user/root/wordcount/output/part-00000

$ bin/hadoop fs -cat wordcount/output/part-00000
Bye     1
Goodbye 1
Hadoop  2
Hello   2
World   2

Reference (Examples from below sites are not perfect)
http://gmyoul.tistory.com/11
http://code.google.com/p/newtech/wiki/HadoopMapReduceFirstStep
Posted by 홍신[弘信]
, |

----------------------  WordCount -------------------------

http://blog.naver.com/PostView.nhn?blogId=kh_24&logNo=30085252376&redirect=Dlog&widgetTypeCall=true\
2대 이상 장비로 구축하는 Hadoop, hBase 분산 데이터 처리 시스템

http://nadayh.tistory.com/entry/Hadoop%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-Map-Reduce-%EC%98%88%EC%A0%9C-Counter-1
Hadoop을 이용한 Map Reduce예제 - Counter(1)

http://nadayh.tistory.com/entry/Hadoop을-이용한-Map-Reduce-예제-Distributed-Grep
Hadoop을 이용한 Map Reduce예제 - Distributed Grep

http://www.edwardkim.pe.kr/?p=66
Hadoop MapReduce의 가장 기본 예제 - WordCount - 코드 설명


----------------------- 하둡 설정 --------------------------

http://v-lad.org/tutorials/Hadoop/00%20-%20Intro.html
-> 윈도우환경에서 이클립스까지

http://www.michael-noll.com/wiki/Running_Hadoop_On_Ubuntu_Linux_%28Multi-Node_Cluster%29#Tutorial_approach_and_structure
-> 우분투에서 하둡 설정

http://mail-archives.apache.org/mod_mbox/hadoop-core-user/200808.mbox/%3C004d01c90747$ebfe3df0$1904050a@armukherjeelp%3E
-> cannot connect to the map reduce location eclipse

http://guru1013.egloos.com/category/hadoop
-> [한글] 설명 잘 되어 있음

http://www.jaso.co.kr/103
-> [한글] 설명 잘 되어 있음

기타
http://blog.ring.idv.tw/comment.ser?i=231
http://www.mail-archive.com/core-user@hadoop.apache.org/msg03053.html

Posted by 홍신[弘信]
, |
완전 분산 모드에서는 두대 이상의 컴퓨터를 이용해 실제 분산 환경을 구축한다.

우분투 10.04 LT 를 마스터, 윈도우 XP 32bit를 슬레이브로 완전 분산 모드를 구축해보았다.
윈도우 비스타, 7에서는 cygwin_sshd 서비스를 시작하는데 문제가 있어 xp를 사용하였다.

1. 마스터 파일 설정
1) conf/core-site.xml 파일 수정
<configuration>
  <property>
    <name>fs.default.name</name>
    <value>hdfs://마스터IP:9000</value>
  </property>
</configuration>

2) conf/hdfs-site.xml 파일 수정
<configuration>
<property>
<name>dfs.name.dir</name><value>/hdfs/name</value>
        </property>
        <property>
                 <name>dfs.data.dir</name><value>/hdfs/data</value>
        </property>
        <property>
                <name>dfs.replication</name><value>2</value>
        </property>
        <property>
                <name>dfs.block.size</name><value>1048576</value>
</property>
</configuration>

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>2</value>
  </property>
</configuration>

3) conf/mapred-site.xml 파일 수정
<configuration>
  <property>
    <name>mapred.job.tracker</name>
      <value>마스터ip:9001</value>
  </property>
  <property>
                <name>mapred.system.dir</name>
                  <value>/hdfs/mapreduce/system</value>
  </property>
  <property>
                <name>mapred.local.dir</name>
                  <value>/hdfs/mapreduce/local</value>
  </property>
</configuration>

4) masters 파일 수정
마스터ip

5) slaves 파일 수정
마스터ip
슬레이브ip

2. 슬레이브 파일 설정
1) conf/core-site.xml 파일 수정
<configuration>
  <property>
    <name>fs.default.name</name>
    <value>hdfs://마스터IP:9000</value>
  </property>
</configuration>

2) conf/hdfs-site.xml 파일 수정
<configuration>
<property>
                <name>dfs.name.dir</name>
                <value>/hdfs/name</value>
         </property>
         <property>
                 <name>dfs.data.dir</name>
                 <value>/hdfs/data</value>
         </property>
         <property>
                <name>dfs.replication</name>
                <value>2</value>
         </property>
         <property>
                <name>dfs.block.size</name>
                <value>1048576</value>
</property>
</configuration>

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>2</value>
  </property>
</configuration>

3) conf/mapred-site.xml 파일 수정
<configuration>
<property>
        <name>mapred.job.tracker </name>
        <value>슬레이브ip:9001</value>
</property>
<property>
        <name>mapred.system.dir</name>
        <value>/hdfs/mapreduce/system</value>
</property>
<property>
        <name>mapred.local.dir</name>
        <value>/hdfs/mapreduce/local</value>
</property>
</configuration>

4) masters, slaves
수정 안해도 됨

3. 암호문 없이 ssh 접속 가능하게 설정 (마스터와 슬레이브 모두 시행)
    (아래 명령어를 이용해 localhost를 신뢰관계로 등록한다.
$ ssh-keygen
 엔터
 엔터
 엔터
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

4. 상호간 ssh 접속 가능하게 설정
1) 서로 신뢰관계 등록
마스터의 ~/.ssh/authorized_keys에 슬레이브의 id_dsa.pub파일 내용을 붙인다.
슬레이브의 ~/.ssh/authorized_keys에 마스터의 id_dsa.pub파일 내용을 붙인다.

2) 포트 개방
윈도우 클라이언트의 방화벽에서 22번 포트를 예외로 등록한다.
리눅스 클라이언트의 방화벽에서 22번 포트를 예외로 등록한다.
(sudo apt-get install firestarter 명령어를 통해 firestarter를 설치하고 policy에 포트를 추가하면 된다.)

3) 테스트
마스터와 슬레이브에서 ssh 마스터, ssh 슬레이브 명령어를 통해 접속에 이상없는지
여부를 테스트 한다.

5. 실행
1) 마스터에서 새로운 분산 파일 시스템 포맷 (슬레이브에서는 실행안함)
$ bin/hadoop namenode -format

2) Hadoop 데몬 실행
$ bin/start-all.sh

4. 확인
1) jps 명령어를 통한 하둡 데몬 확인
$ jps
(마스터 - Jps, NameNode, SecondaryNameNode, TaskTracker, JobTracker, DataNode)
(슬레이브 - Jps, DataNode, TaskTracker)

2) 네임노드 및 잡 트랙커를 웹 브라우져를 통해 확인
http://localhost:50070/  - NameNode
http://localhost:50030/  - JobTracker

3) 테스트
$ ./bin/hadoop fs -put conf input
(인풋 파일을 분산 파일 시스템에 복사)
$ ./bin/hadoop jar hadoop-0.20.2-examples.jar grep input output 'dfs[a-z.]+'

3) 출력 파일 검사
$ bin/hadoop fs -get output output
(아웃풋 파일을 분산 파일 시스템에서 로컬 파일 시스템으로 복사)
$ cat output/*

or 분산 파일 시스템에서 아웃풋 파일을 직접 볼 수 있다.
$ bin/hadoop fs -cat output/*

5. 종료
$ bin/stop-all.sh
(데몬 종료)
Posted by 홍신[弘信]
, |
가상 분산 모드에서는 하둡 데몬이 여러개의 자바 프로세스를 동작 시킴으로써 싱글 노드에서 가상 분산 모드로 동작할 수 있게 해준다.

1. 가상 분산 모드를 위해서는 몇가지 파일을 수정해야 한다.

1) conf/core-site.xml 파일 수정
<configuration>
  <property>
    <name>fs.default.name</name>
    <value>hdfs://localhost:9000</value>
  </property>
</configuration>

2) conf/hdfs-site.xml 파일 수정
<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
</configuration>

3) conf/mapred-site.xml 파일 수정
<configuration>
  <property>
    <name>mapred.job.tracker</name>
    <value>localhost:9001</value>
  </property>
</configuration>

2. 암호문 없이 ssh 접속 가능하게 설정
    (아래 명령어를 이용해 localhost를 신뢰관계로 등록한다.
$ ssh-keygen
 엔터
 엔터
 엔터
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

3. 실행
1) 새로운 분산 파일 시스템 포맷
$ bin/hadoop namenode -format

2) Hadoop 데몬 실행
$ bin/start-all.sh

4. 확인
1) jps 명령어를 통한 하둡 데몬 확인
$ jps
(Jps, NameNode, SecondaryNameNode, TaskTracker, JobTracker, DataNode)

2) 네임노드 및 잡 트랙커를 웹 브라우져를 통해 확인
http://localhost:50070/  - NameNode
http://localhost:50030/  - JobTracker

3) 테스트
$ bin/hadoop fs -put conf input
(인풋 파일을 분산 파일 시스템에 복사)
$ bin/hadoop jar hadoop-*-examples.jar grep input output 'dfs[a-z.]+'

4) 출력 파일 검사
$ bin/hadoop fs -get output output
(아웃풋 파일을 분산 파일 시스템에서 로컬 파일 시스템으로 복사)
$ cat output/*

or 분산 파일 시스템에서 아웃풋 파일을 직접 볼 수 있다.
$ bin/hadoop fs -cat output/*

5. 종료
$ bin/stop-all.sh
(데몬 종료)
Posted by 홍신[弘信]
, |
하둡은 기본적으로 단독 작업 모드로 작동한다. (비분산 모드, 디버깅이 쉽다)

다음의 커맨드를 넣고 제대로 동작하는지 확인한다.

$ mkdir input
$ cp conf/*.xml input
$ bin/hadoop jar hadoop-*-examples.jar grep input output 'dfs[a-z.]+'
$ cat output/*

* 참고: http://guru1013.egloos.com/2582288
Posted by 홍신[弘信]
, |
하둡을 시작하기 위해 HDFS 환경을 구성한다.
개발 및 실행 플랫폼으로써 리눅스가 지원되며 윈도우 32비트 버전은 개발 플랫폼으로 지원된다. 분산 작업이 윈도우 환경에서 제대로 테스트 되지 않았기 때문에 실행 플랫폼으로는 지원하지 않는다.

1. 운영체제
리눅스에서 구현하기 위해서는 Ubuntu 10.04 LT를 추천한다.
윈도우에서 구현하기 위해서는 Cygwin이 필요하다.

2. 필수 프로그램
자바 1.5이상
ssh (cygwin에서는 패키지에서 openssh를 선택, 우분투에서는 시냅틱 관리자에서
      선택 후 설치한다.)

하둡의 최신 릴리즈를 다운로드 받는다. 현재 0.20.0이 최신이다.
http://hadoop.apache.org/hdfs/releases.html

자신의 홈디렉토리 아래 압축을 해제한 후,
conf/hadoop-env.sh 파일을 수정한다.

아래와 같이 자바홈을 명시해주고
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk

(윈도우 환경에서는 cygwin 설치 디렉토리에 가면 cygwin.bat파일을 수정하여
다음과 같이 자바홈을 등록한다.
set JAVA_HOME=/cygdrive/c/Java/jdk1.6.0_11
그리고 hadoop-env.sh에 다음과 같이 자바홈을 넣으면 된다.
export JAVA_HOME=$JAVA_HOME)

그리고 나서 ipv6를 사용하지 않도록 설정한다. (해줘야한다고 하는데 꼭 해야하는지는 의문)
동일파일 제일 아래나 아무곳에 삽입하면 된다.
export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true

CYGWIN에서 다음의 명령어를 실행하고 ssh서버를 실행한다.
# ssh-host-config
윈도우 - 실행 : services.msc (제어판->관리도구->서비스) 를 눌러 CYGWIN_SSHD를 시작한다.

이로써 하둡 클러스터를 실행할 준비가 끝났다.

하둡은 Stand-Alone Operation (단독작업 모드), Pseudo-Distributed Operation(가상 분산 작업)
Fully-Distributed Operation(완전 분산 작업)의 세가지 모드로 실행할 수 있으며 각각에 대한
설정방법을 알아보도록 하겠다.

참고: Hadoop Quickstart - http://hadoop.apache.org/hdfs/

Posted by 홍신[弘信]
, |

Hadoop Overview

공부/하둡(Hadoop) / 2010. 5. 18. 14:42
하둡(Hadoop)이란 방대한 데이터를 저장하고 처리하기 위한 오픈소스 분산 시스템이다. 우리나라의 클루넷이란 곳에서는 이 하둡을 이용해 스토리지 가상화 기술을 구현하였다. 야후에서는 검색 클러스터링으로 사용하고 있으며 2008년 1월에는 테라바이트를 정렬하는 벤치마크에서 야후의 하둡 클러스터가 상용 분산 시스템을 앞질렀다.

하둡의 아키텍쳐는 다음과 같이 구성된다.
  Nutch: Open Source Search Engine
  MapReduce: Distributed Data Processing
  HBase: Distributed Data Store
  HDFS: Distributed File System
  Commodity PC Server Cluster

MapReduce 프레임워크는 페타바이트 이상의 대용량 데이터를 신뢰할 수 없는 컴퓨터로 구성된 클러스터 환경에서 병렬처리를 지원하기 위한 일종의 함수형 프로그래밍으로 Map와 Reduce라는 함수를 기반으로 구성된다.
(자세히 알기를 원한다면 논문 참조 - Jeffrey Dean and Sanjay Ghemawat, "MapReduce:
Simplified Data Processing on Large Clusters", Google, inc)

HBase는 Hadoop의 HDFS를 지원하기 위한 구글의 BigTable 구현체이다.

하둡 분산 파일 시스템(HDFS)은 고가의 스토리지를 이용하지 않고 네트워크를 이용해 저가 디스크를 가상적으로 단일 파일시스템으로 묶어줄 수 있다. HDFS 에서는 파일을 64MB로 쪼개서 개별 서버에 분산 저장하며 Namenode는 파일 메타 정보를 저장하고 위치 정보를 알려주는 역할, Datanode는 실제 파일 블록을 저장하고 읽기/쓰기 요청을 직접 처리한다. 또한 데이터의 안정성을 보장하기 위해 하나의 블록을 세곳의 서버에 복사해 저장한다.

*마이크로 소프트웨어 3,4,5월호 "하둡을 이용한 분산 프로그래밍 시작하기" 참고
 imaso.co.kr에 가면 전자책으로 볼 수 있으며 pdf다운로드도 가능하다 (유료 - 500pt)


Posted by 홍신[弘信]
, |

1. 윈도우에서 계정을 생성하거나 비밀번호를 변경했을 때 CYGWIN에서 인식안될 경우가 있다. 다음의 명령어를 통해 해결가능하다.
$ mkpasswd -l > /etc/passwd

2. 잘됐었는데, 바꾼것도 없는데 bin/hadoop namenode -format 명령으로 네임노드 포맷이 안될경우, or in case of name node is not started

if format is aborted, press capital Y instead of small y.
DO NOT DELETE whole TMP Folder with this command (rm -rf * /tmp)

3. http://localhost:50070에 들어갔을 때 Live Nodes가 마스터+슬레이브 수보다 적을 때
윈도우 혹은 리눅스의 방화벽 때문에 통신이 이루어지지 못하고 있다는 증거
다음 포트들을 개방하라. (재부팅 필요없음)
ssh 22
dfs.datanode 50010
dfs.datanode.http 50075
dfs.datanode.ipc 50020
dfs.secondary.http 50090
mapred 9001
mapred.job.tracker.http 50030
mapred.task.tracker.http 50060
namenode 8020
namenode.http 50070
# 여기는 hod 에서 필요로 함
tracker 8030 (hdfs://namenode 방식을 사용할 때의 기본값 )
tracker info 50080
(mapred 포트는 설정 예제에서 사용한 값이고 나머지는 hadoop-default.xml 에 정의된 값들이다.)
ref) http://iam312.pe.kr/272

4. If data node is not started even though you typed start-all.sh,
rm -rf * /tmp/hadoop-hadoop/data/current/
Posted by 홍신[弘信]
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함