Your SlideShare is downloading. ×
Hadoop, HBase and Zookeeper at Tamtay
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Hadoop, HBase and Zookeeper at Tamtay

4,157

Published on

A long presentation in Vietnamese about how to apply HBase and Hadoop at Tamtay social network.

A long presentation in Vietnamese about how to apply HBase and Hadoop at Tamtay social network.

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,157
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
6
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • 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.
  • HDFS tạoranhiềubảnsaocủatừngkhốidữliệuvàphântánđicácmáycài Hadoop tronghệthống
  • 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
  • Transcript

    • 1. &
      son.bui@tamtay.vn
      May, 2011
    • 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
    • 8. HDFS Admin
    • 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
    • 13. Map Reduce Algorithm
    • 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)
    • 23. HBase Architecture
    • 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
    • 25. HBase table
      RDBMS table
    • 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
    • 28. Student - Course
      RDBMS
    • 29. Student - Course
      HBase Schema
    • 30. Hbase at Tamtay
    • 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!!!

    ×