메뉴 건너뛰기

Bigdata, Semantic IoT, Hadoop, NoSQL

Bigdata, Hadoop ecosystem, Semantic IoT등의 프로젝트를 진행중에 습득한 내용을 정리하는 곳입니다.
필요한 분을 위해서 공개하고 있습니다. 문의사항은 gooper@gooper.com로 메일을 보내주세요.


1. 서버준비(5대, CentOS설치,  Jdk설치)(root로 실행)


2. SSH설정(root로 실행)

가. [root@sda1 ~]# ssh-keygen -t rsa -P ""

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa): 

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

69:08:3e:f2:60:6f:29:90:a9:64:e5:7a:d8:9f:11:5c root@sda1

The key's randomart image is:

+--[ RSA 2048]----+

|                 |

|                 |

|   ..  E         |

| oo..... .       |

|+o+.oo. S        |

|+o+= o..         |

|.o.o=.           |

|  .o. o          |

|     o           |

+-----------------+

나. /root/.ssh/에 id_rsa.pub이 생성됨, "cat id_rsa.pub >> authorized_keys"를 실행해서 파일을 만들어 주고

    각 서버에 authorized_keys를 복사해준다.

     ==> [root@sda1 .ssh]# cat id_rsa.pub >> authorized_keys

     ==> [root@sda1 .ssh]# scp -P 22 /root/.ssh/authorized_keys root@sda2:/root/.ssh/authorized_keys에서 호스트이          름만 바꿔서 각 서버에 복사해준다.

      * master에서 생성하고 authorized_keys를 각서버에 복사해주면 node1~node4는 패스워드를 묻지 않고 master의 접속을 받아 들이게 된다.

              (상호 접근이 가능하도록 하려면 모든 서버에서 ssh-keygen을 실행후 각각의 서버에 생성된 authorized_keys 의 내용을 모아서 

               각서버의 authorized_keys 에 추가해준다.)


3. /etc/hosts파일 수정및 5개 서버에 복사/배포(root로 실행)

   scp -P 22 /etc/hosts root@sda1:/etc/hosts

   scp -P 22 /etc/hosts root@sda2:/etc/hosts

   scp -P 22 /etc/hosts root@so1:/etc/hosts

   scp -P 22 /etc/hosts root@so2:/etc/hosts

   scp -P 22 /etc/hosts root@so-db2:/etc/hosts


4. hadoop계정 생성(모든 서버에서 수행해줌, root로 실행)

  가. adduser hadoop

  나. passwd hadoop 


5. /etc/profile수정(모든 서버에서 수행해줌, root로 수정)

가. [root@sda1 ~]# vi /etc/profile


export JAVA_HOME=/opt/jdk1.8.0_66

export PATH="$JAVA_HOME/bin:$PATH"

export CLASSPATH=".:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar"

export CATALINA_OPTS="Djava.awt.headless=true"

나. 변경내용 반영(각서버에서 모두 실행해줌) : [root@sda1 ~]# source /etc/profile


6. YARN설치(root로 수행)

  가. 설치할 폴더로 생성및 이동 : mkdir /svc/apps/sda/bin/hadoop

  나. jar파일 다운로드 : 

     [root@sda1 hadoop]# wget http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz

  다. 압축풀어서 링크생성

   ==> [root@sda1 hadoop]# tar xvfz hadoop-2.7.2.tar.gz

   ==> [root@sda1 hadoop]# ln -s hadoop-2.7.2 hadoop


7. /etc/profile수정(root로 수행)후 각 서버에 scp한후 각 서버에서 "source /etc/profile"로 반영시켜준다.


#java Setting

export JAVA_HOME=/opt/jdk1.8.0_66

export PATH="$JAVA_HOME/bin:$PATH"

export CLASSPATH=".:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar"

export CATALINA_OPTS="Djava.awt.headless=true"


# Hadoop Path

export HOME=/svc/apps/sda/bin/hadoop
export HADOOP_PREFIX=$HOME/hadoop
export PATH=$PATH:$HADOOP_PREFIX/bin
export PATH=$PATH:$HADOOP_PREFIX/sbin
export HADOOP_HOME=$HOME/hadoop
export HADOOP_MAPRED_HOME=${HADOOP_PREFIX}
export HADOOP_COMMON_HOME=${HADOOP_PREFIX}
export HADOOP_HDFS_HOME=${HADOOP_PREFIX}
export YARN_HOME=${HADOOP_PREFIX}
export HADOOP_YARN_HOME=${HADOOP_PREFIX}
export HADOOP_CONF_DIR=${HADOOP_PREFIX}/etc/hadoop

# Native Path
export HADOOP_COMMON_LIB_NATIVE_DIR=${YARN_HOME}/lib/native
export HADOOP_OPTS="-Djava.library.path=$YARN_HOME/lib"


8. 필요한 경로 생성(서버모두 실행, root로 실행)

* mkdir /data, /logs 두개만 만들고 각 데몬을 띄위면 각 데몬에서 필요한 경로및 파일을 만든다


----------------------파일관련 경로 지정(참고)------------------------

가. etc/hadoop/hdfs-site.xml

 - dfs.namenode.name.dir : /data/hadoop/dfs/namenode

 - dfs.namenode.checkpoint.dir : /data/hadoop/dfs/checkpoint

 - dfs.datanode.data.dir : /data/hadoop/dfs/datanode

 - dfs.journalnode.edits.dir : /data/hadoop/dfs/journal/data


나. etc/hadoop/core-site.xml

 - hadoop.tmp.dir : /data/hadoop/tmp


다. etc/hadoop/mapreduce-site.xml

 - mapred.system.dir : /data/hadoop/mapred/system

 - mapred.local.dir : /data/hadoop/mapred/local

 - mapreduce.jobtracker.staging.root.dir : /data/hadoop/tmp/staging


라. etc/hadoop/yarn-site.xml

 - 파일경로 지정없음


(파일 경로 생성 명령문 - hadoop관련 데몬이 실행되면서 자동으로 생성되지 않는 경우 개별 생성해줄것)

root@sda1:/hadoop/mapred:> mkdir /data/hadoop

root@sda1:/hadoop/mapred:> mkdir /data/hadoop/tmp

root@sda1:/hadoop/mapred:> mkdir /data/hadoop/tmp/staging


root@sda1:/hadoop/mapred:> mkdir /data/hadoop/mapred

root@sda1:/hadoop/mapred:> mkdir /data/hadoop/mapred/system

root@sda1:/hadoop/mapred:> mkdir /data/hadoop/mapred/local


root@sda1:/hadoop/mapred:> mkdir /data/hadoop/dfs

root@sda1:/hadoop/mapred:> mkdir /data/hadoop/dfs/namenode

root@sda1:/hadoop/mapred:> mkdir /data/hadoop/dfs/checkpoint

root@sda1:/hadoop/mapred:> mkdir /data/hadoop/dfs/datanode


root@sda1:/hadoop/mapred:> mkdir /data/hadoop/journal

root@sda1:/hadoop/mapred:> mkdir /data/hadoop/journal/data


9. 설정파일 수정(master에서 수정후 나머지는 scp명령으로 복사한다, root로 실행)

가. hdfs-site.xml

나. yarn-site.xml

다. mapred-site.xml

라. core-site.xml

마. hadoop-env.sh, yarn-env.sh: JAVA_HOME값 및 log경로 저장 


바. hadoop-env.sh(아래 환견경수 추가)

(export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native

export HADOOP_OPTS="${HADOOP_OPTS} -Djava.library.path=$HADOOP_PREFIX/lib"

#export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/hadoop/hadoop/share/hadoop/mapreduce:/hadoop/hadoop/share/hadoop/mapreduce/lib:$HIVE_HOME/lib:$HIVE_HOME/conf

export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/svc/apps/sda/bin/hadoop/hadoop/share/hadoop/mapreduce:/svc/apps/sda/bin/hadoop/hadoop/share/hadoop/mapreduce/lib:$HIVE_HOME/lib:$HIVE_HOME/conf

#export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/hadoop/hadoop-2.5.2/share/hadoop/common/postgresql-9.3-1103.jdbc4.jar

)


* hadoop-env.sh에서 HADOOP_LOG_DIR값을 log파일이 저장될 경로로 지정한다.

#export HADOOP_LOG_DIR=${HADOOP_LOG_DIR}/$USER

export HADOOP_LOG_DIR=/logs/hadoop


* yarn-env.sh에서 YARN_LOG_DIR값을 지정하여 log파일이 저장될 경로로 지정한다.

export YARN_LOG_DIR=/logs/hadoop


사. slaves

아. masters


10. 각 서버에 복사(root로 실행)

root@sda1:~:> scp -r -P 22 hadoop-2.7.2 root@sda2:/svc/apps/sda/bin/hadoop


11. namenode포맷

root@sda1:~:> hdfs namenode -format


12. zookeeper설치/기동

https://www.gooper.com/ss/index.php?mid=bigdata&category=2779&document_srl=3016


13. zkfc포맷

root@sda1:~:> hdfs zkfc -formatZK 

14. hadoop cluster 기동

https://www.gooper.com/ss/index.php?mid=bigdata&category=2789&document_srl=3021

번호 제목 글쓴이 날짜 조회 수
299 VisualVM 1.3.9을 이용한 JVM 모니터링 file 총관리자 2016.10.27 332
298 운영중인 상태에서 kafka topic삭제하고 재생성하여 처리되지 않은 메세지 모두 삭제하기 총관리자 2016.10.24 156
297 producer / consumer구현시 설정 옵션 설명 총관리자 2016.10.19 121
296 java.lang.OutOfMemoryError: unable to create new native thread오류 발생지 조치사항 총관리자 2016.10.17 466
295 동시에 많은 요청이 endpoint로 몰려서java.net.NoRouteToHostException가 발생하는 경우의 처리방법 총관리자 2016.10.17 508
294 AIX 7.1에 Python 2.7.11설치하기 총관리자 2016.10.06 651
293 프로그래밍 언어별 딥러닝 라이브러리 정리 file 총관리자 2016.10.05 215
292 모두를 위한 머신러닝과 딥러닝의 강의 file 총관리자 2016.09.27 192
291 DBCP Datasource(org.apache.commons.dbcp.BasicDataSource) 설정 및 속성 설명 총관리자 2016.09.26 74
290 AIX 7.1에서 hive실행시 "hive: line 86: readlink: command not found" 오류가 발생시 임시 조치사항 총관리자 2016.09.25 233
289 hive기동시 Caused by: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D 오류 발생시 조치사항 총관리자 2016.09.25 496
288 schema설정없이 hive를 최초에 실행했을때 발생하는 오류메세지및 처리방법 총관리자 2016.09.25 1222
287 파일끝에 붙는 ^M 일괄 지우기(linux, unix(AIX)) 혹은 파일내에 있는 ^M지우기 총관리자 2016.09.24 78
286 AIX 7.1에 MariaDB 10.2 소스 설치 총관리자 2016.09.24 2362
285 ./hadoop-daemon.sh start namenode로 namenode기동시 EditLog의 custerId, namespaceId가 달라서 발생하는 오류 해결방법 총관리자 2016.09.24 119
284 hadoop 어플리케이션을 사용하는 사용자 변경시 바꿔줘야 하는 부분 총관리자 2016.09.23 68
283 format된 namenode를 다른 서버에서 다시 format했을때 오류내용 총관리자 2016.09.22 155
282 journalnode노드 기동시 "should be an absolute path"가 발생하고 기동되지 않을 경우 확인사항 총관리자 2016.09.22 93
281 다중 모듈 프로젝트 설정에 대한 설명 총관리자 2016.09.21 80
280 AIX 7.1에 Hadoop설치(정리중#2) 총관리자 2016.09.20 215

A personal place to organize information learned during the development of such Hadoop, Hive, Hbase, Semantic IoT, etc.
We are open to the required minutes. Please send inquiries to gooper@gooper.com.

위로