SlideShare a Scribd company logo
1 of 58
& son.bui@tamtay.vn May, 2011
Hadoop làgì Là 1 dựán Open Source! Phụcvụchoviệctínhtoánphântán. Đảmbảotính reliable & scalable. Tínhtoánphântán? Reliable? Scalable?
Ai dùng Hadoop Facebook Ning Last.fm Linkedin Twitter Yahoo Google … Tamtay
Thànhphầncủa Hadoop Thànhphần: Hadoop Distributed File System (HDFS) Hadoop MapReduce Cácdựánliênquan Avro Cassandra Chukwa HBase database Hive data warehouse Mahout Pig ZooKeeper coordination service
Thànhphầncủa Hadoop Thànhphần: Hadoop Distributed File System (HDFS) Hadoop MapReduce Cácdựánliênquan Avro Cassandra Chukwa HBase database Hive data warehouse Mahout Pig ZooKeepercoordination service
HDFS Hệthốnglưutrữ file phântántrênnền Hadoop Phântán: tin cậy & nhanh? Tươngtác:  Shell Java API
Kiếntrúc HDFS Master – Slaves Master: Namenode Slaves: Datanodes
HDFS Admin
Thànhphầncủa Hadoop Thànhphần: Hadoop Distributed File System (HDFS) Hadoop MapReduce Cácdựánliênquan Avro Cassandra Chukwa HBase database Hive data warehouse Mahout Pig ZooKeepercoordination service
Tínhtoántuầntựvs song song Tuầntự: việcsauphụthuộcviệctrước Sinh con Tìm partner xxx Cóbầu Sinh con Tínhsố Fibonacci F(n) = F(n-1) + F(n-2)
Tínhtoántuầntựvs song song Song song: thựchiệnđồngthời, khôngphụthuộcvàonhau. Tàunhanh Có n toa Lên & xuốngtàu: cóthể song songở n toa. Toa x khôngphụthuộcvàotoa y, z … Tínhsố Pi = 3.141… Ac = pi * r2  => pi = Ac / r2 As = 4r2 => r2 = As / 4 pi = 4 * Ac / As
Map Reduce Algorithm Cónhiềuphươngpháp song songhóa Map-Reduce là 1 phươngpháp. Có 1 lớpcácgiảithuậtcóthể song songhóabằng Map-Reduce (khôngphảitấtcả!) Rấtđơngiản: chỉbaogồm 2 hàm Map(input_key, input_value) => {output_key, output_value} Reduce(input_key, input_values[]) => output
Map Reduce Algorithm
Hadoop Map Reduce programming model and software framework dànhchocácứngdụngxửlý song songkhốilượngcựclớndữliệulưutrữtrênhệthốngphântán. 	(input) <k1, v1> => map=> <k2, v2>  	=> combine=>  	<k2, v2s> => reduce=> <k3, v3> (output)  Data Structure & Algorithm Cấutrúcdữliệu: phântán Thuậttoán: cóthể song songhóa
Google Word Count Cho n vănbản – nội dung trang web Đếmtầnsốxuấthiệncủatừngtừcótrong n vănbản. Vídụ Input Vb1 = Hello World Bye World Vb2 = Hello Hadoop Goodbye Hadoop Output Bye 1 Goodbye 1 Hadoop 2 Hello 2 World 2
Google Word Count MAP map(vb1, “Hello World Bye World”) <Hello, 1> <World, 1> <Bye, 1> <World, 1> map(vb2, “Hello Hadoop Goodbye Hadoop”) <Hello, 1> <Hadoop, 1> <Goodbye, 1> <Hadoop, 1>
Google Word Count COMBINE <Bye, [1]> <Goodbye, [1]> <Hadoop, [1, 1]> <Hello, [1, 1]> <World, [1, 1]>
Google Word Count REDUCE reduce(word, values){ count = 0; foreach(value in values) 	count++; return <word, count>; } reduce(“Hello”,[1, 1]) => <Hello, 2>
Thànhphầncủa Hadoop Thànhphần: Hadoop Distributed File System (HDFS) Hadoop MapReduce Cácdựánliênquan Avro Cassandra Chukwa HBase database Hive data warehouse Mahout Pig ZooKeepercoordination service
NoSQL Là 1 lớpcácHệquảntrịcơsởdữliệu (DBMS) cókhácbiệtcơbảnvớiHệquảntrịcơsởdữliệuquanhệ (RDBMS) Khôngcó schema cốđịnh Khôngcó JOIN Khôngcóquanhệ Scale horizontally: pháttriểntheochiềungang
NoSQL ACID Atomic: hoặctấtcảhoặckhônggìcả Consistency: tạoratrạngtháimớihợplệhoặctrởlạinguyêntrạng. Isolation: sựtáchbiệtgiữa 2 giaodịch Durability: bềnvững – lỗikhôngmấtdữliệu CAP Theorem (Brewer's theorem) chocáchệphântán: khôngmộthệphântánnàođảmbảođượccả 3 điềukiệnsau Consistency Availability Partition tolerance
NoSQL Key-Value store Document databases Column oriented databases BigTable Hbase (CA, not P) Cassandra: Key-Value & Column oriented (AP, not C)
HBase Architecture
HBase Architecture Zookeeper: lưutrữ metadata & region info v.v… Master: điềuphối Region Server: Lưutrữdữliệu Mỗi table baogồmnhiều regions. Mỗi region nằmtrên 1 Region Server. Mỗi region baogồm 1 dãyliêntiếpcácrowkey.  Mỗikhikíchthướccủa 1 region tăngquá 1 giátrịcụthể, nótựđộng split làm 2 region
HBase table RDBMS table
HBase table Row (rowkey): gồmnhiều family Handle hàngtỉdòng. Family: tậphợpcác column. Column: cộtnằmtrong 1 family Sốlượng column trong 1 family: khácnhautùytừngdòng, từ 0 đếnhàngtriệu Mỗi column cónhiều version (theothờigian) (hàngnghìn versions) Mộtphầntửtrongcơsởdữliệu: rowkey_family_column_timestamp Tấtcảrowkey & dữliệulưutrữdướidạngmảng byte (byte[]). Sắpxếptheothứtựtừđiển (1, 10, 2, 3…)
Student - Course Student 1 Student ~ họcnhiều Course Course 1 Course ~ cónhiều Student
Student - Course RDBMS
Student - Course HBase Schema
Hbase at Tamtay
Friend module Testimonial: NULL Time SELECT * FROM Users INNER JOIN Friends WHERE …
Friend Module Khôngcần timestamp, bảnthânmỗi column đãcó timestamp Chỉlưu testimonial nếucó Khôngphải join bảng Tìmbạnchung (mutual friend): Map-Reduce
Feed Log User_feed: 130.000.000 dòng
Feed Log: ReversedTimeStamp= MaxLong – Timestamp Sắpxếp log giảmdầntheothờigian Data family: mỗiloại log có 1 cấutrúcdữliệukhácnhau. Số column trong Data family làkhácnhau ở mỗidòng.
Feed User_feed Sốdòng = số user Một column, nhiều versions. Mỗidata family cóthamsố TTL Timestamp < Now() – TTL => xóa Khôngphântrang!
Feed Sinh feed: Map-Reduce (again!!!) Map(logID, logData){ uid = logData->getUid(); friends = getFriend(uid); foreach (friend in friends) 	output(friend, logID); } Reduce(uid, logIDs){ foreach(logID in logIDs){ 	timestamp = extract_timestamp(logID); insert_to_user_feed(uid, logID, timestamp); 	} }
Nhượcđiểm Truyvấn 1 dòngdữliệuchậmhơn so với MySQL Xửlýcáccâulệnhsắpxếp (nếukhôngphảitheokhóa) Filter & tìmkiếmtheogiátrị? Design table: ít flexible, phảibiếttrướccácyêucầukhithiếtkế. Vídụ: “Bạnthân”
Ưuđiểm Dễdàngmởrộng, scale up Khảnăngđọc / ghi song songtốt: 10 threads cùngđọc 10000 dòngdữliệungẫunhiêntừ 1 bảng 1 triệuphầntử 3 servers Nhanhhơn > 2 lần so với MySQL Handle khốilượnglớndữliệu. Dữliệuđượcsaochépđinhiềumáy. Dùng Map-Reduce xửlýcáclệnhthốngkê
Vấnđề Xửlývấnđề Split region? Quánhiều region – khôngtốt 1 region: càngkhôngtốt! Đọc – ghiliêntiếp ở 1 region Coding.
Thànhphầncủa Hadoop Thànhphần: Hadoop Distributed File System (HDFS) Hadoop MapReduce Cácdựánliênquan Avro Cassandra Chukwa HBase database Hive data warehouse Mahout Pig ZooKeepercoordination service
Zookeeper Tínhtoánphântánnhư 1 sởthú Trừviệc 2 cáimáytính k thểđẻracáithứ 3! Thêmthiếtbịvàohệthống Phụchồihệthốngsaulỗi Thayđổicấuhình Cânbằngtải v.v… Zookeeper: A high-performance coordination service for distributed applications.
Coordination service Partial failure: lỗiđặctrưngcủatínhtoánphântán:  Máy A gửi tin đếnmáy B Khôngthấyphảnhồi Liệugói tin đãđến B? B đãxửlý hay chưa? Dữliệutrảvềtừ B bịlỗi? Coordination service: khônggiúploạibỏ Partial failure, dùngđểxửlýkhigặp Partial failure
Zookeeper Architecture Lưutrữdữliệutrong Memory Snapshot trên ổ cứng Quytắc 2k+1
Zookeeper Architecture Cóthểxemlàhệthống file cótính availability cao. Cấutrúccâygiốngcâythưmục(znode) Mỗiznodevừalà file (chứadữliệu) vừalàthưmục (códanhsáchznode con) ephemeral znode Node chỉtồntạikhi thread tạoranócònkếtnốiđến Zookeeper. persistent znode Tồntạiđếnkhicólệnhxóa.
Ứngdụng Danhsách server: 1 ứngdụngphântánchạytrên 1 cụm server Các server cóvaitrònhưnhau. Cầnlưutrữdanhsáchđịachỉcác server Khôngthểlưutrữdanhsáchnàytrên 1 server. Lúcnàothì 1 server “chết” đểloạirakhỏidanhsách?
Ứngdụng Zookeeper: Tạo node “/server_list” - persistent  Trênmỗi server, chạy 1 thread kếtnốiđến zookeeper Tạo node “/server_list/tên_server” - ephemeral  Giữkếtnốitừ thread đến zookeeper Liệtkê: lấydanhsáchznode con của “/server_list” 1 server mấtkếtnối => ephemeral node tươngứngbịxóa
Version Mỗiznodecólưuthông tin version. Mỗikhicóthayđổivớiznode (sửa, xóa, tạomới) version thayđổi Tính Atomic: nếu version lúcđọcvàghikhôngkhớp => exception.
Ứngdụng Atomic sequence: znode“/counter” chứagiátrịsốnguyên Không atomic:  A = đọcgiátrịcủa “/counter” A++ Ghi A vào “/counter” => 2 process đọccùng 1 giátrị A! Atomic: do { <A, version> = đọcgiátrị & version của “/counter”; A++; ok = Ghi A vào “/counter” vớithamsố version /* nếu version trùngvới version hiệntạicủa “/counter” return 	true, nếu version khác version hiệntại, return false */ } while (not ok)
Watches Watches chophép client nhậnthôngbáotừ zookeeper nếu 1 znodenàođóthayđổitrạngthái. Interface Watcher public void process(WatchedEvent event) Hàm process sẽđượcgọikhiznodeđượctheodõithayđổitrạngthái Theo dõi 1 znode Cáchàmtươngtácvới zookeeper đềucóthamsốlà 1 class implements Watcher Vídụ: A = new Watcher(); Zookeeper.getData(<tên node>, A); Mỗikhi <tên node> thayđổithìA.processsẽđượcthựcthi
Ứngdụng Tựđộngcậpnhậtcấuhình Vớimỗihệphântánnóiriênghoặc 1 cụm server nóichungthìviệcđồngbộcấuhìnhlàquantrọng. 100 máy: thayđổicả ở 100! Chảlẽlạilàmbằngtay? Zookeeper? Hjx, máynàođãthay, máynàochưanhỉ?
Ứngdụng Configuration service Thayđổithông tin cấuhình ở 1 máy, cácmáykhácsẽtựthayđổi Giảsửcấuhìnhchỉgồmdạng <key,value> znode “/key” chứa value tươngứng. Cậpnhậtcấuhình: Đơngiản.
Ứngdụng Theo dõi & cậpnhậtcấuhình: Class A implements Watcher{ void process(Event e){ 	if (e.nodeDataChange){ 		value = zookeeper.read(“/key”, this) 		//Tiếptụctheodõiznode“/key”; cậpnhật local configdựavào value 	} 	} }
Ứngdụng main(){ a = new A(); dump = zookeeper.exist(“/”, a); sleep(forever); //đingủ, đợiđếnlúcznode “/” cóthayđổisẽđượcgọidậytừhàm process 			     của a } Watch sẽđượckíchhoạtcảkhiznode con củaznodeđóthayđổi Chạy main() trênmỗimáycầncậpnhậtconfig.
Future study Hive Dataware house: là database nhưngđượcthiếtkếphụcvụphântích & báocáo SửdụngHiveQL Mụcđích:  Đểphântích & tổnghợpdữliệuđượclưutrữmộtcáchcócấutrúctrêncác file củahệthống HDFS Sửdụng Map-Reduce Hive sẽ convert HiveQL sang Map-Reduce code => dễhiểu, tiếtkiệmthờigian & côngsứclậptrình Xửlý log!!!
Hadoop, HBase and Zookeeper at Tamtay

More Related Content

What's hot

SFD 2013 Hanoi: Phần mềm nguồn mở và dự tính khí hậu 100 năm
SFD 2013 Hanoi: Phần mềm nguồn mở và dự tính khí hậu 100 nămSFD 2013 Hanoi: Phần mềm nguồn mở và dự tính khí hậu 100 năm
SFD 2013 Hanoi: Phần mềm nguồn mở và dự tính khí hậu 100 nămVu Hung Nguyen
 
Bai 02 active directory
Bai 02   active directoryBai 02   active directory
Bai 02 active directoryVan Pham
 
Hadoop là gì
Hadoop là gìHadoop là gì
Hadoop là gìHLV
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1pisu412
 
Tìm kiếm needle trong Haystack: Hệ thống lưu trữ ảnh của Facebook
Tìm kiếm needle trong Haystack: Hệ thống lưu trữ ảnh của FacebookTìm kiếm needle trong Haystack: Hệ thống lưu trữ ảnh của Facebook
Tìm kiếm needle trong Haystack: Hệ thống lưu trữ ảnh của FacebookViet-Trung TRAN
 
Bắt đầu nghiên cứu Big Data
Bắt đầu nghiên cứu Big DataBắt đầu nghiên cứu Big Data
Bắt đầu nghiên cứu Big DataHong Ong
 
Pregel: Hệ thống xử lý đồ thị lớn
Pregel: Hệ thống xử lý đồ thị lớnPregel: Hệ thống xử lý đồ thị lớn
Pregel: Hệ thống xử lý đồ thị lớnViet-Trung TRAN
 
Disk management p1
Disk management p1Disk management p1
Disk management p1laonap166
 
Chuyên đề ngôn ngữ lập trình auto it
Chuyên đề ngôn ngữ lập trình auto itChuyên đề ngôn ngữ lập trình auto it
Chuyên đề ngôn ngữ lập trình auto itbamboosky4991
 

What's hot (12)

SFD 2013 Hanoi: Phần mềm nguồn mở và dự tính khí hậu 100 năm
SFD 2013 Hanoi: Phần mềm nguồn mở và dự tính khí hậu 100 nămSFD 2013 Hanoi: Phần mềm nguồn mở và dự tính khí hậu 100 năm
SFD 2013 Hanoi: Phần mềm nguồn mở và dự tính khí hậu 100 năm
 
Bai 02 active directory
Bai 02   active directoryBai 02   active directory
Bai 02 active directory
 
04 ado
04 ado04 ado
04 ado
 
Hadoop là gì
Hadoop là gìHadoop là gì
Hadoop là gì
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
 
Tìm kiếm needle trong Haystack: Hệ thống lưu trữ ảnh của Facebook
Tìm kiếm needle trong Haystack: Hệ thống lưu trữ ảnh của FacebookTìm kiếm needle trong Haystack: Hệ thống lưu trữ ảnh của Facebook
Tìm kiếm needle trong Haystack: Hệ thống lưu trữ ảnh của Facebook
 
5. file
5. file5. file
5. file
 
Bắt đầu nghiên cứu Big Data
Bắt đầu nghiên cứu Big DataBắt đầu nghiên cứu Big Data
Bắt đầu nghiên cứu Big Data
 
Pregel: Hệ thống xử lý đồ thị lớn
Pregel: Hệ thống xử lý đồ thị lớnPregel: Hệ thống xử lý đồ thị lớn
Pregel: Hệ thống xử lý đồ thị lớn
 
Disk management p1
Disk management p1Disk management p1
Disk management p1
 
Chuyên đề ngôn ngữ lập trình auto it
Chuyên đề ngôn ngữ lập trình auto itChuyên đề ngôn ngữ lập trình auto it
Chuyên đề ngôn ngữ lập trình auto it
 
Trongtruong so27a 09
Trongtruong so27a 09Trongtruong so27a 09
Trongtruong so27a 09
 

Viewers also liked

Zookeeper In Action
Zookeeper In ActionZookeeper In Action
Zookeeper In Actionjuvenxu
 
Distributed Applications with Apache Zookeeper
Distributed Applications with Apache ZookeeperDistributed Applications with Apache Zookeeper
Distributed Applications with Apache ZookeeperAlex Ehrnschwender
 
Introduction to Apache ZooKeeper
Introduction to Apache ZooKeeperIntroduction to Apache ZooKeeper
Introduction to Apache ZooKeeperknowbigdata
 
Introduction to apache zoo keeper
Introduction to apache zoo keeper Introduction to apache zoo keeper
Introduction to apache zoo keeper Omid Vahdaty
 
Introduction to Kafka and Zookeeper
Introduction to Kafka and ZookeeperIntroduction to Kafka and Zookeeper
Introduction to Kafka and ZookeeperRahul Jain
 

Viewers also liked (7)

ZooKeeper Futures
ZooKeeper FuturesZooKeeper Futures
ZooKeeper Futures
 
Zookeeper In Action
Zookeeper In ActionZookeeper In Action
Zookeeper In Action
 
Distributed Applications with Apache Zookeeper
Distributed Applications with Apache ZookeeperDistributed Applications with Apache Zookeeper
Distributed Applications with Apache Zookeeper
 
Introduction to Apache ZooKeeper
Introduction to Apache ZooKeeperIntroduction to Apache ZooKeeper
Introduction to Apache ZooKeeper
 
Introduction to apache zoo keeper
Introduction to apache zoo keeper Introduction to apache zoo keeper
Introduction to apache zoo keeper
 
Apache ZooKeeper
Apache ZooKeeperApache ZooKeeper
Apache ZooKeeper
 
Introduction to Kafka and Zookeeper
Introduction to Kafka and ZookeeperIntroduction to Kafka and Zookeeper
Introduction to Kafka and Zookeeper
 

Similar to Hadoop, HBase and Zookeeper at Tamtay

Lab 11 apache hadoop map reduce
Lab 11 apache hadoop map reduceLab 11 apache hadoop map reduce
Lab 11 apache hadoop map reduceanhtrang181289
 
Golang web database3
Golang web database3Golang web database3
Golang web database3NISCI
 
Cấu hình Hibernate
Cấu hình HibernateCấu hình Hibernate
Cấu hình HibernateMinh Quang
 
Group policy object phần 3
Group policy object  phần 3Group policy object  phần 3
Group policy object phần 3laonap166
 
Hadoop là gì
Hadoop là gìHadoop là gì
Hadoop là gìHLV
 
Bài 3: Servlet - Lập Trình Mạng Nâng Cao
Bài 3: Servlet - Lập Trình Mạng Nâng CaoBài 3: Servlet - Lập Trình Mạng Nâng Cao
Bài 3: Servlet - Lập Trình Mạng Nâng CaoTuan Nguyen
 
Ebook drupal 7 vn
Ebook drupal 7 vnEbook drupal 7 vn
Ebook drupal 7 vngaugauvn
 
Javascript tong-hop a-z
Javascript tong-hop a-zJavascript tong-hop a-z
Javascript tong-hop a-zManhh Nguyễn
 
Chuong06
Chuong06Chuong06
Chuong06na
 
Hadoop trong triển khai Big Data
Hadoop trong triển khai Big DataHadoop trong triển khai Big Data
Hadoop trong triển khai Big DataNguyễn Duy Nhân
 
Php can ban_bai1_laptrinhwebphp.com
Php can ban_bai1_laptrinhwebphp.comPhp can ban_bai1_laptrinhwebphp.com
Php can ban_bai1_laptrinhwebphp.comGiang Nguyễn
 
Linux thietlaphethongmangubunt-45879
Linux thietlaphethongmangubunt-45879Linux thietlaphethongmangubunt-45879
Linux thietlaphethongmangubunt-45879Son Giap
 
Hệ điều hành (chương 2)
Hệ điều hành (chương 2)Hệ điều hành (chương 2)
Hệ điều hành (chương 2)realpotter
 

Similar to Hadoop, HBase and Zookeeper at Tamtay (20)

Lab 11 apache hadoop map reduce
Lab 11 apache hadoop map reduceLab 11 apache hadoop map reduce
Lab 11 apache hadoop map reduce
 
Golang web database3
Golang web database3Golang web database3
Golang web database3
 
Cấu hình Hibernate
Cấu hình HibernateCấu hình Hibernate
Cấu hình Hibernate
 
Group policy object phần 3
Group policy object  phần 3Group policy object  phần 3
Group policy object phần 3
 
Hadoop là gì
Hadoop là gìHadoop là gì
Hadoop là gì
 
Php02 ngon nguphp
Php02 ngon nguphpPhp02 ngon nguphp
Php02 ngon nguphp
 
Giao trinh java script
Giao trinh java scriptGiao trinh java script
Giao trinh java script
 
Bài 3: Servlet - Lập Trình Mạng Nâng Cao
Bài 3: Servlet - Lập Trình Mạng Nâng CaoBài 3: Servlet - Lập Trình Mạng Nâng Cao
Bài 3: Servlet - Lập Trình Mạng Nâng Cao
 
Ebook drupal 7 vn
Ebook drupal 7 vnEbook drupal 7 vn
Ebook drupal 7 vn
 
Javascript tong-hop a-z
Javascript tong-hop a-zJavascript tong-hop a-z
Javascript tong-hop a-z
 
Chuong07 php
Chuong07 phpChuong07 php
Chuong07 php
 
Chuong06
Chuong06Chuong06
Chuong06
 
Vhdl
VhdlVhdl
Vhdl
 
Hadoop trong triển khai Big Data
Hadoop trong triển khai Big DataHadoop trong triển khai Big Data
Hadoop trong triển khai Big Data
 
Php can ban_bai1_laptrinhwebphp.com
Php can ban_bai1_laptrinhwebphp.comPhp can ban_bai1_laptrinhwebphp.com
Php can ban_bai1_laptrinhwebphp.com
 
Linux thietlaphethongmangubunt-45879
Linux thietlaphethongmangubunt-45879Linux thietlaphethongmangubunt-45879
Linux thietlaphethongmangubunt-45879
 
Flutter vs React Native 2018
Flutter vs React Native 2018Flutter vs React Native 2018
Flutter vs React Native 2018
 
Hệ điều hành (chương 2)
Hệ điều hành (chương 2)Hệ điều hành (chương 2)
Hệ điều hành (chương 2)
 
01 tong-quan-ado
01 tong-quan-ado01 tong-quan-ado
01 tong-quan-ado
 
Stata bai1
Stata bai1Stata bai1
Stata bai1
 

Hadoop, HBase and Zookeeper at Tamtay

  • 2. Hadoop làgì Là 1 dựán Open Source! Phụcvụchoviệctínhtoánphântán. Đảmbảotính reliable & scalable. Tínhtoánphântán? Reliable? Scalable?
  • 3. Ai dùng Hadoop Facebook Ning Last.fm Linkedin Twitter Yahoo Google … Tamtay
  • 4. Thànhphầncủa Hadoop Thànhphần: Hadoop Distributed File System (HDFS) Hadoop MapReduce Cácdựánliênquan Avro Cassandra Chukwa HBase database Hive data warehouse Mahout Pig ZooKeeper coordination service
  • 5. Thànhphầncủa Hadoop Thànhphần: Hadoop Distributed File System (HDFS) Hadoop MapReduce Cácdựánliênquan Avro Cassandra Chukwa HBase database Hive data warehouse Mahout Pig ZooKeepercoordination service
  • 6. HDFS Hệthốnglưutrữ file phântántrênnền Hadoop Phântán: tin cậy & nhanh? Tươngtác: Shell Java API
  • 7. Kiếntrúc HDFS Master – Slaves Master: Namenode Slaves: Datanodes
  • 9. Thànhphầncủa Hadoop Thànhphần: Hadoop Distributed File System (HDFS) Hadoop MapReduce Cácdựánliênquan Avro Cassandra Chukwa HBase database Hive data warehouse Mahout Pig ZooKeepercoordination service
  • 10. Tínhtoántuầntựvs song song Tuầntự: việcsauphụthuộcviệctrước Sinh con Tìm partner xxx Cóbầu Sinh con Tínhsố Fibonacci F(n) = F(n-1) + F(n-2)
  • 11. Tínhtoántuầntựvs song song Song song: thựchiệnđồngthời, khôngphụthuộcvàonhau. Tàunhanh Có n toa Lên & xuốngtàu: cóthể song songở n toa. Toa x khôngphụthuộcvàotoa y, z … Tínhsố Pi = 3.141… Ac = pi * r2 => pi = Ac / r2 As = 4r2 => r2 = As / 4 pi = 4 * Ac / As
  • 12. Map Reduce Algorithm Cónhiềuphươngpháp song songhóa Map-Reduce là 1 phươngpháp. Có 1 lớpcácgiảithuậtcóthể song songhóabằng Map-Reduce (khôngphảitấtcả!) Rấtđơngiản: chỉbaogồm 2 hàm Map(input_key, input_value) => {output_key, output_value} Reduce(input_key, input_values[]) => output
  • 14. Hadoop Map Reduce programming model and software framework dànhchocácứngdụngxửlý song songkhốilượngcựclớndữliệulưutrữtrênhệthốngphântán. (input) <k1, v1> => map=> <k2, v2> => combine=> <k2, v2s> => reduce=> <k3, v3> (output) Data Structure & Algorithm Cấutrúcdữliệu: phântán Thuậttoán: cóthể song songhóa
  • 15. Google Word Count Cho n vănbản – nội dung trang web Đếmtầnsốxuấthiệncủatừngtừcótrong n vănbản. Vídụ Input Vb1 = Hello World Bye World Vb2 = Hello Hadoop Goodbye Hadoop Output Bye 1 Goodbye 1 Hadoop 2 Hello 2 World 2
  • 16. Google Word Count MAP map(vb1, “Hello World Bye World”) <Hello, 1> <World, 1> <Bye, 1> <World, 1> map(vb2, “Hello Hadoop Goodbye Hadoop”) <Hello, 1> <Hadoop, 1> <Goodbye, 1> <Hadoop, 1>
  • 17. Google Word Count COMBINE <Bye, [1]> <Goodbye, [1]> <Hadoop, [1, 1]> <Hello, [1, 1]> <World, [1, 1]>
  • 18. Google Word Count REDUCE reduce(word, values){ count = 0; foreach(value in values) count++; return <word, count>; } reduce(“Hello”,[1, 1]) => <Hello, 2>
  • 19. Thànhphầncủa Hadoop Thànhphần: Hadoop Distributed File System (HDFS) Hadoop MapReduce Cácdựánliênquan Avro Cassandra Chukwa HBase database Hive data warehouse Mahout Pig ZooKeepercoordination service
  • 20. NoSQL Là 1 lớpcácHệquảntrịcơsởdữliệu (DBMS) cókhácbiệtcơbảnvớiHệquảntrịcơsởdữliệuquanhệ (RDBMS) Khôngcó schema cốđịnh Khôngcó JOIN Khôngcóquanhệ Scale horizontally: pháttriểntheochiềungang
  • 21. NoSQL ACID Atomic: hoặctấtcảhoặckhônggìcả Consistency: tạoratrạngtháimớihợplệhoặctrởlạinguyêntrạng. Isolation: sựtáchbiệtgiữa 2 giaodịch Durability: bềnvững – lỗikhôngmấtdữliệu CAP Theorem (Brewer's theorem) chocáchệphântán: khôngmộthệphântánnàođảmbảođượccả 3 điềukiệnsau Consistency Availability Partition tolerance
  • 22. NoSQL Key-Value store Document databases Column oriented databases BigTable Hbase (CA, not P) Cassandra: Key-Value & Column oriented (AP, not C)
  • 24. HBase Architecture Zookeeper: lưutrữ metadata & region info v.v… Master: điềuphối Region Server: Lưutrữdữliệu Mỗi table baogồmnhiều regions. Mỗi region nằmtrên 1 Region Server. Mỗi region baogồm 1 dãyliêntiếpcácrowkey. Mỗikhikíchthướccủa 1 region tăngquá 1 giátrịcụthể, nótựđộng split làm 2 region
  • 26. HBase table Row (rowkey): gồmnhiều family Handle hàngtỉdòng. Family: tậphợpcác column. Column: cộtnằmtrong 1 family Sốlượng column trong 1 family: khácnhautùytừngdòng, từ 0 đếnhàngtriệu Mỗi column cónhiều version (theothờigian) (hàngnghìn versions) Mộtphầntửtrongcơsởdữliệu: rowkey_family_column_timestamp Tấtcảrowkey & dữliệulưutrữdướidạngmảng byte (byte[]). Sắpxếptheothứtựtừđiển (1, 10, 2, 3…)
  • 27. Student - Course Student 1 Student ~ họcnhiều Course Course 1 Course ~ cónhiều Student
  • 29. Student - Course HBase Schema
  • 31.
  • 32.
  • 33.
  • 34. Friend module Testimonial: NULL Time SELECT * FROM Users INNER JOIN Friends WHERE …
  • 35. Friend Module Khôngcần timestamp, bảnthânmỗi column đãcó timestamp Chỉlưu testimonial nếucó Khôngphải join bảng Tìmbạnchung (mutual friend): Map-Reduce
  • 36. Feed Log User_feed: 130.000.000 dòng
  • 37. Feed Log: ReversedTimeStamp= MaxLong – Timestamp Sắpxếp log giảmdầntheothờigian Data family: mỗiloại log có 1 cấutrúcdữliệukhácnhau. Số column trong Data family làkhácnhau ở mỗidòng.
  • 38. Feed User_feed Sốdòng = số user Một column, nhiều versions. Mỗidata family cóthamsố TTL Timestamp < Now() – TTL => xóa Khôngphântrang!
  • 39. Feed Sinh feed: Map-Reduce (again!!!) Map(logID, logData){ uid = logData->getUid(); friends = getFriend(uid); foreach (friend in friends) output(friend, logID); } Reduce(uid, logIDs){ foreach(logID in logIDs){ timestamp = extract_timestamp(logID); insert_to_user_feed(uid, logID, timestamp); } }
  • 40. Nhượcđiểm Truyvấn 1 dòngdữliệuchậmhơn so với MySQL Xửlýcáccâulệnhsắpxếp (nếukhôngphảitheokhóa) Filter & tìmkiếmtheogiátrị? Design table: ít flexible, phảibiếttrướccácyêucầukhithiếtkế. Vídụ: “Bạnthân”
  • 41. Ưuđiểm Dễdàngmởrộng, scale up Khảnăngđọc / ghi song songtốt: 10 threads cùngđọc 10000 dòngdữliệungẫunhiêntừ 1 bảng 1 triệuphầntử 3 servers Nhanhhơn > 2 lần so với MySQL Handle khốilượnglớndữliệu. Dữliệuđượcsaochépđinhiềumáy. Dùng Map-Reduce xửlýcáclệnhthốngkê
  • 42. Vấnđề Xửlývấnđề Split region? Quánhiều region – khôngtốt 1 region: càngkhôngtốt! Đọc – ghiliêntiếp ở 1 region Coding.
  • 43. Thànhphầncủa Hadoop Thànhphần: Hadoop Distributed File System (HDFS) Hadoop MapReduce Cácdựánliênquan Avro Cassandra Chukwa HBase database Hive data warehouse Mahout Pig ZooKeepercoordination service
  • 44. Zookeeper Tínhtoánphântánnhư 1 sởthú Trừviệc 2 cáimáytính k thểđẻracáithứ 3! Thêmthiếtbịvàohệthống Phụchồihệthốngsaulỗi Thayđổicấuhình Cânbằngtải v.v… Zookeeper: A high-performance coordination service for distributed applications.
  • 45. Coordination service Partial failure: lỗiđặctrưngcủatínhtoánphântán: Máy A gửi tin đếnmáy B Khôngthấyphảnhồi Liệugói tin đãđến B? B đãxửlý hay chưa? Dữliệutrảvềtừ B bịlỗi? Coordination service: khônggiúploạibỏ Partial failure, dùngđểxửlýkhigặp Partial failure
  • 46. Zookeeper Architecture Lưutrữdữliệutrong Memory Snapshot trên ổ cứng Quytắc 2k+1
  • 47. Zookeeper Architecture Cóthểxemlàhệthống file cótính availability cao. Cấutrúccâygiốngcâythưmục(znode) Mỗiznodevừalà file (chứadữliệu) vừalàthưmục (códanhsáchznode con) ephemeral znode Node chỉtồntạikhi thread tạoranócònkếtnốiđến Zookeeper. persistent znode Tồntạiđếnkhicólệnhxóa.
  • 48. Ứngdụng Danhsách server: 1 ứngdụngphântánchạytrên 1 cụm server Các server cóvaitrònhưnhau. Cầnlưutrữdanhsáchđịachỉcác server Khôngthểlưutrữdanhsáchnàytrên 1 server. Lúcnàothì 1 server “chết” đểloạirakhỏidanhsách?
  • 49. Ứngdụng Zookeeper: Tạo node “/server_list” - persistent Trênmỗi server, chạy 1 thread kếtnốiđến zookeeper Tạo node “/server_list/tên_server” - ephemeral Giữkếtnốitừ thread đến zookeeper Liệtkê: lấydanhsáchznode con của “/server_list” 1 server mấtkếtnối => ephemeral node tươngứngbịxóa
  • 50. Version Mỗiznodecólưuthông tin version. Mỗikhicóthayđổivớiznode (sửa, xóa, tạomới) version thayđổi Tính Atomic: nếu version lúcđọcvàghikhôngkhớp => exception.
  • 51. Ứngdụng Atomic sequence: znode“/counter” chứagiátrịsốnguyên Không atomic: A = đọcgiátrịcủa “/counter” A++ Ghi A vào “/counter” => 2 process đọccùng 1 giátrị A! Atomic: do { <A, version> = đọcgiátrị & version của “/counter”; A++; ok = Ghi A vào “/counter” vớithamsố version /* nếu version trùngvới version hiệntạicủa “/counter” return true, nếu version khác version hiệntại, return false */ } while (not ok)
  • 52. Watches Watches chophép client nhậnthôngbáotừ zookeeper nếu 1 znodenàođóthayđổitrạngthái. Interface Watcher public void process(WatchedEvent event) Hàm process sẽđượcgọikhiznodeđượctheodõithayđổitrạngthái Theo dõi 1 znode Cáchàmtươngtácvới zookeeper đềucóthamsốlà 1 class implements Watcher Vídụ: A = new Watcher(); Zookeeper.getData(<tên node>, A); Mỗikhi <tên node> thayđổithìA.processsẽđượcthựcthi
  • 53. Ứngdụng Tựđộngcậpnhậtcấuhình Vớimỗihệphântánnóiriênghoặc 1 cụm server nóichungthìviệcđồngbộcấuhìnhlàquantrọng. 100 máy: thayđổicả ở 100! Chảlẽlạilàmbằngtay? Zookeeper? Hjx, máynàođãthay, máynàochưanhỉ?
  • 54. Ứngdụng Configuration service Thayđổithông tin cấuhình ở 1 máy, cácmáykhácsẽtựthayđổi Giảsửcấuhìnhchỉgồmdạng <key,value> znode “/key” chứa value tươngứng. Cậpnhậtcấuhình: Đơngiản.
  • 55. Ứngdụng Theo dõi & cậpnhậtcấuhình: Class A implements Watcher{ void process(Event e){ if (e.nodeDataChange){ value = zookeeper.read(“/key”, this) //Tiếptụctheodõiznode“/key”; cậpnhật local configdựavào value } } }
  • 56. Ứngdụng main(){ a = new A(); dump = zookeeper.exist(“/”, a); sleep(forever); //đingủ, đợiđếnlúcznode “/” cóthayđổisẽđượcgọidậytừhàm process của a } Watch sẽđượckíchhoạtcảkhiznode con củaznodeđóthayđổi Chạy main() trênmỗimáycầncậpnhậtconfig.
  • 57. Future study Hive Dataware house: là database nhưngđượcthiếtkếphụcvụphântích & báocáo SửdụngHiveQL Mụcđích: Đểphântích & tổnghợpdữliệuđượclưutrữmộtcáchcócấutrúctrêncác file củahệthống HDFS Sửdụng Map-Reduce Hive sẽ convert HiveQL sang Map-Reduce code => dễhiểu, tiếtkiệmthờigian & côngsứclậptrình Xửlý log!!!

Editor's Notes

  1. Tínhtoánphântán: tínhtoán song songtrênnhiềumáy.Reliable: độ tin cậycủahệthống.Scalable: khảnăngmởrộnghệthốngkhikhốilượngcôngviệctănglên, chịutảicaohơn. Vídụxemáylàkhông scalable, tàuhỏalà scalable.
  2. HDFS tạoranhiềubảnsaocủatừngkhốidữliệuvàphântánđicácmáycài Hadoop tronghệthống
  3. ACID: bốn thuộc tính quan trọng của một hệ quản trị cơ sở dữ liệu khi xử lý bất kỳ giao dịch nào