※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
- 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
- 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 "
'프로그래밍' 카테고리의 다른 글
[Hive] Hive 설치 및 환경 조성 (0) | 2021.06.02 |
---|---|
[HDFS] HDFS 명령어 및 운영 규칙 (0) | 2021.06.02 |
[R] 분석모델 확장(파생변수, 앙상블 기법) (0) | 2021.05.31 |
[R] R을 이용한 군집분석 (0) | 2021.05.29 |
[R] R을 이용한 예측분석 (0) | 2021.05.29 |