meetup big data by thjug

19
Peerapat A. © 2014 THJUG THJUG Meetup BIG DATA

Upload: peerapat-asoktummarungsri

Post on 25-Jun-2015

272 views

Category:

Engineering


5 download

DESCRIPTION

Meetup Big Data by Thai Java User Group

TRANSCRIPT

Page 1: Meetup Big Data by THJUG

Peerapat  A.  ©  2014

THJUG

THJUG Meetup

BIG DATA

Page 2: Meetup Big Data by THJUG

Peerapat  A.  ©  2014

THJUG

ME

Senior Software Engineer @ FICO

Blogger @ thjug.com

Failed Startuper

Twitterlian

Page 3: Meetup Big Data by THJUG

Peerapat  A.  ©  2014

THJUG

Special Thank

ก่อนเริ่มงานผมก็ขอขอบคุณทางบริษัท Oracle และมหาวิทยาลัยสุรนารี ครับ รวมถึงน้องอาร์ม, พี่ต่อ, พี่ใหม่ (อาจารย์ชาญวิทย์) และคณาจารย์และนักศึกษาจากมทส. ถ้าไม่ไ่ด้คนเหล่านี้คงไม่มีงานวันนี้เหมือนกัน !สำหรับค่าของว่างนี่ก็มาจากเงินที่ผมไปไถเพือนๆ พี่ น้อง ที่ยอมเสียสละเวลามาเรียน Mobile Backend API with JavaEE กับผมในอีกสองอาทิตย์ข้างหน้านะครับ ขอบคุณครับ

Page 4: Meetup Big Data by THJUG

Peerapat  A.  ©  2014

THJUG

Data StructureLevel Example

Structure RDBMS

Semi-structure XML, JSON

Quasi-structure Text Document

Unstructure Image, Video

ก่อนจะเริ่ม Big Data ขอทบทวน Data Structure นิดหน่อย ก็ตามรูปครับ อยากให้มองรูปแบบของตาต้าในโลกเป็นสี่ส่วนตามรูป

Page 5: Meetup Big Data by THJUG

Peerapat  A.  ©  2014

THJUG

Big Data?

คำถาม: บิ๊กดาต้าคืออะไร

Page 6: Meetup Big Data by THJUG

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

Page 7: Meetup Big Data by THJUG

Peerapat  A.  ©  2014

THJUG

เปรียบเทียบงานของบิ๊กดาต้ากับเรือขนของขนาดใหญ่นะครับ จะเห็นว่าขนได้ทีเยอะมาก(มองเป็นข้อมูล) แต่ใช้เวลานาน(Overhead สูง) !เหมาะกับงานที่ต้องการประมวลผลข้อมูลใหญ่ๆ โดยไม่สนใจเรื่องของ Latency ที่จะเกิดขึ้น !อย่างที่อ. ชาญวิทย์จะมาโชว์ Aiyara วันนี้ก็ใช้เวลาหลักชั่วโมง … (แต่นี่ข้อมูลระดับ 34 GB) เชียวนะ

Page 8: Meetup Big Data by THJUG

Peerapat  A.  ©  2014

THJUG

Big Data Challenges

Source: oracle.com

ขนาด ความเร็ว ความหลากหลายและสุดท้ายต้องเกิด Value

Page 9: Meetup Big Data by THJUG

Peerapat  A.  ©  2014

THJUG

Why Hadoop?

ทำไมถึงเลือก Hadoop สำหรับ Big Data ทั้งที่จริงๆ มีหลาย Platform ที่ทำงานกับ Big Data ได้ ?

Page 10: Meetup Big Data by THJUG

Peerapat  A.  ©  2014

THJUG

Infographic by GO-Globe.com

มาดูกันดีกว่าว่ามีดาต้าอะไรเกิดขึ้นรอบตัวเราใน 1 วินาทีกัน (นี่ไม่ใช่ทั้งหมดนะ) จะเห็นว่าข้อมูลทีมีหลากหลายมาก และส่วนใหญ่มักเป็น Quasi-Structure และ Unstructure ซะด้วย

Page 11: Meetup Big Data by THJUG

Peerapat  A.  ©  2014

THJUG

Hadoop

Figure by - apache.org

ลักษณะการทำงานคร่าวๆ ภาพรวมคือเวลา client ติดต่อมาจะคุยกับตัวกลางที่จะเป็นคนกระจายการทำงานไปยังแต่ละ Distribute Node ภาพนี้ Abstract พอสมควรนะครับ ตัว Node Manager จะเป็นทั้ง Disk และ Processing ในตัว

Page 12: Meetup Big Data by THJUG

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 ก็ยังมีงานที่ต้องดูแลกันต่อไป

Page 13: Meetup Big Data by THJUG

Peerapat  A.  ©  2014

THJUG

Figure by - hortonworks.com

Hadoop Ecosystem. !ตามรูปจะเห็นว่า Hadoop คือ Eco System ที่ส่วนตัวผมมองมันเป็น Distributed OS ไปแล้ว … มี File System ของตัวเอง มี Cluster Resource Management ของตัวเอง แล้วก็สามารถเอา Application ต่างๆ มา on top บนตัวมันอีกที

Page 14: Meetup Big Data by THJUG

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 หายไปแล้ว)

Page 15: Meetup Big Data by THJUG

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 ที่ต้องการคืออะไร มันก็ขึ้นกับว่าคุณอยากถามอะไร :)

Page 16: Meetup Big Data by THJUG

Peerapat  A.  ©  2014

THJUGMap

(k1, v1) -> list(k2, v2)

k1 = LongWritable key v1 = Text value !k2 = word v2 = one

Page 17: Meetup Big Data by THJUG

Peerapat  A.  ©  2014

THJUGReduce

(k2, List(v2)) -> list(k3, v3)

k2 = Text key List(v2) = Iterable<IntWriteable> values !k3 = key v3 = sum

Page 18: Meetup Big Data by THJUG

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 ถูกแยกกันทำสามโหนดดังรูป

Page 19: Meetup Big Data by THJUG

Peerapat  A.  ©  2014

THJUG

THANK YOU :)

ขอบคุณครับ