ch0nny_log

[빅데이터분석] Linux_3. 리눅스함수 및 centos에 아나콘다 ,workbench 설치 본문

빅데이터 분석(with 아이티윌)/리눅스

[빅데이터분석] Linux_3. 리눅스함수 및 centos에 아나콘다 ,workbench 설치

chonny 2024. 9. 23. 13:21

📝wc 명령어

파일 안의 단어의 갯수 또는 라인수를 출력하는 명령어

예제. 
wc emp.csv
15       15                  663     emp.csv
^         ^                   ^
라인수   단어의 갯수           철자의 갯수
        (콤마로 연결되어 있어서 한줄을 한 단어로 취급)​

-l 옵션으로 라인수만 출력

문제1. movies_comma.csv 의 전체 라인수가 어떻게 되는지 확인하기
wc -l movies_comma.csv​
문제2. 현재 디렉토리에 확장자가 .csv 로 끝나는 파일들을 조회하기
ls -l *.csv​
문제3. (⭐중요⭐)현재 디렉토리에 확장자가 .csv 로 끝나는 파일들이 몇개가 있는지 조회하기
ls -l *.csv | wc -l​
문제4. 현재 디렉토리에 폴더가 몇개가 있는지 조회하기
ls -l | grep '^d' | wc -l​
문제5. 현재 디렉토리에 디렉토리를 제외한 파일이 몇개가 있는지 조회하기
ls -l | grep -v '^d'​

-v 옵션을 사용하면 반대의 데이터를 검색하는데 위와 같은 경우는 d로 시작하지 않는 데이터를 검색하는 것임

ls -l | grep -v '^d' | wc-l​
문제6. mySQL DB에 csv 파일 3개를 테이블로 구성할건데, 테이블로 구성하기 전에 csv파일의 건수가 전체 몇건인지 미리 확인해야함. wc 명령어로 아래의 파일들의 라인수를 확인하기

movies_comma.csv / ratings_comma.csv/users_comma.csv
movies_comma.csv / ratings_comma.csv/users_comma.csv​
wc -l movies_comma.csv #3883 
wc -l ratings_comma.csv #1000209 
wc -l users_comma.csv #6040

📝 csv 파일을 mySQL에 테이블로 생성하기

  • 현직 데이터 엔지니어가 현업에서 데이터 파이프라인을 구축한다는 것은 무슨 뜻인가?
    • 리눅스에 올린 csv 파일 → mySQL(MariaDB) →SQL을 사용해서 데이터 전처리
파이프라인 구축 문제1. mySQL(Maria DB)에 접속
systemctl start mariadb
mysql -u root -p (패스워드는 그냥 엔터)
SHOW DATABASES;
use orcl;
select version();​
systemctl start mariadb
mysql -u root -p 
SHOW DATABASES;
use orcl;
select version();

⭐이력서에 넣을 보유기술 목록 → 최대한 화려하게

리눅스 centos7에 MariaDB (10.3.37) 설치 및 데이터 파이프라인 구축

MariaDB (10.3.37) 에 csv 파일로 테이블 생성 및 SQL 로 원하는 데이터 추출

파이프라인 구축 문제2. movies_comma.csv 파일을 가지고 테이블 생성하기
head -3 movies_comma.csv;​

[root@localhost ~]# head -3 movies_comma.csv;
1,Toy Story (1995),Animation|Children's|Comedy
2,Jumanji (1995),Adventure|Children's|Fantasy
3,Grumpier Old Men (1995),Comedy|Romance

create  table  movies (
                       id    int   primary  key,
                       title   varchar(255),
                       genres   varchar(255)   );
                       
show tables;
load  data  local  infile   '/root/movies_comma.csv'
                     into  table  movies
                     fields   terminated   by  ','
                     enclosed   by  '"'
                     lines   terminated  by  '\n'
                     (id, title, genres);
                     
select * from movies limit 5;
파이프라인 구축 문제3. ratings_comma.csv 를 테이블로 구성하기

마리아 db 말고 리눅스 root에서 수행하기
head -3 ratings_comma.csv​
create  table  ratings (
                        user_id    int,
                        movie_id   int,
                        rating   int,
                        timestamp   bigint,
                        primary key (user_id, movie_id)  );
show tables;
load  data  local  infile   '/root/ratings_comma.csv'
                     into  table  ratings
                     fields   terminated   by  ','
                     enclosed   by  '"'
                     lines   terminated  by  '\n'
                     ( user_id, movie_id, rating, timestamp);​

운영체제 : 윈도우, 리눅스

database : 오라클, mySQL, MariaDB

select * from ratings limit 5;​
파이프라인 구축 문제4. users_comma.csv도 마리아 디비에 테이블로 구성하기
create  table  users (
                        user_id    int primary key,
                        gender char(1),
                        age   int,
                        occupation int,
                        zip_code varchar(10) );​

리눅스랑 연동한 mySQL로 포폴 만들어주면 아주 좋음!

SELECT * FROM users LIMIT 5;​
파이프라인 구축 문제5. 영화 Toy Story를 관람한 연령을 조회하기

movies — ratings — users
  ^title                         ^age
 select  u.age,  count(*) as view_count
   from   movies  m ,  ratings  r,  users   u
   where  m.id = r.movie_id   and  r.user_id = u.user_id
   and  m.title ='Toy Story (1995)'
   group  by  u.age
   order by  view_count  desc;​
파이프라인 구축 문제6. 위의 결과를 csv 파일로 추출하기
 select  u.age,  count(*) as view_count into outfile '/tmp/age_view_count.csv'
	 fields terminated by ','
	 enclosed by '"'
	 lines terminated by '\n'
   from   movies  m ,  ratings  r,  users   u
   where  m.id = r.movie_id   and  r.user_id = u.user_id
   and  m.title ='Toy Story (1995)'
   group  by  u.age
   order by  view_count  desc;​
  • 만약 위와같이 했는데 /tmp 밑에 age_view_count.csv 가 안보인다면 find 명령어로 직접 찾아야함
  • root 에서
 cd / tmp
 find -name age_view_count.csv​
파이프라인 구축 문제7. 위에서 추출한 csv 파일을 윈도우로 내리기

- root 에서
cd /tmp
ls -l age_view_count.csv
cat age_view_count.csv​
문제1. 평점(rating)이 5에 해당하는 영화 이름을 중복 제거해서 출력하기

movies — ratings
   ^title         ^rating
 select  distinct(m.title), r.rating
   from   movies  m ,  ratings  r
   where  m.id = r.movie_id 
   and  r.rating = 5;​

📝 리눅스의 mySQL을 쉽게 사용하기위해 workbench 설치하기  

workbench 이용해서 maria db 편하게 사용하기

https://cafe.daum.net/oracleoracle/Sho9/15

■ 윈도우에서 mySQLworkbench로 리눅스 서버의 마리아 디비 사용하기

"오라클의 sqldeveloper 같은 툴로 마리아 디비에 접속하기"

  1. 설치합니다.

다음 작업은 putty 해서 하지말고 리눅스 서버 안에 터미널창에 수행하고 root 유져로 접속해서 수행합니다.

(모바텀에서는 잘 안되니까 버추얼 박스 터미널에서 수행 모바텀에서 했다가 끄려면 엑스서버 눌러서 끄고 다시 엑스서버 눌러서 무지개로 활성화 시키기)

인터넷이 연결 되어 있어야 하며, 아래의 명령어를 순서대로 실행 한다. ( root 권한으로 진행 )

yum install epel-release -y
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
yum install mysql-community-release-el7-5.noarch.rpm -y
yum install mysql-workbench -y


마지막으로 다음 명령어 실행

mysql-workbench

2. 새로운 터미널 창을 열고 아이피 주소를 확인합니다.

# ifconfig

 

3. 마리아 디비에 접속할 유져를 생성합니다.

# mysql -u root -p

MariaDB [(none)]> use orcl;

MariaDB [orcl]> create user scott@'192.168.122.1' identified by 'tiger';

MariaDB [orcl]> GRANT ALL PRIVILEGES ON orcl.* to   scott@'192.168.122.1';

MariaDB [orcl]> flush privileges;

MariaDB [orcl]> exit;

그리고 scott 유져로 접속해봅니다. 

# mysql -h 192.168.122.1 -u scott -p
-> 패스워드는 tiger 임 

MariaDB [(none)]>  use orcl;

접속이 잘되었으면 이제 아까 mysqlworkbench 열어놓은 창으로 돌아옵니다.

4. mysqlworkbench 를 실행하여 접속 정보를 아래와 같이 기술합니다.

가운데 + 를 누룹니다.

다음과 같이 접속정보를 입력합니다.

  • 비밀번호 tiger
  • 나머지는 다 오케이

5. 접속한후에 emp 테이블을 조회합니다.

use orcl;

create table emp
(empno int(4) not null,
Ename varchar(10),
Job varchar(9),
Mgr int(4),
Hiredate date,
Sal int(7),
Comm int(7),
Deptno int(4) );

create table dept
(deptno int(2),
dname varchar(20),
loc varchar(20) );

INSERT INTO dept VALUES (10,'ACCOUNTING','NEW YORK');
INSERT INTO dept VALUES (20,'RESEARCH','DALLAS');
INSERT INTO dept VALUES (30,'SALES','CHICAGO');
INSERT INTO dept VALUES (40,'OPERATIONS','BOSTON');

INSERT INTO emp VALUES (7839,'KING','PRESIDENT',NULL,'81-11-17',5000,NULL,10);
INSERT INTO emp VALUES (7698,'BLAKE','MANAGER',7839,'81-05-01',2850,NULL,30);
INSERT INTO emp VALUES (7782,'CLARK','MANAGER',7839,'81-05-09',2450,NULL,10);
INSERT INTO emp VALUES (7566,'JONES','MANAGER',7839,'81-04-01',2975,NULL,20);
INSERT INTO emp VALUES (7654,'MARTIN','SALESMAN',7698,'81-09-10',1250,1400,30);
INSERT INTO emp VALUES (7844,'TURNER','SALESMAN',7698,'81-08-21',1500,0,30);
INSERT INTO emp VALUES (7900,'JAMES','CLERK',7698,'81-12-11',950,NULL,30);
INSERT INTO emp VALUES (7521,'WARD','SALESMAN',7698,'81-02-23',1250,500,30);
INSERT INTO emp VALUES (7902,'FORD','ANALYST',7566,'81-12-11',3000,NULL,20);
INSERT INTO emp VALUES (7369,'SMITH','CLERK',7902,'80-12-09',800,NULL,20);
INSERT INTO emp VALUES (7788,'SCOTT','ANALYST',7566,'82-12-22',3000,NULL,20);
INSERT INTO emp VALUES (7876,'ADAMS','CLERK',7788,'83-01-15',1100,NULL,20);
INSERT INTO emp VALUES (7934,'MILLER','CLERK',7782,'82-01-11',1300,NULL,10);
commit;

📝 chown 명령어  

  • 파일이나 디렉토리의 소유자를 변경하는 명령어
  • change owner 의 약자
  • ※ 리눅스에서 발생하는 거의 많은 문제들은 권한 문제들이 많음 파일이나 폴더에 대한 권한이 없어서 발생하는 문제들이 대부분

 

예제.  emp.csv 의 소유자 확인
ls -l  emp.csv
              바로가기(링크수)
                  ↑
-rw-r--r--.       1         root      root      663        9월 19 15:08    emp.csv
   ↑                         ↑         ↑          ↑             ↑              ↑  
 권한관련 부분               소유자    그룹       파일크기     수정시간         파일명​
문제 1. oracle2 유저를 생성하기
useradd oracle2
id oracle2​
문제 2. oracle2 유저의 패스워드를 oracle2라고 지정하기
passwd oracle2​
문제 3. oracle2 유저로 접속하기
su - oracle2

# 다시 root로 돌아오기

su -​
문제 4. /root/ 밑에 있는 emp.csv 를 /home/oracle2 밑에 copy 하기
cp /root/emp.csv /home/oracle2/emp.csv​
문제 5. /home/oracle2 밑으로 이동해서 그 안에 있는 emp.csv 의 소유자가 누군지 확인하기
cd/home/oracle2
ls
ls -l emp.csv​
문제 6. /home/oracle2 밑에 있는 emp.csv 의 소유자를 oracle2 로 변경하고 그룹도 oracle2 로 변경하기
chown oracle2:oracle2 emp.csv
ls -l emp.csv​
root root 에서 oracle2 oracle2 로 바뀐 것 확인 가능

 

문제 7. /home/oracle2 밑에 있는 emp.csv의 소유자를 다시 root로 변경하고, 그룹도 root로 변경하기
chown root:root emp.csv
ls -l emp.csv​
문제 8. 구글 코랩으로 접속해서 코랩에 기본적으로 올라가져 있는 파일의 소유자가 누군지 확인하기


문제 9. oracle3라는 유저를 생성하고 emp.csv의 소유자를 oracle2 로 변경하기
useradd oracle3
id oracle3
passwd oracle3
cp /root/emp.csv /home/oracle3/emp.csv
chown oracle3:oracle3 emp.csv
ls -l emp.csv​

📝 chmod 명령어  

  • 파일이나 디렉토리의 권한을 변경하는 명령어
  • 권한 관리표

번호 권한 대표문자 파일 디렉토리

4 읽기권한 r 읽기, 복사 디렉토리는 ls 명령어 가능
2 쓰기권한 w 수정 디렉토리는 파일 생성가능
1 실행권한 x 실행 디렉토리는 cd 로 접근가능
문제 1. emp.csv의 권한을 확인하기
cd
ls -l emp.csv

-rw-                r--                    r--. 1 root root 679  9월 19 13:53 emp.csv
^소유자의 권한       ^그룹에 대한 권한       ^기타 유저에 대한 권한​
문제 2. emp.csv를 소유자 외에는 읽을 수 없도록 만들기
chmod u-rwx,g-rwx,o-rwx emp.csv
ls -l emp.csv​
띄어쓰기 없기 붙여서 코드 실행해주면 위와 같이 모든 권한 다 빠진 것을 확인 가능
chmod u+rw emp.csv
ls -l emp.csv​

 

문제 3. 이제 oracle 유저로 접속해서 /root/ 밑에 emp.csv를 cat 으로 열어보기
su - oracle
whoami
cd /root​
문제 4. 다시 root로 접속해서 /root/밑에 있는 emp.csv를 /home/oracle/ 밑에 복사하기
su - 
ls -l emp.csv
cp emp.csv /home/oracle/​
문제 5. oracle 유저로 접속해서 /home/oracle 밑에 있는 emp.csv를 cat으로 열기
su - oracle
pwd
ls
ls -l emp.csv
cat emp.csv​
문제 6. 다시 root로 접속해서 /home/oracle 밑에 있는 emp.csv 의 권한을 소유자가 아닌 다른 유저도 읽을 수 있도록 수정하기
su - 
whoami
cd /home/oracle
ls
chmod u+rw,g+r,o+r emp.csv
ls -l emp.csv​
문제 7. oracle 유저로 접속해서 /home/oracle 밑에 있는 emp.csv를 cat으로 보기
cat emp.csv​

 

※ 숫자로 권한을 부여하고 회수하기

4 읽기권한 r 읽기, 복사 디렉토리는 ls 명령어 가능
2 쓰기권한 w 수정 디렉토리는 파일 생성가능
1 실행권한 x 실행 디렉토리는 cd 로 접근가능

문제 8. root 유저에서 /home/oracle 밑에 있는 emp.csv 파일의 권한을 다음과 같이 조정하기

소유자 : 읽기(4),쓰기(2),실행(1)
그룹 : 읽기(4),쓰기(2)
기타유저: 실행(1)
chmod u-rwx,g-rwx,o-rwx /home/oracle/emp.csv
chmod u+rwx,g+rw,o+r /home/oracle/emp.csv
ls -l /home/oracle/emp.csv​
또는 다음과 같이 하면 됨
chmod 000 /home/oracle/emp.csv
ls -l emp.csv

chmod 761 /home/oracle/emp.csv
ls -l /home/oracle/emp.csv​

 

문제 9. /home/oracle 밑에 emp.csv 의 권한이 다음과 같이 조정되게 하기
---x--x--x. 1 root root 679  9월 20 14:50 emp.csv​
chmod 111 emp.csv
ls -l /home/oracle/emp.csv​
문제 10. /home/oracle 밑에 있는 emp.csv 의 권한이 다음과 같이 조정되게하기
-rwxrwxrwx. 1 root root 679  9월 20 14:50 emp.csv​
chmod 777 emp.csv
ls -l emp.csv

📝 centos에 아나콘다 설치하기  

  • 리눅스 — Maria DB — 파이썬
  • ^ 데이터 전처리 , 데이터 분석, 데이터 시각화

https://cafe.daum.net/oracleoracle/Sho9/17 <- 링크 참고
중요 표시 잘 읽어보면서 하기!!!

su - oracle
whoami

이거 잘못 설치하면 리눅스부터 다시 깔아야하니 꼭 오라클 유저로 접속해서 하기!!!

 

■Centos 에 아나콘다 설치 ( 15번까지만 진행하고 jupyter notebook 설치하기!!)

※ 중요:  아나콘다 설치는 root 에서 하지 말고 oracle 유져 에서 수행해야합니다.

그리고 putty 에서 수행하지 말고 리눅스 서버안의 터미널 창에서 수행해야합니다.

1.  리눅스 서버에 접속할 때 부터 oracle 유져로 접속해야합니다. (

중요

)

2.  [oracle@localhost ~]$ wget

https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh

3.  [oracle@localhost ~]$ sha256sum Anaconda3-2020.11-Linux-x86_64.sh

4.  [oracle@localhost ~]$ bash Anaconda3-2020.11-Linux-x86_64.sh

위의 명령어는 아나콘다 설치하는 명령어인데 실행하면 라이센스 읽어보는

화면이 나올때 q 누르고 빠져나오면 do you accept ... ? yes

5.  [oracle@localhost ~]$ source  .bashrc

6.  [oracle@localhost ~]$ cd ana*

7.  [oracle@localhost ~]$ cd bin

8.  [oracle@localhost ~]$ pwd

/home/oracle/anaconda3/bin

<--- 복사하세요

9.  [oracle@localhost ~]$ cd

[oracle@localhost ~]$ vi .bash_profile

PATH=$PATH:$HOME/.local/bin:$HOME/bin:

/home/oracle/anaconda3/bin   <-- 콜론을 붙이고 추가합니다.

export PATH

저장하고 나오세요 ~

11.  [oracle@localhost ~]$ . .bash_profile

12.  [oracle@localhost ~]$ conda  create  -n  py389 python=3.8

13.  [oracle@localhost ~]$ source ~/anaconda3/etc/profile.d/conda.sh

14.  [oracle@localhost ~]$ conda  activate  py389

(py389) [oracle@localhost ~]$ pip install spyder (py389) [oracle@localhost ~]$ spyder

※ 혹시 설치과정에서 0% 에서 멈춰있으면 ctl +c 를 누르고 취소하고 /home/oracle/ 밑에 anaconda 폴더를 지웁니다.

그리고 설치파일의 권한을 777 로 넣어줍니다. 그리고 rebooting 을 하고 다시 시작합니다.

그래도 안되면 설치 파일인 Anaconda3-2019.10-Linux-x86 64.sh 도 지우고 다시 받아 설치 합니다.

위의 명령어는 리눅스 서버 안에서 터미널창을 열고 실행합니다.
다 설치하고 나서 spyder 실행화면



 


📝 centos에 anaconda 설치

https://cafe.daum.net/oracleoracle/Sho9/17

 

Centos 에 아나콘다 설치

■ Centos 에 아나콘다 설치※ 중요:  아나콘다 설치는 root 에서 하지 말고 oracle 유져 에서 수행해야합니다.            그리고 putty 에서 수행하지 말고 리눅스 서버안의 터미널 창에서 수행해

cafe.daum.net

 

※ centos 에 주피터 노트북 설치방법 (위는 15번까지 실행한 다음)

리눅스 서버 안에서 터미널 창을 열고 수행하세요 ~

리눅스 서버에 접속할 때 oracle 유져로 접속합니다.

oracle 유져로 접속해서 py389 를 activate 시키고 conda install 명령어로 주피터노트북을 설치합니다.

(base) [oracle@localhost ~]$ conda activate py389

(py389) [oracle@localhost ~]$ conda install -c conda-forge jupyterlab

주피터 노트북을 실행합니다.

(py389) [oracle@localhost ~]$ jupyter notebook

자동으로 안열리면 (py389)에 들어간 상태에서 pip install notebook하고 나오는 링크 마우스 우클릭해서 링크 열기 !!