메뉴 건너뛰기

Cloudera, BigData, Semantic IoT, Hadoop, NoSQL

Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.


1. 서버준비(4대(gsda1, gsda2, gsda3, gsda4), Lubuntu 16.04LTS 설치됨)(root로 실행)

2. 사용자 생성(모든 서버, root로 실행)

 * root로 hadoop등을 설치한다.
 가. adduser gooper(사용자 어플리케이션 실행)
 나. adduser hadoop(필요시)


3. JDK8설치(https://tecadmin.net/install-oracle-java-8-ubuntu-via-ppa/#)(모든서버, root로 실행)
  : 일반적인 방법으로 설치하면 라이센스 동의 관련 오류가 발생하는데 다.라. 과정을 통해서 라이센스 동의를 자동으로 처리하고 있다.(Silent Install)
  : Oracle Java가 더이상 Ubuntu repos에 존재하지 않는다. 그래서 WebUpd8team의 PPA를 이용하여 설치한다.
 가. apt-get install -y software-properties-common
 나. add-apt-repository ppa:webupd8team/java && apt-get update
 다. echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | debconf-set-selections
 라. echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 seen true" | debconf-set-selections
 마. apt-get install -y oracle-java8-installer


* 설치확인(java -version)
  root@gsda1:~# java -version
  java version "1.8.0_131"
  Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
  Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)


4. /etc/profile수정(root로 수정, 각 서버에서 실행)

가. root@gsda1:~# vi /etc/profile

#java Setting

export JAVA_HOME=/usr/lib/jvm/java-8-oracle

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@gsda1:~# source /etc/profile


5. /etc/hosts파일 수정한다. (root로 실행, 각 서버에서 실행)

   vi /etc/hosts

6. 키설정(root로 실행)

가. root@gsda1:~# 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:
SHA256:CdibP1Oxs+DTpR5bMsUQx30tfklt4RR6HdEM303pHb0 root@gsda1
The key's randomart image is:
+---[RSA 2048]----+
|          .....O@|
|     o     o. **&|
|    . o   o  oo*X|
|       + . =  oEo|
|      o S + +  . |
|       o + *     |
|        * B .    |
|         = *     |
|          o      |
+----[SHA256]-----+

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

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

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

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

      * master에서 생성하고 authorized_keys를 각서버에 복사해주면 gsda1~gsda4는 패스워드를 묻지 않고 master의 접속을 받아 들이게 된다.(상호 접근이 가능하도록 하려면 모든 서버에서 ssh-keygen을 실행후 각각의 서버에 생성된 authorized_keys 의 내용을 모아서 각서버의 authorized_keys 에 추가해준다.)


7. zookeeper설치/기동

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


8. YARN설치(root로 수행)

  가. 설치할 폴더로 생성(/svc/apps/gsda/bin/hadoop)

root@gsda1:/root/.ssh# mkdir /svc
root@gsda1:/root/.ssh# mkdir /svc/apps
root@gsda1:/root/.ssh# mkdir /svc/apps/gsda
root@gsda1:/root/.ssh# mkdir /svc/apps/gsda/bin
root@gsda1:/root/.ssh# mkdir /svc/apps/gsda/bin/hadoop


  나. jar파일 다운로드(http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.8.0/hadoop-2.8.0.tar.gz)및 설치할 폴더에 업로드

  다. 압축풀고 링크생성

   ==> [root@gsda1 hadoop]# tar xvfz hadoop-2.8.0.tar.gz

   ==> [root@gsda1 hadoop]# ln -s hadoop-2.8.0 hadoop


* /etc/profile에 아래 정보를 추가해준다(root로 실행, 모든 서버에 적용)

# 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"


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

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


----------------------참고 경로------------------------

가. 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


나. core-site.xml

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


다. 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


라. yarn-site.xml

 - 파일경로 지정없음


(명령문) - 필요시 사용

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

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

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


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

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

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


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

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

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

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


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

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


10. 설정파일 수정(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_SSH_OPTS="-p 22"

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 수정


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

root@gsda1:~:> scp -r hadoop-2.8.0 root@gsda2:/svc/apps/gsda/bin/hadoop


12. 링크생성(root로 실행, 각서버에서 수행)

ln -s hadoop-2.8.0 hadoop

13. hadoop cluster 기동

https://www.gooper.com/ss/bigdata/3021

번호 제목 날짜 조회 수
201 Hive MetaStore Server기동시 Could not create "increment"/"table" value-generation container SEQUENCE_TABLE since autoCreate flags do not allow it. 오류발생시 조치사항 2017.05.03 678
200 Ubuntu 16.04 LTS에 Hive 2.1.1설치하면서 "Version information not found in metastore"발생하는 오류원인및 조치사항 2017.05.03 658
199 hadoop에서 yarn jar ..를 이용하여 appliction을 실행하여 정상적(?)으로 수행되었으나 yarn UI의 어플리케이션 목록에 나타나지 않는 문제 2017.05.02 217
198 hadoop에서 yarn jar ..를 이용하여 appliction을 실행하여 정상적으로 수행되었으나 yarn UI의 어플리케이션 목록에 나타나지 않는 문제 2017.05.02 227
197 hadoop에서 yarn jar ..를 이용하여 appliction을 실행하여 정상적으로 수행되었으나 yarn UI의 어플리케이션 목록에 나타나지 않는 문제 2017.05.02 158
196 hadoop에서 yarn jar ..를 이용하여 appliction을 실행하여 정상적으로 수행되었으나 yarn UI의 어플리케이션 목록에 나타나지 않는 문제 2017.05.02 298
195 Cleaning up the staging area file시 'cannot access' 혹은 'Directory is not writable' 발생시 조치사항 2017.05.02 451
194 Ubuntu 16.04 LTS에 MariaDB 10.1설치 및 포트변경 및 원격접속 허용 2017.05.01 1694
» Ubuntu 16.04 LTS에 4대에 Hadoop 2.8.0설치 2017.05.01 1131
192 Kafka의 API중 Consumer.createJavaConsumerConnector()를 이용하고 다수의 thread를 생성하여 Kafka broker의 topic에 접근하여 데이타를 가져오고 처리하는 예제 소스 2017.04.26 492
191 Spark에서 KafkaUtils.createStream()를 이용하여 이용하여 kafka topic에 접근하여 객채로 저장된 값을 가져오고 처리하는 예제 소스 2017.04.26 459
190 Hbase API를 이용하여 scan시 페이징을 고려하여 목록을 가져올때 사용할 수 있는 로직의 예시를 보여줌 2017.04.26 912
189 Spark에서 Serializable관련 오류및 조치사항 2017.04.21 5107
188 Caused by: java.lang.ClassNotFoundException: org.apache.spark.Logging 발생시 조치사항 2017.04.19 851
187 Container killed by the ApplicationMaster. Container killed on request. Exit code is 143 Container exited with a non-zero exit code 143 TaskAttempt killed because it ran on unusable node 오류시 조치방법 2017.04.06 1015
186 streaming작업시 입력된 값에 대한 사본을 만들게 되는데 이것이 실패했을때 발생하는 경고메세지 2017.04.03 824
185 JavaStreamingContext를 이용하여 스트림으로 들어오는 문자열 카운트 소스 2017.03.30 287
184 kafka-manager 1.3.3.4 설정및 실행하기 2017.03.20 1913
183 spark 2.0.0의 api를 이용하는 예제 프로그램 2017.03.15 349
182 It is indirectly referenced from required .class files 오류 발생시 조치방법 2017.03.09 873
위로