cap 이둠

 

⋆ μΌκ΄€μ„±(Consistency) : λͺ¨λ“  λ…Έλ“œλŠ” 동일 μ‹œμ μ— 동일 데이터 좜λ ₯이 보μž₯

⋆ κ°€μš©μ„±(Availability) : λ…Έκ·Έκ°€ 이용 λΆˆκ°€λŠ₯해도 λ‹€λ₯Έ λ…Έλ“œ 정상 μž‘λ™ 보μž₯

⋆ μ§€μ†μ„±(Parttition Tolerance) : 데이터 손싀이 λ°œμƒν•΄λ„ μ‹œμŠ€ν…œ 정상 μž‘λ™ 보μž₯ (RDBMSλŠ” 지속성에 ν•œκ³„κ°€ μžˆλ‹€.)

βœ” λ…Έλ“œλž€? : 빅데이터 처리 및 뢄석을 μœ„ν•œ μ»΄ν“¨νŒ… μžμ›μ„ μ œκ³΅ν•˜λŠ” μ»΄ν“¨νŒ… μž₯λΉ„μž…λ‹ˆλ‹€.

 

 

RDBMS의 λŒ€μ•ˆ

 

⋆ ν•˜λ‘‘(Hadoop) : ν•˜λ‘‘ λΆ„μ‚°νŒŒμΌ μ‹œμŠ€ν…œ(HDFS) , λŒ€μš©λŸ‰ 데이터 μ²˜λ¦¬μ— μš©μ΄ν•˜λ‹€ 

⋆ NoSQL : λΉ„κ΄€κ³„ν˜• 데이터 μ €μž₯μ†Œ , λ°μ΄ν„°μ˜ 손싀에 λŒ€μ²˜ κ°€λŠ₯ν•˜λ‹€

⋆ λ ˆλ””μŠ€(Redis) : NoSQL의 일쒅이며 key-value ꡬ쑰 μ €μž₯μ†Œ, 인메λͺ¨λ¦¬ μ €μž₯μ†Œ ꡬ쑰

⋆ μš°μ§€(Oozie) : μžλ°” μ„œλΈ”λ¦Ώ μ»¨ν…Œμ΄λ„ˆ 기반 μž‘μ—… μ—”μ§„, DAG ν‘œν˜„ 기반 μž‘μ—…(job)μ œμ–΄

 

 

ν•˜λ‘‘ λΆ„μ‚° 파일 μ‹œμŠ€ν…œ(HDFS)

 

κ΅¬μ„±μš”μ†Œ

⋆ λ„€μž„λ…Έλ“œ μ„œλ²„ : 파일의 μœ„μΉ˜(iNode), 메타정보 관리, ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­

⋆ λ³΄μ‘° λ„€μž„λ…Έλ“œ μ„œλ²„ : λ„€μž„λ…Έλ“œ μ„œλ²„μ˜ λ°±μ—… μ—­ν• , 파일 μ‹œμŠ€ν…œ 볡ꡬ

⋆ λ°μ΄ν„° λ…Έλ“œ μ„œλ²„ : κ³ μ •λœ 크기의 블둝 λ‹¨μœ„λ‘œ 데이터λ₯Ό λ‚˜λˆ„μ–΄ μ €μž₯

데이터 μš”μ²­ 방법

 

 

 

NoSQL(Not-Only-SQL)

 

데이터 λͺ¨λΈλ³„ λΆ„λ₯˜

⋆ ν‚€λ°Έλ₯˜(Keyvalue) : νŠΉμ • 값을 κ³ μœ ν‚€μ™€ λŒ€μ‘ν•˜μ—¬ μŠ€ν‚€λ§ˆ 없이 데이터λ₯Ό μ €μž₯ν•˜λŠ” μœ ν˜•

⋆ 순차적 ν‚€λ°Έλ₯˜(Ordered KeyValue) : ν‚€λ°Έλ₯˜ μŒμ„ 순차적으둜 μ €μž₯, 연속성을 λΆ€μ—¬ν•¨μœΌλ‘œμ¨ μ˜μ—­ μŠ€μΊ” νš¨μœ¨μ„ λ†’μ—¬μ€Œ

⋆ λΉ…ν…Œμ΄λΈ”(BigTable) : ν…Œμ΄λΈ” ν˜•μ‹(Tabular), 2~3λ‹¨κ³„κΉŒμ§€ μž¬κ·€μ  ꡬ쑰 (ν…Œμ΄λΈ”μ˜ λ‚΄λΆ€μ˜ 데이터가 자기 μžμ‹ μ˜ μ–΄λ– ν•œ 뢀뢄을 κ°€λ¦¬ν‚€λŠ” 것)ν˜•μ„± κ°€λŠ₯

⋆ λ„νλ¨ΌνŠΈ(Document): 객체 λ°μ΄ν„°λ² μ΄μŠ€(ODBMS)의 νŒŒμƒν˜•, 데이터 ꡬ쑰 κΉŠμ΄μ— μ œν•œ μ—†μŒ

⋆ κ·Έλž˜ν”„(Graph): 가변적인 데이터 λ…Έλ“œ κ°„ μ—°κ²° ꡬ쑰, μ œμ•½μ—†λŠ” 관계 ν˜•μ„± κ°€λŠ₯

 

μ‹œμŠ€ν…œ ꡬ성

⛀ λ§ˆμŠ€ν„°-슬레이브(Master-Slave)

  • λ§ˆμŠ€ν„° λ…Έλ“œκ°€ 슬레이브/λ°μ΄ν„°μ˜ 메타 정보 관리
  • μ„œλ²„μΆ”κ°€/μ‚­μ œ μž‘μ—…μ— 용이
  • λ§ˆμŠ€ν„°μ— λΆ€ν•˜ 증가

⛀ λΌμš΄λ“œ ν…Œμ΄λΈ”(Round Table)

  • ν•΄μ‹œν…Œμ΄λΈ”(HashTable)기반 ꡬ쑰
  • λ§ˆμŠ€ν„° λ…Έλ“œ μ—†μŒ -> νŠΈλž˜ν”½ λΆ„μ‚° 용이
  • 멀버 λ…Έλ“œ μΆ”κ°€/μ‚­μ œ μ‹œ 데이터 이동 -> νŠΈλž˜ν”½ 증가

 

ν•˜λ‘‘ λͺ…λ Ήμ–΄

ls : 파일(폴더) 쑰회 -> 파일(폴더λ₯Ό) μ‘°νšŒν•˜λŠ” λͺ…λ Ήμ–΄

hadoop fs -ls /
# hadoop fs -λŠ” hadoop으둜 κ²€μƒ‰ν•˜κ² λ‹€
# ls / λŠ” '/'λΌλŠ” 곳에 μžˆλŠ” νŒŒμΌμ„ μ‘°νšŒν•˜κ² λ‹€

 

put : 파일 올리기 -> 둜컬 νŒŒμΌμ„ HDFS에 μ €μž₯ν•˜λŠ” λͺ…λ Ήμ–΄

hadoop fs -put hello.txt h_hello.txt
# hello.txt : λ‚΄ 컴퓨터에 μžˆλŠ” 파일λͺ…
# h_hello.txt : ν•˜λ‘‘μ— μ €μž₯ν•  파일λͺ…

 

get : 파일 κ°€μ Έμ˜€κΈ° -> HDFS의 νŒŒμΌμ„ 둜컬둜 κ°€μ Έμ˜€λŠ” λͺ…λ Ήμ–΄

hadoop fs -get h_bye.txt bye.txt
# h_bye.txt : ν•˜λ‘‘μ— μ €μž₯ν•  파일λͺ…
# bye.txt : λ‚΄ 컴퓨터에 μžˆλŠ” 파일λͺ…

 

cp : 파일 λ³΅μ‚¬ν•˜κΈ° -> HDFS의 νŒŒμΌμ„ HDFSμƒμ—μ„œ 볡사

hadoop fs -cp test1.txt test2.txt

 

rm : 파일 μ‚­μ œν•˜κΈ° -> HDFS의 νŒŒμΌμ„ μ‚­μ œν•˜κΈ°

hadoop fs -rm test2.txt

 

chmod : κΆŒν•œ λ³€κ²½ -> HDFSμƒμ˜ 파일의 κΆŒν•œμ„ λ³€κ²½

hadoop fs -chmod 700 test.txt

 

chown : μ†Œμœ κΆŒ λ³€κ²½ -> HDFSμƒμ˜ 파일의 μ†Œμœ κΆŒμ„ λ³€κ²½

hadoop fs -chown recorder test.txt
# recorder : μ†Œμœ μž

 

 

 

MongoDB(λͺ½κ³ DB)

 

νŠΉμ§•

⛀ λ¬Έμ„œ μ§€ν–₯ λ°μ΄ν„°λ² μ΄μŠ€

  • λ¬Έμ„œ(document)와 λ°°μ—΄(array)의 κ°œλ… λ„μž…
  • λ³΅μž‘ν•œ 계측 관계λ₯Ό ν•˜λ‚˜μ˜ λ ˆμ½”λ“œλ‘œ ν‘œν˜„ κ°€λŠ₯
  • NoSQL λ°μ΄ν„°λ² μ΄μŠ€

⛀ 더블 λ§ν¬λ“œ 리슀크 ꡬ쑰 : λ°μ΄ν„°μ˜ 순방ν–₯-μ—­λ°©ν–₯ 탐색 κ°€λŠ₯

 

μ£Όμš” κ°œλ…

λ°μ΄ν„°λ² μ΄μŠ€(Database) : μ»¬λ ‰μ…˜μ˜ 논리적/물리적인 μ§‘ν•©

μ»¬λ ‰μ…˜(Collection) : ꡬ쑰적/κ°œλ…μ μœΌλ‘œ μœ μ‚¬ν•œ λ„νλ¨ΌνŠΈμ˜ μ§‘ν•©

μ΅μŠ€ν…νŠΈ(Extent) : 데이터 μ €μž₯을 μœ„ν•œ 논리 λ‹¨μœ„

λ„νλ¨ΌνŠΈ(Document) : μ •λ ¬λœ ν‚€(Key)-κ°’(Value)의 μ§‘ν•©

 

λͺ½κ³ DBλͺ…λ Ήμ–΄

use : λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό 생성(μ‚¬μš©)ν•˜λŠ” λͺ…λ Ή

use mydatabase
# mydatabaseλΌλŠ” λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μƒμ„±ν•œλ‹€.
# 이미 μžˆλ‹€λ©΄ μ‚¬μš©ν•œλ‹€.

 

dropDatabase() : ν˜„μž¬ μ‚¬μš©ν•˜λŠ” λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‚­μ œ

db.dropDatabase()
# μ‚¬μš©μ€‘μΈ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‚­μ œν•œλ‹€.

 

createCollection() : μ»¬λ ‰μ…˜μ„ 생성(μ‚¬μš©)ν•˜λŠ” λͺ…λ Ή

db.createCollection("test")
{"ok" : 1 } --> 생성 ν›„ λ‚˜μ˜€λŠ” λ©”μ„Έμ§€
# test :μƒμ„±ν•˜κ³ μž ν•˜λŠ” μ»¬λ ‰μ…˜

 

drop() : μ»¬λ ‰μ…˜μ„ μ‚­μ œν•˜λŠ” λͺ…λ Ή

db.test.drop()
# test μ»¬λ ‰μ…˜μ„ μ‚­μ œν•œλ‹€

 

insert() : λ„νλ¨ΌνŠΈλ₯Ό μΆ”κ°€ν•˜λŠ” λͺ…λ Ή

db.test.insert(
	{"title":"hello", "author":"recorder"}
    {"title":"bye", "author":"bboong"}
    
# μ„±κ³΅μ μœΌλ‘œ μ‚½μž…μ‹œ    
BulkWriteResult({
	"writeErrors" : [ ],
    "writeConcernErrors" : [ ],
    "nInserted" : 2,
    "nUpserted" : 0,
    ...

 

remove() : λ„νλ¨ΌνŠΈλ₯Ό μ œκ±°ν•˜λŠ” λͺ…λ Ή

db.test.remove({"title": "hello"})

# μ‹€ν–‰ μ„±κ³΅μ‹œ 좜λ ₯
{"_id" ObjectId("..."),
"title" : "hello", "author" : "recorder"}

 

 

 

 

+ Recent posts