Hadoop 분산 컴퓨팅 아키텍처의 진정한 힘은 분배 기능에 있다. 다시 말해서, Hadoop은 작업을 많은 노드에 병렬로 분배하는 기능을 통해 대형 인프라로 확장할 수 있고 대용량 데이터를 처리할 수 있다. 먼저 이 분산 Hadoop 아키텍처를 자세히 설명한 후 분산 구성 및 사용에 대해 살펴본다.
모든 Hadoop 디먼이 동일한 호스트에서 실행되었던 이 시리즈의 Part 1을 다시 한번 생각해보자. Hadoop의 병렬 특성을 활용하지는 않지만 이 가상 분산 구성을 사용하면 최소한의 설정으로 Hadoop의 기능을 쉽게 테스트할 수 있다. 이제 여러 시스템으로 구성된 클러스터를 사용하여 Hadoop의 병렬 특성을 살펴보자.
Part 1의 Hadoop 구성에서는 모든 Hadoop 디먼이 단일 노드에서 실행되는 것으로 정의했다. 따라서 먼저 Hadoop이 병렬 작업을 위해 자연스럽게 분배되는 방법을 살펴보자. 분산 Hadoop 설정에서는 하나의 마스터 노드와 여러 개의 슬레이브 노드를 사용한다(그림 1 참조).
그림 1. Hadoop 마스터 및 슬레이브 노드
그림 1에서 보듯이 마스터 노드는 namenode, secondary namenode 및 jobtracker 디먼(소위 마스터 디먼)으로 구성되어 있다. 또한 이 기사의 데모에서는 이 노드에서 Hadoop 유틸리티 및 브라우저를 사용하여 클러스터를 관리한다. 슬레이브 노드는 jobtracker 및 datanode(슬레이브 디먼)로 구성되어 있다. 이 설정의 특징은 마스터 노드에 Hadoop 클러스터를 관리 및 조정하는 디먼이 있고, 슬레이브 노드에 HDFS(Hadoop file system)에 대한 저장소 함수와 MapReduce 기능(데이터 처리 함수)을 구현한 디먼이 있다는 것이다.
이 데모에서는 단일 LAN에 위치한 하나의 마스터 노드와 두 개의 슬레이브 노드를 작성한다. 이 설정은 그림 2와 같다. 이제 다중 노드 분배 및 구성을 위한 Hadoop의 설치를 살펴보자.
그림 2. Hadoop 클러스터 구성
배치를 단순화하기 위해 몇 가지 장점이 있는 가상화를 이용한다. 이 설정에서는 성능이 향상되지는 않지만 가상화를 사용하면 Hadoop 설치를 작성한 후 복제하여 다른 노드에 사용할 수 있다. 따라서 Hadoop 클러스터는 그림 3과 같이 구성되어야 한다. 즉, 단일 호스트에 있는 하이퍼바이저의 컨텍스트에서 마스터 및 슬레이브 노드가 VM(Virtual Machine)으로 실행되어야 한다(그림 3 참조).
그림 3. 가상 환경에 있는 Hadoop 클러스터 구성
Part 1에서는 단일 노드에서 실행되는 특별한 Hadoop 배포판을 설치했다(가상 구성). 이 기사에서는 분산 구성을 위해 업데이트한다. 이 시리즈를 이 기사부터 읽은 경우에는 먼저 Part 1을 보고 Hadoop 가상 구성을 설치한다.
가상 구성에서는 모든 구성이 단일 노드에 적합하게 미리 구성되어 있었기 때문에 어떠한
구성 작업도 수행하지 않았다. 이제 구성을 업데이트해야 한다. 먼저 Listing 1과 같이 update-alternatives
명령을 사용하여 현재 구성을 확인한다. 이 명령은 구성이 conf.pseudo(최상위 우선순위)를 사용하고 있음을
알려 준다.
Listing 1. 현재 Hadoop 구성 확인하기
$ update-alternatives --display hadoop-0.20-conf hadoop-0.20-conf - status is auto. link currently points to /etc/hadoop-0.20/conf.pseudo /etc/hadoop-0.20/conf.empty - priority 10 /etc/hadoop-0.20/conf.pseudo - priority 30 Current `best' version is /etc/hadoop-0.20/conf.pseudo. $ |
이제 다음과 같이 기존 구성(이 경우에는 conf.empty, Listing 1 참조)을 복사하여 새 구성을 작성한다.
$ sudo cp -r /etc/hadoop-0.20/conf.empty /etc/hadoop-0.20/conf.dist $ |
마지막으로 새 구성을 활성화하고 확인한다.
Listing 2. Hadoop 구성 활성화 및 확인하기
$ sudo update-alternatives --install /etc/hadoop-0.20/conf hadoop-0.20-conf \ /etc/hadoop-0.20/conf.dist 40 $ update-alternatives --display hadoop-0.20-conf hadoop-0.20-conf - status is auto. link currently points to /etc/hadoop-0.20/conf.dist /etc/hadoop-0.20/conf.empty - priority 10 /etc/hadoop-0.20/conf.pseudo - priority 30 /etc/hadoop-0.20/conf.dist - priority 40 Current `best' version is /etc/hadoop-0.20/conf.dist. $ |
이제 새로운 분산 구성에 사용할 conf.dist라는 새 구성이 작성되었다. 가상 환경에서 실행 중인 이 단계에서는 이 노드를 복제하여 데이터 노드로 사용할 두 개의 추가 노드를 작성한다.
다음 단계에서는 모든 노드가 서로 인식할 수 있도록 설정해야 한다. 이 작업은 마스터와 슬레이브라고 하는 /etc/hadoop-0.20/conf.dist 파일에서 수행한다. 이 예제에서 사용하는 세 개의 노드에는 /etc/hosts에서 다음과 같이 IP 주소가 정적으로 지정된다.
Listing 3. 이 설정을 위한 Hadoop 노드(/etc/hosts)
master 192.168.108.133 slave1 192.168.108.134 slave2 192.168.108.135 |
따라서 마스터 노드에서 다음과 같이 표시된 마스터 노드를 식별하도록 /etc/hadoop-0.20/conf.dist/masters를 업데이트한다.
master |
그런 다음 /etc/hadoop-0.20/conf.dist/slaves에서 슬레이브 노드를 식별한다. 이 구성에는 아래와 같은 2행이 포함되어 있다.
slave1 slave2 |
이제 각 노드에서 SSH(Secure Shell)을 통해 서로 다른 노드에 연결하여 비밀번호 문구를 사용하지 않는 ssh가 작동하는지 확인한다. 이러한 각 파일(masters, slaves)은 Hadoop이 이 시리즈의 Part 1에서 사용했던 유틸리티를 시작 및 중지하는 데 사용된다.
이제 /etc/hadoop-0.20/conf.dist 서브디렉토리에서 Hadoop 관련 구성을 수행할 차례이다. Hadoop 문서에 정의된 대로 모든 노드(마스터 및 두 슬레이브)에서 다음과 같은 변경 작업을 수행해야 한다. 먼저, core-site.xml(Listing 4) 파일에서 namenode의 호스트와 포트를 정의한 HDFS 마스터를 식별한다. (마스터 노드의 IP 주소를 기록한다.) core-site.xml 파일은 Hadoop의 핵심 특성을 정의한다.
Listing 4. core-site.xml에서 HDFS 마스터 정의하기
<configuration>
<property>
<name>fs.default.name<name>
<value>hdfs://master:54310<value>
<description>The name and URI of the default FS.</description>
<property>
<configuration>
|
다음으로 MapReduce jobtracker를 식별한다. 이 jobtracker는 자체 노드에 존재할 수 있지만 이 구성에서는 Listing 5와 같이 마스터 노드에 배치한다. mapred-site.xml 파일에 MapReduce 특성이 있다.
Listing 5. mapred-site.xml에서 MapReduce jobtracker 정의하기
<configuration>
<property>
<name>mapred.job.tracker<name>
<value>master:54311<value>
<description>Map Reduce jobtracker<description>
<property>
<configuration>
|
마지막으로 기본 복제 요소를 정의한다(Listing 6). 이 값은 작성할 복제의 수를 정의하며, 일반적으로 3 이하의 값이 사용된다. 이 경우에는 2(datanode의 수)로 정의한다. 이 값은 HDFS 특성이 있는 hdfs-site.xml에서 정의된다.
Listing 6. hdfs-site.xml에서 기본 데이터 복제 정의하기
<configuration>
<property>
<name>dfs.replication<name>
<value>2<value>
<description>Default block replication<description>
<property>
<configuration>
|
Listing 4, Listing 5 및 Listing 6에서 살펴본 구성 항목은 분산 설정을 위한 필수 요소이다. 여기에서 Hadoop은 전체 환경을 추적하는 데 사용할 수 있는 수많은 구성 옵션을 제공한다. 참고자료 섹션에서 사용할 수 있는 옵션에 대한 자세한 정보를 볼 수 있다.
구성을 완료한 후에는 namenode(HDFS 마스터 노드)의 형식을 지정해야
한다. 이 작업을 수행하기 위해 hadoop-0.20 유틸리티를
사용하여 다음과 같이 namenode와 작업(-format)을 지정한다.
Listing 7. namenode 형식 지정하기
user@master:~# sudo su - root@master:~# hadoop-0.20 namenode -format 10/05/11 18:39:58 INFO namenode.NameNode: STARTUP_MSG: /************************************************************ STARTUP_MSG: Starting NameNode STARTUP_MSG: host = master/127.0.1.1 STARTUP_MSG: args = [-format] STARTUP_MSG: version = 0.20.2+228 STARTUP_MSG: build = -r cfc3233ece0769b11af9add328261295aaf4d1ad; ************************************************************/ 10/05/11 18:39:59 INFO namenode.FSNamesystem: fsOwner=root,root 10/05/11 18:39:59 INFO namenode.FSNamesystem: supergroup=supergroup 10/05/11 18:39:59 INFO namenode.FSNamesystem: isPermissionEnabled=true 10/05/11 18:39:59 INFO common.Storage: Image file of size 94 saved in 0 seconds. 10/05/11 18:39:59 INFO common.Storage: Storage directory /tmp/hadoop-root/dfs/name has been successfully formatted. 10/05/11 18:39:59 INFO namenode.NameNode: SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at master/127.0.1.1 ************************************************************/ root@master:~# |
namenode의 형식을 지정한 후에는 Hadoop 디먼을 시작해야 한다. Part 1에서 수행했던
이전 가상 분산 구성과 동일한 작업을 수행하지만 이 프로세스는 분산 구성에 대해 동일한 결과를
제공한다. 이 코드는 jps 명령에 지정된 대로 namenode와 secondary
namenode를 시작한다.
Listing 8. namenode 시작하기
root@master:~# /usr/lib/hadoop-0.20/bin/start-dfs.sh starting namenode, logging to /usr/lib/hadoop-0.20/bin/../logs/hadoop-root-namenode-mtj-desktop.out 192.168.108.135: starting datanode, logging to /usr/lib/hadoop-0.20/bin/../logs/hadoop-root-datanode-mtj-desktop.out 192.168.108.134: starting datanode, logging to /usr/lib/hadoop-0.20/bin/../logs/hadoop-root-datanode-mtj-desktop.out 192.168.108.133: starting secondarynamenode, logging to /usr/lib/hadoop-0.20/logs/hadoop-root-secondarynamenode-mtj-desktop.out root@master:~# jps 7367 NameNode 7618 Jps 7522 SecondaryNameNode root@master:~# |
jps를 사용하여 슬레이브 노드(데이터 노드) 중 하나를
검사하면 이제 각 노드에 datanode 디먼이 있다는 것을 알 수 있다.
Listing 9. 슬레이브 노드 중 하나에서 datanode 검사하기
root@slave1:~# jps 10562 Jps 10451 DataNode root@slave1:~# |
다음 단계에서는 MapReduce 디먼(jobtracker 및 tasktracker)을 시작한다. 이
작업은 Listing 10처럼 수행한다. 이 스크립트는 구성에 정의된 대로
마스터 노드에서 jobtracker를 시작하고(Listing 5 참조) 각 슬레이브
노드에서 tasktracker를 시작한다. 마스터 노드의 jps 명령은
jobtracker가 실행되고 있음을 보여 준다.
Listing 10. MapReduce 디먼 시작하기
root@master:~# /usr/lib/hadoop-0.20/bin/start-mapred.sh starting jobtracker, logging to /usr/lib/hadoop-0.20/logs/hadoop-root-jobtracker-mtj-desktop.out 192.168.108.134: starting tasktracker, logging to /usr/lib/hadoop-0.20/bin/../logs/hadoop-root-tasktracker-mtj-desktop.out 192.168.108.135: starting tasktracker, logging to /usr/lib/hadoop-0.20/bin/../logs/hadoop-root-tasktracker-mtj-desktop.out root@master:~# jps 7367 NameNode 7842 JobTracker 7938 Jps 7522 SecondaryNameNode root@master:~# |
마지막으로 jps로 슬레이브 노드를 확인한다. 여기에서는
tasktracker 디먼이 datanode 디먼을 각 슬레이브 데이터 노드에 결합했음을 알 수 있다.
Listing 11. 슬레이브 노드 중 하나에서 datanode 검사하기
root@slave1:~# jps 7785 DataNode 8114 Jps 7991 TaskTracker root@slave1:~# |
그림 4에서는 시작 스크립트, 노드 및 시작된 디먼 간의 관계를 보여 준다. 이
그림을 보면 start-dfs 스크립트가 namenode와 datanode를 시작하고,
start-mapred 스크립트는 jobtracker와 tasktracker를 시작한다는
것을 알 수 있다.
그림 4. 시작 스크립트 및 디먼의 각 노드에 대한 관계
이제 Hadoop이 설정되어 클러스터에서 실행 중이므로 두 가지 테스트를 실행하여
Hadoop이 작동 중인지 확인할 수 있다(Listing 12 참조). 먼저, hadoop-0.20
유틸리티를 통해 파일 시스템 명령(fs)을 실행하고 df(디스크
해제) 작업을 요청한다. Linux®에서와 마찬가지로 이 명령은 단순히 특정 장치에 사용된
공간과 사용 가능한 공간을 식별한다. 따라서 새로 포맷한 파일 시스템을 사용하므로 사용된
공간이 없다. 그런 다음 HDFS의 루트에서 ls 작업을 수행하고,
서브디렉토리를 작성한 다음 디렉토리의 내용을 나열한 후 서브디렉토리를 제거한다. 마지막으로
hadoop-0.20 유틸리티 내에서 fsck 명령을
사용하여 HDFS에 대한 fsck(파일 시스템 검사)를 수행할 수 있다. 이
모든 작업의 결과는 다양한 여러 정보(예를 들어, 두 개의 datanode가 감지되었다는 정보)와 함께
파일 시스템의 상태가 정상임을 보여 준다.
Listing 12. HDFS 검사하기
root@master:~# hadoop-0.20 fs -df File system Size Used Avail Use% / 16078839808 73728 3490967552 0% root@master:~# hadoop-0.20 fs -ls / Found 1 items drwxr-xr-x - root supergroup 0 2010-05-12 12:16 /tmp root@master:~# hadoop-0.20 fs -mkdir test root@master:~# hadoop-0.20 fs -ls test root@master:~# hadoop-0.20 fs -rmr test Deleted hdfs://192.168.108.133:54310/user/root/test root@master:~# hadoop-0.20 fsck / .Status: HEALTHY Total size: 4 B Total dirs: 6 Total files: 1 Total blocks (validated): 1 (avg. block size 4 B) Minimally replicated blocks: 1 (100.0 %) Over-replicated blocks: 0 (0.0 %) Under-replicated blocks: 0 (0.0 %) Mis-replicated blocks: 0 (0.0 %) Default replication factor: 2 Average block replication: 2.0 Corrupt blocks: 0 Missing replicas: 0 (0.0 %) Number of data-nodes: 2 Number of racks: 1 The filesystem under path '/' is HEALTHY root@master:~# |
다음으로 MapReduce 작업을 수행하여 전체 설정이 올바르게 작동 중인지 확인한다(Listing
13 참조). 이 프로세스의 첫 번째 단계에서는 일부 데이터를 생성한다. 따라서, input이라는
입력 데이터를 저장할 디렉토리를 먼저 작성한다. 이 작업은 hadoop-0.20
유틸리티 내에서 mkdir 명령으로 수행한다. 그런 다음 hadoop-0.20의
put 명령을 사용하여 두 개의 파일을 HDFS에 저장한다. Hadoop 유틸리티의
ls 명령을 사용하여 input 디렉토리의 내용을 확인할 수 있다.
Listing 13. 입력 데이터 생성하기
root@master:~# hadoop-0.20 fs -mkdir input root@master:~# hadoop-0.20 fs -put \ /usr/src/linux-source-2.6.27/Doc*/memory-barriers.txt input root@master:~# hadoop-0.20 fs -put \ /usr/src/linux-source-2.6.27/Doc*/rt-mutex-design.txt input root@master:~# hadoop-0.20 fs -ls input Found 2 items -rw-r--r-- 2 root supergroup 78031 2010-05-12 14:16 /user/root/input/memory-barriers.txt -rw-r--r-- 2 root supergroup 33567 2010-05-12 14:16 /user/root/input/rt-mutex-design.txt root@master:~# |
다음으로 wordcount MapReduce 작업을 시작한다. 가상 분산 모델에서와 같이 입력 파일이 있는 입력 서브디렉토리와 출력 디렉토리(아직 존재하지 않지만 namenode에 의해 작성되고 결과 데이터가 저장되는 디렉토리)를 지정한다.
Listing 14. 클러스터에서 MapReduce wordcount 작업 실행하기
root@master:~# hadoop-0.20 jar \ /usr/lib/hadoop-0.20/hadoop-0.20.2+228-examples.jar wordcount input output 10/05/12 19:04:37 INFO input.FileInputFormat: Total input paths to process : 2 10/05/12 19:04:38 INFO mapred.JobClient: Running job: job_201005121900_0001 10/05/12 19:04:39 INFO mapred.JobClient: map 0% reduce 0% 10/05/12 19:04:59 INFO mapred.JobClient: map 50% reduce 0% 10/05/12 19:05:08 INFO mapred.JobClient: map 100% reduce 16% 10/05/12 19:05:17 INFO mapred.JobClient: map 100% reduce 100% 10/05/12 19:05:19 INFO mapred.JobClient: Job complete: job_201005121900_0001 10/05/12 19:05:19 INFO mapred.JobClient: Counters: 17 10/05/12 19:05:19 INFO mapred.JobClient: Job Counters 10/05/12 19:05:19 INFO mapred.JobClient: Launched reduce tasks=1 10/05/12 19:05:19 INFO mapred.JobClient: Launched map tasks=2 10/05/12 19:05:19 INFO mapred.JobClient: Data-local map tasks=2 10/05/12 19:05:19 INFO mapred.JobClient: FileSystemCounters 10/05/12 19:05:19 INFO mapred.JobClient: FILE_BYTES_READ=47556 10/05/12 19:05:19 INFO mapred.JobClient: HDFS_BYTES_READ=111598 10/05/12 19:05:19 INFO mapred.JobClient: FILE_BYTES_WRITTEN=95182 10/05/12 19:05:19 INFO mapred.JobClient: HDFS_BYTES_WRITTEN=30949 10/05/12 19:05:19 INFO mapred.JobClient: Map-Reduce Framework 10/05/12 19:05:19 INFO mapred.JobClient: Reduce input groups=2974 10/05/12 19:05:19 INFO mapred.JobClient: Combine output records=3381 10/05/12 19:05:19 INFO mapred.JobClient: Map input records=2937 10/05/12 19:05:19 INFO mapred.JobClient: Reduce shuffle bytes=47562 10/05/12 19:05:19 INFO mapred.JobClient: Reduce output records=2974 10/05/12 19:05:19 INFO mapred.JobClient: Spilled Records=6762 10/05/12 19:05:19 INFO mapred.JobClient: Map output bytes=168718 10/05/12 19:05:19 INFO mapred.JobClient: Combine input records=17457 10/05/12 19:05:19 INFO mapred.JobClient: Map output records=17457 10/05/12 19:05:19 INFO mapred.JobClient: Reduce input records=3381 root@master:~# |
마지막으로 출력 데이터를 살펴본다. wordcount MapReduce 작업을 실행했으므로 결과적으로 단일 파일이 생성된다(처리된 맵핑 파일에서 축소됨). 이 파일에는 입력 파일에서 검색된 단어와 모든 입력 파일에서 단어가 표시된 횟수를 나타내는 항목 목록이 있다.
Listing 15. MapReduce 작업의 출력 검사하기
root@master:~# hadoop-0.20 fs -ls output Found 2 items drwxr-xr-x - root supergroup 0 2010-05-12 19:04 /user/root/output/_logs -rw-r--r-- 2 root supergroup 30949 2010-05-12 19:05 /user/root/output/part-r-00000 root@master:~# hadoop-0.20 fs -cat output/part-r-00000 | head -13 != 1 "Atomic 2 "Cache 2 "Control 1 "Examples 1 "Has 7 "Inter-CPU 1 "LOAD 1 "LOCK" 1 "Locking 1 "Locks 1 "MMIO 1 "Pending 5 root@master:~# |
hadoop-0.20 유틸리티가 매우 다양한 기능을 제공하고
유용하기는 하지만 GUI를 사용하는 것이 더 편할 때도 있다. http://master:50070을 통해 파일
시스템 검사에 대한 namenode에 연결할 수 있고 http://master:50030을 통해 jobtracker에 연결할
수 있다. 그림 5와 같이 namenode를 통해 HDFS를 검사할 수 있다. 여기에서는 input 디렉토리(입력
데이터가 있는 디렉토리, Listing 13 참조)를 검사하고 있다.
그림 5. namenode를 통해 HDFS 검사하기
jobtracker를 통해 실행 중이거나 완료된 작업을 검사할 수 있다. 그림 6에서는 마지막 작업(Listing 14의)에 대한 검사를 볼 수 있다. 이 그림에서는 JAR(Java archive) 요청에 대한 출력으로 표시되는 다양한 데이터뿐만 아니라 태스크 상태 및 수를 보여 준다. 여기에서는 두 개의 맵핑 태스크(입력 파일당 하나의 태스크)와 한 개의 축소 태스크(두 개의 맵핑 입력을 축소하기 위해)가 수행되었다.
그림 6. 완료된 작업의 상태 검사하기
마지막으로 namenode를 통해 datanode의 상태를 검사할 수 있다. namenode 기본 페이지에는 활동 중인 노드와 종료된 노드의 수가 표시되며(링크로서) 이 페이지를 통해 노드를 자세히 검사할 수 있다. 그림 7에 표시된 페이지에서는 활동 중인 datanode와 각 노드에 대한 통계를 보여 준다.
그림 7. 활동 중인 datanode의 상태 검사하기
namenode 및 jobtracker 웹 인터페이스를 통해 다른 여러 보기를 볼 수 있지만 여기에서는 간단하게 이 샘플 세트만 살펴보았다. namenode 및 jobtracker 웹 페이지 내에는 Hadoop 구성 및 작업(런타임 로그 포함)에 대한 추가 정보를 볼 수 있는 수많은 링크가 있다.
이 기사에서는 Cloudera의 가상 분산 구성을 완전 분산 구성으로 전환하는 방법을 살펴보았다. 놀랍게도 MapReduce 애플리케이션과 동일한 인터페이스를 사용하여 몇 단계만을 수행하여 Hadoop을 분산 처리에 유용한 도구로 만들 수 있었다. 또한 Hadoop의 확장성을 살펴보는 것도 흥미로웠다. 새 datanode를 추가하여(마스터에 있는 XML 파일 및 슬레이브 파일을 업데이트하는 작업과 함께) 손쉽게 더 높은 수준의 병렬 처리를 위한 Hadoop으로 확장할 수 있다. 이 Hadoop 시리즈의 마지막 기사인 Part 3에서는 Hadoop용 MapReduce 애플리케이션을 개발하는 방법에 대해 살펴본다.
교육
- 이 시리즈의 Part 1인 Hadoop을
이용한 분산 데이터 처리, Part 1: 시작(developerWorks, 2010년 5월)에서는 가상 분산 구성(다시 말해서, 단일 노드에서 모든 디먼을 실행하는 구성)을
위해 Hadoop을 설치하는 방법을 설명한다.
- 이 시리즈에서 사용한 Cloudera
배포판은 설치 가능한 패키지부터 소스 또는 VM에 이르는 다양한 폼 팩터로 제공된다. Cloudera의 기본 사이트에서 Cloudera에 대한 자세한 정보를 볼 수 있다. 또한 Cloudera에서는 Hadoop
설치 및 사용에 관한 다양한 문서를 제공하고 있으며, Hadoop의 대량 데이터 세트 조작 언어인 Pig와
Hadoop 기반의 데이터 웨어하우스 인프라인 Hive에 대한 문서도 제공한다.
- Apache.org의 Cluster
Setup 페이지에서 core-site.xml, mapred-site.xml 및 hdfs-site.xml의 전체 특성 목록을 볼 수 있다.
- Michael Noll이 제공하는 Hadoop
사용과 관련된 유용한 자원과 기타 흥미로운 주제를 살펴보자.
- Yahoo! DEVELOPER NETWORK에서
Hadoop에 관한 유용한 자원 세트를 볼 수 있다. 특히,
Yahoo! Hadoop Tutorial에서는
Hadoop을 소개하고 Hadoop의 사용 및 구성에 대해 자세히 설명하고 있다.
- "Distributed
computing with Linux and Hadoop"(developerWorks, 2008년 12월) 및 최근의 "Linux와
Apache Hadoop을 사용한 클라우드 컴퓨팅"(developerWorks, 2009년 10월)에서 Hadoop 및 아키텍처에 대한 자세한 정보를 볼 수 있다.
-
developerWorks 리눅스 영역에서는
Linux 개발자와 관리자에게 도움이 되는 수백 편의 사용법
기사 및 튜토리얼과 다운로드, 토론 포럼 및 기타 다양한 참고자료를 볼 수 있다.
-
developerWorks
기술 행사 및 웹 캐스트를 통해 다양한 IBM 제품 및 IT 산업 주제에 대한 최신 정보를 얻을 수 있다.
-
무료 developerWorks Live!
briefing을 통해 최신 IBM 제품 및 도구에 대한 정보뿐만 아니라 IT 업계의 최신 경향까지도 빠르게 확인할 수 있다.
-
developerWorks
on-demand demos에서는 입문자를 위한 제품 설치 및 설정부터 숙련된 개발자를 위한 고급 기능까지 망라된 다양한 데모를 제공한다.
-
Twitter의 developerWorks를 팔로우(follow)하거나
developerWorks에 대한 Linux 트윗(tweet)의 피드를 구독하자.
제품 및 기술 얻기
-
Hadoop은 Apache Software Foundation을 통해 개발되었다.
-
자신에게 가장 적합한 방법으로 IBM 제품을 평가해 보자.
시험판 제품을 다운로드하거나 온라인으로 제품을 사용해 보거나 클라우드 환경에서 제품을 사용하거나
SOA Sandbox에서
SOA(Service Oriented Architecture)를 효과적으로 구현하는 방법을 배울 수 있다.
토론
-
My developerWorks 커뮤니티에 참여하자.
개발자가 이끌고 있는 블로그, 포럼, 그룹 및 위키를 살펴보면서 다른 developerWorks 사용자와 의견을 나눌 수 있다.

M. Tim Jones is an embedded firmware architect and the author of Artificial Intelligence: A Systems Approach, GNU/Linux Application Programming, AI Application Programming, and BSD Sockets Programming from a Multi-language Perspective. His engineering background ranges from the development of kernels for geosynchronous spacecraft to embedded systems architecture and networking protocols development. He is a senior architect for Emulex Corp. in Longmont, Colo.