RedPlug's Tory

리눅스 버젼 체크용 스크립트

Ubuntu, CentOS 및 특정 버젼에 대한 체크 목적으로 사용

Major 및 Minor까지 체크 가능

OSVersionCheck()
{
    OSDistribution=$(cat /etc/*release*)
    if [[ "$OSDistribution" == *Ubuntu* ]];then
        ubuntuVer=$(lsb_release -| awk '{print $2}')
        if [ -"$ubuntuVer" ];then
            echo '### cannot see ubuntu version, manual check ver, and script exit'
            exit
        fi
 
        case $ubuntuVer in
            # ubuntu 12.04 ~ 16.04
            12.04* | 14.04* | 16.04*)
                echo "Ubuntu 12.04, 14.04, 16.04"
            ;;
            
            # ubuntu 18.04 ~ 20.04
            18.04* | 20.04*)
                echo "Ubuntu 18.04, 20.04"
            ;;
            *)
                echo "Ubuntu but Untested OS"
        esac
 
    elif [[ "$OSDistribution" == *CentOS* ]];then
        RHELVer=`cat /etc/redhat-release |awk '{print $3}'`
        if [ "$RHELVer" = "release" ];then
            RHELVer=`cat /etc/redhat-release |awk '{print $4}'`
        fi        
 
        case $RHELVer in
            # CentOS 6.0 ~ 6.3
            6.0 | 6.1 | 6.2 | 6.3)
                echo "CentOS 6.0 ~ 6.3"
            # CentOS 6.4 ~ 6.10
            ;;
            6.4 | 6.5 | 6.6 | 6.7 | 6.8 | 6.9 | 6.10)
                echo "CentOS 6.4 ~ 6.10"
            ;;
            # CentOS 7.X
            7.*)
                echo "CentOS 7.XX"
            ;;
            *)
                echo "CentOS but Untested OS"
        esac
    else
        echo "Untested OS, not centOS Ubuntu"
    fi
}
OSVersionCheck
 
 
 

redplug입니다.

테스트 환경은 Ubuntu 18.04.2 LTS 버젼 입니다.

쿠버네티스 설치 진행 시 kubeadm init, join 시 'http://localhost:10248/healthz: dial tcp 127.0.0.1:10248: connect: connection refused.' 문구를 마주치게 될 수도 있는데요. (cgroup관련)

구글링 해서 전 하기와 같은 방법으로 해결 하였습니다.

sudo mkdir /etc/docker
cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF

상기 문구 실행 후 

sudo systemctl enable docker
sudo systemctl daemon-reload
sudo systemctl restart docker

# kubelet가 실행인지 확인
sudo systemctl status kubelet
# 실행중이 아닐 경우
sudo systemctl start kubelet

상기내용 실행 -> kubeadm restart -> kubeadm init or join 재실행 

증상이 동일한 경우라면 재부팅 후에 진행(전 재부팅 후에 정상 설치 되었습니다.)

관련 링크 : 

https://kubernetes.io/docs/setup/production-environment/container-runtimes/#docker

 

Container runtimes

You need to install a container runtime into each node in the cluster so that Pods can run there. This page outlines what is involved and describes related tasks for setting up nodes. This page lists details for using several common container runtimes with

kubernetes.io

 

 

[k8s] k8s 설치

Linux2021. 5. 9. 18:35

 

1. 노드구성 : k8s-master, k8s-node1, k8s-node2

2. Hyper-v 에 Ubuntu 20.04 설치하여 진행

3. 3대 모두 Docker 설치 진행

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
## apt 레파지토리 업데이트
sudo apt-get update
 
## 사전 설치 진행
sudo apt-get install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
 
## GPG 키 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
    sudo gpg --dearmor -/usr/share/keyrings/docker-archive-keyring.gpg
 
## 레파지토리 추가
echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
 
## 도커 설치
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
 
## 도커 등록 및 실행
sudo systemctl enable docker
sudo systemctl start docker
 
##  도커 버젼 확인
sudo docker version
 

4. 쿠버네티스 설치

4.1 설치 사양

Installing kubeadm
kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

 

Installing kubeadm

This page shows how to install the kubeadm toolbox. For information how to create a cluster with kubeadm once you have performed this installation process, see the Using kubeadm to Create a Cluster page. Before you begin A compatible Linux host. The Kubern

kubernetes.io

Before you begin

  • A compatible Linux host. The Kubernetes project provides generic instructions for Linux distributions based on Debian and Red Hat, and those distributions without a package manager.
  • 2 GB or more of RAM per machine (any less will leave little room for your apps).
  • 2 CPUs or more.
  • Full network connectivity between all machines in the cluster (public or private network is fine).
  • Unique hostname, MAC address, and product_uuid for every node. See here for more details.
  • Certain ports are open on your machines. See here for more details.
  • Swap disabled. You MUST disable swap in order for the kubelet to work properly.

4.2 설치 진행

- 스왑 끄기

sudo swapoff -a

/etc/fstab에서 # swap was on~~ 하단 UUID 에 # 주석처리 진행

또는 swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab

- 설치 전 환경 설정(네트워크 설정, master,node1~2 브릿지 네트워크 리슨할 수 있도록 설정 )

1
2
3
4
5
6
7
8
9
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
 
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system
 

- 방화벽 오픈(테스트 여서 오프함)

1
2
sudo systemctl stop firewalld
sudo systemctl disable firewalld
 

 

- kubeadm(전체관리), kubelet(데몬), kubectl(명렁어) 설치

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
## Download the Google Cloud public signing key
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
 
## Add the Kubernetes apt repository:
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
 
## Update apt package index, install kubelet, kubeadm and kubectl, and pin their version:
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
 
 
## kubelet 실행
sudo systemctl enable kubelet
sudo systemctl start kubelet
 
 

4.3 kubeadm으로 클러스터 구성

- 마스터에서만 실행

1
kubeadm init
 

- init 완료 후 Join 토큰 저장

- kubectl 명령어 허가

1
2
3
4
5
6
To start using your cluster, you need to run the following as a regular user:
 
  mkdir -p $HOME/.kube
  sudo cp -/etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config
 
 
 

- Pod Network 설치

1
2
kubectl apply -"https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
kubectl get nodes
 

설치 후 STATUS가 Ready 가 되어야 함

- Join 토큰을 node에서 실행

 

- bash 명령어 관련 : kubernetes.io/docs/reference/kubectl/cheatsheet/

명령어 좀 편하게...

1
2
3
4
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
source <(kubeadm completion bash)
echo "source <(kubeadm completion bash)" >> ~/.bashrc
 

 

설치완료

 

 

 

참고 : 

www.youtube.com/watch?v=lheclzO-G7k&list=PLApuRlvrZKohaBHvXAOhUD-RxD0uQ3z0c&index=4

github.com/237summit/k8s_core_labs

CentOS7 설치 후 ifconfig 시 command not found가 뜰 경우

yum install net-tools

인터넷 불가 시

ip addr 또는 ip link로 확인 가능

Linux 버젼 확인

Linux2020. 7. 29. 20:40
  • 커널 정보
uname -a
  • OS 버젼 1
cat /etc/issue
  • OS 버젼 2
cat /etc/redhat-release
  • OS 버젼 3
cat /etc/*release*

OS bit

getconf LONG_BIT

1. 우분투 설치

- Ubuntu Desktop 18.04 버젼 설치 하여 테스트 진행

- Namenode * 1ea, DataNode * 3ea 설치 진행

 노드

Hostname

IP 

 비고

NameNode

 master

192.168.0.200 

 

DataNode 01

 slave01

192.168.0.201 

 

DataNode 02 

 slave02

192.168.0.202 

 

DataNode 03

 slave03

 192.168.0.203

 



2. 패키지 업데이트 & 업그레이드

sudo apt-get update && sudo apt-get upgrade

3. 레파지토리 추가 및 패키지 업데이트

sudo add-apt-repository ppa:webupd8team/java

sudo apt-get update

자바 설치, 자바 업그레이드, 설치 확인

sudo apt-get install oracle-java8-installer

sudo apt-get upgrade

java -version

하둡 그룹 생성

sudo addgroup hadoop

하둡 계정 생성

sudo adduser --ingroup hadoop hduser

관리자 권한 추가

sudo nano /etc/sudoers


hduser 라인 추가

# User privilege specification

root        ALL=(ALL:ALL) ALL

hduser    ALL=(ALL:ALL) ALL


hosts파일 수정 내용 추가 (namenode,datanode 모두 수정)
sudo nano /etc/hosts 
하기 내용 추가
192.168.0.200   master
192.168.0.201   slave01
192.168.0.202   slave02
192.168.0.203   slave03

ssh 설치 +rsa키 설정

apt-get install openssh-server

sudo su hduser
cd
ssh-keygen -t rsa -P ""
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

scp -rp ~/.ssh/authorized_keys hduser@slave01:~/.ssh/authorized_keys
scp -rp ~/.ssh/authorized_keys hduser@slave02:~/.ssh/authorized_keys
scp -rp ~/.ssh/authorized_keys hduser@slave03:~/.ssh/authorized_keys


*SSH 접속을 위하여 마스터 서버에서 모두 복사(편의상 실 운용 서버는 아마 별도로 만들어서 authorized_keys에 추가로 복사해줘야 하는것으로 보여짐)
scp -rp ~/.ssh/id_rsa hduser@slave01:~/.ssh/id_rsa
scp -rp ~/.ssh/id_rsa hduser@slave02:~/.ssh/id_rsa
scp -rp ~/.ssh/id_rsa hduser@slave03:~/.ssh/id_rsa
scp -rp ~/.ssh/id_rsa hduser@slave01:~/.ssh/id_rsa.pub
scp -rp ~/.ssh/id_rsa hduser@slave02:~/.ssh/id_rsa.pub
scp -rp ~/.ssh/id_rsa hduser@slave03:~/.ssh/id_rsa.pub

/home/redplug/.ssh/authorized_keys: No such file or directory 라고 노출될 경우 .ssh폴더 생성하여야 함.



하둡 다운로드&압축풀기&설치위치 변경
wget http://mirror.navercorp.com/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz

tar zxvf hadoop-2.7.7.tar.gz

sudo mv ./hadoop-2.7.7 /usr/local/hadoop/

sudo chown hduser:hadoop -R /usr/local/hadoop
네임노드,데이터노드 폴더 만들기

마스터 노드

sudo mkdir -p /usr/local/hadoop_tmp/hdfs/namenode

sudo mkdir -p /usr/local/hadoop_tmp/hdfs/datanode

sudo chown hduser:hadoop -R /usr/local/hadoop_tmp/

sudo chmod 777 /usr/local/hadoop_tmp/


데이터노드

sudo mkdir -p /usr/local/hadoop_tmp/hdfs/datanode

sudo chown hduser:hadoop -R /usr/local/hadoop_tmp/

sudo chmod 777 /usr/local/hadoop_tmp/

bashrc 수정
> 부팅 시 자동실행되는 파일(Windows autoexec.bat파일과 같은 역할)
cd ~
sudo nano .bashrc

하기내용 기입
#  -- HADOOP ENVIRONMENT VARIABLES START -- #
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
#  -- HADOOP ENVIRONMENT VARIABLES END -- #

bashrc적용
source .bashrc

* JAVA_HOME 위치 : java -XshowSettings:properties -version 2>&1 > /dev/null | grep 'java.home' 에서/jre빼면됨.


hadoop-env.sh 수정
sudo nano $HADOOP_HOME/etc/hadoop/hadoop-env.sh

export JAVA_HOME=${JAVA_HOME} 하단에 JAVA_HOME위치 기입
export JAVA_HOME='/usr/lib/jvm/java-8-oracle'



core-site.xml 수정 (모든노드 수정)
sudo nano $HADOOP_HOME/etc/hadoop/core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>
</configuration>



hdfs-site.xml 수정
마스터 노드

sudo nano $HADOOP_HOME/etc/hadoop/hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/usr/local/hadoop_tmp/hdfs/namenode</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/usr/local/hadoop_tmp/hdfs/datanode</value>
    </property>
</configuration>

슬레이브 노드

sudo nano $HADOOP_HOME/etc/hadoop/hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/usr/local/hadoop_tmp/hdfs/datanode</value>
    </property>
</configuration>


yarn-site.xml 수정

sudo nano $HADOOP_HOME/etc/hadoop/yarn-site.xml


<configuration>

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

</configuration>


mapred-site.xml 수정

cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template $HADOOP_HOME/etc/hadoop/mapred-site.xml



sudo nano $HADOOP_HOME/etc/hadoop/mapred-site.xml


<configuration>

    <property>

        <name>mapreduce.framework.name</name>

        <value>yarn</value>

    </property>

</configuration>



masters, slaves 파일 편집

sudo nano $HADOOP_HOME/etc/hadoop/masters


master


sudo nano $HADOOP_HOME/etc/hadoop/slaves

master

slave01

slave02

slave03



네임노드 포멧(마스터노드만)

hdfs namenode -format

start-dfs.sh, start-yarn.sh 실행 및 확인(jps)

start-dfs.sh

start-yarn.sh


jps


> start-dfs.sh

NameNode, SecondaryNameNode, DataNode 가 실행

> start-yarn.sh

master에서는 ResourceManager, NodeManager 실행, slave NodeManager 실행


> http://master:50070 / 9000 액티브 확인 , 라이브노드 4개여야 함

> http://master:8088  / yarn 확인


맵리듀스 테스트

- 테스트용 파일을 HDFS에 업로드


hdfs dfs -mkdir /input

hdfs dfs -copyFromLocal /usr/local/hadoop/README.txt /input

hdfs dfs -ls /input

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /input/README.txt ~/wordcount-output


- 결과 디렉톨 확인

hdfs dfs -ls ~/wordcount-output

>  SUCCESS 있으면 성공, 파트 파일에 실해 정보 값 표기


- 실행 결과 확인

hduser@master:/usr/local/hadoop$hdfs dfs -cat ~/wordcount-output/part-r-00000


....

source  1

the     8

this    3

to      2

under   1

use,    2

uses    1

using   2

visit   1

website 1

which   2

wiki,   1

with    1

written 1

you     1

your    1

hduser@master:/usr/local/hadoop$

hduser@master:/usr/local/hadoop$

 






하둡 테스트


멀티노드 클러스터

- master ,slave1~3 서버, 네트워크 설정

- /etc/hosts 파일 설정에서 각 서버에 대한 DNS 설정

- /etc/hostname 파일 수정

- /bin/hostname -F /etc/hostname

> hostname 쳐서 확인

- 재부팅

- SSH 공개키 복사 작업

> scp -rp ~/.ssh/authorized_keys root@slave1:~/.ssh/authorized_keys

> scp -rp ~/.ssh/authorized_keys root@slave2:~/.ssh/authorized_keys

> scp -rp ~/.ssh/authorized_keys root@slave3:~/.ssh/authorized_keys

- 노드간 SSH 접속 설정(master~ slave3까지 모두 작업)

> ssh master
> exit
> ssh slave1

> exit
> ssh slave2

>  exit

> ssh slave3

- hadoop-env.sh 수정 (master에서 실행)

> gedit $HADOOP_HOME/etc/hadoop/hadoop-env.sh

> 25라인 JDK 경로 수정 : export JAVA_HOME=/usr/local/jdk1.8

> 104번 라인 하둡 데몬의 pid 저장 경로 수정 : export HADOOP_PID_DIR=/home/centos/hadoop-2.9.0/pids

- core-site.xml 수정 (모든 노드에서 실행)

> gedit $HADOOP_HOME/etc/hadoop/core-site.xml

> localhost:9000 > master:9000로 수정


- hdfs-site.xml 수정 (master)

> $HADOOP_HOME 하위에 namenode와 datanode 디렉토리 생성

> rm -rf $HADOOP_HOME/namenode

> mkdir $HADOOP_HOME/namenode

> chwon root -R $HADOOP_HOME/namenode

> chmod 777 $HADOOP_HOME/namenode

> rm -rf $HADOOP_HOME/datanode

> mkdir $HADOOP_HOME/datanode

> chwon root -R $HADOOP_HOME/datanode

> chmod 777 $HADOOP_HOME/datanode

> gedit $HADOOP_HOME/etc/hadoop/hdfs-site.xml

> dfs.replication 1 > 2로 수정

> dfsnamenode.name.dir, dfs.datanode.data.dir 내용 추가

- hdfs-site.xml 수정 (slave123)

> $HADOOP_NODE 하위에 datanode 생성

> rm -rf $HADOOP_HOME/datanode

> mkdir $HADOOP_HOME/datanode

> chwon root -R $HADOOP_HOME/datanode

> chmod 777 $HADOOP_HOME/datanode

> gedit $HADOOP_HOME/etc/hadoop/hdfs-site.xml
> dfs.replication 1 > 2로 수정

> dfs.datanode.data.dir 내용 추가

- 잡트래커 설정(모든노드)

> cp $HADOOP_HOME/etc/hadoop/mapred-site.xml-template $HADOOP_HOME/etc/hadoop/mapred-site.xml

> gpedit $HADOOP_HOME/etc/hadoop/mapred-site.xml

> mapreduce.framework.name yarn 추가

- yarn-size.xml 파일 수정 (모든노드)

> gedit $HADOOP_HOME/etc/hadoop/yarn-site.xml

> 기본 옵션 설정으로 수정

- masters, slaves 파일 수정(master만 수정)

> gedit $HADOOP_HOME/etc/hadoop/masters

> master

> gedit $HADOOP_HOME/etc/hadoop/slaves

> master
    slave1
    slave2
    slave3

- 네임노드 포멧(master에서만 실행), 하둡가동, HDFS 폴더 생성

> $HADOOP_HOME/bin/hdfs namenode -format

- 방화벽 내림 (모든노드)

> systemctl stop firewalld.service

> systemctl disable firewalld.service

- DFS, YARN 시작 (master만 실행)

> start-dfs.sh

NameNode, SecondaryNameNode, DataNode 가 실행

> start-yarn.sh

master에서는 ResourceManager, NodeManager 실행, slave NodeManager 실행

> 확인은 jps

> http://master:50070 / 9000 액티브 확인 , 라이브노드 4개여야 함

> http://master:8088  / yarn 확인


분석 프로그램 실행

- 맵리듀스 jab을 실행하기 위해 HDFS 데릭토리 만듬(master)

> hdfs dfs -mkdir /user

> hdfs dfs -mkdir /user/root

> hdfs dfs -mkdir /user/root/conf

- 하둡 쉘 커맨드로 확인(master)

> hdfs dfs -ls

- 하둡파일시스템에 파일 업로드

> hdfs dfs put $HADOOP_HOME/etc/hadoop/hadoop-env.sh /user/conf/hadoop-env.sh

- 업로드 파일 확인

> hdfs dfs -ls /

> hdfs dfs -ls /user

> hdfs dfs -ls /user/conf / hadoop-env-sh 파일 제대로 올라왔는지 확인



- 테스트용 파일을 HDFS에 업로드

hdfs dfs -mkdir /input

hdfs dfs -copyFromLocal /usr/local/hadoop/README.txt /input

hdfs dfs -ls /input

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /input/README.txt ~/wordcount-output


- 결과 디렉톨 확인

hdfs dfs -ls ~/wordcount-output



>  SUCCESS 있으면 성공, 파트 파일에 실해 정보 값 표기

- 실행 결과 확인

> hdfs dfs -cat ~/wordcount-output/part-r-00000



- 로컬로 다운

> hdfs dfs -copyToLocal ~/wordcount-output/part-r-00000 /home/centos/result.txt

> head -5 /home/centos/result.txt / 5줄만 머리에 출력

- 두번 실행하게 되면 에러 발생 아웃풋 디렉토리는 삭제하여야 함

> hdfs dfs -rm -r ~/wordcount-output // r은 하위디렉토리 까지 삭제

- master:50070에서 사용량 확인 가능


명령어 관련내용

- 형식 : hdfs dfs -명령어 옵션

> dfs : Distributed Filesystem Shell (분산 파일 시스템 쉘)


- help : 도움말

> hdfs dfs -help

> hdfs dfs -help ls // ls 명령어에 대한 도움말


- ls : 파일 목록 보기

> hdfs dfs -ls //// 경로 없을경우 사용자 계정의 홈 디렉토리 조회

> hdfs dfs -ls conf / 해당 디렉토리 파일 목록 조회

> hdfs dfs -ls -R / 하위 디렉토리 목록까지 출력

> master 뿐만 아니라 slave에도 동일하게 실행 가능


- du : 파일용량 확인

> hdfs dfs -du : 디렉토리 또는 파일의 사용량을 바이트 단위로 출력

> hdfs dfs -du -s : 해당 디렉토리의 전체용량만(합계) 출력


- cat, text : 파일내용 보기

> cat : 텍스트 파일 전용

> hdfs dfs -cat conf/hadoop-env.sh

> text : 텍스트 파일과 압축파일도 읽을 수 있음

> hdfs dfs -text conf/hadoop-env.sh


- mkdir : 디렉토리 생성

> hdfs dfs -mkdir input

> hdfs dfs ls 


- put, copyFromLocal,get, copyToLocal, getmerge, cp : 파일 복사

> hdfs dfs -put $HADOOP_HOME/etc/hadoop/core-site.xml input

input 경로로 복사

> hdfs dfs -ls input

> hdfs dfs -copyFromLocal : 로컬 파일시스템에서 하둡분산파일 시스템으로 복사

> hdfs dfs -copyFromLocal $HADOOP_HOME/etc/hadoop/core-site.xml input/a : input폴더에 a이름으로 변경하여 복사

> hdfs dfs -get input/a a : HDFS의 input/a 를 로컬시스템 에 현재폴더에 a라는 파일이름으로 복사

> ls -la

> hdfs dfs -copyToLocal input/a b : HDFS의 input/a 파일을 로컬시스템에 b라는 파일명으로 변경하여 복사

> cat b

> hdfs dfs -getmerge : 머지하여 복사

> hdfs dfs -getmerge input c : HDFS의 input디렉토리의 파일을 로컬시스템의 c파일에 머지하여 복사

> cat c

> ls -la : c파일 용량 확인

> hdfs dfs -cp conf/hadoop-env.sh hadoop-env-copy.sh : HDFS서버에서 HDFS서버로 파일 복사

> hdfs dfs -ls

> hdfs dfs -ls /user/root


- mv, moveFromLocal : 파일이동

>  hdfs dfs -mv input/a input/a2 : input/a 파일을 input/a2로 옮김 (HDFS간 옮김)

> hdfs dfs -moveFromLocal : 로컬 시스템에서 하둡 분산파일 시스템으로 옮김

> hdfs dfs -mkdir temp

> hdfs dfs -moveFromLocal a temp/a : 로컬시스템의 a파일을 HDFS의 temp/a파일로 옮김


- rm : 디렉토리나 파일 삭제

> hdfs dfs -rm temp/a : temp 디렉토리의 a파일 삭제

> hdfs dfs -rm temp : temp 디렉토리 삭제

> hdfs dfs -rm -r input : input 디렉토리 및 하위 디렉토리, 파일까지 다 삭제 


- count : 카운트값 조화

> hdfs dfs -count conf : 디렉토리, 파일, 파일사이즈


- tail : 파일의 마지막 내용 확인

> hdfs dfs -tail hadoop-env-copy.sh


- chmod : 권한변경

> hdfs dfs -chmod 777 conf : conf 디렉토리 권한을 777로 변경

> 폴더 내 하위 파일까지 권한 변경하는 방법 확인

> hdfs dfs -ls : conf 권한 변경 확인

> 유닉스 파일 권한 : 10자리
    디렉토리(1) 소유자(3) 그룹(3) 전체(3)

r 읽기(4)

w 쓰기(2)

x 실행(1)


- touchz : 0바이트 파일 생성

> hdfs dfs -touchz test.txt

> hdfs dfs -ls


hostname 변경 하기

Linux2015. 4. 26. 18:24

우분투 호스트명 변경하기

nano /etc/hostname



호스트명 변경 후 새로운 세션 열어서 확인 







CentOS DNS 설정 변경

Linux2014. 7. 20. 19:48

CentOS 6.5 기준으로 작성되었습니다.


공유기 설정 (IPTIME 기준)

공유기 환경 내 구축된 서버이기 때문에 외부와의 통신을 위하여 포트포워딩 설정이 필요합니다. 

(DNS는 TCP/UDP 53 Port를 사용)


방화벽 ACL Open

# iptables -A INPUT -p udp -m state --state NEW --dport 53 -j ACCEPT
# iptables -A INPUT -p tcp -m state --state NEW --dport 53 -j ACCEPT
# service iptables save
# service iptables restart 



DNS 설치

 # yum -y install bind-*


DNS서버 설치 확인

[root@reds-cent ~]# rpm -qa | grep bind
bind-utils-9.8.2-0.23.rc1.el6_5.1.x86_64
bind-sdb-9.8.2-0.23.rc1.el6_5.1.x86_64
bind-chroot-9.8.2-0.23.rc1.el6_5.1.x86_64
bind-devel-9.8.2-0.23.rc1.el6_5.1.x86_64
samba-winbind-clients-3.6.9-169.el6_5.x86_64
samba-winbind-3.6.9-169.el6_5.x86_64
ypbind-1.20.4-30.el6.x86_64
rpcbind-0.2.0-11.el6.x86_64
bind-libs-9.8.2-0.23.rc1.el6_5.1.x86_64
bind-9.8.2-0.23.rc1.el6_5.1.x86_64
bind-dyndb-ldap-2.3-5.el6.x86_64
[root@reds-cent ~]#



DNS 설정

named.conf 수정

# vi /etc/named.conf


//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {

// 주석처리

//      listen-on port 53 { 127.0.0.1; };

// listen에 대 any로 Open

        listen-on port 53 { any; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";

// 주석처리

//      allow-query     { localhost; };

// 네임서버 쿼리를 허용할 IP 설정

        allow-query     { any; };
        recursion yes;

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";



named.rfc1912.zones 수정

[root@reds-cent ~]# vi /etc/named.rfc1912.zones
// named.rfc1912.zones:
//
// Provided by Red Hat caching-nameserver package
//
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
// and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt
// (c)2007 R W Franks
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

zone "localhost.localdomain" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};

zone "localhost" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};

zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};

zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};

zone "0.in-addr.arpa" IN {
        type master;
        file "named.empty";
        allow-update { none; };
};
// flgram.com 에 대한 도메인 추가

// flgram.com Domain

zone "flgram.com" IN {
        type master;
        file "flgram.com.zone";
        allow-update { none; };



zone "225.121.210.in-addr.arpa" IN {
        type master;
        file "flgram.com.rev";
        allow-update {none; };
};

 


zone 파일 생성 시 named.localhost 파일을 복사해서 사용, 및 소유권 정정

# cp /var/named/named.localhost /var/named/flgram.com.zone
# cp /var/named/named.localhost /var/named/flgram.com.rev

# chown root.named /var/named/flgram.com.zone
# chown root.named /var/named/flgram.com.rev


flgram.com zone파일 생성

[root@reds-cent ~]# vi /var/named/flgram.com.zone
//flgram.com.zone
$TTL 10M
@       IN SOA ns1.flgram.com. webmaster.flgram.com. (
                                20140720
                                1D
                                1H
                                1W
                                3H )
        IN      NS      ns1.flgram.com.
        IN      MX      10 mail.flgram.com.
        IN      A       210.121.225.137
ns1     IN      A       210.121.225.137
www     IN      A       210.121.225.137
blog    IN      A       110.45.229.135
flgram.com. IN TXT "v=spf1 ip4:210.121.225.137 ~all" 


flgram.com rev파일 생성(수정)

[root@reds-cent ~]# vi /var/named/flgram.com.rev

// flgram.com.rev
$TTL 10M
@       IN SOA ns1.flgram.com. webmaster.flgram.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      ns1.flgram.com
00      IN      PTR     ns1.flgram.com
00      IN      PTR     mail.flgram.com