130 likes | 366 Views
하둡 설치. 신현호 이영 건. 하둡 설치 전 작업. ssh , rsync , jdk 를 설치한다 . 마스터 , 슬레이브 컴퓨터의 계정을 맞춘다 . - 계정을 맞추어야 ssh 접속을 편하게 할 수 있다 . 마스터의 경우 하둡 파일시스템의 쓰기 권한을 위해서는 root 계정으로 로그인 해야한다 . 테스트 환경. 리눅스 : 우분투 11.04 하둡 버전 : hadoop-0.20.2 Jdk 버전 : jdk1.6.0_25
E N D
하둡 설치 신현호 이영건
하둡 설치 전 작업 • ssh, rsync, jdk를 설치한다. • 마스터, 슬레이브 컴퓨터의 계정을 맞춘다.-계정을 맞추어야 ssh접속을 편하게 할 수 있다. • 마스터의 경우 하둡 파일시스템의 쓰기 권한을 위해서는 root 계정으로 로그인 해야한다.
테스트 환경 • 리눅스: 우분투11.04 • 하둡 버전: hadoop-0.20.2 • Jdk버전: jdk1.6.0_25 • 하둡은/hadoop폴더에 설치-/hadoop/hadoop-0.20.2 • jdk는 /usr/jdk1.6.0_25 폴더에 설치
설정 파일 설명 • hadoop-env.sh- Hadoop이 실행하는 모든 프로세스에 적용되는 시스템 환경 값에 대한 스크립트- 환경변수에 대해서 시스템 변수로 등록해 사용하는 방식이 아니라, 이 파일에 모든 환경 변수를 설정하고 이 파일을 전체 클러스터 노드에 복사해 사용 • core-site.xml- Hadoop설치 후 로그파일, 네트워크 튜닝, I/O튜닝, 파일 시스템 튜닝, 압축 등과 같이 기본적인 하부 시스템 설정- 맵리듀스에서도 공통으로 사용 • hdlf-site.xml- Hadoop파일 시스템을 위한 설정파일로 자세한 항목은 hdfs-default.xml파일을 참고 • Masters- 세컨드리 네임 노드가 실행될 서버지정 • Slaves- 데이터 노드가 실행될 서버지정 • hadoop-metrics.properties- Hadoop에서 각 기능별(파일시스템, 맵리듀스)로 모니터링 데이터를 수집하는 방식에 대한 설정
하둡 설치 • 하둡다운로드 메인 페이지 : http://hadoop.apache.org다운로드 : http://hadoop.apache.org/core/releases.html설치 버전 : hadoop-0.20.2./conf : 환경설정 파일 존재./bin : 실행 파일 존재./logs : 로그 파일 존재./docs : 도움말 문서 존재 • 압축을 풀고 자신이 원하는 폴더로 이동tar xvzfhadoop-* 명령 이용 (* 버젼임) • 하둡 설정 파일 초기화 하기 (./ 은하둡이 설치된 폴더)./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 로 붙여 넣는다.
./conf/hadoop-env.sh 설정 (아래 내용을 추가 또는 변경한다. 아래 내용중 주석이 있는 경우 #제거)export JAVA_HOME=/usr/local/jdk1.6.0_25 export HADOOP_HOME=/hadoop/hadoop-0.20.2 export HADOOP_SLAVES=${HADOOP_HOME}/conf/slavesexport 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 : 하둡의 모든 데이터 저장과 임시 공간에 대한 최상위 경로
./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 andreduce task.</description></property>
<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>
기타 속성들의 정보는 ./docs 의 문서들을 참조하기 바란다. • 호스트명 등록하기위에서 속성값에 사용 했던 호스트명master는 master 컴퓨터를 나타내는 호스트명으로/etc/hosts 에 명시할 수 있다.예) master ip가 222.222.222.100 이라면/etc/hosts 파일을 열어222.222.222.100 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 호스트명을 추가하고 호스트명을 입력하는 것도 좋은 방법이다.
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 의 경우 - hadoopnamenode –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
설치 확인 및 명령어 • 브라우저를 띄워서 http://master:50030접속node 연결 개수 및 현재 작업이나 완료 작업 등을 확인할 수 있다. • 브라우저를 띄워서 http://master:50070접속리소스 정보를 확인할 수 있다. • stop-all.sh 명령어hadoop실행 종료 • 로그확인하둡 경로의 logs 폴더를 확인하라 • 하둡 파일 시스템 제어 명령어hadoopdfs –ls : 쉘의ls명령어와 동일hadoopdfs –mkdir <경로> : mkdir명령어와 동일hadoopdfs –rmr <경로> : rm –R 명령어와 동일hadoopdfs –put <로컬경로> <하둡 파일시스템경로> : 리눅스 파일시스템의 파일을 하둡 파일 시스템으로 전송한다.hadoopdfs –copyToLocal : 하둡파일시스템의 파일을 리눅스 파일시스템으로 전송hadoopdfs –cat <파일 경로> : cat 명령어와 동일
wordcount테스트 • wordcount는 하둡에서 제공하는 예제 프로그램으로 하둡 파일 시스템의 지정 폴더내의 모든 파일의 word 개수를 구하는 프로그램이다.(hadoop-0.20.2-examples.jar d이름으로 하둡폴더내에 존재) (테스트)hadoopdfs –mkdir input 명령어로 input 폴더 생성hadoopdfs –put ~/.bashrc input 명령어로 .bashrc파일을 input 폴더로 전송hadoop jar $HADOOP_HOME/hadoop-0.20.2-examples.jar wordcount input output※ 주의 사항 : output 폴더는 만들어 놓으면 안된다. (출력) 09/02/25 19:54:32 INFO mapred.FileInputFormat: Total input paths to process : 109/02/25 19:54:33 INFO mapred.JobClient: Running job: job_200902251718_000209/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_200902251718_000209/02/25 19:55:58 INFO mapred.JobClient: Counters: 1709/02/25 19:55:58 INFO mapred.JobClient: File Systems09/02/25 19:55:58 INFO mapred.JobClient: HDFS bytes read=44001529309/02/25 19:55:58 INFO mapred.JobClient: HDFS bytes written=1150389209/02/25 19:55:58 INFO mapred.JobClient: Local bytes read=4447288609/02/25 19:55:58 INFO mapred.JobClient: Local bytes written=5791906109/02/25 19:55:58 INFO mapred.JobClient: Job Counters .. .. ..
문제 해결 • 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 192.168.0.101: Linux slave-02 2.6.18-53.1.4.el5vm #1 SMP Mon Mar 31 17:40:06 EDT 2008 x86_64 x86_64x86_64 GNU/Linux 192.168.0.102: Linux slave-01 2.6.18-53.1.4.el5vm #1 SMP Mon Mar 31 17:40:06 EDT 2008 x86_64 x86_64x86_64 GNU/Linux • root 계정으로 master 가 동작하지 않는다면 퍼미션 문제로 hadoopdfs실행시 문제가 생긴다 master 는 root 계정으로 실행되어야한다. • 방화벽 문제로 정상 작동 하지 않을 시에는 ufw disable 로 방화벽을 끈다. 혹은 필요 포트만 허용한다.