로얄 데이터 마법 스키마

HadoopBeginner
지금 연습하기

소개

마법과 지식 탐구가 얽혀있는 왕립 마법 아카데미의 매혹적인 세계에서, 아서라는 젊은 왕실 경비병은 중요한 임무를 맡게 됩니다. 고대 서적과 두루마리의 방대한 컬렉션을 보유한 아카데미는 귀중한 지혜와 주문을 담고 있으며, 수 세기 동안 점점 더 무질서해졌습니다. 현명한 멀리니우스 수석 마법사는 이 엄청난 정보 자산을 관리하기 위한 강력하고 효율적인 시스템을 구축해야 할 긴급한 필요성을 인식합니다.

아서의 목표는 아카데미의 데이터에 대한 포괄적인 스키마를 설계하고 구현하여, 이 고대 기록에 담긴 지식이 쉽게 접근하고 잘 구조화되도록 보장하는 것입니다. Hadoop 과 그 구성 요소, 특히 Hive 의 힘을 활용하여, 그는 아카데미의 학자들과 마법사들이 지식과 마법 숙달을 추구하는 데 도움이 될 신뢰할 수 있고 확장 가능한 데이터 관리 솔루션을 만들 것입니다.

Hadoop 환경 설정

이 단계에서는 스키마 설계를 위해 Hadoop 환경을 준비합니다. 먼저, hadoop 사용자로 전환해 보겠습니다.

su - hadoop

hadoop 사용자로 로그인한 후, /home/hadoop 디렉토리로 이동합니다.

cd /home/hadoop

이제 데이터와 스키마 파일을 저장할 academy_data라는 새 디렉토리를 생성합니다.

mkdir academy_data

다음으로, Hadoop 서비스가 실행 중인지 확인해야 합니다. 다음 명령을 사용하여 서비스 상태를 확인할 수 있습니다.

hdfs dfsadmin -report

서비스가 실행 중이지 않은 경우, 다음 명령으로 시작할 수 있습니다.

start-dfs.sh
start-yarn.sh

Hadoop 환경이 설정되었으므로, 스키마 설계를 진행할 준비가 되었습니다.

스키마 설계

이 단계에서는 아카데미 데이터에 대한 스키마를 설계합니다. 먼저, 우리가 가지고 있는 데이터를 분석해 보겠습니다. 아카데미의 컬렉션은 책, 두루마리, 유물이라는 세 가지 주요 범주로 구성됩니다.

academy_data 디렉토리에 academy_schema.hql이라는 새 파일을 생성합니다.

cd academy_data
touch academy_schema.hql

선호하는 텍스트 편집기에서 파일을 열고 다음 스키마 정의를 추가합니다.

-- academy_schema.hql

-- 아카데미 데이터를 위한 데이터베이스 생성
CREATE DATABASE IF NOT EXISTS academy;

-- academy 데이터베이스로 전환
USE academy;

-- 책 테이블
CREATE TABLE IF NOT EXISTS books (
    book_id INT,
    title STRING,
    author STRING,
    publication_year INT,
    category STRING
) COMMENT '책 정보 저장 테이블'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

-- 두루마리 테이블
CREATE TABLE IF NOT EXISTS scrolls (
    scroll_id INT,
    title STRING,
    author STRING,
    creation_year INT,
    subject STRING
) COMMENT '두루마리 정보 저장 테이블'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

-- 유물 테이블
CREATE TABLE IF NOT EXISTS artifacts (
    artifact_id INT,
    name STRING,
    description STRING,
    origin STRING,
    age INT
) COMMENT '유물 정보 저장 테이블'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

이 스키마에서는 books, scrolls, artifacts의 세 가지 테이블을 정의했습니다. 각 테이블에는 책의 title, author, publication_year 및 두루마리의 subject, creation_year과 같이 해당 범주와 관련된 열이 있습니다.

또한 데이터가 쉼표로 구분된 필드를 가진 텍스트 파일로 저장되도록 ROW FORMATSTORED AS 절을 지정했습니다.

파일을 저장하고 텍스트 편집기를 종료합니다.

스키마 구현

이제 스키마를 설계했으므로 Hive 에서 이를 구현할 차례입니다. 먼저, Hive 서버를 시작해 보겠습니다.

hive

Hive 서버가 실행되면 스키마 정의 스크립트를 실행할 수 있습니다.

SOURCE /home/hadoop/academy_data/academy_schema.hql;

이 명령은 앞에서 정의한 스키마를 기반으로 academy 데이터베이스와 books, scrolls, artifacts 테이블을 생성합니다.

EXIT;

다음으로, 샘플 데이터를 테이블에 채워 넣겠습니다. academy_data 디렉토리에 academy_data.txt라는 새 파일을 생성합니다.

touch academy_data.txt

텍스트 편집기에서 파일을 열고 다음 데이터를 추가합니다.

1,The Sorcerer's Stone,J.K. Rowling,1997,Fantasy
2,Scroll of Levitation,Merlinious the Wise,1023,Charms
3,Ancient Wand,A powerful wand crafted by the Elven Wandmakers,Elven Realm,2500
4,Fantastic Beasts and Where to Find Them,Newt Scamander,2001,Bestiary
5,Scroll of Healing,Gwendolyn the Healer,1157,Healing
6,Enchanted Mirror,A mirror that reveals one's true self,Avalon,5000

파일을 저장하고 텍스트 편집기를 종료합니다.

이제 데이터를 해당 테이블에 로드해 보겠습니다.

hive
USE academy;
LOAD DATA LOCAL INPATH '/home/hadoop/academy_data/academy_data.txt' OVERWRITE INTO TABLE books;
LOAD DATA LOCAL INPATH '/home/hadoop/academy_data/academy_data.txt' OVERWRITE INTO TABLE scrolls;
LOAD DATA LOCAL INPATH '/home/hadoop/academy_data/academy_data.txt' OVERWRITE INTO TABLE artifacts;

이러한 명령은 academy_data.txt 파일의 데이터를 해당 테이블에 로드합니다.

마지막으로, 데이터가 올바르게 로드되었는지 확인해 보겠습니다.

SELECT * FROM books;
SELECT * FROM scrolls;
SELECT * FROM artifacts;

각 테이블에 대해 해당 데이터가 표시되어야 합니다.

데이터 쿼리

데이터가 테이블에 로드되었으므로 이제 관련 정보를 검색하기 위해 쿼리할 수 있습니다. 몇 가지 간단한 쿼리를 시도해 보겠습니다.

2001 년에 출판된 모든 책을 가져오기:

SELECT * FROM books WHERE publication_year = 2001;

'Charms' 주제와 관련된 모든 두루마리를 가져오기:

SELECT * FROM scrolls WHERE subject = 'Charms';

1000 년 이상 된 모든 유물을 가져오기:

SELECT * FROM artifacts WHERE age > 1000;

이러한 쿼리는 다양한 조건을 기반으로 테이블에서 특정 데이터를 필터링하고 검색하는 방법을 보여줍니다.

요구 사항에 따라 조인 (join) 및 집계 (aggregation) 와 같은 더 복잡한 쿼리도 수행할 수 있습니다.

요약

이 랩에서는 Hadoop 의 Hive 컴포넌트를 사용하여 Royal Academy of Wizardry 의 데이터를 위한 스키마를 설계하고 구현하는 과정을 살펴보았습니다. 먼저 Hadoop 환경을 설정하고 필요한 디렉토리를 만들었습니다. 그런 다음, Academy 의 책, 두루마리, 유물 컬렉션을 별도의 테이블로 구성하기 위해 스키마를 설계했습니다.

다음으로, 테이블을 생성하고 샘플 데이터를 로드하여 스키마를 구현했습니다. 마지막으로, 다양한 필터와 조건을 사용하여 데이터를 쿼리하는 방법을 시연했습니다.

이 랩을 통해 대규모의 다양한 데이터 세트를 관리하는 데 있어 적절한 스키마 설계의 중요성을 배웠습니다. 데이터를 적절한 열과 데이터 유형으로 잘 정의된 테이블로 구조화함으로써 정보의 효율적인 저장, 검색 및 분석을 보장할 수 있습니다.

또한 Hadoop 의 강력한 데이터 웨어하우징 컴포넌트인 Hive 와 SQL 과 유사한 쿼리 기능을 직접 경험했습니다. 이 경험은 빅 데이터를 계속 사용하고 데이터 분석 및 처리를 위한 더 고급 기술을 탐구하는 데 매우 유용할 것입니다.