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
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
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!
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
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
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!!!
Notes de l'éditeur
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.