Hadoop 설치 2.9.0 완전분산 모드 (가상화 4대) on CentOS 7.4
이런 모습으로 구성하고자 한다.
vi /etc/hosts
10.0.0.6 hadoop
10.0.0.6 hadoop-cluster
10.0.0.7 hadoop01
10.0.0.8 hadoop02
10.0.0.10 hadoop03
============yum 업그레이드============
전체 서버
yum upgrade
============방화벽 해제============
전체 서버
vi /etc/sysconfig/selinux
SELINUX=disabled
systemctl stop firewalld
systemctl start firewalld
systemctl stop firewalld
systemctl disable firewalld
============컴파일 환경 설정============
전체 서버만
yum install gcc.x86_64yum install -y gcc-c++.x86_64
============가상화일 경우만============
yum install kernel-devel-3.10.0-693.el7.x86_64
virtaulbox 확장 시디 설치
============하둡 계정 생성============
전체 서버
useradd hadoop
passwd hadoop
============주키퍼 계정 생성============
zookeeper설치할 서버에 계정 생성 ( hadoop, hadoop01, hadoop02 )
useradd zookeeper
passwd zookeeper
=============ssh 설정=============
su - hadoop
ssh-keygen -t rsa
hadoop에서 hadoop,01~03 까지 복제
ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hadoop@hadoop
ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hadoop@hadoop01
ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hadoop@hadoop02
ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hadoop@hadoop03
hadoop01에서 hadoop,01,02,03
ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hadoop@hadoop
ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hadoop@hadoop01
ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hadoop@hadoop02
ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hadoop@hadoop03
hadoop에서 hadoop,01~02 (3대만 주키퍼 서버)
ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub zookeeper@hadoop
ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub zookeeper@hadoop01
ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub zookeeper@hadoop02
============ 환경 파일 설정============
전체서버에
난 그냥 모두 /etc/profile에...
vi /etc/profile
######### JDK8 PATH ############
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar
########### Hadoop PATH ###########
export HADOOP_HOME=/home/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_PID_DIR=$HADOOP_HOME/pids
export HADOOP_CLASSPATH=$JAVA_HOME/lib/tools.jar
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
export YARN_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
#-----주키퍼관련
export ZOOKEEPER_HOME=/home/zookeeper
export PATH=$ZOOKEEPER_HOME/bin:$YARN_HOME:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin:$PATH
export PATH=$PATH:/usr/bin
#-----하이브 및 스쿱 관련
export HIVE_HOME=/home/hive
export PATH=$PATH:$HIVE_HOME/bin
export SQOOP_HOME=/home/sqoop
export PATH=$PATH:$SQOOP_HOME/bin
export SQOOP_SERVER_EXTRA_LIB=/var/lib/sqoop2/
#--------HBASE
export HBASE_HOME=/home/hbase
export PATH=$PATH:$HBASE_HOME/bin
export HBASE_PID_DIR=/home/hbase/pid
#-----------MAVEN
export M2_HOME=/home/maven
export M2=$M2_HOME/bin
export PATH=$M2:$PATH
#--------------HUE
export HUE_HOME=/home/hue
export PATH=$PATH:$HUE_HOME/build/env/bin
#--------------FLUME
export FLUME_HOME=/home/flume
export FLUME_CONF_DIR=/home/flume/conf
============proto buf 설치============
전체 서버 설치
protobuf 설치 (꼭 2.5.0으로)
su - root
cd /usr/local
wget https://github.com/google/protobuf/releases/download/v2.5.0/protobuf-2.5.0.ziptar xvfz protobuf-2.5.0.tar.gz
cd protobuf-2.5.0
./configure
make
make install
============자바 설치============
su - rootcd /usr/local
모든 서버에 설치
오라클 자바 8 설치 (꼭 1.8.0-161으로 안그러면 Warnning이 어마어마 함...)
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jdk-8u171-linux-x64.tar.gz
tar zxvf java*.gz
ln -s /usr/local/java1* /java
=============버추얼박스에서 이미지 복제(가상화일경우)==============
VM을 끄고이미지 복제
복제시 네트워크 MAC 초기화 체크
VM간의 통신을 위한 인터널 네트워크 생성 (고정아이피, 10.0.3.X)호스트명 변경각 서버에 로그인 해서 아래 명령어
hostnamectl set-hostname hadoop01
hostnamectl set-hostname hadoop02
hostnamectl set-hostname hadoop03
=============zookeeper 설치-(hadoop,01,02)=============
hadoop, hadoop01,hadoop02 모두 설치 필요
su - zookeeper
wget http://mirror.navercorp.com/apache/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz
tar zxvf ./*.gzcd zookeeper-3.4.11mv ./* ../zookeeper
=============zookeeper 설정=============
hadoop, hadoop01,hadoop02 모두 설정 필요
cd ~zookeeper/conf
cp -rp zoo_sample.cfg zoo.cfg
vi zoo.cfg
아래 내용 추가
dataDir=/home/zookeeper/data
maxClientCnxns=0
maxSessionTimeout=180000
server.1=hadoop:2888:3888
server.2=hadoop01:2888:3888
server.3=hadoop02:2888:3888
디렉토리 추가
cd /home/zookeeper
mkdir data
cd data노드 아이디 생성 (hadoop01은 2로 hadoop03은 3으로)vi myid
1
=============주키퍼 실행 및 상태 확인=============
난 이상하게 처음 실행하는 노드는 상태 확인하면 에러가난다2번째 서버부터 시작하면 2번째 노드가 리더가 되고 1번째 노드는 팔로우가 되더라... 원래그런지는 모르겠다...
./bin/zkServer.sh start
./bin/zkServer.sh status
=============hadoop 설치=============
hadoop 서버에서
환경 설정 경로로 이동su - hadoop
cd etc
cd hadoop
슬레이브 파일 수정vi slaves
hadoop
hadoop01
hadoop02
hadoop03
환경 설정파일에 경로 추가 (이걸 안하면 yarn 매니저 기동시 경로를 못찾더라 이상하다..)
vi hadoop-env.sh
export JAVA_HOME=/usr/local/java
export HADOOP_PID_DIR=/home/hadoop/pids
-----------------
vi core-site.xml
아래 내용 추가
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop-cluster</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop:2181,hadoop01:2181,hadoop02:2181</value>
</property>
------------------------
vi hdfs-site.xml
아래 내용 추가
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/data/dfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/data/dfs/datanode</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/hadoop/data/dfs/journalnode</value>
</property>
<property>
<name>dfs.nameservices</name>
<value>hadoop-cluster</value>
</property>
<property>
<name>dfs.ha.namenodes.hadoop-cluster</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.hadoop-cluster.nn1</name>
<value>hadoop:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.hadoop-cluster.nn2</name>
<value>hadoop01:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.hadoop-cluster.nn1</name>
<value>hadoop:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.hadoop-cluster.nn2</name>
<value>hadoop01:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop:8485;hadoop01:8485;hadoop02:8485/hadoop-cluster</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.hadoop-cluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
--------------
vi yarn-site.xml
아래 내용 추가
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/home/hadoop/data/yarn/nm-local-dir</value>
</property>
<property>
<name>yarn.resourcemanager.fs.state-store.uri</name>
<value>/home/hadoop/data/yarn/system/rmstore</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop</value>
</property>
<property>
<name>yarn.web-proxy.address</name>
<value>0.0.0.0:8089</value>
</property>
===========완전 분산 모드 실행하기=========
시작하는게 무척 중요하다순서도 중요하고 여러 서버간에 왔다갔다해야하고다음 글에 자동 기동/중단 할 수 있는 스크립트를 올려 두었다.그냥 실행하면 된다.
1. ZKFC 초기화 (ZKFC 실행전 반드시 초기화 필요)
2. 액티브 네임노드 실행
3. 저널노드실행(각 서버)4. 네임노드 포멧 (1번 노드만)5. 액티브 네임노드 실행 6. 엑티브 ZKFC 실행
7. 전체데이터노드 순차 실행
8. 스탠바이 네임노드 실행
9. 스탠바이 네임노드에서 메타데이터복사
10. 스탠바이 네임노드 실행11. 스탠바이 ZKFC 실행
===========기동 명령어 (상세)===========
===서버에서 주키퍼 실행 (3노드)
hadoop 서버
su - zookeeper
./bin/zkServer.sh start
./bin/zkServer.sh status
hadoop 서버
su - zookeeper
./bin/zkServer.sh start
./bin/zkServer.sh status
hadoop02 서버
su - zookeeper
./bin/zkServer.sh start
./bin/zkServer.sh status
===ZKFC 주키퍼 페일오버 컨트롤 초기화 (1노드)
hadoop 계정으로
hadoop 서버
cd /home/hadoop
./bin/hdfs zkfc -formatZK
===저널노드 실행 (주키퍼가 있는 3노드)
hadoop 서버
#rm -rf /home/hadoop/data
cd /home/hadoop
sbin/hadoop-daemon.sh start journalnode
hadoop01 서버
#rm -rf /home/hadoop/data
cd /home/hadoop
sbin/hadoop-daemon.sh start journalnode
hadoop02 서버
#rm -rf /home/hadoop/data
cd /home/hadoop
sbin/hadoop-daemon.sh start journalnode
===네임노드 포멧
hadoop 서버
cd /home/hadoop
./bin/hdfs namenode -format
===액티브 네임노드 실행
hadoop 서버
cd /home/hadoop
sbin/hadoop-daemon.sh start namenode
===ZKFC 실행
hadoop 서버
cd /home/hadoop
sbin/hadoop-daemon.sh start zkfc
===전체 데이터노드 실행
hadoop 서버
sbin/hadoop-daemon.sh start datanode
hadoop01 서버
sbin/hadoop-daemon.sh start datanode
hadoop02 서버
sbin/hadoop-daemon.sh start datanode
hadoop03 서버
sbin/hadoop-daemon.sh start datanode
===스탠바이 네임노드에서 액티브 네임노드 메타데이터 복사
hadoop01 서버
./bin/hdfs namenode -bootstrapStandby
===스탠바이 네임노드 실행
hadoop01 서버
cd /home/hadoop
sbin/hadoop-daemon.sh start namenode
=== 스탠바이 네임노드에 ZKFC 실행
hadoop01 서버
cd /home/hadoop
sbin/hadoop-daemon.sh start zkfc
=== 얀클러스터 실행
hadoop 서버
cd /home/hadoop
sbin/start-yarn.sh
===히스토리서버 실행
hadoop 서버
cd /home/hadoop
sbin/mr-jobhistory-daemon.sh start historyserver
============하둡종료=============
=== 히스토리 서버 종료
hadoop 서버
cd /home/hadoop
sbin/mr-jobhistory-daemon.sh start historyserver
=== 얀 종료
hadoop 서버
cd /home/hadoop
sbin/start-yarn.sh
===스탠바이 네임노드에 ZKFC 종료
hadoop01 서버
cd /home/hadoop
sbin/hadoop-daemon.sh stop zkfc
===스탠바이 네임노드에 네임노드 종료
hadoop01 서버
cd /home/hadoop
sbin/hadoop-daemon.sh start namenode
===전체 데이터노드 종료
hadoop 서버
cd /home/hadoop
sbin/hadoop-daemon.sh stop datanode
hadoop01 서버
cd /home/hadoop
sbin/hadoop-daemon.sh stop datanode
hadoop02 서버
cd /home/hadoop
sbin/hadoop-daemon.sh stop datanode
hadoop03 서버
cd /home/hadoop
sbin/hadoop-daemon.sh stop datanode
==액티브네임노드ZKFC 종료
hadoop 서버
cd /home/hadoop
sbin/hadoop-daemon.sh stop zkfc
===액티브 네임노드 종료
hadoop 서버
cd /home/hadoop
sbin/hadoop-daemon.sh stop namenode
===저널노드 종료
hadoop 서버
#rm -rf /home/hadoop/data
cd /home/hadoop
sbin/hadoop-daemon.sh stop journalnode
hadoop01 서버
#rm -rf /home/hadoop/data
cd /home/hadoop
sbin/hadoop-daemon.sh stop journalnode
hadoop02 서버
#rm -rf /home/hadoop/data
cd /home/hadoop
sbin/hadoop-daemon.sh stop journalnode
===주키퍼종료
hadoop 서버
su - zookeeper
./bin/zkServer.sh stop
hadoop01 서버
su - zookeeper
./bin/zkServer.sh stop
hadoop02 서버
su - zookeeper
./bin/zkServer.sh stop
===========테스트로 파일 생성============
bin/hdfs dfs -mkdir user
bin/hdfs dfs -mkdir user/hadoop
bin/hdfs dfs -mkdir user/hadoop/conf
bin/hdfs dfs -put etc/hadoop/hadoop-env.sh user/hadoop/conf/
bin/hdfs dfs -ls user/hadoop/co
댓글
댓글 쓰기