분류 전체보기 42

[하이브 완벽 가이드] Ch3. 데이터형과 파일 포맷

이 글은 하이브 완벽 가이드 책을 읽고 그 중 일부 내용을 정리한 글입니다. 하이브는 관계형 데이터베이스에서 볼 수 있는 여러 원시 데이터형 뿐만 아니라 관계형 데이터베이스에서는 거의 볼 수 없는 세 가지 종류의 컬렉션 데이터형을 지원합니다. 따라서 텍스트 파일에서 이런 데이터형을 어떻게 표현할 것이며, 어떤 텍스트 저장 방법을 사용할지가 중요합니다. 하이브의 독특한 기능 중 하나는 파일에 데이터를 저장할 때 다양한 방법으로 인코딩할 수 있는 유연성을 제공한다는 점입니다. 또한 하이브는 다른 데이터베이스와 달리 데이터의 저장과 생명 주기를 사용자가 스스로 제어할 수 있도록 합니다. 원시 데이터형 데이터형 크기 리터럴 문법 예제 TINYINT 1바이트 크기의 정수 데이터형 20 SMALLINT 2바이트 크..

[하이브 완벽 가이드] Ch2. 시작하기

이 글은 하이브 완벽 가이드 책을 읽고 그 중 일부 내용을 정리한 글입니다. 하둡의 런타임 모드 - 로컬 모드, 의사 분산 모드, 분산 모드 하둡의 기본 런타임 모드는 로컬 파일시스템을 사용하는 로컬 모드입니다. 이 모드에서는 하이브 쿼리를 포함하는 하둡 잡이 실행될 때 맵 태스크와 리듀스 태스크가 동일한 프로세스에서 동작합니다. 실제 클러스터는 분산 모드로 설정합니다. 파일시스템에 대한 URI 정보가 없을 때는 이 클러스터의 분산 파일시스템(보통 HDFS)을 기본값으로 사용합니다. 잡은 이 클러스터 상의 잡 트래커에 의해 리되고 각각의 태스크는 각기 다른 프로세스에서 동작합니다. 개인용 컴퓨터를 사용해서 작업할 경우에는 의사 분산 모드로 동작하도록 설정합니다. 의사 분산 모드는 분산 모드와 같게 동작하..

[생활코딩 리눅스 강의 정리] 섹션 11.rsync ~ 섹션 12. ssh key

해당 글은 생활 코딩 이고잉님의 강의를 듣고 일부만을 정리한 글입니다. rsync rsync는 remote sync의 줄임말로 네트워크를 통해 파일을 동기화하기 위한 리눅스 유틸리티이다. rsync 라는 디렉토리에 source 디렉토리(src), destination 디렉토리(dest)가 있고 src 디렉토리를 dest 디렉토리에 동기화시키고 싶은 상황이라고 하자. 이때 rsync -a src dest와 rsync -a src/ dest의 차이점은 전자는 src 디렉토리를 dest 안에 동기화시키는 것이고 후자는 src 디렉토리 밑에 있는 모든 파일을 dest에 동기화시키는 것이다. rsync의 또다른 장점은 증분을 한다는 것으로, 동기화를 시킬때 모든 파일에 대해서 하지 않고 변경이 된 파일에 대해서만..

[생활코딩 리눅스 강의 정리] 섹션 10. 도메인

해당 글은 생활 코딩 이고잉님의 강의를 듣고 일부만을 정리한 글입니다. 도메인 기본 개념 우리는 구글, 네이버 등의 웹 사이트에 접속하기 위해서 ip 주소가 필요하지만 실제로는 도메인(google.com, naver.com)으로 웹 사이트에 접속할 수 있다. 이는 DNS 서버가 도메인에 상응하는 ip 주소를 보내주기 때문이다. Hosts 파일 DNS 서버가 등장하기 전에는 각 컴퓨터마다 hosts 파일이 존재했다. Hosts 파일은 도메인 이름과 그에 상응하는 ip 주소를 가지고 있는 파일이다. 리눅스에서는 /etc/hosts 파일이 존재하면 DNS 서버에 쿼리를 날리지 않고 그 파일을 보고 ip 주소를 가져온다. 위의 파일에서 127.0.0.1 google.com 행을 추가후 elinks google...

[생활코딩 리눅스 강의 정리] 섹션 9. 인터넷, 네트워크 그리고 서버

해당 글은 생활 코딩 이고잉님의 강의를 듣고 일부만을 정리한 글입니다. 인터넷 클라이언트(Client)는 서비스를 요구하는 주체, 서버(Server)는 서비스를 제공하는 주체이다. 클라이언트가 서버에 접속하기 위해서는 도메인 이름(Domain Name) IP 주소 두 가지 중 하나를 알아야 한다. 도메인 이름으로 ip 주소를 알기 위해서는 ping 명령어를 이용한다. 도메인 이름을 ip 주소로 바꿔주는 역할을 하는 것은 DNS(Domain Name System) 서버이다. 자세한 내용은 https://en.wikipedia.org/wiki/Domain_Name_System를 참조한다. 자신의 ip 주소를 아는 방법으로는 ip addr 명령을 이용하거나 curl로 웹에서 요청을 보내는 방법이 있다. (맥에..

[생활코딩 리눅스 강의 정리] 섹션 7. 권한 ~ 섹션 8. 그룹

해당 글은 생활 코딩 이고잉님의 강의를 듣고 일부만을 정리한 글입니다. 권한 기본 유닉스 계열 시스템에서 권한의 대상은 파일과 디렉토리이다. 권한의 종류는 읽기(Read), 쓰기(Write), 실행(Execute) 세 가지가 있다. 위의 예시에서는 hello.txt 파일의 소유자가 root 유저이기 때문에 jeni 유저는 해당 파일을 지울 수 없다. ls -al을 했을 때 나오는 정보를 나누면 위처럼 나눌 수 있다. 1번 구획(-)은 타입(type)을 뜻하고 -는 파일, d는 디렉토리를 의미한다. 2번 구획(rw-rw-r--)은 access mode를 뜻한다. Access mode는 오너의 권한(rw-), 그룹의 권한(rw-), 나머지 사용자의 권한(r--)으로 나누어진다. r은 read, w는 writ..

[생활코딩 리눅스 강의 정리] 섹션 6. 사용자

해당 글은 생활 코딩 이고잉님의 강의를 듣고 일부만을 정리한 글입니다. 다중 사용자 리눅스는 기본적으로 여러 명이 같은 시스템을 사용하는 다중 사용자 환경을 가지고 있다. id 명령어를 통해 유저, 그룹의 구성 현황을 알 수 있고 who 명령어를 통해 현재 시스템에 접속한 유저에 대해 알 수 있다. Root User 유닉스 계열에서는 크게 두 가지의 사용자가 있다. 슈퍼(root) 유저 일반 유저 슈퍼 유저 권한으로 명령어를 실행시키기 위해서는 명령어 앞에 sudo를 붙인다. sudo는 일시적으로 슈퍼 유저 권한을 부여해준다. 물론 모든 사용자가 sudo를 사용할 수 있는 것은 아니다. 일반적으로 슈퍼 유저는 root라는 이름을 갖고, 명령어 콘솔에서 $가 아닌 # 프롬프트가 표시된다. 슈퍼 유저가 되기..

[생활코딩 리눅스 강의 정리] 섹션 5. 프로세스와 실행

해당 글은 생활 코딩 이고잉님의 강의를 듣고 일부만을 정리한 글입니다. 컴퓨터의 구조 컴퓨터는 크게 프로세서(CPU, GPU) 메모리(RAM) 스토리지(SSD, HDD) 세 가지로 구성되어 있다. HDD, SSD 등의 스토리지와 메모리의 공통점은 데이터를 저장한다는 것이다. 다만 HDD, SSD는 속도가 느리고 저장공간이 크고 메모리는 속도가 빠르고 저장공간이 작다는 것이다. 프로그램은 사용되지 않을 때 스토리지에 저장되어 있다가 메모리에 저장이 되어 프로세서에 의해 실행된다. 즉, 프로그램은 하드웨어에 기록된 명령어이고 프로세스(Process)는 프로세서에 의해 실행되고 있는 프로그램을 의미한다. 프로세스 모니터링(ps, top, htop) ps 프로세스 리스트를 보여주는 명령이다. 백그라운드에서 실행..

[생활코딩 리눅스 강의 정리] 섹션 4. 디렉토리 구조와 파일 찾는 법

해당 글은 생활 코딩 이고잉님의 강의를 듣고 일부만을 정리한 글입니다. 디렉토리 구조 디렉토리는 데이터/실행할 프로그램을 정리정돈하는 수단으로 볼 수 있다. 자세한 내용은 https://www.thegeekstuff.com/2010/09/linux-file-system-structure/를 참고하면 된다. /usr 디렉토리 밑에는 bin, sbin, lib 디렉토리가 따로 존재한다. 기본적으로 운영체제 설치되어 번들 형식으로 사용자에게 제공되는 프로그램은 /bin, /sbin 디렉토리 밑에 존재하고 유저가 따로 설치하는 프로그램은 /usr/bin, /usr/sbin 디렉토리에 존재한다는 차이점이 있다. 또한 /home 디렉토리는 /usr 디렉토리에서 사용자의 파일을 저장하기 위해 분리된 디렉토리이다. 파..

[생활코딩 리눅스 강의 정리] 섹션 3. 쉘과 쉘 스크립트

해당 글은 생활 코딩 이고잉님의 강의를 듣고 일부만을 정리한 글입니다. Intro 커널은 하드웨어를 직접적으로 제어하는 인터페이스 역할을 하고, 쉘은 커널과 애플리케이션/사용자를 연결하는 인터페이스이다. 사용자가 직접 커널 코드(OS 코드)를 제어하는 것은 매우 어렵기 때문에, 쉘이 대신 그 역할을 해준다. 쉘은 사용자가 입력한 명령어를 해석해서 커널에 전달하는 프로그램이다. 쉘에는 여러 종류가 있는데, 그 중 가장 대표적으로 쓰이는 것이 bash 쉘과 zsh 쉘이다. echo $0 명령으로 현재 기본적으로 사용하고 있는 쉘을 확인할 수 있다. 일반적으로 zsh쉘이 더 편리하다고 알려져있다. echo $0 # zsh쉘 설치 sudo apt-get upgrade sudo apt-get install zsh..