1장. 하둡 개발 준비
1) 실행모드 결정
- 가상머신 2대 : VMware Workstation 12 Pro 12.1.1 build-3770994
- OS : CentOS 6.8
- 네트워크 : NAT(192.168.0.0/24 대역)
노드1 IP : 192.168.10.66/24, hostname : hdstudy01
노드2 IP : 192.168.10.67/24, hostname : hdstudy02
게이트웨이 : 192.168.10.2 (VM NAT구성)
- 유저 : hduser
- 유저 : hduser
2) 리눅스 서버준비
- CentOS 6.8 다운 www.centos.org Everything 버전
http://centos.mirror.cdnetworks.com
http://centos.mirror.cdnetworks.com
3) 하둡 다운로드
- 홈페이지 : http://hadoop.apache.org/
- Stable1 버전의 tar.gz 파일 다운
https://archive.apache.org/dist/hadoop/common/stable1/hadoop-1.2.1.tar.gz
- 홈페이지 : http://hadoop.apache.org/
- Stable1 버전의 tar.gz 파일 다운
https://archive.apache.org/dist/hadoop/common/stable1/hadoop-1.2.1.tar.gz
4) 하둡 실행 계정 생성
# useradd hduser
# passwd hduser
# useradd hduser
# passwd hduser
5) 호스트 파일 수정
#vi /etc/hosts
127.0.0.1 hdstudy01 localhost (노드2에서는 hdstudy02)
192.168.10.66 hdstudy01
192.168.10.67 hdstudy02
6) 인코딩 방식 설정
# su - hduser
$ echo $LANG (또는 #locale)
ko_KR.UTF-8
로 나오는지 확인 후 아닐경우,
# su -
# vi /etc/sysconfig/i18n
LANGUAGE=ko_KR.UTF-8:ko
LANG=ko_KR.UTF-8
로 변경 저장종료
#source /etc/sysconfig/i18n
로 스크립트 실행
# su - hduser
$ echo $LANG (또는 #locale)
ko_KR.UTF-8
로 나오는지 확인 후 아닐경우,
# su -
# vi /etc/sysconfig/i18n
LANGUAGE=ko_KR.UTF-8:ko
LANG=ko_KR.UTF-8
로 변경 저장종료
#source /etc/sysconfig/i18n
로 스크립트 실행
7) 자바 설치
- 오라클 홈페이지 자바다운로드 페이지 접속
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
- OS 아키텍처 비트수 확인하여 다운로드
# getconf WORD_BIT
# getconf LONG_BIT
- FTP 전송프로그램으로 자바설치파일 이동
/home/hduser 경로로 ftp 전송
- 자바 설치
#cd /home/hduser
#rpm -Uvh jdk-8u131-linux-x64.rpm
#cd /usr/java/latest (설치 확인)
- 환경변수 설정
#vi /etc/profile (환경변수 수정)
(아래 내용 추가)
export JAVA_HOME=/usr/java/latest
export PATH=$PATH:$JAVA_HOME/bin
export CLASS_PATH="."
- 오라클 홈페이지 자바다운로드 페이지 접속
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
- OS 아키텍처 비트수 확인하여 다운로드
# getconf WORD_BIT
# getconf LONG_BIT
You must accept the Oracle Binary Code License Agreement for Java SE to download this software.
Thank you for accepting the Oracle Binary Code License Agreement for Java SE; you may now download this software.
| ||
---|---|---|
Product / File Description | File Size | Download |
Linux ARM 32 Hard Float ABI | 77.87 MB | jdk-8u131-linux-arm32-vfp-hflt.tar.gz |
Linux ARM 64 Hard Float ABI | 74.81 MB | jdk-8u131-linux-arm64-vfp-hflt.tar.gz |
Linux x86 | 164.66 MB | jdk-8u131-linux-i586.rpm |
Linux x86 | 179.39 MB | jdk-8u131-linux-i586.tar.gz |
Linux x64 | 162.11 MB | jdk-8u131-linux-x64.rpm |
/home/hduser 경로로 ftp 전송
- 자바 설치
#cd /home/hduser
#rpm -Uvh jdk-8u131-linux-x64.rpm
#cd /usr/java/latest (설치 확인)
- 환경변수 설정
#vi /etc/profile (환경변수 수정)
(아래 내용 추가)
export JAVA_HOME=/usr/java/latest
export PATH=$PATH:$JAVA_HOME/bin
export CLASS_PATH="."
# . /etc/profile (환경변수 적용)
# java -version (환경변수 정상적용확인)
8) SSH 설정
# su - hduser
[hduser@hdstudy01]$ cd .ssh
[hduser@hdstudy01 .ssh]$ ssh-keygen -t rsa
[hduser@hdstudy01 .ssh]$ ssh-copy-id -i /home/hduser/.ssh/id_rsa.pub hduser@hdstudy02
[hduser@hdstudy01 .ssh]$ ssh hduser@hdstudy02
# su - hduser
[hduser@hdstudy01]$ cd .ssh
[hduser@hdstudy01 .ssh]$ ssh-keygen -t rsa
[hduser@hdstudy01 .ssh]$ ssh-copy-id -i /home/hduser/.ssh/id_rsa.pub hduser@hdstudy02
[hduser@hdstudy01 .ssh]$ ssh hduser@hdstudy02
(hdstudy02노드에서도 동일하게 진행)
9) 하둡 설치 및 심볼릭링크 생성 (hdstudy01에서만 진행)
- FTP 전송프로그램으로 하둡압축파일 이동
/home/hduser 경로로 ftp 전송
- 압축 해제(hduser로 진행)
$ tar xvfz hadoop-1.2.1.tar.gz
$ ln -s hadoop-1.2.1/ hadoop
- FTP 전송프로그램으로 하둡압축파일 이동
/home/hduser 경로로 ftp 전송
- 압축 해제(hduser로 진행)
$ tar xvfz hadoop-1.2.1.tar.gz
$ ln -s hadoop-1.2.1/ hadoop
10) 하둡 환경설정 6개파일 수정
* 환경변수 설정
$ cd /home/hduser
$ vi .bash_profile
(아래 내용 추가/변경)
export HADOOP_HOME=/home/hduser/hadoop
PATH=$PATH:$HOME/bin:$HADOOP_HOME/bin
export PATH
unset USERNAME
* 환경변수 설정
$ cd /home/hduser
$ vi .bash_profile
(아래 내용 추가/변경)
export HADOOP_HOME=/home/hduser/hadoop
PATH=$PATH:$HOME/bin:$HADOOP_HOME/bin
export PATH
unset USERNAME
$ cd ./hadoop/conf
* 하둡 환경설정
$ vi hadoop-env.sh
- 자바홈 경로
export JAVA_HOME=/usr/java/latest
- 하둡홈 경로
export HADOOP_HOME=/home/hduser/hadoop
- 하둡홈 WARN SUPPRESS 옵션 (하둡 홈 경로 패스설정시 오류 방지)
export HADOOP_HOME_WARN_SUPPRESS="TRUE"
- 추가 설정
export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true
export HADOOP_CONF_DIR=$HADOOP_HOME/conf
- 네임노드 옵션
export HADOOP_NAMENODE_OPTS="-Dcom.sum.management.jmxremote $HADOOP_NAMENODE_OPTS"
- 네임노드 병렬가비지컬렉션 수행 옵션
export HADOOP_NAMENODE_OPTS="-XX:+UseParallelGC $HADOOP_NAMENODE_OPTS"
- 네임노드의 최대 힙사이즈 변경 옵션
export HADOOP_NAMENODE_OPTS="-Xmx2048m $HADOOP_NAMENODE_OPTS"
- 보조네임노드 옵션
export HADOOP_SECONDARYNAMENODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_SECONDARYNAMENODE_OPTS"
- 보조네임노드도 힙사이즈 네임노드와 동일하게 설정해야함
export HADOOP_SECONDARYNAMENODE_OPTS="-Xmx2048m $HADOOP_SECONDARYNAMENODE_OPTS"
- 데이터노드 옵션
export HADOOP_DATANODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_DATANODE_OPTS"
*masters / slaves 파일
$ vi masters
hdstudy01
$ vi slaves
hdstudy02
※ 보조네임노드로 사용할 서버를 한줄에 하나씩 입력
* core-site.xml
$vi core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hdstudy01:9000</value> (이 값을 통해 네임노드주소를 알고 heartbit나 blockreport를 보냄)
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hduser/hadoop-data</value> (하둡에서 발생한 임시데이터를 저장하는 공간, 디렉토리는 생성해 주어야함)
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
* hdfs-site.xml 설정
$vi hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name> (hdfs에 저장될 데이터 복제본 개수)
<value>1</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>~/hadoop/dfs/name/data</value>
<final>true</final>
</property>
<property>
<name>dfs.name.dir</name>
<value>~/hadoop/dfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.http.address</name> (name노드용 웹서버의 주소값)
<value>hdstudy01:50070</value>
</property>
<property>
<name>dfs.secondary.http.address</name>(보조name노드용 웹서버의 주소값)
<value>hdstudy02:50090</value>
</property>
</configuration>
*mapred-site.xml 설정
$ vi mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name> (맵리튜스 작업 요청 주소)
<value>hdstudy01:9001</value>
</property>
</configuration>
* 네임노드 하둡디렉토리 → 데이터노드 복사
$ cd ~
[hduser@hdstudy01 ~]$ tar cvfz hadoop.tar.gz hadoop-1.2.1
[hduser@hdstudy01 ~]$ scp hadoop.tar.gz hduser@hdstudy02:/home/hduser
[hduser@hdstudy02 ~]$ tar xvfz hadoop.tar.gz
[hduser@hdstudy02 ~]$ ln -s hadoop-1.2.1/ hadoop
11) 하둡 실행
※방화벽 확인
$ su -
# service iptables stop
# chkconfig iptables off
- 네임노드 초기화
# su - hduser
$ hadoop namenode -format
- 하둡 관련 데몬 시작
$ start-all.sh
(모든 데몬 중지시, $ stop-all.sh)
(별도로 실행/중시시, $ hadoop-daemon.sh start(stop) tasktracker
- 데몬 확인
[hduser@hdstudy01 ~]$ jps
66901 Jps
66628 JobTracker
66461 NameNode
※ hdstudy01 네임노드 웹브라우저에 hdstudy01:50070/dfshealth.jsp 입력
hdfs용량, 데이터노드 개수, 기본적인 hdfs 상태 정보, 네임노드의 하둡로그, hdfs에 저장된 파일 조회 가능
* 하둡 환경설정
$ vi hadoop-env.sh
- 자바홈 경로
export JAVA_HOME=/usr/java/latest
- 하둡홈 경로
export HADOOP_HOME=/home/hduser/hadoop
- 하둡홈 WARN SUPPRESS 옵션 (하둡 홈 경로 패스설정시 오류 방지)
export HADOOP_HOME_WARN_SUPPRESS="TRUE"
- 추가 설정
export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true
export HADOOP_CONF_DIR=$HADOOP_HOME/conf
- 네임노드 옵션
export HADOOP_NAMENODE_OPTS="-Dcom.sum.management.jmxremote $HADOOP_NAMENODE_OPTS"
- 네임노드 병렬가비지컬렉션 수행 옵션
export HADOOP_NAMENODE_OPTS="-XX:+UseParallelGC $HADOOP_NAMENODE_OPTS"
- 네임노드의 최대 힙사이즈 변경 옵션
export HADOOP_NAMENODE_OPTS="-Xmx2048m $HADOOP_NAMENODE_OPTS"
- 보조네임노드 옵션
export HADOOP_SECONDARYNAMENODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_SECONDARYNAMENODE_OPTS"
- 보조네임노드도 힙사이즈 네임노드와 동일하게 설정해야함
export HADOOP_SECONDARYNAMENODE_OPTS="-Xmx2048m $HADOOP_SECONDARYNAMENODE_OPTS"
- 데이터노드 옵션
export HADOOP_DATANODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_DATANODE_OPTS"
*masters / slaves 파일
$ vi masters
hdstudy01
$ vi slaves
hdstudy02
※ 보조네임노드로 사용할 서버를 한줄에 하나씩 입력
* core-site.xml
$vi core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hdstudy01:9000</value> (이 값을 통해 네임노드주소를 알고 heartbit나 blockreport를 보냄)
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hduser/hadoop-data</value> (하둡에서 발생한 임시데이터를 저장하는 공간, 디렉토리는 생성해 주어야함)
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
* hdfs-site.xml 설정
$vi hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name> (hdfs에 저장될 데이터 복제본 개수)
<value>1</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>~/hadoop/dfs/name/data</value>
<final>true</final>
</property>
<property>
<name>dfs.name.dir</name>
<value>~/hadoop/dfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.http.address</name> (name노드용 웹서버의 주소값)
<value>hdstudy01:50070</value>
</property>
<property>
<name>dfs.secondary.http.address</name>(보조name노드용 웹서버의 주소값)
<value>hdstudy02:50090</value>
</property>
</configuration>
*mapred-site.xml 설정
$ vi mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name> (맵리튜스 작업 요청 주소)
<value>hdstudy01:9001</value>
</property>
</configuration>
* 네임노드 하둡디렉토리 → 데이터노드 복사
$ cd ~
[hduser@hdstudy01 ~]$ tar cvfz hadoop.tar.gz hadoop-1.2.1
[hduser@hdstudy01 ~]$ scp hadoop.tar.gz hduser@hdstudy02:/home/hduser
[hduser@hdstudy02 ~]$ tar xvfz hadoop.tar.gz
[hduser@hdstudy02 ~]$ ln -s hadoop-1.2.1/ hadoop
11) 하둡 실행
※방화벽 확인
$ su -
# service iptables stop
# chkconfig iptables off
- 네임노드 초기화
# su - hduser
$ hadoop namenode -format
- 하둡 관련 데몬 시작
$ start-all.sh
(모든 데몬 중지시, $ stop-all.sh)
(별도로 실행/중시시, $ hadoop-daemon.sh start(stop) tasktracker
- 데몬 확인
[hduser@hdstudy01 ~]$ jps
66901 Jps
66628 JobTracker
66461 NameNode
[hduser@hdstudy02 ~]$ jps
54240 TaskTracker
54066 DataNode
54155 SecondaryNameNode
54366 Jps
hdfs용량, 데이터노드 개수, 기본적인 hdfs 상태 정보, 네임노드의 하둡로그, hdfs에 저장된 파일 조회 가능
12) 예제 실행
$ hadoop fs -put ~/hadoop/conf/hadoop-env.sh ~/hadoop/conf/hadoop-env.sh
(여기서 안되면 포트가 닫혀있을 가능성이 있으므로, 방화벽 다시 확인)
$ hadoop jar hadoop-examp*.jar wordcount ~/hadoop/conf/hadoop-env.sh wordcount_output
$ hadoop fs -put ~/hadoop/conf/hadoop-env.sh ~/hadoop/conf/hadoop-env.sh
(여기서 안되면 포트가 닫혀있을 가능성이 있으므로, 방화벽 다시 확인)
$ hadoop jar hadoop-examp*.jar wordcount ~/hadoop/conf/hadoop-env.sh wordcount_output
13) 이클립스 설정
- 이클립스 다운로드
http://www.eclipse.org/downloads/
- 이클립스 다운로드
http://www.eclipse.org/downloads/
14) 프로젝트 빌드
- 프로젝트 생성
-jar파일 가져오기
- build.xml 파일 생성
-완료
-jar파일 가져오기
- build.xml 파일 생성
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
<?xml version="1.0" encoding="utf-8"?>
<project name="Hadoop-Examples" default="build">
<!-- version info -->
<property name="major-version" value="1" />
<property name="minor-version" value="0" />
<property name="build-number" value="0" />
<property name="version" value="${major-version}.${minor-version}.${build-number}" />
<!-- name info -->
<property name="company-name" value="alzio" />
<property name="project-name" value="hadoop-examples" />
<property name="general-lib" value="${company-name}-${project-name}.jar" />
<property name="general-src" value="${company-name}-${project-name}-src.zip" />
<!-- source directory info -->
<property name="build-Path" location="." />
<property name="src.dir.src" location="${build-Path}/src" />
<property name="src.dir.bin" location="${build-Path}/bin" />
<property name="src.dir.build" location="${build-Path}/build" />
<!-- build info -->
<target name="build" depends="build-lib, build-src" />
<target name="clean-all" depends="clean-lib, clean-src" />
<target name="clean-lib">
<delete file="${src.dir.build}/${general-lib}" />
</target>
<target name="clean-src">
<delete file="${src.dir.build}/${general-src}" />
</target>
<target name="build-lib" depends="clean-lib">
<jar destfile="${src.dir.build}/${general-lib}" basedir="${src.dir.bin}">
<manifest>
<attribute name="${project-name}-Version" value="${version}" />
</manifest>
</jar>
</target>
<target name="build-src" depends="clean-src">
<zip zipfile="${src.dir.build}/${general-src}" basedir="${src.dir.src}">
</zip>
</target>
</project>
| cs |
- build.xml 파일 빌드
-완료
댓글
댓글 쓰기