meetup big data by thjug
DESCRIPTION
Meetup Big Data by Thai Java User GroupTRANSCRIPT
Peerapat A. © 2014
THJUG
THJUG Meetup
BIG DATA
Peerapat A. © 2014
THJUG
ME
Senior Software Engineer @ FICO
Blogger @ thjug.com
Failed Startuper
Twitterlian
Peerapat A. © 2014
THJUG
Special Thank
ก่อนเริ่มงานผมก็ขอขอบคุณทางบริษัท Oracle และมหาวิทยาลัยสุรนารี ครับ รวมถึงน้องอาร์ม, พี่ต่อ, พี่ใหม่ (อาจารย์ชาญวิทย์) และคณาจารย์และนักศึกษาจากมทส. ถ้าไม่ไ่ด้คนเหล่านี้คงไม่มีงานวันนี้เหมือนกัน !สำหรับค่าของว่างนี่ก็มาจากเงินที่ผมไปไถเพือนๆ พี่ น้อง ที่ยอมเสียสละเวลามาเรียน Mobile Backend API with JavaEE กับผมในอีกสองอาทิตย์ข้างหน้านะครับ ขอบคุณครับ
Peerapat A. © 2014
THJUG
Data StructureLevel Example
Structure RDBMS
Semi-structure XML, JSON
Quasi-structure Text Document
Unstructure Image, Video
ก่อนจะเริ่ม Big Data ขอทบทวน Data Structure นิดหน่อย ก็ตามรูปครับ อยากให้มองรูปแบบของตาต้าในโลกเป็นสี่ส่วนตามรูป
Peerapat A. © 2014
THJUG
Big Data?
คำถาม: บิ๊กดาต้าคืออะไร
Peerapat A. © 2014
THJUG
Big data analytics is concerned with the analysis of large volumes of transaction/event data and behavioral analysis of human/human a human/system interactions. (Gartner)
Big data represents the collection of technologies that handle large data volumes well beyond that inflection point and for which, at least in theory, hardware resources required to manage data by volume track to an almost straight line rather than a curve. (IDC)
นิยาม BigData ของ Gartner กับ IDC
Peerapat A. © 2014
THJUG
เปรียบเทียบงานของบิ๊กดาต้ากับเรือขนของขนาดใหญ่นะครับ จะเห็นว่าขนได้ทีเยอะมาก(มองเป็นข้อมูล) แต่ใช้เวลานาน(Overhead สูง) !เหมาะกับงานที่ต้องการประมวลผลข้อมูลใหญ่ๆ โดยไม่สนใจเรื่องของ Latency ที่จะเกิดขึ้น !อย่างที่อ. ชาญวิทย์จะมาโชว์ Aiyara วันนี้ก็ใช้เวลาหลักชั่วโมง … (แต่นี่ข้อมูลระดับ 34 GB) เชียวนะ
Peerapat A. © 2014
THJUG
Big Data Challenges
Source: oracle.com
ขนาด ความเร็ว ความหลากหลายและสุดท้ายต้องเกิด Value
Peerapat A. © 2014
THJUG
Why Hadoop?
ทำไมถึงเลือก Hadoop สำหรับ Big Data ทั้งที่จริงๆ มีหลาย Platform ที่ทำงานกับ Big Data ได้ ?
Peerapat A. © 2014
THJUG
Infographic by GO-Globe.com
มาดูกันดีกว่าว่ามีดาต้าอะไรเกิดขึ้นรอบตัวเราใน 1 วินาทีกัน (นี่ไม่ใช่ทั้งหมดนะ) จะเห็นว่าข้อมูลทีมีหลากหลายมาก และส่วนใหญ่มักเป็น Quasi-Structure และ Unstructure ซะด้วย
Peerapat A. © 2014
THJUG
Hadoop
Figure by - apache.org
ลักษณะการทำงานคร่าวๆ ภาพรวมคือเวลา client ติดต่อมาจะคุยกับตัวกลางที่จะเป็นคนกระจายการทำงานไปยังแต่ละ Distribute Node ภาพนี้ Abstract พอสมควรนะครับ ตัว Node Manager จะเป็นทั้ง Disk และ Processing ในตัว
Peerapat A. © 2014
THJUG
Figure by - hortonworks.com
สมัย 1.0 นี่รองรับได้สูงสุดแค่ 4000 nodes ส่วน 2.0 ที่มียานแม่ด้วยนี่หลักหมื่น การเปลี่ยนแปลงที่เห็นชัดสุดคือมี YARN เพิ่มเข้ามาทีนี้เวลาจะทำอะไรก็จะติดต่อผ่านทาง YARN ทั้งหมด ไม่ยุ่งกับ HDFS โดยตรงแล้ว !ถามว่าในแง่การเรียนรู้ควรเริ่มจากอะไร ต้องดูก่อนว่าคุณเป็นใคร ถ้าคุณเป็น Developer ไม่ต้องไปคิดมาก เพราะว่าในแง่การพัฒนามันไมไ่ด้มีอะไรต่างกัน แต่ถ้าคุณเป็น System Engineer จงเรียนรู้มันทั้งหมดซะ เพราะอย่างไรแล้ว HADOOP 2.0 ก็คงมาแทนในไม่ช้า แต่ 1.0 ก็ยังมีงานที่ต้องดูแลกันต่อไป
Peerapat A. © 2014
THJUG
Figure by - hortonworks.com
Hadoop Ecosystem. !ตามรูปจะเห็นว่า Hadoop คือ Eco System ที่ส่วนตัวผมมองมันเป็น Distributed OS ไปแล้ว … มี File System ของตัวเอง มี Cluster Resource Management ของตัวเอง แล้วก็สามารถเอา Application ต่างๆ มา on top บนตัวมันอีกที
Peerapat A. © 2014
THJUGHDFS
Hadoop Distributed File System
12
5
34
125
143
153
254
423
Replication Factor = 3
A
B
C
D
E
HDFS ตัวนี้แหละหัวใจของ Hadoop เลย !Replication Factor นี่ถ้าใครทำพวก Cluster จะได้ยินคำนี้บ่อยๆ มันคือค่าที่บอกว่าดาต้าจะถูก duplicate เอาไว้ทั้งหมดกี่ชุด และหมายถึงจำนวนคอมพิวเตอร์ในระบบที่ห้ามตายพร้อมกันด้วย เช่น ถ้าตามรูปถ้า A,C,D ตาย อาจจะไม่สามารถ recovery data ได้ (เพราะ 1 หายไปแล้ว)
Peerapat A. © 2014
THJUGMapReduce Function
(k1, v1) -> list(k2, v2)
(k2, List(v2)) -> list(k3, v3)Reduce:
Map:
สำคัญสุดนะ .. เพราะถ้าไม่เข้าใจคุณจะเริ่มเขียนโปรแกรมเพือทำงานกับ Hadoop ไม่ได้เลย !ถามว่าการที่มันเรียกว่า framework แสดงว่ามันเป้นส่วนที่กำหนดให้เราทำตามเฉยๆ แล้วมีงานอีกส่วนนึงทำด้วยตัว Framework แทน … !k1, v1 เป็นอะไรโดย default แล้วถ้าเป็น file processing มันคือ Offset, Line of Record นั่นเอง !อีกหนึ่งทีคนเข้าใจผิด output ของ Map ไม่ใช่ input ของ Reduce ดังสมการจะเห็นว่า list(k2, v2) จะถูกแปรงเป็น k2, list(v2) (ทำโดยตัว Framework นั่นเอง) !คำถามจะรู้ได้ไงว่า k3, v3 ที่ต้องการคืออะไร มันก็ขึ้นกับว่าคุณอยากถามอะไร :)
Peerapat A. © 2014
THJUGMap
(k1, v1) -> list(k2, v2)
k1 = LongWritable key v1 = Text value !k2 = word v2 = one
Peerapat A. © 2014
THJUGReduce
(k2, List(v2)) -> list(k3, v3)
k2 = Text key List(v2) = Iterable<IntWriteable> values !k3 = key v3 = sum
Peerapat A. © 2014
THJUGMapReduce Framework
v1 k2, v2
k3, v3
k2, list(v2)
รูปนี้สำหรับอธิบายการทำงานทั้งหมดของ Map Reduce และ Hadoop จะเห็นว่า Method Map และ Reduce ที่คุณสร้างขึ้นมานั้นสำหรับทำงานแค่ในกรอบสีแดง แต่งานทั้งหมดที่ Hadoop ทำให้นั้นคือตั้งแต่ Input -> Spliting -> Mapping -> Shuffing -> Reducing -> Final Result !แต่ระบบให้เราเขียนโปรแกรมแค่สองส่วนคือ Map, Reduce พอเพือความง่าย และจัดการในเรือ่งที่เหลือให้ ทั้ง Functional และ Non Functional เช่นการที่ Map ถูกแยกกันทำสามโหนดดังรูป
Peerapat A. © 2014
THJUG
THANK YOU :)
ขอบคุณครับ