Skip to content

HSJung93/DockerHadoop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

9 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

도컀λ₯Ό μ΄μš©ν•œ ν•˜λ‘‘ ν΄λŸ¬μŠ€ν„° λ§Œλ“€κΈ°

도컀 컴포즈λ₯Ό μ΄μš©ν•œ 볡수의 μ»¨ν…Œμ΄λ„ˆλ“€ μ„€μΉ˜

  • git clone https://github.com/big-data-europe/docker-hadoop.git으둜 ν”„λ‘œμ νŠΈ νŒŒμΌμ„ κ°€μ Έμ˜¨λ‹€.
  • cd docker-hadoop으둜 μ΄λ™ν•œ ν›„ docker-compose up으둜 λ„μ»€μ—μ„œ 볡수의 μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰μ‹œν‚¨λ‹€.
    • 도컀 μ»΄ν¬μ¦ˆλŠ” λ„μ»€μ—μ„œ 볡수의 μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰μ‹œν‚€λŠ” νˆ΄μ΄λ‹€. docker-compose.ymlμ΄λΌλŠ” YAML νŒŒμΌμ„ μ‚¬μš©ν•˜μ—¬ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ„œλΉ„μŠ€λ₯Ό κ΅¬μ„±ν•œλ‹€. docker-compose up λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜μ—¬ 컴포즈λ₯Ό μ‹€ν–‰μ‹œν‚€κ³  전체 앱을 μ‹€ν–‰μ‹œν‚¨λ‹€.
  • docker container ls둜 μ»¨ν…Œμ΄λ„ˆλ“€μ„ ν™•μΈν•œλ‹€.
CONTAINER ID   IMAGE                                                    COMMAND                  CREATED          STATUS                    PORTS
                NAMES
b9fa2d4c7eb4   bde2020/hadoop-historyserver:2.0.0-hadoop3.2.1-java8     "/entrypoint.sh /run…"   13 minutes ago   Up 12 minutes (healthy)   8188/tcp
                historyserver
a9fbc41e1f45   bde2020/hadoop-resourcemanager:2.0.0-hadoop3.2.1-java8   "/entrypoint.sh /run…"   13 minutes ago   Up 12 minutes (healthy)   8088/tcp
                resourcemanager
9aee63cbdeb4   bde2020/hadoop-namenode:2.0.0-hadoop3.2.1-java8          "/entrypoint.sh /run…"   13 minutes ago   Up 12 minutes (healthy)   0.0.0.0:9000->9000/tcp, 0.0.0.0:9870->9870/tcp   namenode
ea79103308f0   bde2020/hadoop-nodemanager:2.0.0-hadoop3.2.1-java8       "/entrypoint.sh /run…"   13 minutes ago   Up 12 minutes (healthy)   8042/tcp
                nodemanager
0eee7d8613ca   bde2020/hadoop-datanode:2.0.0-hadoop3.2.1-java8          "/entrypoint.sh /run…"   13 minutes ago   Up 12 minutes (healthy)   9864/tcp
                datanode
  • namenode(0.0.0.0:9000->9000, 0.0.0.0:9870->9870), datanode(9864), nodemanager(8042), resourcemanager(8088), historyserver(8188)λ₯Ό 확인할 수 μžˆλ‹€.

λ„€μž„λ…Έλ“œ μ»¨ν…Œμ΄λ„ˆ 접속 및 디렉토리 생성 λͺ…λ Ή

  • docker exec -it namenode /bin/bash둜 λ„€μž„λ…Έλ“œμ— λ“€μ–΄κ°„λ‹€.
    • docker execλŠ” container에 νŠΉμ • λͺ…령을 μ‹€ν–‰μ‹œν‚€λΌλŠ” λͺ…령이고, μ΄λ•Œ μ‹€ν–‰μ‹œν‚¬ λͺ…령이 /bin/bash이닀.
    • -itλŠ” STDIN ν‘œμ€€ μž…μΆœλ ₯을 μ—΄κ³  가상 tty (pseudo-TTY) λ₯Ό 톡해 μ ‘μ†ν•˜κ² λ‹€λŠ” μ˜λ―Έμ΄λ‹€.
    • λ„€μž„λ…Έλ“œ μ»¨ν…Œμ΄λ„ˆμ— 접속 성곡: root@9aee63cbdeb4:/#
  • hdfs dfs -ls / λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜μ—¬ 디렉토리λ₯Ό ν™•μΈν•œλ‹€.
    • ν•˜λ‘‘ 파일 μ‹œμŠ€ν…œμ—μ„œλŠ” hdfs dfs [일반적인 μ˜΅μ…˜] [μ»€λ§¨λ“œ μ˜΅μ…˜]으둜 λͺ…λ Ήμ–΄λ₯Ό λ‚΄λ¦°λ‹€.
      • μ˜ˆμ‹œ) 둜컬 νŒŒμΌμ„ hdfs에 μ €μž₯ν•œλ‹€: -appendToFile, ν•΄λ‹Ή 파일의 κ·Έλ£Ή κΆŒν•œμ„ λ³€κ²½ν•œλ‹€: -chmod, hdfs의 νŒŒμΌμ„ 둜컬 디렉토리에 λ‹€μš΄λ‘œλ“œν•œλ‹€: -copyToLocal, hdfs λ‚΄λΆ€μ—μ„œ νŒŒμΌμ„ λ³΅μ‚¬ν•˜κ³  λΆ™μ—¬λ„£κΈ° ν•œλ‹€: -cp λ“±
  • hdfs dfs -mkdir -p /user/root둜 디렉토리λ₯Ό μƒμ„±ν•œλ‹€.
  • exit둜 접속을 μ’…λ£Œν•œλ‹€.

이더넷(WSL) 접속

  • ipconfig둜 이더넷 μ–΄λŒ‘ν„°(WSL)의 ipv4λ₯Ό ν™•μΈν•œλ‹€.
  • μ›Ή λΈŒλΌμš°μ €λ‘œ ν•΄λ‹Ή ip의 :9870 포트둜 μ ‘μ†ν•œλ‹€.
  • λ‹€μŒκ³Ό 같은 화면이 λ‚˜μ˜€λ©΄ μ„±κ³΅μ μœΌλ‘œ μ ‘μ†ν•œ 것이닀. name_node

jar νŒŒμΌμ„ λ‹€μš΄ 및 λ„€μž„λ…Έλ“œ μ»¨ν…Œμ΄λ„ˆμ— λ³΅μ‚¬ν•˜κΈ°

  • wget https://repo1.maven.org/maven2/org/apache/hadoop/hadoop-mapreduce-examples/2.7.1/hadoop-mapreduce-examples-2.7.1-sources.jar둜 파일 λ‹€μš΄λ‘œλ“œ(λ¦¬λˆ…μŠ€)
  • docker cp hadoop-mapreduce-examples-2.7.1-sources.jar namenode:/tmp/둜 λ‘œμ»¬μ—μ„œ μ»¨ν…Œμ΄λ„ˆλ‘œ νŒŒμΌμ„ λ³΅μ œν•œλ‹€.
  • ν…ŒμŠ€νŠΈμ— μ‚¬μš©ν•  input1.txtλ₯Ό λ§Œλ“  λ’€ docker cp input1.txt namenode:/tmp/둜 λ³΅μ œν•œλ‹€.

hdfs에 파일 μ—…λ‘œλ“œ

  • docker exec -it namenode /bin/bash둜 λ‹€μ‹œ λ„€μž„λ…Έλ“œ μ»¨ν…Œμ΄λ„ˆμ— λͺ…λ Ήμ–΄λ₯Ό μˆ˜ν–‰ν•œλ‹€.
  • cd /tmp/둜 이동 ν›„, cat input1.txt둜 ν™•μΈν•˜λ©΄ ν•΄λ‹Ή 파일이 볡제된 것을 확인할 수 μžˆλ‹€.
  • input1.txt νŒŒμΌμ„ hdfs둜 μ—…λ‘œλ“œ ν•˜κΈ° μœ„ν•΄ hdfs dfs -mkdir /user/root/input λͺ…λ Ήμ–΄λ‘œ hdfs에 디렉토리λ₯Ό λ§Œλ“ λ‹€.
  • hdfs dfs -put input1.txt /user/root/input/둜 input1.txt νŒŒμΌμ„ hdfs에 μ—…λ‘œλ“œ ν•œλ‹€.
  • μ—­μ‹œ hdfs dfs -cat /user/root/input/input1.txt둜 확인할 수 μžˆλ‹€.

λ§΅λ¦¬λ“€μŠ€ μž‘μ—… μ‹€ν–‰ν•˜κΈ°

  • hadoop jar μ»€λ§¨λ“œλ‘œ λ§΅λ¦¬λ“€μŠ€ jar νŒŒμΌμ„ μ‹€ν–‰ν•˜κ³  클래슀 νŒŒμΌμ„ λΆˆλŸ¬μ˜¨λ‹€. λ§Œλ“€μ–΄ 놓은 input 디렉토리λ₯Ό μ‚¬μš©ν•˜κ³  output 디렉토리λ₯Ό μƒμ„±ν•œλ‹€. : hadoop jar hadoop-mapreduce-examples-2.7.1-sources.jar org.apache.hadoop.examples.WordCount input output
  • λ‹€μŒκ³Ό 같은 λͺ…λ Ήμ–΄κ°€ 좜λ ₯되면 μ„±κ³΅μ μœΌλ‘œ λ§΅λ¦¬λ“€μŠ€ μž‘μ—…μ„ μ‹€ν–‰ν•œ 것이닀.
2021-10-11 12:01:05,955 INFO client.RMProxy: Connecting to ResourceManager at resourcemanager/172.18.0.3:8032
2021-10-11 12:01:06,091 INFO client.AHSProxy: Connecting to Application History server at historyserver/172.18.0.6:10200
2021-10-11 12:01:06,242 INFO mapreduce.JobResourceUploader: Disabling Erasure Coding for path: /tmp/hadoop-yarn/staging/root/.staging/job_1633947212148_0001
2021-10-11 12:01:06,321 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
2021-10-11 12:01:06,412 INFO input.FileInputFormat: Total input files to process : 1
2021-10-11 12:01:06,434 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
2021-10-11 12:01:06,451 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
2021-10-11 12:01:06,458 INFO mapreduce.JobSubmitter: number of splits:1
2021-10-11 12:01:06,543 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
2021-10-11 12:01:06,556 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1633947212148_0001
2021-10-11 12:01:06,556 INFO mapreduce.JobSubmitter: Executing with tokens: []
2021-10-11 12:01:06,698 INFO conf.Configuration: resource-types.xml not found
2021-10-11 12:01:06,698 INFO resource.ResourceUtils: Unable to find 'resource-types.xml'.
2021-10-11 12:01:07,094 INFO impl.YarnClientImpl: Submitted application application_1633947212148_0001
2021-10-11 12:01:07,127 INFO mapreduce.Job: The url to track the job: http://resourcemanager:8088/proxy/application_1633947212148_0001/
2021-10-11 12:01:07,127 INFO mapreduce.Job: Running job: job_1633947212148_0001
2021-10-11 12:01:13,200 INFO mapreduce.Job: Job job_1633947212148_0001 running in uber mode : false
2021-10-11 12:01:13,201 INFO mapreduce.Job:  map 0% reduce 0%
2021-10-11 12:01:18,246 INFO mapreduce.Job:  map 100% reduce 0%
2021-10-11 12:01:22,279 INFO mapreduce.Job:  map 100% reduce 100%
2021-10-11 12:01:22,292 INFO mapreduce.Job: Job job_1633947212148_0001 completed successfully
2021-10-11 12:01:22,361 INFO mapreduce.Job: Counters: 54
        File System Counters
                FILE: Number of bytes read=100
                FILE: Number of bytes written=458745
                FILE: Number of read operations=0
                FILE: Number of large read operations=0
                FILE: Number of write operations=0
                HDFS: Number of bytes read=190
                HDFS: Number of bytes written=76
                HDFS: Number of read operations=8
                HDFS: Number of large read operations=0
                HDFS: Number of write operations=2
                HDFS: Number of bytes read erasure-coded=0
        Job Counters
                Launched map tasks=1
                Launched reduce tasks=1
                Rack-local map tasks=1
                Total time spent by all maps in occupied slots (ms)=6436
                Total time spent by all reduces in occupied slots (ms)=13056
                Total time spent by all map tasks (ms)=1609
                Total time spent by all reduce tasks (ms)=1632
                Total vcore-milliseconds taken by all map tasks=1609
                Total vcore-milliseconds taken by all reduce tasks=1632
                Total megabyte-milliseconds taken by all map tasks=6590464
                Total megabyte-milliseconds taken by all reduce tasks=13369344
        Map-Reduce Framework
                Map input records=3
                Map output records=13
                Map output bytes=128
                Map output materialized bytes=92
                Input split bytes=112
                Combine input records=13
                Combine output records=10
                Reduce input groups=10
                Reduce shuffle bytes=92
                Reduce input records=10
                Reduce output records=10
                Spilled Records=20
                Shuffled Maps =1
                Failed Shuffles=0
                Merged Map outputs=1
                GC time elapsed (ms)=71
                CPU time spent (ms)=720
                Physical memory (bytes) snapshot=548495360
                Virtual memory (bytes) snapshot=13576130560
                Total committed heap usage (bytes)=489684992
                Peak Map Physical memory (bytes)=318685184
                Peak Map Virtual memory (bytes)=5113307136
                Peak Reduce Physical memory (bytes)=229810176
                Peak Reduce Virtual memory (bytes)=8462823424
        Shuffle Errors
                BAD_ID=0
                CONNECTION=0
                IO_ERROR=0
                WRONG_LENGTH=0
                WRONG_MAP=0
                WRONG_REDUCE=0
        File Input Format Counters
                Bytes Read=78
        File Output Format Counters
                Bytes Written=76
  • exit둜 λ„€μž„λ…Έλ“œ μ»¨ν…Œμ΄λ„ˆμ—μ„œ 접속을 μ’…λ£Œν•œλ‹€.

도컀 컴포즈둜 μ»¨ν…Œμ΄λ„ˆ μ’…λ£Œ

  • docker-compose down으둜 λͺ¨λ“  μ»¨ν…Œμ΄λ„ˆλ₯Ό μ’…λ£Œν•  수 μžˆλ‹€.
[+] Running 6/6
 - Container historyserver        Removed                                                                                                    11.6s
 - Container namenode             Removed                                                                                                    12.2s
 - Container datanode             Removed                                                                                                    12.1s
 - Container resourcemanager      Removed                                                                                                    11.9s
 - Container nodemanager          Removed                                                                                                    11.6s
 - Network docker-hadoop_default  Removed                                                                                                     0.6s
  • docker container ls둜 확인해보면 λͺ¨λ“  μ»¨ν…Œμ΄λ„ˆκ°€ μ’…λ£Œλ˜μ—ˆλ‹€.

도컀 λ°”μΈλ“œ 마운트

κ°œμš”

  • 도컀 μ»¨ν…Œμ΄λ„ˆμ— 쓰여진 λ°μ΄ν„°λŠ” 기본적으둜 μ»¨ν…Œμ΄λ„ˆκ°€ μ‚­μ œλ  λ•Œ μ‚¬λΌμ§€κ²Œ λœλ‹€. λ”°λΌμ„œ μ»¨ν…Œμ΄λ„ˆμ˜ 생λͺ… 주기와 관련없이 데이터λ₯Ό μ˜μ†μ μœΌλ‘œ μ €μž₯ν•˜κ³ , μ—¬λŸ¬ 개의 μ»¨ν…Œμ΄λ„ˆκ°€ κ³΅μœ ν•  μ €μž₯ 곡간이 ν•„μš”ν•˜κ²Œ λœλ‹€.
  • λ„μ»€λŠ” 이λ₯Ό μœ„ν•΄ 1. λ³Όλ₯¨κ³Ό 2. λ°”μΈλ“œ 마운트λ₯Ό μ œκ³΅ν•œλ‹€. λ³Όλ₯¨κ³Ό λ°”μΈλ“œ 마운트의 κ°€μž₯ 큰 차이점은 도컀가 ν•΄λ‹Ή 마운트 포인트λ₯Ό κ΄€λ¦¬ν•΄μ£ΌλŠ”μ§€ μ•ˆν•΄μ£ΌλŠ”μ§€μ˜ 차이이닀. λ³Όλ₯¨μ„ μ‚¬μš©ν•  λ•ŒλŠ” κ°œλ°œμžκ°€ 직접 λ³Όλ₯¨μ„ μƒμ„±ν•˜κ±°λ‚˜ μ‚­μ œν•΄μ•Όν•˜μ§€λ§Œ, ν•΄λ‹Ή λ³Όλ₯¨μ„ 도컀 μƒμ—μ„œ 관리가 λ˜λŠ” 이점이 μžˆλ‹€.

index.html 파일 λ°”μΈλ“œ 마운트 ν•˜κΈ°

  • docker pull nginx둜 nginx 이미지λ₯Ό λ‹€μš΄ λ°›λŠ”λ‹€.
  • cd bind-mount둜 μ΄λ™ν•œλ‹€.
  • μ»¨ν…Œμ΄λ„ˆλ‘œ 마운트 ν•˜κΈ° μœ„ν•˜μ—¬ ν˜ΈμŠ€νŠΈμ— mkdir -p /tmp/nginx/html λͺ…λ Ήμ–΄λ‘œ 디렉토리λ₯Ό λ§Œλ“ λ‹€.
  • docker run -t -d -P -v /tmp/nginx/html:/usr/share/nginx/html --name nginxcontainer nginx:latest
    • -dλŠ” detachable λͺ¨λ“œμ—μ„œ 싀행을 μ˜λ―Έν•œλ‹€. μ»¨ν…Œμ΄λ„ˆμ—κ°€ λ°±κ·ΈλΌμš΄λ“œμ—μ„œ μ‹€ν–‰λ˜λ©° μ‹€ν–‰ 결과둜 μ»¨ν…Œμ΄λ„ˆ IDλ§Œμ„ 좜λ ₯ν•œλ‹€. ν„°λ―Έλ„μ—μ„œ λΉ μ Έλ‚˜μ™€λ„ ν•΄λ‹Ή μ»¨ν…Œμ΄λ„ˆκ°€ μ’…λ£Œλ˜μ§€ μ•ŠλŠ”λ‹€.
    • -itλŠ” μ»¨ν…Œμ΄λ„ˆλ₯Ό μ’…λ£Œν•˜μ§€ μ•Šμ€ μ±„λ‘œ ν„°λ―Έλ„μ˜ μž…λ ₯을 κ³„μ†ν•΄μ„œ μ»¨ν…Œμ΄λ„ˆλ‘œ μ „λ‹¬ν•˜κΈ° μœ„ν•΄μ„œ μ‚¬μš©ν•œλ‹€.
    • --name μ˜΅μ…˜μœΌλ‘œ μ»¨ν…Œμ΄λ„ˆμ— 이름을 λΆ€μ—¬ν•œλ‹€.
    • -p μ˜΅μ…˜μœΌλ‘œ ν˜ΈμŠ€νŠΈμ™€ μ»¨ν…Œμ΄λ„ˆ κ°„μ˜ 포트 배포/λ°”μΈλ“œλ₯Ό ν•œλ‹€.
    • -v μ˜΅μ…˜μ€ ν˜ΈμŠ€νŠΈμ™€ μ»¨ν…Œμ΄λ„ˆ κ°„μ˜ λ³Όλ₯¨μ„ μ„€μ •ν•œλ‹€. 호슀트 컴퓨터 파일 μ‹œμŠ€ν…œμ˜ νŠΉμ • 결둜λ₯Ό μ»¨ν…Œμ΄λ„ˆ 파일 μ‹œμŠ€ν…œμ˜ νŠΉμ • 경둜둜 마운트 ν•œλ‹€.
  • docker container ls둜 ν™•μΈν•œλ‹€.
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                   NAMES
4fe26cbad64c   nginx:latest   "/docker-entrypoint.…"   16 seconds ago   Up 15 seconds   0.0.0.0:49153->80/tcp   nginxcontainer
  • ipconfig둜 ipμ£Όμ†Œλ₯Ό ν™•μΈν•˜κ³  μ•žμ„œ ν™•μΈν•œ 포트 λ„˜λ²„λ₯Ό 더해 μ›ΉμœΌλ‘œ 접속해보면 아직은 403 Forbidden 화면이 λ‚˜μ˜¨λ‹€. 아직 μ»¨ν…Œμ΄λ„ˆμ— html 파일이 μ—†μœΌλ―€λ‘œ λ‹Ήμ—°ν•œ 결과이닀.
  • index.html νŒŒμΌμ„ /tmp/nginx/html에 λ§Œλ“€κ³  μˆ˜μ •ν•˜λ©΄ ν•΄λ‹Ή 파일이 μ—°λ™λœ 것을 확인할 수 μžˆλ‹€.
  • docker inspect 4fe26cbad64c둜 "Mounts"의 이미지λ₯Ό 확인할 수 μžˆλ‹€.

도컀 ν•˜μ΄λΈŒ

  • mkdir docker-hive둜 생성 cd docker-hive둜 이동 ν›„ git clone https://github.com/big-data-europe/docker-hive.git둜 ν•΄λ‹Ή 파일 λ‹€μš΄λ‘œλ“œν•œλ‹€.
  • ls둜 docker-compose.yml 파일 등을 ν™•μΈν•˜λ©΄ μ—¬λŸ¬ μ„œλΉ„μŠ€(namenode, datanode, hive-server λ“±)에 λŒ€μ‘λ˜λŠ” μ»¨ν…Œμ΄λ„ˆλ“€μ„ 확인할 수 μžˆλ‹€.
  • docker-compose up -d둜 이미지듀을 λ‹€μš΄λ‘œλ“œν•˜κ³  μ»¨ν…Œμ΄λ„ˆλ“€μ„ λ‹€μš΄λ‘œλ“œ ν•œλ‹€. docker container ls둜 λͺ¨λ‘ μ—… 되고 λŸ¬λ‹λ˜λŠ” 것을 ν™•μΈν•œλ‹€.
CONTAINER ID   IMAGE                                                    COMMAND                  CREATED              STATUS                        PORTS
                        NAMES
2a90c7220b94   bde2020/hadoop-nodemanager:2.0.0-hadoop3.2.1-java8       "/entrypoint.sh /run…"   About a minute ago   Up About a minute (healthy)   8042/tcp
                        nodemanager
470340b10ef9   bde2020/hadoop-historyserver:2.0.0-hadoop3.2.1-java8     "/entrypoint.sh /run…"   About a minute ago   Up About a minute (healthy)   8188/tcp
                        historyserver
43c519dca253   bde2020/hadoop-resourcemanager:2.0.0-hadoop3.2.1-java8   "/entrypoint.sh /run…"   About a minute ago   Up 41 seconds (healthy)       8088/tcp
                        resourcemanager
4d4c2b768c85   bde2020/hadoop-namenode:2.0.0-hadoop3.2.1-java8          "/entrypoint.sh /run…"   About a minute ago   Up About a minute (healthy)   0.0.0.0:9000->9000/tcp, 0.0.0.0:9870->9870/tcp   namenode
addd9382864c   bde2020/hadoop-datanode:2.0.0-hadoop3.2.1-java8          "/entrypoint.sh /run…"   About a minute ago   Up About a minute (healthy)   9864/tcp
                        datanode
  • docker-compose exec hive-server bash둜 ν•˜μ΄λΈŒ μ„œλ²„μ— μ»¨ν…Œμ΄λ„ˆμ— μ ‘μ†ν•œλ‹€.
  • /opt/hive/beeline -u jdbc:hive2://localhost:10000 λͺ…λ Ήμ–΄λ‘œ dbλ₯Ό μ‘°μž‘ν•˜κΈ° μ‹œμž‘ν•œλ‹€.
  • show databases ;둜 보면 dbκ°€ μ—†μœΌλ―€λ‘œ create database training ;둜 λ§Œλ“€κ³  use training ;둜 dbλ₯Ό λ§Œλ“  뒀에 create table fruits (name string, price int) ; 둜 ν…Œμ΄λΈ”μ„ λ§Œλ“ λ‹€. show tables;와 describe fruits ;둜 ν™•μΈν•œλ‹€.
  • describe formatted fruits ; λͺ…λ Ήμ–΄λ‘œ λ°μ΄ν„°μ˜ μœ„μΉ˜λ₯Ό νŒŒμ•…ν•  수 μžˆλ‹€:
Location: hdfs://namenode:8020/user/hive/warehouse/training.db/fruits
  • !quit λͺ…λ Ήμ–΄λ‘œ hiveλ₯Ό μ’…λ£Œν•˜κ³  exit둜 μ»¨ν…Œμ΄λ„ˆλ‘œ λΆ€ν„° λ‚˜μ˜¨λ‹€.
  • docker compose down으둜 μ»¨ν…Œμ΄λ„ˆλ₯Ό μ’…λ£Œν•œλ‹€.

도컀 μΉ΄ν”„μΉ΄

  • 각기 λ‹€λ₯Έ 포트둜 3개의 주킀퍼와 μΉ΄ν”„μΉ΄ μ„œλΉ„μŠ€λ₯Ό λ™μž‘μ‹œν‚€λŠ” docker-compose.yml νŒŒμΌμ„ μž‘μ„±ν•œλ‹€.
  • λ„μ»€ν—ˆλΈŒμ˜ confluentinc/cp-kafka 이미지λ₯Ό μ‚¬μš©ν•œλ‹€.
  • docker-compose up -d λͺ…λ Ήμ–΄λ‘œ detachable λͺ¨λ“œλ‘œ μ‹€ν–‰ν•œλ‹€.
  • docker container ls둜 확인할 수 μžˆλ‹€.
  • telnet localhost 12181, telnet localhost 22181, telnet localhost 32181, telnet localhost 19092
  • docker-compose down으둜 μ’…λ£Œν•œλ‹€.

이둠

ν•˜λ‘‘

ν•˜λ‘‘ μ •μ˜

  • 컴퓨터 μ—¬λŸ¬ λŒ€λ₯Ό ν΄λŸ¬μŠ€ν„°ν™”ν•˜κ³ , 큰 크기의 데이터λ₯Ό ν΄λŸ¬μŠ€ν„°μ—μ„œ λ³‘λ ¬λ‘œ λ™μ‹œμ— μ²˜λ¦¬ν•˜μ—¬ 처리 속도λ₯Ό λ†’μ΄λŠ” 것을 λͺ©μ μœΌλ‘œ ν•˜λŠ” λΆ„μ‚°μ²˜λ¦¬λ₯Ό μœ„ν•œ μ˜€ν”ˆμ†ŒμŠ€ ν”„λ ˆμž„μ›Œν¬

ν•˜λ‘‘μ˜ κ΅¬μ„±μš”μ†Œ

  • Common: λ‹€λ₯Έ λͺ¨λ“ˆμ„ μ§€μ›ν•˜κΈ° μœ„ν•œ 곡톡 μ»΄ν¬λ„ŒνŠΈ λͺ¨λ“ˆ
  • HDFS: μ—¬λŸ¬κ°œμ˜ μ„œλ²„λ₯Ό ν•˜λ‚˜μ˜ μ„œλ²„μ²˜λŸΌ λ¬Άμ–΄μ„œ 데이터λ₯Ό λΆ„μ‚° μ €μž₯ν•˜λŠ” λͺ¨λ“ˆ
  • YARN: ν΄λŸ¬μŠ€ν„° μžμ› 관리 및 μŠ€μΌ€μ€„λ§ λ‹΄λ‹Ή
  • Mapreduce: λΆ„μ‚° μ €μž₯된 데이터λ₯Ό λΆ„μ‚° μ²˜λ¦¬ν•˜λŠ” λͺ¨λ“ˆ
  • Ozone: 였브젝트 μ €μž₯μ†Œ

ν•˜λ‘‘μ˜ μž₯단점

  • μž₯점:
    • μ‹œμŠ€ν…œμ„ μ€‘λ‹¨ν•˜μ§€ μ•Šκ³  μž₯λΉ„μ˜ μΆ”κ°€κ°€ μš©μ΄ν•˜λ‹€
    • 일뢀 μž₯비에 μž₯μ• κ°€ λ°œμƒν•˜λ”λΌλ„ 전체 μ‹œμŠ€ν…œ μ‚¬μš©μ„±μ— 영ν–₯이 적닀
    • μ €λ ΄ν•œ ꡬ좕 λΉ„μš©
  • 단점:
    • HDFS에 μ €μž₯된 데이터λ₯Ό λ³€κ²½ λΆˆκ°€
    • μ‹€μ‹œκ°„ 데이터 뢄석과 같이 μ‹ μ†ν•œ 처리 μž‘μ—…μ— 뢀적합

ν•˜λ‘‘ 버전 별 νŠΉμ§•

  • v1:
    • HDFS둜 λΆ„μ‚° μ €μž₯: λ„€μž„λ…Έλ“œ, 데이터 λ…Έλ“œ
    • MapReduce둜 병렬 처리: 작 트래컀, ν…ŒμŠ€νŠΈ 트래컀
  • v2:
    • YARN λ„μž…ν•˜μ—¬ 작 트래컀의 병λͺ© ν˜„μƒ 제거. 작 트래컀의 κΈ°λŠ₯을 μžμ› 관리, 라이프 사이클 관리, μž‘μ—…μ˜ 처리둜 뢄리.
    • μžμ› 관리와: λ¦¬μ†ŒμŠ€ λ§€λ‹ˆμ €μ™€ λ…Έλ“œ λ§€λ‹ˆμ €
    • 라이프 사이클 관리: μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ§ˆμŠ€ν„°
    • μž‘μ—…μ˜ 처리: μ»¨ν…Œμ΄λ„ˆ
  • v3:
    • νŒ¨λ¦¬ν‹° 블둝을 μ΄μš©ν•œ 이레이져 μ½”λ”© λ„μž…ν•˜μ—¬ HDFS 데이터 μ €μž₯의 νš¨μœ¨μ„± 증가
    • 2개 μ΄μƒμ˜ λ„€μž„ λ…Έλ“œ 지원
    • μžλ°” 8 지원.

HDFS

  • 블둝 λ‹¨μœ„ μ €μž₯
  • 블둝 볡제λ₯Ό μ΄μš©ν•œ μž₯μ•  볡ꡬ
  • 읽기 쀑심, 파일의 μˆ˜μ •μ„ μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ‹€.
  • 데이터 지역성 이용.
  • λ„€μž„λ…Έλ“œμ™€ λ°μ΄ν„°λ…Έλ“œλ‘œ ꡬ성

λ„€μž„λ…Έλ“œ

  • 메타데이터 관리

    • νŒŒμΌμ΄λ¦„, 파일크기, νŒŒμΌμƒμ„±μ‹œκ°„, μ ‘κ·Ό κΆŒν•œ, μœ„μΉ˜ λ“±
    • dfs.name.dir에 보관
    • μˆ˜μ •μ‚¬ν•­μ„ λ„€μž„λ…Έλ“œμ˜ λ©”λͺ¨λ¦¬μ— λ°”λ‘œ 적용, Edist νŒŒμΌμ— 주기적 μ €μž₯
    • Fsimage 파일: λ„€μž„μŠ€νŽ˜μ΄μŠ€μ™€ 블둝 정보
    • Edits 파일: 파일의 생성, μ‚­μ œμ— λŒ€ν•œ νŠΈλžœμž­μ…˜ 둜그
  • 데이터 λ…Έλ“œ 관리

    • 3초 주기의 ν•˜νŠΈλΉ„νŠΈ, 6μ‹œκ°„ 주기의 블둝 리포트λ₯Ό μ΄μš©ν•˜μ—¬ 관리
    • ν•˜νŠΈλΉ„νŠΈκ°€ λ„μ°©ν•˜μ§€ μ•ŠμœΌλ©΄ λ„€μž„λ…Έλ“œλŠ” λ°μ΄ν„°λ…Έλ“œκ°€ λ™μž‘ ν•˜μ§€ μ•ŠλŠ” κ²ƒμœΌλ‘œ κ°„μ£Όν•˜κ³  더이상 IOκ°€ λ°œμƒν•˜μ§€ μ•Šλ„λ‘ μ‘°μΉ˜ν•œλ‹€.
    • 블둝 리포트둜 μ €μž₯된 파일이 μ–΄λ–€ 블둝이고 μ–΄λ”” μ €μž₯λ˜μ–΄ μžˆλŠ”μ§€μ— λŒ€ν•œ μ΅œμ‹  정보 μœ μ§€.
  • ꡬ동 κ³Όμ •

    • Fsimageλ₯Ό 읽어 λ©”λͺ¨λ¦¬μ— 적재
    • Edits 파일둜 λ³€κ²½ λ‚΄μ—­ 반영
    • ν˜„μž¬ λ©”λͺ¨λ¦¬ μƒνƒœλ₯Ό μŠ€λƒ…μƒ·μœΌλ‘œ Fsimage 생성
    • 데이터 λ…Έλ“œλ‘œλΆ€ν„° 블둝 리포트 μˆ˜μ‹ ν•˜μ—¬ 맀핑
    • μ„œλΉ„μŠ€ μ‹œμž‘
      • λ„€μž„λ…Έλ“œμ— 파일이 λ³΄κ΄€λœ 블둝 μœ„μΉ˜ μš”μ²­ν•˜κ³  λ°˜ν™˜
      • 각 데이터 λ…Έλ“œμ— 파일 블둝 μš”μ²­
      • 블둝 κΉ¨μ Έ 있으면 ν†΅μ§€ν•˜κ³  λ‹€λ₯Έ 블둝 확인

λ°μ΄ν„°λ…Έλ“œ

  • ν™œμ„±/λΉ„ν™œμ„± μƒνƒœ
    • ν•˜νŠΈλΉ„νŠΈλ₯Ό 주기적으둜 λ°›λŠ” μƒνƒœλ©΄ ν™œμ„±
  • 운영 μƒνƒœ
    • normal, decommissioned, in_maintenance

블둝지역성

  • λ§΅λ¦¬λ“€μŠ€λ₯Ό μ²˜λ¦¬ν•  λ•Œ ν˜„μž¬ λ…Έλ“œμ— μ €μž₯λ˜μ–΄ μžˆλŠ” 블둝을 μ΄μš©ν•˜λŠ” 것.

블둝 캐싱

  • 데이터 λ…Έλ“œμ— μ €μž₯된 데이터 쀑 자주 μ½λŠ” 블둝은 블둝 μΊμ‹œλΌλŠ” λ°μ΄ν„°λ…Έλ“œμ˜ λ©”λͺ¨λ¦¬μ— λͺ…μ‹œμ μœΌλ‘œ μΊμ‹±ν•˜λŠ” 것.

세컨더리 λ„€μž„ λ…Έλ“œ

  • Fsimage와 Edits νŒŒμΌμ„ 주기적으둜 λ¨Έμ§€ν•˜μ—¬ μ΅œμ‹  λΈ”λ‘μ˜ μƒνƒœλ‘œ νŒŒμΌμ„ μƒμ„±ν•œλ‹€.

HDFS νŽ˜λ”λ ˆμ΄μ…˜

  • 디렉토리(λ„€μž„μŠ€νŽ˜μ΄μŠ€) λ‹¨μœ„λ‘œ λ„€μž„λ…Έλ“œλ₯Ό λ“±λ‘ν•˜μ—¬ μ‚¬μš©ν•˜λŠ” 것.

HDFS κ³ κ°€μš©μ„±

  • HDFS κ³ κ°€μš©μ„±μ€ μ΄μ€‘ν™”λœ λ‘λŒ€μ˜ μ„œλ²„μΈ μ•‘ν‹°λΈŒ λ„€μž„λ…Έλ“œμ™€ μŠ€νƒ λ°”μ΄ λ„€μž„λ…Έλ“œλ‘œ μ§€μ›ν•œλ‹€.
  • ν•˜νŠΈλΉ„νŠΈλ₯Ό λͺ¨λ‘ λ°›μ•„μ„œ λ™μΌν•œ 메타데이터λ₯Ό μœ μ§€ν•˜κ³ , 곡유 μŠ€ν† λ¦¬μ§€λ₯Ό μ΄μš©ν•˜μ—¬ μ—λ””νŠΈ νŒŒμΌμ„ κ³΅μœ ν•œλ‹€.
  • μŠ€νƒ λ°”μ΄ λ„€μž„λ…Έλ“œλŠ” μ•‘ν‹°λΈŒ λ„€μž„λ…Έλ“œμ™€ λ™μΌν•œ 메타데이터 정보λ₯Ό μœ μ§€ν•˜λ‹€κ°€, μ•‘ν‹°λΈŒ λ„€μž„λ…Έλ“œμ— λ¬Έμ œκ°€ λ°œμƒν•˜λ©΄ μŠ€νƒ λ°”μ΄ λ„€μž„λ…Έλ“œκ°€ μ•‘ν‹°λΈŒ λ„€μž„λ…Έλ“œλ‘œ λ™μž‘
  • 주킀퍼λ₯Ό μ΄μš©ν•˜μ—¬ μž₯μ•  λ°œμƒμ‹œ μžλ™μœΌλ‘œ 변경될 수 μžˆλ„λ‘ ν•œλ‹€.
  • μŠ€νƒ λ°”μ΄ λ„€μž„λ…Έλ“œλŠ” 세컨더리 λ„€μž„λ…Έλ“œμ˜ 역할을 λ™μΌν•˜κ²Œ μˆ˜ν–‰ν•˜λ―€λ‘œ, HDFS κ³ κ°€μš©μ„± λͺ¨λ“œλ‘œ μ„€μ •ν•˜μ˜€μ„ λ•ŒλŠ” 세컨더리 λ„€μž„λ…Έλ“œλ₯Ό μ‹€ν–‰ν•˜μ§€ μ•Šμ•„λ„ 되고 μ‹€ν–‰ν•˜λ©΄ 였λ₯˜κ°€ λ°œμƒν•œλ‹€.

HDFS 데이터 블둝 관리

  • 컀럽트
    • λͺ¨λ“  볡제 블둝에 λ¬Έμ œκ°€ μƒκ²¨μ„œ λ³΅κ΅¬ν•˜μ§€ λͺ»ν•˜λŠ” μƒνƒœ
    • 컀럽트 μƒνƒœμ˜ νŒŒμΌλ“€μ€ μ‚­μ œν•˜κ³  원본 νŒŒμΌμ„ λ‹€μ‹œ HDFS에 μ˜¬λ €μ£Όμ–΄μ•Ό ν•œλ‹€
    • fsckλ₯Ό μ΄μš©ν•˜μ—¬ μƒνƒœλ₯Ό μ²΄ν¬ν•œλ‹€
  • 볡제 개수 λΆ€μ‘±

λ§΅λ¦¬λ“€μŠ€

  • κ°„λ‹¨ν•œ λ‹¨μœ„ μž‘μ—…μ„ λ°˜λ³΅ν•˜μ—¬ μ²˜λ¦¬ν•  λ•Œ μ‚¬μš©ν•˜λŠ” ν”„λ‘œκ·Έλž˜λ° λͺ¨λΈ. λ‹¨μœ„ μž‘μ—…μ„ μ²˜λ¦¬ν•˜λŠ” 맡과, λͺ¨μ•„μ„œ μ§‘κ³„ν•˜λŠ” λ¦¬λ“€μŠ€ λ‹¨κ³„λ‘œ ꡬ성.
  • μ‹€ν–‰ 쀑 였λ₯˜κ°€ λ°œμƒν•˜λ©΄ μ„€μ •λœ 횟수만큼 μžλ™μœΌλ‘œ λ°˜λ³΅λœλ‹€. 반볡 후에도 였λ₯˜κ°€ λ°œμƒν•˜λ©΄ μž‘μ—…μ„ μ’…λ£Œν•œλ‹€.
  • 맡 μž‘μ—…
    • 큰 데이터λ₯Ό ν•˜λ‚˜μ˜ λ…Έλ“œμ—μ„œ μ²˜λ¦¬ν•˜μ§€ μ•Šκ³  λΆ„ν• ν•˜μ—¬ λ™μ‹œμ— 병렬 μ²˜λ¦¬ν•˜μ—¬ μž‘μ—… μ‹œκ°„μ„ λ‹¨μΆ•ν•œλ‹€.
    • 맡 μž‘μ—…μ€ HDFS에 μž…λ ₯ 데이터가 μžˆλŠ” λ…Έλ“œμ—μ„œ μ‹€ν–‰ν•  λ•Œ, ν΄λŸ¬μŠ€ν„°μ˜ λ„€νŠΈμ›Œν¬ λŒ€μ—­μ„ μ‚¬μš©ν•˜μ§€ μ•Šκ³  μ²˜λ¦¬ν•˜κΈ° λ•Œλ¬Έμ— κ°€μž₯ λΉ λ₯΄κ²Œ λ™μž‘ν•œλ‹€.
    • λ…Έλ“œμ—μ„œ μž‘μ—…μ„ μ²˜λ¦¬ν•  수 μ—†λ‹€λ©΄, λ™μΌν•œ λž™μ˜ λ…Έλ“œ, λ‹€λ₯Έ λž™μ˜ λ…Έλ“œ μˆœμ„œλ‘œ 맡 μž‘μ—…μ΄ μ‹€ν–‰κ°€λŠ₯ν•œ λ…Έλ“œλ₯Ό μ°ΎλŠ”λ‹€.
  • λ¦¬λ“€μ„œ μž‘μ—…
    • μ—†λŠ” 경우: νŒŒμΌμ„ μ½μ–΄μ„œ λ°”λ‘œ μ“°λŠ” μž‘μ—…μ˜ 경우 맀퍼만 μžˆλŠ” μž‘μ—…
    • ν•˜λ‚˜μΈ 경우: λͺ¨λ“  λ°μ΄ν„°μ˜ μ •λ ¬ μž‘μ—…
    • μ—¬λŸ¬κ°œμΈ 경우: λ¦¬λ“€μ„œ 수만큼 파일 생성

λ§΅λ¦¬λ“€μŠ€μ˜ μ²˜λ¦¬λ‹¨κ³„

  • μž…λ ₯: text, csv, gzip ν˜•νƒœ
    • InputFormat, InputSplit, RecordReader μΆ”μƒν΄λž˜μŠ€λ₯Ό μƒμ†ν•˜μ—¬ κ΅¬ν˜„
  • 맡: μž…λ ₯을 λΆ„ν• ν•˜μ—¬ 킀별 데이터 처리
    • Mapper 클래슀λ₯Ό μƒμ†ν•˜κ³  map() λ©”μ†Œλ“œλ₯Ό κ΅¬ν˜„
  • μ»΄λ°”μ΄λ„ˆ: λ„€νŠΈμ›Œν¬λ₯Ό 타고 λ„˜μ–΄κ°€λŠ” 데이터λ₯Ό μ€„μ΄λŠ” 둜컬 λ¦¬λ“€μ„œ
  • νŒŒν‹°μ…”λ„ˆ: 맡의 좜λ ₯ κ²°κ³Ό ν‚€ 값을 해쉬 μ²˜λ¦¬ν•˜μ—¬ μ–΄λ–€ λ¦¬λ“€μ„œλ‘œ λ„˜κΈΈμ§€ κ²°μ •.
    • Partitioner 클래슀λ₯Ό μƒμ†λ°›μ•„μ„œ
  • μ…”ν”Œ: 각 λ¦¬λ“€μ„œλ‘œ 데이터 이동
  • μ •λ ¬: λ¦¬λ“€μ„œλ‘œ μ „λ‹¬λœ 데이터λ₯Ό ν‚€ κ°’ κΈ°μ€€μœΌλ‘œ μ •λ ¬
    • 데이터λ₯Ό μ •λ ¬ν•  λ•Œ νŒŒν‹°μ…˜μ˜ 기쀀이 λ˜λŠ” 주킀와 λ‹€λ₯Έ 값을 κΈ°μ€€μœΌλ‘œ μ •λ ¬ν•  수 μžˆλ‹€. 이λ₯Ό 세컨더리 μ†ŒνŠΈλΌκ³  ν•œλ‹€.
  • λ¦¬λ“€μ„œ: 데이터λ₯Ό μ²˜λ¦¬ν•˜κ³  κ²°κ³Όλ₯Ό μ €μž₯
  • 좜λ ₯: λ¦¬λ“€μ„œμ˜ κ²°κ³Όλ₯Ό μ •μ˜λœ ν˜•νƒœλ‘œ μ €μž₯

μž‘μ€ 파일 문제

  • λ„€μž„λ…Έλ“œλŠ” 파일의 메타데이터와 블둝을 κ΄€λ¦¬ν•˜λŠ”λ° λ§Žμ€ λ©”λͺ¨λ¦¬λ₯Ό μ‚¬μš©ν•œλ‹€. μž‘μ€ μ‚¬μ΄μ¦ˆμ˜ 파일이 μ—¬λŸ¬κ°œ μ‘΄μž¬ν•˜κ²Œ 되면 이 νŒŒμΌλ“€μ„ κ΄€λ¦¬ν•˜λŠ”λ° λ§Žμ€ λ©”λͺ¨λ¦¬κ°€ μ‚¬μš©λ˜κ³ , λ§΅λ¦¬λ“€μŠ€ μž‘μ—… 처리 쀑 λ§Žμ€ μš”μ²­μ„ μ²˜λ¦¬ν•˜κ²Œ λ˜μ–΄ λ„€μž„λ…Έλ“œμ— 병λͺ© ν˜„μƒμ΄ λ°œμƒν•˜κ²Œ λ˜μ–΄ μž‘μ—…μ†λ„κ°€ λŠλ €μ§€κ²Œ λ˜λ‹ˆλ‹€. 이λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•˜μ—¬ μž‘μ€ μ‚¬μ΄μ¦ˆμ˜ νŒŒμΌμ„ ν•˜λ‚˜μ˜ 파일둜 ν•©μ³μ„œ HDFS λΈ”λ‘μ‚¬μ΄μ¦ˆ 크기의 파일둜 μ„€μ •ν•˜λŠ” 것이 μ’‹λ‹€.

YARN

  • ν΄λŸ¬μŠ€ν„° λ¦¬μ†ŒμŠ€ 관리 및 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 라이프 사이클 관리λ₯Ό μœ„ν•œ 아킀텍쳐이닀.
  • 작트래컀 ν•œ λŒ€κ°€ λͺ¨λ“  ν΄λŸ¬μŠ€ν„°μ˜ λͺ¨λ“  λ…Έλ“œλ₯Ό κ΄€λ¦¬ν•˜λ©΄μ„œ, λ©”λͺ¨λ¦¬ μžμ› μ‚¬μš©μ˜ νš¨μœ¨μ„± 문제 발발. λ§΅λ¦¬λ“€μŠ€ μž‘μ—…λ§Œ μ²˜λ¦¬ν•˜κ³  SQL 기반 μž‘μ—…μ˜ μ²˜λ¦¬λ‚˜ 인메λͺ¨λ¦¬ 기반의 μž‘μ—… μ²˜λ¦¬μ— 어렀움이 있기 λ•Œλ¬Έμ— λ“±μž₯

μžμ› 관리

  • λ¦¬μ†ŒμŠ€λ§€λ‹ˆμ €
    • 전달 받은 정보λ₯Ό μ΄μš©ν•˜μ—¬ ν΄λŸ¬μŠ€ν„° μ „μ²΄μ˜ μžμ› 관리.
    • μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ§ˆμŠ€ν„°μ—μ„œ μžμ›μ„ μš”μ²­ν•˜λ©΄ λΉ„μ–΄ μžˆλŠ” μžμ›μ„ μ‚¬μš©ν•  수 μžˆλ„λ‘ 처리
    • μŠ€μΌ€μ€„λŸ¬: yarn-site.xml에 μ„€μ •
      • 피포 μŠ€μΌ€μ€„λŸ¬: λ¨Όμ € λ“€μ–΄μ˜¨ μž‘μ—…μ΄ μ’…λ£Œλ  λ•ŒκΉŒμ§€ λ‹€μŒ μž‘μ—…μ€ λŒ€κΈ°ν•˜λŠ” ν…ŒμŠ€νŠΈ λͺ©μ μœΌλ‘œλ§Œ μ‚¬μš©ν•˜λŠ” μŠ€μΌ€μ€„λŸ¬
      • νŽ˜μ–΄ μŠ€μΌ€μ€„λŸ¬: λ™λ“±ν•˜κ²Œ λ¦¬μ†ŒμŠ€ 점유.
      • μ»€νŒ¨μ‹œν‹° μŠ€μΌ€μ€„λŸ¬: 트리 ν˜•νƒœλ‘œ 큐λ₯Ό μ„ μ–Έν•˜κ³  각 큐 λ³„λ‘œ μ΄μš©ν•  수 μžˆλŠ” μžμ›μ˜ μš©λŸ‰μ„ μ •ν•˜μ—¬ μ£Όλ©΄ κ·Έ μš©λŸ‰μ— 맞게 μžμ›μ„ ν• λ‹Ήν•œλ‹€.
  • λ…Έλ“œλ§€λ‹ˆμ €
    • ν΄λŸ¬μŠ€ν„°μ˜ 각 λ…Έλ“œλ§ˆλ‹€ μ‹€ν–‰. ν˜„ λ…Έλ“œμ˜ μžμ› μƒνƒœ 관리 및 보고

라이프사이클 관리

  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ§ˆμŠ€ν„°
    • ν΄λΌμ΄μ–ΈνŠΈκ°€ λ¦¬μ†ŒμŠ€ λ§€λ‹ˆμ €μ— μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ œμΆœν•˜λ©΄ λ¦¬μ†ŒμŠ€ λ§€λ‹ˆμ €κ°€ λΉ„μ–΄μžˆλŠ” λ…Έλ“œμ—μ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ§ˆμŠ€ν„°λ₯Ό μ‹€ν–‰μ‹œν‚¨λ‹€.
    • μž‘μ—… 싀행을 μœ„ν•œ μžμ›μ„ λ¦¬μ†ŒμŠ€ λ§€λ‹ˆμ €μ— μš”μ²­ν•˜κ³  μžμ›μ„ ν• λ‹Ή λ°›μ•„μ„œ 각 λ…Έλ“œμ— μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰ν•˜κ³  μž‘μ—… 진행.
    • μ»¨ν…Œμ΄λ„ˆλ‘œλΆ€ν„° μ’…λ£Œ μ•Œλ¦Όμ„ λ°›κ³  μž‘μ—…μ΄ μ’…λ£Œλ˜λ©΄ λ¦¬μ†ŒμŠ€λ§€λ‹ˆμ €μ— μ•Œλ¦¬κ³  μžμ› ν•΄μ œ
  • μ»¨ν…Œμ΄λ„ˆ
    • μ‹€μ œ μž‘μ—…μ΄ μ‹€ν–‰λ˜λŠ” λ‹¨μœ„.
    • μž‘μ—… μ’…λ£Œμ‹œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μ•Œλ¦Ό.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published