Error: Could not find or load main class org.apache.zookeeper.server.quorum.QuorumPeerMain

해당 에러는 zookeeper 설치 시 압축파일에 bin이라는 단어가 안붙은 tar.gz을 사용했을때 나타나는 에러입니다.

 

apache-zookeeper-3.5.10.tar.gz 이 파일이 아닌

apache-zookeeper-3.5.10-bin.tar.gz  해당 파일을 사용해주시면됩니다.

반응형

'BigData > Zookeeper' 카테고리의 다른 글

Zookeeper 설치  (0) 2023.07.24

centos7 기준입니다.

mast01~03 3대의 서버에 주키퍼를 설치하겠습니다. 계정은 hadoop입니다.

 

1. 압축 파일 다운로드 및 해제

action server: mast01, mast02, mast03

user: root

pwd: /opt/apps/

cmd:

wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.10/apache-zookeeper-3.5.10-bin.tar.gz

tar xvfz apache-zookeeper-3.5.10-bin.tar.gz
rm -rf apache-zookeeper-3.5.10-bin.tar.gz

mv apache-zookeeper-3.5.10-bin/ zookeeper-3.5.10
chown -R hadoop:hadoop ./zookeeper-3.5.10

su - hadoop
cd /opt/apps/zookeeper-3.5.10

 

2. 컨피그파일 수정

action server: mast01, mast02, mast03

user: hadoop

pwd: /opt/apps/zookeeper-3.5.10

cmd:

cp conf/zoo_sample.cfg conf/zoo.cfg

vi conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
# 주키퍼 디렉토리 경로
dataDir=/data/zookeeper/data
clientPort=2181
maxClientCnxns=0
maxSessionTimeout=180000
server.1=mast01:2888:3888
server.2=mast02:2888:3888
server.3=mast03:2888:3888

exit
mkdir -p /data/zookeeper/data
chown -R hadoop:hadoop /data/zookeeper
su - hadoop
cd /data/zookeeper/data

 

3. myid 파일 생성

action server: mast01, mast02, mast03

user: hadoop

pwd: /data/zookeeper/data

cmd:

# mast01
vi myid

1
# mast02
vi myid

2
# mast03
vi myid

3

cd /opt/apps/zookeeper-3.5.10

 

4. zookeeper 실행

action server: mast01, mast02, mast03

user: hadoop

pwd: /opt/apps/zookeeper-3.5.10

cmd:

# 주키퍼 실행
./bin/zkServer.sh start

# 주키퍼 상태확인
./bin/zkServer.sh status

 

* 두 서버는 follower, 한 서버는 leader임을 확인

반응형

centos7 기준입니다.

 

jdk8 버전 다운로드 후

/opt/apps/라는 디렉토리에 압축파일을 업로드 하였습니다.

 

추후 진행입니다.

 

1. 압축 해제 및 폴더명 변경

tar xvfz /opt/apps/[jdk8 TAR.GZ]

mv /opt/apps/[압축해제된 폴더] /opt/apps/jdk8

2. 환경변수 등록 및 반영

vi /etc/profile.d/java.sh

export JAVA_HOME=/opt/apps/jdk8
export PATH=$PATH:$JAVA_HOME/bin

# 적용 확인
java -version

 

반응형

'Linux' 카테고리의 다른 글

Linux) CentOS 7 EOS에 따른 yum repo 변경  (29) 2024.07.02
linux) yum install npm  (0) 2024.03.14
centos linux ntp enable  (0) 2023.07.24
centos linux python 버전 변경  (0) 2023.07.18
centos linux 파일 퍼미션권한 변경 및 부여  (0) 2023.07.18

centos7 기준입니다

mast01~03, work01~03의 6대의 서버가 있고, mast01,mast02가 ntp 메인입니다.

 

1. ntp 설치

action server: all

User: root

pwd: -

yum install -y ntp

 

2. ntp 설정파일 수정 (* 각 서버마다 콘피그값 다름)

action server: all

User: root

pwd: -

# mast01 서버
vi /etc/ntp.conf

# 주석 해제 및 앞단 ip 해당 서버의 ip의 D클래스는 0으로 수정
# 예를 들어 mast01서버가 192.168.56.100이라면 아래와 같이 수정 
restrict 192.168.56.0 mask 255.255.255.0 nomodify notrap 

# 4행 주석 처리
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst

# 아래행추가
server 127.127.1.0

# mast02 서버
vi /etc/ntp.conf

# 주석 해제 및 앞단 ip 해당 서버의 ip의 D클래스는 0으로 수정
# 예를 들어 mast02서버가 192.168.56.101이라면 아래와 같이 수정 
restrict 192.168.56.0 mask 255.255.255.0 nomodify notrap 

# 4행 주석 처리
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst

# 아래행추가
server mast01
server 127.127.1.0
server 127.127.1.0

# mast03, work01~03서버
vi /etc/ntp.conf

# 4행 주석 처리
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst

server mast01
server mast02

3. ntp 활성화

action server: all

User: root

pwd: -

systemctl enable ntpd
systemctl start ntpd

 

4. ntp 상태확인

action server: all

User: root

pwd: -

ntpq -p

 

반응형

centos7 기준입니다.

6대의 서버가 준비되어있고, ntp설정,

ip설정 및 호스트네임 등록,

jdk 설정, zookeeper 설치가

완료됨을 가정합니다.

 

https://developer-woong.tistory.com/37

 

centos linux ntp enable

centos7 기준입니다 mast01~03, work01~03의 6대의 서버가 있고, mast01,mast02가 ntp 메인입니다. 1. ntp 설치 action server: all User: root pwd: - yum install -y ntp 2. ntp 설정파일 수정 (* 각 서버마다 콘피그값 다름) action

developer-woong.tistory.com

https://developer-woong.tistory.com/31

 

centos linux 고정 IP 설정

centos7 기준입니다. 192.168.10.101로 서버 IP를 고정시키고 싶다면, 파란색부분 추가 및 수정 vi /etc/sysconfig/network-scripts/ifcfg-eth0 고정할 IP PREFIX=24 GATEWAY=192.168.10.1 -> 운영환경이 아닌 개인 테스트 용이

developer-woong.tistory.com

https://developer-woong.tistory.com/30

 

centos linux 호스트네임 등록

192.168.10.1(mast01), 192.168.10.2(mast02), 192.168.10.3(mast03), 192.168.10.4(work01), 192.168.10.5(work02), 192.168.10.6(work03), 192.168.10.4(work04)의 서버들이 각각 자신의 호스트명을 등록하고 다른 서버들과 호스트명으로

developer-woong.tistory.com

https://developer-woong.tistory.com/38

 

centos linux java 환경변수설정

centos7 기준입니다. jdk8 버전 다운로드 후 /opt/apps/라는 디렉토리에 압축파일을 업로드 하였습니다. 추후 진행입니다. 1. 압축 해제 및 폴더명 변경 tar xvfz /opt/apps/[jdk8 TAR.GZ] mv /opt/apps/[압축해제된

developer-woong.tistory.com

https://developer-woong.tistory.com/39

 

Zookeeper 설치

centos7 기준입니다. mast01~03 3대의 서버에 주키퍼를 설치하겠습니다. 계정은 hadoop입니다. 1. 압축 파일 다운로드 및 해제 action server: mast01, mast02, mast03 user: root pwd: /opt/apps/ cmd: wget https://archive.apache.o

developer-woong.tistory.com

 

서버 세팅 및 초기 설정부터의 글은 본 블로그의 하둡 완벽설치가이드를 참조해 주세요

(* 호스트네임은 다릅니다.)

 

하둡에 대한 유저는 모두 hadoop:hadoop으로 통일하겠습니다.

 

조언과 충고 부탁드립니다!

 

서버(호스트네임기준):

    mast01 - 네임노드, 주키퍼, 저널노드

    mast02 - 네임노드, 주키퍼, 저널노드, 리소스매니저, 히스토리서버

    mast03 - 주키퍼, 저널노드, 리소스매니저

    work01 - 데이터노드, 노드매니저

    work02 - 데이터노드, 노드매니저

    work03 - 데이터노드, 노드매니저

 

1. 유저 및 폴더 생성

action server: all

user: root

pwd: -

cmd:

# 계정 생성 및 비밀번호 설정
adduser hadoop
passwd hadoop

# 사용할 폴더 생성
mkdir -p /opt/apps/

# 계정 전환
su - hadoop

 

2. 각 서버간 ssh 키 교환

action server: all

user: hadoop

pwd: /home/hadoop

cmd:

# ssh 키 생성, ssh 포트는 22002임을 가정합니다. 디폴트라면 -p 옵션을 제외해주세요.
ssh-keygen

# 각 서버간 키 교환
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@mast01 -p 22002
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@mast02 -p 22002
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@mast03 -p 22002
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@work01 -p 22002
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@work02 -p 22002
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@work03 -p 22002

 

3. 하둡 파일 다운로드 및 압축 해제

action server: mast01

user: root

pwd: /opt/apps

cmd:

# mast01서버에서 파일 다운로드, 설정 파일 수정 후 다른 서버들에게 배포할 예정

# 계정 전환 - root
exit

# 폴더 이동
cd /opt/apps/

# 하둡 파일 다운로드
wget https://archive.apache.org/dist/hadoop/core/hadoop-3.3.5/hadoop-3.3.5.tar.gz

# 압축해제
tar xvfz /opt/apps/hadoop-3.3.5.tar.gz

# 폴더 이동
cd /opt/apps/hadoop-3.3.5/etc/hadoop

 

4. 하둡 config 설정 1

action server: mast01

user: root

pwd: /opt/apps/hadoop-3.3.5/etc/hadoop

cmd:

# 데이터노드를 지정합니다.
vi workers
work01
work02
work03

# 하둡 실행 설정을 작성합니다.
vi hadoop-env.sh
.....
.....
# java 경로를 지정해줍니다.
export JAVA_HOME=/opt/apps/jdk8/
# ssh 포트가 22가 아니라면 해당 행에 포트를 지정해줍니다.
export HADOOP_SSH_OPTS="-p 22002"
.....
.....
# pid파일이 생성될 위치를 지정해줍니다.
export HADOOP_PID_DIR=/data/hadoop/pids

5. 하둡 config 설정 2

action server: mast01

user: root

pwd: /opt/apps/hadoop-3.3.5/etc/hadoop

cmd:

vi core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <!-- hadoop nameservice 지정 -->
        <value>hdfs://NNHA</value>
    </property>
    <property>
        <name>hadoop.proxyuser.hadoop.hosts</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.hadoop.groups</name>
        <value>*</value>
    </property>
    <property>
        <name>ha.zookeeper.quorum</name>
        <!-- zookeeper cluster  지정 -->
        <value>mast01:2181,mast02:2181,mast03:2181</value>
    </property>
</configuration>

vi hdfs-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
--><!-- Put site-specific property overrides in this file. -->
<configuration>
        <property>
                <name>dfs.client.failover.proxy.provider.NNHA</name>
                <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <!-- namenode 관련 데이터가 저장될 경로 -->
                <value>/data/hadoop/dfs/namenode</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <!-- datanode 관련 데이터가 저장될 경로 -->
                <value>/data/hadoop/dfs/datanode</value>
        </property>
        <property>
                <name>dfs.journalnode.edits.dir</name>
                <!-- journalnode 관련 데이터가 저장될 경로 -->
                <value>/data/hadoop/dfs/journalnode</value>
        </property>
        <property>
                <name>dfs.nameservices</name>
                <!-- hadoop nameservice 지정 -->
                <value>NNHA</value>
        </property>
        <property>
                <name>dfs.ha.namenodes.NNHA</name>
                <!-- 각 네임노드의 별칭 지정 -->
                <value>name1,name2</value>
        </property>
        <property>
                <name>dfs.namenode.rpc-address.NNHA.name1</name>
                <value>mast01:8020</value>
        </property>
        <property>
                <name>dfs.namenode.rpc-address.NNHA.name2</name>
                <value>mast02:8020</value>
        </property>
        <property>
                <name>dfs.namenode.http-address.NNHA.name1</name>
                <value>mast01:9870</value>
        </property>
        <property>
                <name>dfs.namenode.http-address.NNHA.name2</name>
                <value>mast02:9870</value>
        </property>
        <property>
                <name>dfs.namenode.shared.edits.dir</name>
                <value>qjournal://mast01:8485;mast02:8485;mast03:8485/NNHA</value>
        </property>
        <property>
                <name>dfs.ha.automatic-failover.enabled</name>
                <value>true</value>
        </property>
        <property>
                <name>dfs.ha.fencing.methods</name>
                <value>sshfence(hadoop:22002)</value>
        </property>
        <property>
                <name>dfs.ha.fencing.ssh.private-key-files</name>
                <value>/home/hadoop/.ssh/id_rsa</value>
        </property>
        <property>
                <name>dfs.permissions.superusergroup</name>
                <value>hadoop</value>
        </property>
        <property>
                <name>dfs.webhdfs.enabled</name>
                <value>true</value>
        </property>
</configuration>

vi mapred-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.map.memory.mb</name>
                <value>2560</value>
        </property>
        <property>
                <name>mapreduce.map.java.opts</name>
                <value>-Xmx2048m</value>
        </property>
        <property>
                <name>mapreduce.reduce.memory.mb</name>
                <value>2560</value>
        </property>
        <property>
                <name>mapreduce.reduce.java.opts</name>
                <value>-Xmx2048m</value>
        </property>
        <property>
                <name>mapreduce.task.io.sort.mb</name>
                <value>1024</value>
        </property>
</configuration>

vi yarn-site.xml

<?xml version="1.0"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<configuration>

<!-- Site specific YARN configuration properties -->
        <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>/data/hadoop/yarn/rm-local-dir</value>
        </property>
        <property>
                <name>yarn.resourcemanager.fs.state-store.uri</name>
                <value>/data/hadoop/yarn/system/rmstore</value>
        </property>
        <property>
                <name>yarn.application.classpath</name>
                <value>/opt/apps/hadoop-3.3.5/etc/hadoop,
                        /opt/apps/hadoop-3.3.5/share/hadoop/common/*,
                        /opt/apps/hadoop-3.3.5/share/hadoop/common/lib/*,
                        /opt/apps/hadoop-3.3.5/share/hadoop/hdfs/*,
                        /opt/apps/hadoop-3.3.5/share/hadoop/hdfs/lib/*,
                        /opt/apps/hadoop-3.3.5/share/hadoop/mapreduce/*,
                        /opt/apps/hadoop-3.3.5/share/hadoop/mapreduce/lib/*,
                        /opt/apps/hadoop-3.3.5/share/hadoop/yarn/*,
                        /opt/apps/hadoop-3.3.5/share/hadoop/yarn/lib/*
                </value>
        </property>
        <!-- RM HA-->
        <property>
                <name>yarn.resourcemanager.ha.enabled</name>
                <value>true</value>
        </property>
        <property>
                <name>yarn.resourcemanager.cluster-id</name>
                <value>yarn-cluster</value>
        </property>
        <property>
                <name>yarn.resourcemanager.ha.rm-ids</name>
                <value>rm1,rm2</value>
        </property>
        <property>
                <name>yarn.resourcemanager.zk-address</name>
                <value>mast01:2181,mast02:2181,mast03:2181</value>
        </property>
        <property>
                <name>yarn.resourcemanager.recovery.enabled</name>
                <value>true</value>
        </property>
        <!-- RM1 configs -->
        <property>
                <name>yarn.resourcemanager.hostname.rm1</name>
                <value>mast02</value>
        </property>
        <property>
                <name>yarn.resourcemanager.address.rm1</name>
                <value>mast02:8032</value>
        </property>
        <property>
                <name>yarn.resourcemanager.scheduler.address.rm1</name>
                <value>mast02:8030</value>
        </property>
        <property>
                <name>yarn.resourcemanager.webapp.https.address.rm1</name>
                <value>mast02:8090</value>
        </property>
        <property>
                <name>yarn.resourcemanager.webapp.address.rm1</name>
                <value>mast02:38088</value>
        </property>
        <property>
                <name>yarn.resourcemanager.resource-tracker.address.rm1</name>
                <value>mast02:8031</value>
        </property>
        <property>
                <name>yarn.resourcemanager.admin.address.rm1</name>
                <value>mast02:8033</value>
        </property>
        <!-- RM2 configs -->
        <property>
                <name>yarn.resourcemanager.hostname.rm2</name>
                <value>mast03</value>
        </property>
        <property>
                <name>yarn.resourcemanager.address.rm2</name>
                <value>mast03:8032</value>
        </property>
        <property>
                <name>yarn.resourcemanager.scheduler.address.rm2</name>
                <value>mast03:8030</value>
        </property>
        <property>
                <name>yarn.resourcemanager.webapp.https.address.rm2</name>
                <value>mast03:8090</value>
        </property>
        <property>
                <name>yarn.resourcemanager.webapp.address.rm2</name>
                <value>mast03:38088</value>
        </property>
        <property>
                <name>yarn.resourcemanager.resource-tracker.address.rm2</name>
                <value>mast03:8031</value>
        </property>
        <property>
                <name>yarn.resourcemanager.admin.address.rm2</name>
                <value>mast03:8033</value>
        </property>
        <!-- 튜닝 -->
        <property>
                <name>yarn.nodemanager.resource.cpu-vcores</name>
                <value>6</value>
        </property>
        <property>
                <name>yarn.nodemanager.resource.memory-mb</name>
                <value>51200</value>
        </property>
        <property>
                <name>yarn.scheduler.minimum-allocation-vcores</name>
                <value>1</value>
        </property>
        <property>
                <name>yarn.scheduler.maximum-allocation-vcores</name>
                <value>3</value>
        </property>
        <property>
                <name>yarn.scheduler.increment-allocation-vcores</name>
                <value>1</value>
        </property>
        <property>
                <name>yarn.scheduler.minimum-allocation-mb</name>
                <value>1024</value>
        </property>
        <property>
                <name>yarn.scheduler.maximum-allocation-mb</name>
                <value>10240</value>
        </property>
        <property>
                <name>yarn.scheduler.increment-allocation-mb</name>
                <value>1024</value>
        </property>
</configuration>

cd /opt/apps/

6. hadoop 파일 압축 및 배포

action server: mast01

user: root

pwd: /opt/apps/

cmd:

tar cvfz hadoop.tar.gz ./hadoop-3.3.5

scp -P 22002 /opt/apps/hadoop.tar.gz root@mast02:/opt/apps/
scp -P 22002 /opt/apps/hadoop.tar.gz root@mast03:/opt/apps/
scp -P 22002 /opt/apps/hadoop.tar.gz root@work01:/opt/apps/
scp -P 22002 /opt/apps/hadoop.tar.gz root@work02:/opt/apps/
scp -P 22002 /opt/apps/hadoop.tar.gz root@work03:/opt/apps/

 

7. hadoop 파일 압축 해제

action server: mast02. mast03, work01, work02, work03

user: root

pwd: -

cmd:

cd /opt/apps/

tar xvfz /opt/apps/hadoop.tar.gz

 

8. hadoop 폴더 생성 및 권한 부여

action server: all

user: root

pwd: -

cmd:

mkdir -p /data/hadoop

mkdir /data/hadoop/dfs
mkdir /data/hadoop/yarn
mkdir /data/hadoop/pids
chmod 777 /data/hadoop/pids

mkdir /opt/apps/hadoop-3.3.5/logs
chmod 777 /opt/apps/hadoop-3.3.5/logs

chown -R hadoop:hadoop /opt/apps/hadoop-3.3.5
chown -R hadoop:hadoop /data/hadoop/

 

9. hadoop 환경변수 설정

action server: all

user: root

pwd: -

cmd:

vi /etc/profile.d/hadoop.sh

export HADOOP_HOME=/opt/apps/hadoop-3.3.5
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

source /etc/profile.d/hadoop.sh

su - hadoop
cd /opt/apps/hadoop-3.3.5

 

10. hadoop 실행

action server: mast01, mast02, mast03

user: hadoop

pwd: /opt/apps/hadoop-3.3.5

cmd:

# mast01 서버 실행 (최초 1회)
./bin/hdfs zkfc -formatZK

# mast01, mast02, mast03 서버 실행
./bin/hdfs --daemon start journalnode

# mast01 서버 실행 (최초 1회, 지정한 nameservice 입력 )
./bin/hdfs namenode -format NNHA

# mast01 서버 실행
./bin/hdfs --daemon start namenode
./bin/hdfs --daemon start zkfc
./bin/hdfs --workers --daemon start datanode

# mast02 서버 실행
./bin/hdfs namenode -bootstrapStandby (최초 1회)
./bin/hdfs --daemon start namenode
./bin/hdfs --daemon start zkfc

 

11. HDFS 경로 생성

action server: mast01

user: hadoop

pwd: /opt/apps/hadoop-3.3.5

cmd:

hdfs dfs -mkdir /tmp
hdfs dfs -chmod 777 /tmp
hdfs dfs -mkdir /user
hdfs dfs -mkdir /user/hadoop

 

12. YARN, History 서버 실행

action server: mast02

user: hadoop

pwd: /opt/apps/hadoop-3.3.5

cmd:

./sbin/start-yarn.sh

./bin/mapred --daemon start historyserver

 

13. 실행 확인

action server: all

user: hadoop

pwd: /opt/apps/hadoop-3.3.5

cmd:

# namenode
mast01:9870, mast02:9870  웹 UI 확인

# resource manager
mast02:38088, mast03:38088 웹 UI 확인

# journalnode (mast01, mast02, mast03)
netstat -nltp | grep 8485
혹은 mast01:8480, mast02:8480, mast03:8480 웹 UI 확인

# zkfc (mast01, mast02)
jps
DFSZKFailoverController

# JobHistoryServer
mast02:19888 웹 UI 확인

14. namenode, resource manager HA 상태 확인

action server: mast02, mast02

user: hadoop

pwd: /opt/apps/hadoop-3.3.5

cmd:

------ namenode failover check ------
# 앞서 hdfs-site.xml 에서 설정한 네임노드 별칭
# mast01 서버에서 진행
./bin/hdfs haadmin -getServiceState name1
./bin/hdfs haadmin -getServiceState name2

# 액티브인 서버에서 실행
./bin/hdfs --daemon stop namenode 

# 추후 스탠바이 네임노드가 액티브가 되었는지 확인
./bin/hdfs haadmin -getServiceState name1
./bin/hdfs haadmin -getServiceState name2

# 앞서 종료한 네임노드 기동
./bin/hdfs --daemon start namenode 

------ resource manager HA check ------
mast02:38088, mast03:38088 웹 UI 접속 시
하나의 url로 리다이렉트 되는데, 스탠바이 리소스매니저의 웹으로 접근하게되면
자동으로 액티브 리소스매니저의 웹으로
redirect됨.

# 명령어확인
# mast02서버에서 실행
./bin/yarn rmadmin -getServiceState rm1
./bin/yarn rmadmin -getServiceState rm2

 

15. 추후 기동/종료

action server: mast01, mast02, mast02

user: hadoop

pwd: /opt/apps/hadoop-3.3.5

cmd:

----- HADOOP, YARN STOP -------
# mast02 서버에서 실행
./bin/mapred --daemon stop historyserver
./sbin/stop-yarn.sh

# mast02 서버에서 실행 (스탠바이 네임노드인 곳)
./bin/hdfs --daemon stop zkfc
./bin/hdfs --daemon stop namenode

# mast01 서버에서 실행 (액티브 네임노드인 곳)
./bin/hdfs --workers --daemon stop datanode
./bin/hdfs --daemon stop zkfc
./bin/hdfs --daemon stop namenode

# mast01, mast02, mast03 서버에서 실행
./bin/hdfs --daemon stop journalnode
./bin/hdfs --daemon stop journalnode
./bin/hdfs --daemon stop journalnode

----- HADOOP, YARN START -------
# mast01, mast02, mast03 서버에서 실행
./bin/hdfs --daemon start journalnode
./bin/hdfs --daemon start journalnode
./bin/hdfs --daemon start journalnode

# mast01 서버에서 실행
./bin/hdfs --daemon start namenode
./bin/hdfs --daemon start zkfc
./bin/hdfs --workers --daemon start datanode

# mast02 서버에서 실행
./bin/hdfs --daemon start namenode
./bin/hdfs --daemon start zkfc
./sbin/start-yarn.sh
./bin/mapred --daemon start historyserver

16. 최종확인

jps

mast01:9870

mast02:9870

mast02:38088, mast03:38088

 

mast01,02, 03:8480

mast02:19888

wordcount 예제

# 워드카운트 테스트용 hdfs 경로 생성
hdfs dfs -mkdir /user/hadoop/testwordcount

# hadoop-env.sh 파일을 hdfs상에 업로드
hdfs dfs -put /opt/apps/hadoop-3.3.5/etc/hadoop/hadoop-env.sh /user/hadoop/testwordcount/

# 업로드한 파일을 워드카운트 및 결과를 /user/hadoop/testwordcount/output에 저장합니다.
yarn jar /opt/apps/hadoop-3.3.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.5.jar wordcount /user/hadoop/testwordcount/ /user/hadoop/testwordcount/output

# 결과를 cat합니다.
hdfs dfs -cat /user/hadoop/testwordcount/output/part-r-00000

mast02:38088

긴 글 읽어주셔서 감사합니다.

 

 

 

 

반응형

python 버전 변경법입니다.

centos7 기준입니다.

 

yum install -y python3

 

ls /bin | grep python

update-alternatives --config python
update-alternatives --install /bin/python python /bin/python2.7 1
update-alternatives --install /bin/python python /bin/python3.6 2
update-alternatives --config python
2 누르고 엔터

vi /usr/bin/yum
vi /usr/libexec/urlgrabber-ext-down

위 두 파일의 맨 첫 줄의
!# /usr/bin/python -> !# /usr/bin/python2로 변경

 

* 위 두 파일을 수정하지 않으면 yum이 동작하지않음.

반응형

'Linux' 카테고리의 다른 글

centos linux java 환경변수설정  (0) 2023.07.24
centos linux ntp enable  (0) 2023.07.24
centos linux 파일 퍼미션권한 변경 및 부여  (0) 2023.07.18
centos linux 자주 쓰는 명령어 정리  (0) 2023.07.18
centos linux 고정 IP 설정  (0) 2023.07.18

 

주요 스펙

호스트OS - windows10 home

게스트OS들 - centOS7

호스트OS는 공유기(WI-FI) 연결 환경

 

각 서버의 호스트명:

nn01

rm01

jn01

dn01

dn02

dn03

 

준비할파일:

● centOS7 디스크 이미지 파일(* 최상단 kakao 혹은 naver가 빠름)

http://isoredirect.centos.org/centos/7/isos/x86_64/

● virtualbox 6.1 - https://www.virtualbox.org/wiki/Downloads (* Windows hosts 클릭, 다운로드 후 .exe 실행)

 

 

가상 머신(Virtual Machine, VM)이란?:

물리적 하드웨어 시스템에 구축되어 자체 CPU, 메모리, 네트워크 인터페이스 및 스토리지를 갖추고 가상 컴퓨터 시스템으로 작동하는 가상환경이다.

자신의 로컬PC위에 마치 여러 컴퓨터를 더 생성하는 것과 같으며,

하둡은 기본적으로 분산처리이기 때문에 여러 컴퓨터를 통해 구축이 되고,

실제로 테스트 해보기 위해 많은 컴퓨터들을 개인적으로 실제 구축하기에 힘든 점을

이 가상머신을 통해 보완하고 실제와 같은 환경으로 테스트 해 볼 수 있다.

[참조]www.redhat.com/ko/topics/virtualization/what-is-a-virtual-machine

윈도우 탐색기 – cmd – ipconfig 입력 – VirtualBox Host-Only Network 주소 확인

(아래 Virtual Machine 내 호스트 네트워크 관리자 설정에 필요)

 

 


가상 머신(Virtual Box) 실행 및 호스트 네트워크 관리자 설정

 


IPv4 주소에 위 명령 프롬포트 창의 VirtualBox Host-Only Network 주소를 입력

다음과 같이 설정


가상 서버 생성

(이름 설정에 ‘cent’를 입력하면 자동으로 리눅스 계열로 설정된다, 후 원하는 서버 이름 입력)

 


메모리 크기 설정


 

아래와 같이 체크 확인 후 다음

 


아래와 같이 체크 확인 후 다음

 


 

아래와 같이 체크 확인 후 다음

 


아래와 같이 체크 확인 후 다음


 

아래 순서에 따라 클릭

(서버 이름(nn01)옆 네모 박스는 회사 업무 중 복구를 위한 스냅샷, 본 가이드와는 무관하여 가림 처리, 초기 설치 시 없어도 그대로 진행) 


다운로드 받았던 디스크 이미지 파일 등록


 

후 네트워크 클릭 - 어댑터1에 디폴트로 NAT 어댑터가 등록되어있음을 확인

 


어댑터 2를 새로 추가 - 아래와 같이 설정

 


 

여기서 잠깐!!

Virtual box 네트워크 어댑터 설정 방법:

가상 서버를 생성하였을 때, 기본적으로 어댑터 1에는 NAT 어댑터가 등록된다.

NAT 어댑터는 게스트 OS(새로 생성한 가상서버)가 호스트OS(로컬PC의 운영체제 여기서는 WINDOWS 10)의 IP를 통해 외부 인터넷에 연결해주는 가장 간단한 방법이다. 외부 인터넷과의 연결을 통해 wget등의 명령어로 필요한 모듈들을 설치한다. 하지만 게스트OS간의 통신이 불가하다.

 

호스트 전용 어댑터는 외부 인터넷과는 단절되어 있지만 구축한 게스트OS간의 통신이 가능하다.

 

이 두 어댑터를 사용하여 서로의 단점을 보완, 게스트->외부 인터넷, 게스트 -> 게스트 통신이 가능하다.

하둡은 분산 처리 시스템이기 때문에 각 게스트OS간의 통신이 원활이 이루어져야 한다.

[참조] https://technote.kr/213

 

VirtualBox, 가상 네트워크 설정하기

VirtualBox에 OS를 설치하고 Network이 되는지 확인해 보면 일반적으로 별 탈 없이 잘 되곤한다. 잘 되니까 별다르게 신경쓰는 일이 없는 것이 사실이다. 네트워크와 관련된 작업을 하지 않는 이상 별

technote.kr

위와 같은 과정으로 rm01, jn01, dn01, dn02, dn03의 서버를 생성한다

jdk, selinux, 방화벽등의 설정들을 초기 생성한 nn01에 먼저 설정 후에 복제하는 방법도 있지만,

필자는 하둡 구축에 대해 공부해나가는 단계였기에 일일이 모든 서버에 설정을 해주며 이해를 해나갔다.

솔직히 복제했을 때 uuid가 같다는 등... 이런 부분이 뭔가 나중에 오류가 있을까라는 생각(안 날수도 있고, 다른 복제 방법이 있을 수 있지만..)과 직접 여러 과정을 반복하며 익숙해지기 위함도 있다.

 


완성된 6개의 서버

(* 서버 이름 옆 네모 박스는 회사 업무 중 복구를 위한 스냅샷,

본 가이드와는 무관하므로 가림 처리.)

 

*스냅샷: 가상 서버를 활용해 작업을 할 시, 어떠한 오류로 인해 서버 자체가 다운되는 등의 심각한 오류가 발생할 수 있는데, 특정 지점을 스냅샷으로 저장해두면 오류가 나더라도 지정한 스냅샷으로 서버가 복구된다.

 

하둡을 구축하는 과정은 환경 설정이 매우 많고 오류 추적이 꽤 힘드므로 각 설정마다 스냅샷을 저장해두는 습관 중요!


 

nn01 서버 시작

 


Install CentOS7 Enter

 


좌측 상단 파일 - 환경 설정 - 입력 - 호스트 키 조합 설정(게스트 OS에서 호스트OS로 빠져나올 때 혹은 반대)

 


언어 설정(본 가이드는 디폴트) - Countinue

 


INSTALLATION DESTINATION 클릭

 


별다른 클릭 없이 Done 클릭 (* 경고 표시가 사라짐, 이 과정을 거치지 않아도 자동으로 설정됨)


 

NETWORK & HOST NAME 클릭


enp0s3 이더넷 스위치 ON 클릭 후 Done (* enp0s8은 건드리지 않는다 – 서버 실행 후 설정할 예정)

 


Begin Installation 클릭

 


 

설치가 진행된다. ROOT PASSWORD 클릭

 


비밀번호 설정 후 Done (* 비밀번호가 권장하는 형식이 아니어도 Done을 두 번 클릭하면 설정되어 넘어간다.)

 


Reboot 클릭

 


Enter

 


root - 비밀번호 입력 - 접속 확인

 


위와 같은 과정을 다른 서버 5대(rm01, jn01, dn01, dn02, dn03)에도 똑같이 해주시면됩니다!

반응형

centos7 기준입니다.

 

chmod [부여할권한] [대상 파일]

ex. test.sh라는 파일에 대해 읽기, 쓰기, 실행권한을 모두 부여하려면

chmod 755 test.sh 이렇게 사용하시면됩니다.

숫자 계산법은 파일명 앞에 보면

rwx    rwx    rwx

이렇게 문자들이 있는데

첫 번째 칸의 rwx는 소유자에 대한 퍼미션

두 번째 칸의 rwx는 소유그룹에 대한 퍼미션

세 번째 칸의 rwx는 이 외에 대한 퍼미션입니다.

r은 읽기, w는 쓰기, x는 실행 권한이며,

r은 4, w는 2, x는 1로 계산됩니다.

위의 test.sh는 755 권한을 주었으니

rwxrw-rw- 이렇게 퍼미션이 부여가 되고,

해석하자면, 파일의 소유자는 읽기, 쓰기, 실행을 모두 할 수 있고,

소유 그룹은 읽기, 쓰기, 이 외도 읽기, 쓰기만 가능한 뜻입니다.

반응형

'Linux' 카테고리의 다른 글

centos linux ntp enable  (0) 2023.07.24
centos linux python 버전 변경  (0) 2023.07.18
centos linux 자주 쓰는 명령어 정리  (0) 2023.07.18
centos linux 고정 IP 설정  (0) 2023.07.18
centos linux 호스트네임 등록  (0) 2023.07.18

centos linux 자주 쓰는 명령어 정리

수시로 업데이트 할 예정입니다.

 

- 계정 추가

adduser [계정명]

 

- 계정 패스워드설정

passwd [계정명]

 

- 핑 테스트

ping [ip or domain]

 

- 호스트네임 확인

hostname

 

- ip 확인

hostname -i

 

- 폴더 생성

mkdir [폴더명]

ex. /opt/apps/ 밑에 test라는 폴더 생성

mkdir /opt/apps/test

만약 /opt/apps/라는 폴더가 없으면

하나씩 만들어줘도 되고

한 번에 모두 만들고 싶다면 -p옵션을 붙이면 상위 디렉터리까지 만들어집니다.

mkdir -p /opt/apps/test

 

- 파일 삭제

rm [파일명]

-f 옵션을 붙이면 삭제하겠습니까라고 물어보지 않고 바로 삭제되니 주의

 

- 폴더 삭제

rm -r [폴더명]

마찬가지로 -f 옵션을 붙이면 물어보지않고 바로 삭제되니 주의

 

- ssh 키 생성

ssh-kegen

 

- ssh 키 교환

ssh-copy-id -i ~/.ssh/id_rsa.pub [계정명]@[ip or hostname] -p [타겟서버쪽 ssh 포트, 디폴트는 22]

 

- 파일 및 폴더 권한 변경

chown -R [계정명]:[그룹명] [파일 혹은 디렉토리]

-R 옵션은 권한을 줄 대상이 디렉토리일 때, 해당 디렉토리의 하위 내용까지 모두 권한을 적용

ex. /opt/apps/test/의 소유권을 test라는 계정과 testgroup라는 그룹에 부여하고,

test폴더 하위의 모든 파일 및 디렉토리에도 동일하게 적용하려면

chown -R test:testgroup /opt/apps/test

이렇게 사용하시면됩니다.

 

- 파일 퍼미션(권한) 변경

chmod [부여할권한] [대상 파일]

ex. test.sh라는 파일에 대해 읽기, 쓰기, 실행권한을 모두 부여하려면

chmod 755 test.sh 이렇게 사용하시면됩니다.

숫자 계산법은 파일명 앞에 보면

rwx    rwx    rwx

이렇게 문자들이 있는데

첫 번째 칸의 rwx는 소유자에 대한 퍼미션

두 번째 칸의 rwx는 소유그룹에 대한 퍼미션

세 번째 칸의 rwx는 이 외에 대한 퍼미션입니다.

r은 읽기, w는 쓰기, x는 실행 권한이며,

r은 4, w는 2, x는 1로 계산됩니다.

위의 test.sh는 755 권한을 주었으니

rwxrw-rw- 이렇게 퍼미션이 부여가 되고,

해석하자면, 파일의 소유자는 읽기, 쓰기, 실행을 모두 할 수 있고,

소유 그룹은 읽기, 쓰기, 이 외도 읽기, 쓰기만 가능한 뜻입니다.

 

- 파일 찾기

find [찾을위치] -name [찾을파일명]

ex) /opt/apps/ 하위의 test로 시작하는 jar파일 검색

find /opt/apps/ -name test*.jar

 

- 단어 찾기

grep -r '[찾을 단어]' [찾을 위치]

ex) /opt/apps/ 하위의 test라는 단어 찾기

grep -r 'test' /opt/apps/

 

 

반응형

'Linux' 카테고리의 다른 글

centos linux python 버전 변경  (0) 2023.07.18
centos linux 파일 퍼미션권한 변경 및 부여  (0) 2023.07.18
centos linux 고정 IP 설정  (0) 2023.07.18
centos linux 호스트네임 등록  (0) 2023.07.18
centos linux 계정 추가  (0) 2023.07.18

centos7 기준입니다.

192.168.10.101로 서버 IP를 고정시키고 싶다면,

 

파란색부분 추가 및 수정

vi /etc/sysconfig/network-scripts/ifcfg-eth0 <- 이더넷이름은 다를 수 있음

 

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=fecb60c2-87bd-41ae-9cb8-231d730ca53d
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.10.101 -> 고정할 IP
PREFIX=24
GATEWAY=192.168.10.1 -> 운영환경이 아닌 개인 테스트 용이라면 고정할 IP의 마지막 D클래스를 1로
DNS1=8.8.8.8 -> 구글 DNS 서버
DNS2=8.8.4.4 -> 구글 DNS 서버
IPV6_PRIVACY=no

 

저장 후에

reboot

 

확인

hostname -i

또는

ping 8.8.8.8 or 8.8.4.4

 

 

 

반응형

'Linux' 카테고리의 다른 글

centos linux 파일 퍼미션권한 변경 및 부여  (0) 2023.07.18
centos linux 자주 쓰는 명령어 정리  (0) 2023.07.18
centos linux 호스트네임 등록  (0) 2023.07.18
centos linux 계정 추가  (0) 2023.07.18
ssh 포트 변경  (0) 2023.07.17

+ Recent posts