프로그래밍

[Linux] Linux 명령어 정리 & Hadoop 설치 및 환경 조성

RainIron 2021. 6. 2. 10:39
반응형

※Linux 명령어 정리

1. Change Directory

- cd 디렉터리명: 디렉터리로 이동

- cd ..: 상위 티렉터리로 이동

 

2. List Segment

- ls: 디렉터리 안에 있는 폴더와 파일 리스트를 출력

- ls -R 디렉터리명: 하위디렉터리 안에 있는 폴더와 파일 리스트 출력

- ls -a 디렉터리명: 디렉터리 안에 숨어있는 파일도 출력( ex: .bashrc, .readme)

- ls -l 파일명: 파일 상세정보 출력

 

3. Remove

- rm 파일명: 파일 제거

- rm -f 파일명: 파일 강제 삭제

- rm -r 디렉터리명: 디렉터리 삭제 (-r 옵션 없이 디렉터리 삭제 불가능)

 

4. Make Directory

- mkdir 디렉터리명: 디렉터리 생성

- mkdir -p 디렉터리명/티렉터리명: 부모 디렉터리를 만들면서 동시에 자식 디렉터리 만들기

 

5. Catenate

- cat 파일명: 파일에 있는 내용 출력

- cat head 파일명: 처음~10번째 줄까지 출력

- cat tail 파일명: 끝~마지막 10번째 줄까지 출력

 

6. Move

- mv 원본파일명 이동파일명: 파일 이동

- mv -b 원본파일명 이동파일명: 이동파일이 이미 존재할 경우, 백업을 만들고 파일 이동

- mv -f 원본파일명 이동파일명: 이동파일이 이미 존재할 경우, 파일 이동시에 덮어쓰기

 

7. Print Working Directory

- pwd: 현재 위치 반환

 

8. Copy

- cp 원본파일명 복사파일명: 파일 복사

- cp -f 원본파일명 복사파일명: 복사 대상이 있으면 지우고 강제 복사

- cp -R 원본디렉터리명 복사디렉터리명: 디렉터리 복사(하위 폴더, 파일까지 포함)

 

9. Touch

- touch 파일명: 빈 파일 생성

 

10. Change Mode

- chmod xxx 파일명: 파일에 대한 권한 변경

  * 4: Read

  * 2: Write

  * 1: Execution

  [출력 예시]

  "-rwxr-xrw- 링크수 사용자명 그룹명 파일크기 수정시간 파일이름"

  -: -(파일) or d(디렉터리) or l(링크)

  rwx: 사용자 권한

  r-x: 그룹 권한

  rw-: 다른 사용자 권한

  if) 사용자는 모든 권한, 그룹은 읽고 쓰기만, 다른 사용자는 읽기만 가능하게 하고 싶을 때,

      "chmod 764 파일명"

 

11. Find

- find 하위디렉터리 파일명: 하위디렉터리에서 찾고자 하는 파일명 출력

- find 하위디렉터리: 하위디렉터리에 포함된 파일명 출력

 

12. 계정확인

- whoami: 현재 계정 확인

 

13. Sudo

- sudo apt update: 최고 관리자의 권한으로 업데이트

- sudo: 최고 관리자의 권한

- apt update: 내장된 모듈 업데이트

- adduser 사용자명: 사용자 추가

  (추가할 시, 비밀번호/풀네임/그룹 넘버/핸드폰/기타 등 입력)

  * 추가한 사용자에게 권한 추가 방법

    1. sudo visudo -f sudoers를 입력해 /etc/sudoers 파일을 연다

    2. # User Privilege Specification에 권한을 주려는 사용자를 입력하고, 권한 지정

    예) 'hdoop    ALL=(ALL:ALL) ALL

hdoop를 사용자 추가한 뒤, 모든 권한을 부여한 것을 알 수 있다.

 

- su - 사용자이름: 사용자 변경

  예) su - hdoop

 

14. Website Download

- wget 경로(파일을 포함한 경로): 웹사이트를 통해 파일 다운로드

 

15. Redirection

- Redicrection: 입력 스트림, 출력 스트림 방향을 제어하는 명령어

- > : 왼쪽의 출력 스트림이 오른쪽 입력 스트림으로 방향을 제어

  예: cat text.txt > python3 print.py

      (text.txt 파일의 내용이 print.py 파일의 입력 스트림이 된다(표준 입출력))

- >> : 파일의 내용을 이어서 작성

- | : 프로그램 순차 실행

 


※ Hadoop 설치 및 환경 조성

1. Java 설치

sudo apt install openjdk-8-jdk -y

 

2. SSH 설치

- SSH(Secure Shell Protocol): 컴퓨터와 컴퓨터가 인터넷과 같은 Public Network를 통해 서로 통신을 할 때 보안에 대해 안전하게 통신을 하기 위해 사용하는 프로토콜. 채널을 구성한 뒤 정보를 교환.

  => 클러스터 안에 있는 노드들 간의 통신이 가능하게 하기 위해 설치

- 사용 예: 데이터 전송, 원격 제어

- 설치 명령어: sudo apt install openssh-server openssh-client -y

 

3. 클러스터 각 노드간 접속을 위한 암호키 생성

- 명령어: ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

  ssh-keygen: 암호키 생성 명령어

  -t rsa: 암호키 알고리즘 지정(rsa로 지정)

  -P '': Password 지정

  -f ~/.ssh/id_rsa: 암호키 저장 위치

  위에서 생성한 암호키를 가진 노드는 접속을 허용하게 한다.

- 암호키 내용 확인 및 이동: cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

  (이어서 작성)

- authorized_keys 권한 변경: chmod 0600 ~/.ssh/authorized_keys

- ssh localhost(연결)

 

4. Hadoop Download

- wget 경로(하둡 경로)를 사용하여 파일 다운로드 후, tar 명령어를 사용해 압축을 풀고 설치

 

5. 환경 조성

(1) .bashrc에 환경변수 추가

- .bashrc: 환경 관련 쉘 스크립트(접속자가 접속할 때 1번만 실행되기 때문에, 변경했을 경우 쉘 스크립트를 재실행하여 시스템에 반영되도록 해야한다.)

  ex) source .bashrc : 쉘 스크립트 실행 명령어

 

- 추가할 환경 변수

#Hadoop Related Options
export HADOOP_HOME=/home/hdoop/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
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 PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/nativ"

  예)

(2) hadoop-env.sh에 자바 컴파일러 경로 입력

- readlink -f /usr/bin/javac: 자바 컴파일러 절대경로 확인 명령어

  " /usr/lib/jvm/java-8-openjdk-amd64/bin/javac "

- hadoop-env.sh 파일 열기

  " nano $HADOOP_HOME/etc/hadoop/hadoop-env.sh "

- 절대 경로 중 bin 아래부터 제외한 위의 주소를 hadoop-env.sh에 입력한다.

  (중간에 주석처리된 JAVA_HOME을 해제하고, 작성했다.)

  " export JAVA_HOME = /usr/lib/jvm/java-8-openjdk-amd64 "

 

(3) core-site.xml 편집

- HDFS와 MapReduce에서 공통적으로 사용할 환경정보를 가지고 있는 파일

- HDFS, Hadoop 코어 속성들이 설정되는 파일

- Log File, 네트워크 튜닝, I/O 튜닝, 파일 시스템 튜닝, 압축 등 하부 시스템 설정 파일

- Open 명령어: " nano $HADOOP_HOME/etc/hadoop/core-site.xml "

<configuration>
<property>
  <name>hadoop.tmp.dir</name>
  <value>/home/hdoop/tmpdata</value>
</property>
<property>
  <name>fs.default.name</name>
  <value>hdfs://127.0.0.1:9000</value>
</property>
</configuration>

  -> 하둡 임시 디렉터리 지정

  -> 파일 시스템 기본 이름 지정

- 파일 편집 후, 반드시 해당 디렉터리를 생성해야 한다.(/home/hdoop/tmpdata)

 

(4) hdfs-site.xml 편집

- Hadoop을 어떤 모드로 사용할 것인지(싱글 모드, 다중 분산 모드) 지정하는 파일

- 싱글모드로 사용한다면, dfs.replication을 1로 지정(데이터 복제 X)

- core-site.xml과 마찬가지로, 각 해당 디렉터리를 생성해야한다.

  (/home/hdoop/dfsdata/namenode)

  (/home/hdoop/dfsdata/datanode)  <- (hdoop은 초반에 생성한 하둡 사용자 이름)

- Open 명령어: " nano $HADOOP_HOME/etc/hadoop/hdfs-site.xml "

<property>
  <name>dfs.data.dir</name>
  <value>/home/hdoop/dfsdata/namenode</value>
</property>
<property>
  <name>dfs.data.dir</name>
  <value>/home/hdoop/dfsdata/datanode</value>
</property>
<property>
  <name>dfs.replication</name>
  <value>1</value>
</property>

 

(5) mapred-site.xml 편집

- MapReduce Configuration에 대한 파라미터(변수)를 가지고 있는 파일

- yarn: resource manager

- 상세한 파라미터 내용: https://docs.datafabric.hpe.com/62/ReferenceGuide/mapred-site.xml.html

 

mapred-site.xml

Lists the parameters for MapReduce configuration. MapReduce is a type of application that can run on the Hadoop 2.x framework. MapReduce configuration options are stored in the /opt/mapr/hadoop/hadoop-2.x.x/etc/hadoop/mapred-site.xml file and are editable

docs.datafabric.hpe.com

- Open 명령어: " nano $HADOOP_HOME/etc/hadoop/mapred-site.xml "

<property> 
  <name>mapreduce.framework.name</name> 
  <value>yarn</value> 
</property>

 

(6) yarn-site.xml 편집

- yarn 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>
<property>
  <name>yarn.resourcemanager.hostname</name>
  <value>127.0.0.1</value>
</property>
<property>
  <name>yarn.acl.enable</name>
  <value>0</value>
</property>
<property>
  <name>yarn.nodemanager.env-whitelist</name>   
  <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PERPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>

 

(7) Format HDFS NameNode

- 최초 설정 시에 한 번만 수행

  " hdfs namenode -format " 실행


※ 환경 조성 완료 후 확인 과정(Hadoop 클러스터 실행)

1. sbin 폴더로 이동

- cd hadoop/sbin

 

2. 분산 파일 시스템 가동

- " start-dfs.sh " 실행: NameNode, DataNode, SecondaryNameNode(백업용) 실행

 

3. yarn 가동

- " start-yarn.sh " 실행: ResourceManager(Master에서 실행) / NodeManager(Slave에서 실행)

 

4. JPS

- " jps " 실행: Background에서 실행되는 자바 프로세스 확인

[ 참고 ]

1) " start-all.sh " 를 실행하면 분산 파일 시스템, yarn 모두 실행한다.

2) DataNode, NameNode, ResourceManager의 경우 웹 페이지에서 확인 가능

=> http://localhost:/9870 (Overview, NameNode)
=> http://localhost:/9864 (DataNode)
=> http://localhost:/8088 (Yarn Resource Manager)

 

3) Hadoop 중지

" stop-all.sh "

반응형