Download presentation
Presentation is loading. Please wait.
1
하둡 설치 신현호 이영건
2
하둡 설치 전 작업 ssh, rsync, jdk 를 설치한다.
마스터의 경우 하둡 파일시스템의 쓰기 권한을 위해서는 root 계정으로 로그인 해야한다.
3
테스트 환경 리눅스 : 우분투 11.04 하둡 버전: hadoop-0.20.2 Jdk 버전: jdk1.6.0_25
하둡은 /hadoop 폴더에 설치 -/hadoop/hadoop jdk 는 /usr/jdk1.6.0_25 폴더에 설치
4
설정 파일 설명 hadoop-env.sh - Hadoop이 실행하는 모든 프로세스에 적용되는 시스템 환경 값에 대한 스크립트 - 환경변수에 대해서 시스템 변수로 등록해 사용하는 방식이 아니라, 이 파일에 모든 환경 변수를 설정하고 이 파일을 전체 클러스터 노드에 복사해 사용 core-site.xml - Hadoop 설치 후 로그파일, 네트워크 튜닝, I/O튜닝, 파일 시스템 튜닝, 압축 등과 같이 기본적인 하부 시스템 설정 - 맵리듀스에서도 공통으로 사용 hdlf-site.xml - Hadoop파일 시스템을 위한 설정파일로 자세한 항목은 hdfs-default.xml파일을 참고 Masters - 세컨드리 네임 노드가 실행될 서버지정 Slaves - 데이터 노드가 실행될 서버지정 hadoop-metrics.properties - Hadoop에서 각 기능별(파일시스템, 맵리듀스)로 모니터링 데이터를 수집하는 방식에 대한 설정
5
하둡 설치 하둡 다운로드 메인 페이지 : 다운로드 : 설치 버전 : hadoop /conf : 환경설정 파일 존재 ./bin : 실행 파일 존재 ./logs : 로그 파일 존재 ./docs : 도움말 문서 존재 압축을 풀고 자신이 원하는 폴더로 이동 tar xvzf hadoop-* 명령 이용 (* 버젼임) 하둡 설정 파일 초기화 하기 (./ 은 하둡이 설치된 폴더) ./src/core/core-default.xml 의 내용을 ./conf/core-site.xml 로 붙여 넣는다. ./src/hdfs/hdfs-default.xml 의 내용을 ./conf/hdfs-site.xml 로 붙여 넣는다. ./src/mapred/mapred-default.xml 의 내용을 ./conf/mapred-sitd.xml 로 붙여 넣는다.
6
/conf/hadoop-env. sh 설정 (아래 내용을 추가 또는 변경한다
./conf/hadoop-env.sh 설정 (아래 내용을 추가 또는 변경한다. 아래 내용중 주석이 있는 경우 #제거) export JAVA_HOME=/usr/local/jdk1.6.0_25 export HADOOP_HOME=/hadoop/hadoop export HADOOP_SLAVES=${HADOOP_HOME}/conf/slaves export HADOOP_LOG_DIR=${HADOOP_HOME}/log 참고 : jdk 와 hadoop이 다른 곳에 설치 되었다면 JAVA_HOME 과 HADOOP_HOME의 값을 자신이 설치된 경로로 바꾸어주면된다. ./conf/core-site.xml (아래의 속성 값을 찾아 아래와 같이 변경한다.) <property> <name>fs.default.name</name> <value>hdfs://master: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>hadoop.tmp.dir</name> <value>/hadoop/tmp</value> <description>A base for other temporary directories.</description> </property> 참고 : 속성 값에 지정한 경로의 실제 폴더가 없어도 하둡 실행시 자동으로 폴더가 생성되므로 폴더를 미리 만들 필요는 없다. fs.default.name : name 서버 경로 hadoop.tmp.dir : 하둡의 모든 데이터 저장과 임시 공간에 대한 최상위 경로
7
/conf/hdfs-site. xml (아래의 속성 값을 찾아 아래와 같이 변경한다
./conf/hdfs-site.xml (아래의 속성 값을 찾아 아래와 같이 변경한다.) <property> <name>dfs.name.dir</name> <value>/hadoop/name</value> </property> <property> <name>dfs.data.dir</name> <value>/hadoop/data</value> </property> 참고 : dfs.name.dir : 파일의 디렉토리 정보와 파일 정보 등을 저장하는 폴더 dfs.data.dir : 하둡 파일 시스템에 저장되는 모든 파일이 저장되는 위치 /conf/mapred-site.xml (아래의 속성 값을 찾아 아래와 같이 변경한다.) <property> <name>mapred.job.tracker</name> <value>master: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>
8
<property> <name>mapred. map
<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.replication</name> <value>1</value> </property>
9
기타 속성들의 정보는 ./docs 의 문서들을 참조하기 바란다.
호스트명 등록하기 위에서 속성값에 사용 했던 호스트명 master는 master 컴퓨터를 나타내는 호스트명으로 /etc/hosts 에 명시할 수 있다. 예) master ip가 이라면 /etc/hosts 파일을 열어 master 위 내용을 추가한다. 참고: /etc/hosts 에 추가된 ip는 ip대신 호스트명으로 대신 사용할 수 있다. 설정파일들에 내용 중 ip 가 쓰여야 할 곳에 호스트명으로 대신 쓴다면 ip가 변경되는 상황일때 설정 파일들의 설정 값을 바꿀 필요 없이 /etc/hosts 파일에서 ip 만 바꾸면 되므로 유용하다. master, slaves 노드 추가하기 ./conf/masters 파일을 열어 master 컴퓨터의 ip 혹은 호스트명을 입력한다. ※ master 라고 입력한다. ./conf/slaves 파일을 열어 slave 컴퓨터들의 ip 혹은 호스트명을 입력한다. ※ ip를 입력해도 되지만 /etc/hosts에 slave 호스트명을 추가하고 호스트명을 입력하는 것도 좋은 방법이다.
10
ssh 공개키 만들기 설명 : hadoop은 ssh 접속을 통하여 명령을 송신,수신한다
ssh 공개키 만들기 설명 : hadoop은 ssh 접속을 통하여 명령을 송신,수신한다. 공개키를 설정하지 않으면 hadoop내 ssh 접속마다 패스워드를 요구하므로 공개키를 만드는 것이 편하다. ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa (공개키 만들기) cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys (공개키 복사) 위 두 명령을 수행하여 생성된 파일 authorized_keys 을 각 slave 컴퓨터의 ~/.ssh 에 복사한다. master , slave 컴퓨터의 hadoop 설정은 동일하게 하므로 설정이 끝난 /hadoop 폴더를 압축하여 각 slave 컴퓨터에 동일 위치에 복사하면 된다. master 의 경우 - hadoop namenode –format 명령을 수행하여 hadoop 파일 시스템을 초기화한다. - start-all.sh 명령을 수행하여 hadoop 데몬을 실행시킨다. Slave 의 경우 -start-all.sh 명령만 수행한다. 참고 : hadoop설치 경로의 bin 경로를 ~/.bashrc 나 /etc/profile 에 PATH 환경변수를 지정하여 사용할수 있다. (어떤 경로에서나 hadoop 실행가능 아래 내용을 추가한다.) HADOOP_HOME= 하둡 설치경로 export PATH=$PATH:$HADOOP_HOME/bin
11
설치 확인 및 명령어 브라우저를 띄워서 접속 node 연결 개수 및 현재 작업이나 완료 작업 등을 확인할 수 있다. 브라우저를 띄워서 접속 리소스 정보를 확인할 수 있다. stop-all.sh 명령어 hadoop 실행 종료 로그확인 하둡 경로의 logs 폴더를 확인하라 하둡 파일 시스템 제어 명령어 hadoop dfs –ls : 쉘의 ls 명령어와 동일 hadoop dfs –mkdir <경로> : mkdir 명령어와 동일 hadoop dfs –rmr <경로> : rm –R 명령어와 동일 hadoop dfs –put <로컬경로> <하둡 파일시스템경로> : 리눅스 파일시스템의 파일을 하둡 파일 시스템으로 전송한다. hadoop dfs –copyToLocal : 하둡 파일시스템의 파일을 리눅스 파일시스템으로 전송 hadoop dfs –cat <파일 경로> : cat 명령어와 동일
12
wordcount 테스트 wordcount 는 하둡에서 제공하는 예제 프로그램으로 하둡 파일 시스템의 지정 폴더내의 모든 파일의 word 개수를 구하는 프로그램이다.(hadoop examples.jar d이름으로 하둡 폴더내에 존재) (테스트) hadoop dfs –mkdir input 명령어로 input 폴더 생성 hadoop dfs –put ~/.bashrc input 명령어로 .bashrc 파일을 input 폴더로 전송 hadoop jar $HADOOP_HOME/hadoop examples.jar wordcount input output ※ 주의 사항 : output 폴더는 만들어 놓으면 안된다. (출력) 09/02/25 19:54:32 INFO mapred.FileInputFormat: Total input paths to process : 1 09/02/25 19:54:33 INFO mapred.JobClient: Running job: job_ _ /02/25 19:54:34 INFO mapred.JobClient: map 0% reduce 0% 09/02/25 19:54:46 INFO mapred.JobClient: map 2% reduce 0% .. .. 09/02/25 19:55:58 INFO mapred.JobClient: Job complete: job_ _ /02/25 19:55:58 INFO mapred.JobClient: Counters: 17 09/02/25 19:55:58 INFO mapred.JobClient: File Systems 09/02/25 19:55:58 INFO mapred.JobClient: HDFS bytes read= /02/25 19:55:58 INFO mapred.JobClient: HDFS bytes written= /02/25 19:55:58 INFO mapred.JobClient: Local bytes read= /02/25 19:55:58 INFO mapred.JobClient: Local bytes written= /02/25 19:55:58 INFO mapred.JobClient: Job Counters
13
문제 해결 JAVA 설정 JAVA_HOME 설정은 꼭 hadoop-env.sh에 설정해 주셔야 합니다.
무심코 ~/.bashrc 나 ~/.bash_profile 에만 설정하는 경우도 있는데, 그러면 동작 안함 WARN fs.FileSystem: "master:9000" is a deprecated filesystem name. Use "hdfs://master:9000/" instead. core-site.xml에 fs.default.name를 설정하실때 앞에 "hdfs://"를 붙이지 않은경우에 발생 slave 연결 확인(정상동작시) $ ./slaves.sh uname –a : Linux slave el5vm #1 SMP Mon Mar 31 17:40:06 EDT 2008 x86_64 x86_64 x86_64 GNU/Linux : Linux slave el5vm #1 SMP Mon Mar 31 17:40:06 EDT 2008 x86_64 x86_64 x86_64 GNU/Linux root 계정으로 master 가 동작하지 않는다면 퍼미션 문제로 hadoop dfs 실행시 문제가 생긴다 master 는 root 계정으로 실행되어야한다. 방화벽 문제로 정상 작동 하지 않을 시에는 ufw disable 로 방화벽을 끈다. 혹은 필요 포트만 허용한다.
Similar presentations