hadoop 집단 구축
hadoop 집단 구축
하나.집단 계획
bigdata01
bigdata02
bigdata03
NameNode
NameNode
JournalNode
JournalNode
JournalNode
DataNode
DataNode
DataNode
ZK
ZK
ZK
ResourceManager
ResourceManager
NodeManager
NodeManager
NodeManager
2.클러스터 구축
1. 서버의 호스트 이름, 호스트 이름 및 IP 매핑을 수정합니다.
1.1 호스트 이름 수정vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=bigdata01 ### // , -
1.2 호스트 이름 및 IP 매핑 수정vim /etc/hosts
192.168.20.66 bigdata01
192.168.20.67 bigdata02
192.168.20.68 bigdata03
1.3 네트워크 서비스 재부팅, 구성 적용service network restart
1.4 호스트 이름 수정 성공 여부 테스트hostname
1.5 호스트 이름에 해당하는 IP 보기hostname -i
1.6 호스트 간 상호 액세스, 네트워크 연결 여부 판단 bigdata01
ping bigdata02
ping bigdata03
bigdata02
ping bigdata01
ping bigdata03
bigdata03
ping bigdata01
ping bigdata02
2. 서버 간 SSH 기밀 유지 로그인 구성
2.1 서버bigdata01에서 아래 명령을 실행합니다ssh-key gen -t rsa #
ssh-copy-id bigdata01
ssh-copy-id bigdata02
ssh-copy-id bigdata03
2.2 서버 bigdata02에서 아래 명령을 실행합니다ssh-key gen -t rsa #
ssh-copy-id bigdata01
ssh-copy-id bigdata02
ssh-copy-id bigdata03
2.3 서버bigdata03에서 아래 명령을 실행합니다ssh-key gen -t rsa #
ssh-copy-id bigdata01
ssh-copy-id bigdata02
ssh-copy-id bigdata03
2.4 구성이 완료되면 각 시스템에서 성공 여부를 테스트할 수 있습니다. bigdata01
ssh bigdata02 ssh bigdata03
2.5 사용할 수 없으면 사용할 수 없는 기계에서 ssh-copy-id 명령을 다시 실행합니다.
3. jdk 설치
3.1 jdk를/opt/module 디렉터리 아래로 압축 해제tar -zxvf jdk-8u231-linux-x64.tar.gz -C /opt/module
3.2 jdk 환경 변수 설정vim /etc/profile
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
3.3 구성 적용source /etc/profile
4. 서버 방화벽 닫기
4.1 방화벽 닫기systemctl stop firewalld.service
4.2 방화벽 상태 확인systemctl status firewalld.service
5. Zookeeper 클러스터 구축
5.1 zookeeper를/opt/module 디렉터리 아래로 압축합니다. (zookeeper는 이름에 -bin이 있는 가방을 다운로드해야 합니다.)tar -zxvf apache-zookeeper-3.5.6-bin.tar.gz -C /opt/module/
5.2 zookeeper 아래에 zkData 디렉토리를 만듭니다.mkdir zkData
5.3 conf 디렉토리 아래의 구성 파일 zoo_ 이름 바꾸기simple.cfg mv zoo_simple.cfg zoo.cfg
5.4 zoo를 수정합니다.cfg 파일.
dataDir=/opt/module/zookeeper-3.4.10/zkData
#######################cluster##########################
server.1=bigdata01:2888:3888
server.2=bigdata02:2888:3888
server.3=bigdata03:2888:3888
5.5 zkData 디렉토리 아래에 myid 파일 만들기touch myid
myid 1, zoo.cfg server.1 1。
5.6 설정된zookeeper를 다른 두 서버로 복사하여 myid 파일의 값을 대상으로 하는 서버의 값을 수정합니다.5.7은 각각 Zookeeper를 시작합니다.[root@bigdata01 zookeeper-3.5.6]# bin/zkServer.sh start
[root@bigdata02 zookeeper-3.5.6]# bin/zkServer.sh start
[root@bigdata03 zookeeper-3.5.6]# bin/zkServer.sh start
5.8 시동 상태를 보면 리더가 한 대 있고 이틀 동안 팔로워가 있어 시동이 성공했음을 나타낸다.[root@bigdata01 zookeeper-3.5.6]# bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.5.6/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
[root@bigdata02 zookeeper-3.5.6]# bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.5.6/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader
[root@bigdata03 zookeeper-3.5.6]# bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.5.6/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
5.9 시작 과정에서 org가 나타나면apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Address unresolved: bigdata03:3888 이상, bigdata03:3888 뒤에 빈칸이 있기 때문입니다.
6.hadoop 클러스터 구축
6.1 hadoop을 설치합니다.6.2 Hadoop의 etc/hadoop 디렉터리 아래의 Hadoop-env를 수정합니다.sh 파일.# jdk
JAVA_HOME=/opt/module/jdk1.8.0_144
# , 。
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
export HDFS_JOURNALNODE_USER=root
export HDFS_ZKFC_USER=root
6.3 수정된 etc/hadoop 디렉터리 아래의core-site.xml 파일.
fs.defaultFS
hdfs://mycluster
hadoop.tmp.dir
/opt/module/hadoop-3.2.1/data/tmp
ha.zookeeper.quorum
bigdata01:2181,bigdata02:2181,bigdata03:2181
6.4 Hadoop의 etc/hadoop 디렉터리 아래hdfs-site를 수정합니다.xml 파일.
dfs.nameservices
mycluster
dfs.ha.namenodes.mycluster
nn1,nn2
dfs.namenode.rpc-address.mycluster.nn1
bigdata01:9000
dfs.namenode.rpc-address.mycluster.nn2
bigdata02:9000
dfs.namenode.http-address.mycluster.nn1
bigdata01:50070
dfs.namenode.http-address.mycluster.nn2
bigdata02:50070
dfs.namenode.shared.edits.dir
qjournal://bigdata01:8485,bigdata02:8485,bigdata03:8485
dfs.ha.fencing.methods
shell(/bin/true)
dfs.ha.fencing.ssh.private-key-files
/root/.ssh/id_rsa
dfs.journalnode.edits.dir
/opt/hadoop-3.1.2/data/jn
dfs.permissions.enables
false
dfs.client.failover.proxy.provider.mycluster
org.apache.hadoop.hdfs.server.namenode.ha.Configu redFailoverProxyProvider
dfs.ha.automatic-failover.enabled
true
6.5 Hadoop의 etc/hadoop 디렉터리 아래의 yarn-site를 수정합니다.xml 파일.
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.ha.enabled
true
yarn.resourcemanager.cluster-id
cluster-yarn1
yarn.resourcemanager.ha.rm-ids
rm1,rm2
yarn.resourcemanager.hostname.rm1
bigdata01
yarn.resourcemanager.hostname.rm2
bigdata02
yarn.resourcemanager.zk-address
bigdata01:2181,bigdata02:2181,bigdata03:2181
yarn.resourcemanager.recovery.enabled
true
yarn.resourcemanager.store.class
>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
6.6 고가용 Hadoop 클러스터 시작
vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=bigdata01 ### // , -
vim /etc/hosts
192.168.20.66 bigdata01
192.168.20.67 bigdata02
192.168.20.68 bigdata03
service network restart
hostname
hostname -i
bigdata01
ping bigdata02
ping bigdata03
bigdata02
ping bigdata01
ping bigdata03
bigdata03
ping bigdata01
ping bigdata02
ssh-key gen -t rsa #
ssh-copy-id bigdata01
ssh-copy-id bigdata02
ssh-copy-id bigdata03
ssh-key gen -t rsa #
ssh-copy-id bigdata01
ssh-copy-id bigdata02
ssh-copy-id bigdata03
ssh-key gen -t rsa #
ssh-copy-id bigdata01
ssh-copy-id bigdata02
ssh-copy-id bigdata03
bigdata01
ssh bigdata02 ssh bigdata03
tar -zxvf jdk-8u231-linux-x64.tar.gz -C /opt/module
vim /etc/profile
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
systemctl stop firewalld.service
systemctl status firewalld.service
tar -zxvf apache-zookeeper-3.5.6-bin.tar.gz -C /opt/module/
mkdir zkData
mv zoo_simple.cfg zoo.cfg
dataDir=/opt/module/zookeeper-3.4.10/zkData
#######################cluster##########################
server.1=bigdata01:2888:3888
server.2=bigdata02:2888:3888
server.3=bigdata03:2888:3888
touch myid
myid 1, zoo.cfg server.1 1。
[root@bigdata01 zookeeper-3.5.6]# bin/zkServer.sh start
[root@bigdata02 zookeeper-3.5.6]# bin/zkServer.sh start
[root@bigdata03 zookeeper-3.5.6]# bin/zkServer.sh start
[root@bigdata01 zookeeper-3.5.6]# bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.5.6/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
[root@bigdata02 zookeeper-3.5.6]# bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.5.6/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader
[root@bigdata03 zookeeper-3.5.6]# bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.5.6/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
# jdk
JAVA_HOME=/opt/module/jdk1.8.0_144
# , 。
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
export HDFS_JOURNALNODE_USER=root
export HDFS_ZKFC_USER=root
fs.defaultFS
hdfs://mycluster
hadoop.tmp.dir
/opt/module/hadoop-3.2.1/data/tmp
ha.zookeeper.quorum
bigdata01:2181,bigdata02:2181,bigdata03:2181
dfs.nameservices
mycluster
dfs.ha.namenodes.mycluster
nn1,nn2
dfs.namenode.rpc-address.mycluster.nn1
bigdata01:9000
dfs.namenode.rpc-address.mycluster.nn2
bigdata02:9000
dfs.namenode.http-address.mycluster.nn1
bigdata01:50070
dfs.namenode.http-address.mycluster.nn2
bigdata02:50070
dfs.namenode.shared.edits.dir
qjournal://bigdata01:8485,bigdata02:8485,bigdata03:8485
dfs.ha.fencing.methods
shell(/bin/true)
dfs.ha.fencing.ssh.private-key-files
/root/.ssh/id_rsa
dfs.journalnode.edits.dir
/opt/hadoop-3.1.2/data/jn
dfs.permissions.enables
false
dfs.client.failover.proxy.provider.mycluster
org.apache.hadoop.hdfs.server.namenode.ha.Configu redFailoverProxyProvider
dfs.ha.automatic-failover.enabled
true
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.ha.enabled
true
yarn.resourcemanager.cluster-id
cluster-yarn1
yarn.resourcemanager.ha.rm-ids
rm1,rm2
yarn.resourcemanager.hostname.rm1
bigdata01
yarn.resourcemanager.hostname.rm2
bigdata02
yarn.resourcemanager.zk-address
bigdata01:2181,bigdata02:2181,bigdata03:2181
yarn.resourcemanager.recovery.enabled
true
yarn.resourcemanager.store.class
>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
hadoop bin
./hdfs --daemon start journalnode
# bigdata01 hadoop bin
./hdfs namenode -format
# bigdata01 hadoop bin
./hdfs --daemon start namenode
# bigdata02 hadoop bin
./hdfs namenode -bootstrapStandby
# bigdata01 hadoop bin
./hdfs zkfc -formatZK
# bigdata01 hadoop sbin
./start-dfs.sh
# bigdata02 bigdata03 bin
./hdfs --daemon start datanode
# bigdata01 hadoop sbin
./start-yarn.sh
# bigdata02 bigdata03 hadoop bin
./yarn --daemon start nodemanager
6.7 고가용성 테스트.
# bigdata01 bigdata02 hadoop bin
./hdfs haadmin -getServiceState nn1
./hdfs haadmin -getServiceState nn2
## nn1 standby,nn2 active
# standby NameNode hadoop bin
./hdfs haadmin -transitionToActive nn1
# NameNode active。
# active NameNode hadoop bin
./hdfs haadmin -transitionToStandby nn2
# NameNode standby。
NameNode 상태가 active인 서버의 active를 중지합니다.
# active NameNode hadoop bin
./hdfs --daemon stop namenode
# standby NameNode , active, 。
# bigdata01 bigdata02 hadoop bin
./hdfs rmadmin -getServiceState rm1
./hdfs rmadmin -getServiceState rm2
## rm1 standby,rm2 active
# standby resourcemanager hadoop bin
./yarn rmadmin -transitionToActive rm1
# resourcemanager active。
# active Nresourcemanager hadoop bin
./hdfs rmadmin -transitionToStandby rm2
# resourcemanager standby。
리소스 관리자 상태가active 서버인 리소스 관리자를 정지합니다.
# active resourcemanager hadoop bin
./yarn --daemon stop resourcemanager
# standby resourcemanager , active, 。
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.