Giới thiệu cơ bản về Big Data và các ứng dụng thực tiễnTrieu Nguyen
1. Các ứng dụng Big Data thực tiễn trên thế giới
2. Các lĩnh vực đang ứng dụng Big Data ở Việt
Nam
3. Các bài toán Big Data tiêu biểu ở Vietnam
a. Quản lý chăm sóc khách hàng (CRM)
b. Tối ưu hoá trải nghiệm truyền hình Internet
c. Quảng cáo trực tuyến AdsPlay.net
4. Giới thiệu về công việc và thị trường việc làm
Big Data ở Việt Nam
5. Kiến thức nền tảng cho các bạn sinh viên
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPTMasterCode.vn
Tìm hiểu các bước thiết kế CSDL quan hệ
Tìm hiểu các khái niệm trong thiết kế CSDL quan hệ:
Các khái niệm trong thiết kế CSDL mức khái niệm
Các khái niệm trong thiết kế CSDL mức vật lý
Làm quen với hệ quản trị CSDL Microsoft Access
Tạo các bảng và truy vấn trong Microsoft Access.
Bài thuyết trình môn học Hệ Điều Hành.pptxduongchausky
Hệ điều hành là một môn học cung cấp kiến thức cơ bản về quản lý tài nguyên của máy tính. Dưới đây là một số nội dung chính của môn học hệ điều hành:
Định nghĩa và tính chất của hệ điều hành:
Định nghĩa và tính chất cơ bản của hệ điều hành.
Lịch sử phát triển hệ điều hành.
Phân loại hệ điều hành.
Quản lý tiến trình:
Tiến trình và luồng (process/thread).
Đồng bộ hóa tiến trình.
Lập lịch CPU.
Tắc nghẽn và xử lý tắc nghẽn:
Khái niệm tắc nghẽn.
Điều kiện xảy ra tắc nghẽn.
Các phương pháp xử lý tắc nghẽn.
Quản lý bộ nhớ:
Khái niệm chung về quản lý bộ nhớ.
Các chiến lược quản lý bộ nhớ thực.
Quản lý bộ nhớ ảo.
Quản lý tập tin:
Hệ thống quản lý tập tin.
Thư mục và cách cài đặt hệ thống file và thư mục.
Quản lý nhập xuất:
Hệ thống vào ra.
Xử lý vào ra.
Quản lý truy cập đĩa.
Môn học hệ điều hành giúp bạn hiểu nguyên tắc hoạt động của hệ điều hành và cung cấp kiến thức cơ bản để xây dựng và quản lý các hệ điều hành cụ thể. Nếu bạn muốn tìm hiểu thêm, có thể xem các tài liệu chi tiết về môn học này.
Giới thiệu cơ bản về Big Data và các ứng dụng thực tiễnTrieu Nguyen
1. Các ứng dụng Big Data thực tiễn trên thế giới
2. Các lĩnh vực đang ứng dụng Big Data ở Việt
Nam
3. Các bài toán Big Data tiêu biểu ở Vietnam
a. Quản lý chăm sóc khách hàng (CRM)
b. Tối ưu hoá trải nghiệm truyền hình Internet
c. Quảng cáo trực tuyến AdsPlay.net
4. Giới thiệu về công việc và thị trường việc làm
Big Data ở Việt Nam
5. Kiến thức nền tảng cho các bạn sinh viên
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPTMasterCode.vn
Tìm hiểu các bước thiết kế CSDL quan hệ
Tìm hiểu các khái niệm trong thiết kế CSDL quan hệ:
Các khái niệm trong thiết kế CSDL mức khái niệm
Các khái niệm trong thiết kế CSDL mức vật lý
Làm quen với hệ quản trị CSDL Microsoft Access
Tạo các bảng và truy vấn trong Microsoft Access.
Bài thuyết trình môn học Hệ Điều Hành.pptxduongchausky
Hệ điều hành là một môn học cung cấp kiến thức cơ bản về quản lý tài nguyên của máy tính. Dưới đây là một số nội dung chính của môn học hệ điều hành:
Định nghĩa và tính chất của hệ điều hành:
Định nghĩa và tính chất cơ bản của hệ điều hành.
Lịch sử phát triển hệ điều hành.
Phân loại hệ điều hành.
Quản lý tiến trình:
Tiến trình và luồng (process/thread).
Đồng bộ hóa tiến trình.
Lập lịch CPU.
Tắc nghẽn và xử lý tắc nghẽn:
Khái niệm tắc nghẽn.
Điều kiện xảy ra tắc nghẽn.
Các phương pháp xử lý tắc nghẽn.
Quản lý bộ nhớ:
Khái niệm chung về quản lý bộ nhớ.
Các chiến lược quản lý bộ nhớ thực.
Quản lý bộ nhớ ảo.
Quản lý tập tin:
Hệ thống quản lý tập tin.
Thư mục và cách cài đặt hệ thống file và thư mục.
Quản lý nhập xuất:
Hệ thống vào ra.
Xử lý vào ra.
Quản lý truy cập đĩa.
Môn học hệ điều hành giúp bạn hiểu nguyên tắc hoạt động của hệ điều hành và cung cấp kiến thức cơ bản để xây dựng và quản lý các hệ điều hành cụ thể. Nếu bạn muốn tìm hiểu thêm, có thể xem các tài liệu chi tiết về môn học này.
SFD 2013 Hanoi: Phần mềm nguồn mở và dự tính khí hậu 100 nămVu Hung Nguyen
Đăng ký tham dự tại đây: http://vfossa.vn/vi/reg-sfd-2013/
A. Giới thiệu chung:
Software Freedom Day là một ngày hội khởi xướng từ năm 2004, được tổ chức mỗi năm một lần với mục đích quảng bá cho Phần mềm Tự do Nguồn mở (FOSS) và các chuẩn định dạng mở đến với mọi người dùng máy tính cũng như các doanh nghiệp, cơ quan, tổ chức...
Software Freedom Day (SFD) thường niên tổ chức vào ngày thứ bảy, tuần thứ 3 của tháng 9.
B. Thời gian diễn ra:
Tiếp nối thành công của Ngày Hội phần mềm Tự Do nguồn Mở SFD 2012; cùng với sự ủng hộ của cộng đồng, Câu lạc bộ Phần mềm Tự do Nguồn mở Việt Nam (Vietnam Free & Open Source SoftwareAssociation - viết tắt là VFOSSA) và nhóm Người sử dụng Linux tại Tp Hồ Chí Minh (Saigon Linux User Group - viết tắt là SaigonLUG) hợp tác cùng Ban giám hiệu các trường ĐH đăng cai tổ chức
Software Freedom Day – SFD 2013.
Thứ 7 - Ngày 21/09/2013; tại cả hai miền Nam và Bắc
Tại Hà Nội: từ 08h00 đến 17h00 tại Nhà D5 - Trường ĐH Bách Khoa - Số 1 Đại Cồ Việt,
http://vfossa.vn/vi/news/event/Ngay-hoi-tu-do-phan-mem-Software-Freedom-Day-2013-74/
Tại Tp Hồ Chí Minh: từ 08h00 – 12h00 tại Trường ĐH Khoa Học Tự Nhiên,
http://sfd.saigonlug.org/
C. Đối tượng/ Lợi ích tham dự:
Những cá nhân, sinh viên, doanh nghiệp và tổ chức làm việc trong lĩnh vực CNTT, đặc biệt là Phần mềm Tự do Nguồn mở
Đối với cá nhân, sinh viên và những ai yêu thích công nghệ: Các bạn sẽ được giao lưu, học hỏi thêm nhiều kiến thức bổ ích, vừa giúp ích cho vốn kiến thức của bản thân mà vừa giúp cho bạn có thêm những cơ hội việc làm hấp dẫn.
Đối với các doanh nghiệp, tổ chức: Ngày hội sẽ là cơ hội để các doanh nghiệp chia sẻ cùng nhau những kinh nghiệm từ ứng dụng Phần mềm Tự do Nguồn mở vào hoạt động kinh doanh, mở rộng quan hệ hợp tác phát triển và tuyển dụng nhân sự chất lượng cao.
D. Nội dung chính:
- Hội thảo: xoay quanh chủ đề:
+ Chính sách, kinh doanh, Cộng đồng Phần mềm Tự do Nguồn mở
+ Các vấn đề kỹ thuật: An ninh và nguồn mở, nguồn mở và giáo dục đào tạo: moodle, scolarix, các giải pháp kỹ thuật khác sử dụng phần mềm nguồn mở như: quản lý dự án, hệ điều hành, giải pháp văn phòng…
+ Hội thảo tuyển dụng, giới thiệu sản phẩm ứng dụng thực của Doanh nghiệp trong Phần mềm Tự do Nguồn mở
- Lớp học Phần mềm Tự Do Nguồn mở miễn phí
- Thi đấu giải Game: với nhiều quà tặng hấp dẫn từ Nhà tài trợ ^^
1. 1
GV: TS. Hồ Bảo Quốc
Nhóm HV: Đinh Thị Lương 1011036
Đoàn Cao Nghĩa 1011043
Hồng Xuân Viên 1011067
2. 2
Nội dung
Giới thiệu
• Nhu cầu thực tế
• Hadoop là gì?
• Lịch sử phát triển
Các thành phần của Hadoop
• Hadoop Common, HDFS, MapReduce
3. 3
Nhu cầu thực tế
Nhu cầu lưu trữ & xử lý dữ liệu hàng exabyte (1
exabyte = 1021 bytes)
• Đọc & truyền tải dữ liệu rất chậm
Cần rất nhiều node lưu trữ với chi phí thấp
• Lỗi phần cứng ở node xảy ra hàng ngày
• Kích thước cluster không cố định
Nhu cần cần có một hạ tầng chung
• Hiệu quả, tin cậy
4. 4
Kiến trúc 2 tầng
Các node là các PC
Chia làm nhiều rack (khoảng 40 PC/rack)
5. 5
5
Hadoop là gì?
Nền tảng ứng dụng hỗ trợ các ứng dụng phân
tán với dữ liệu rất lớn.
• Quy mô: hàng terabyte dữ liệu, hàng ngàn node.
Thành phần:
• Lưu trữ: HDFS (Hadoop Distributed Filesystem)
• Xử lý: MapReduce
Hỗ trợ mô hình lập trình Map/Reduce
7. 7
Lịch sử phát triển
2002-2004: Doug Cutting giới thiệu Nutch
12/2004 – công bố bài báo về GFS & MapReduce
05/2005 – Nutch sử dụng MapReduce & DFS
02/2006 – Trở thành subproject của Lucene
04/2007 – Yahoo chạy 1000-node cluster
01/2008 – trở thành dự án cao cấp của Apache
07/2008 – Yahoo thử nghiệm 4000 node cluster
8. 8
Hadoop Common
Tập hợp những tiện ích hỗ trợ cho các dự
án con của Hadoop
Bao gồm: tiện ích truy cập hệ thống file,
RPC, …
9. 9
Hadoop Distributed File System
Hệ thống file phân tán?
HDFS?
Kiến trúc của HDFS
Cách thức lưu trữ và sửa lỗi
11. 11
Hệ thống file phân tán
Ứng dụng
Ổ cứng vật lý
Hệ thống file
Hệ thống file phân tán
Ổ cứng vật lý
Hệ thống file
Ổ cứng vật lý
Hệ thống file
12. 12
Mục tiêu của HDFS
Lưu trữ file rất lớn (hàng terabyte)
Truy cập dữ liệu theo dòng
Mô hình liên kết dữ liệu đơn giản
• Ghi 1 lần, đọc nhiều lần
Di chuyển quá trình xử lý thay vì dữ liệu
Sử dụng phần cứng phổ thông, đa dạng
Tự động phát hiện lỗi, phục hồi dữ liệu rất nhanh
13. 13
Điểm yếu của HDFS
Ứng dụng cần truy cập với độ trễ cao
• HDFS tối ưu quá trình truy cập file rất lớn
Không thể lưu quá nhiều file trên 1 cluster
• NameNode lưu trên bộ nhớ -> cần nhiều bộ nhớ
Không hỗ trợ nhiều bộ ghi, sửa dữ liệu bất kỳ
15. 15
Kiến trúc HDFS (t.t)
Các khái niệm
• Block: đơn vị lưu trữ dữ liệu nhỏ nhất
Hadoop dùng mặc định 64MB/block
1 file chia làm nhiều block
Các block chứa ở bất kỳ node nào trong cluster
• NameNode
Quản lý thông tin của tất cả các file trong cluster
• DataNode
Quản lý các block dữ liệu
17. 17
NameNode
Thành phần trọng yếu của HDFS
Quản lý và thực thi các thao tác liên quan
đến tên file
• Đóng, mở, đổi tên
Quản lý vị trí của các block
18. 18
DataNode
Quản lý các block
Thực hiện thao tác trên dữ liệu
• Thêm, xóa, nhận biết block
• Thực hiện các yêu cầu xử lý dữ liệu
19. 19
Các thức lưu trữ & phát hiện lỗi
Bản sao dữ liệu:
• Mỗi file có nhiều bản sao nhiều bản sao của block
NameNode quyết định việc tạo bản sao
• Nhận dữ liệu Heartbeat & Blockreport từ DataNode
Heartbeat: tình trạng chức năng của DataNode đó
Blockreport: danh sách các block
Thiết lập chính sách lưu trữ của các bản sao
• Cơ chế xác định block đó thuộc node nào
21. 21
Chính sách lưu trữ của các bản sao block
Cực kỳ quan trọng
Quyết định tính ổn định, an toàn, và khả năng vận hành
của hệ thống
Cần nhiều thời gian và kinh nghiệm
Quan tâm đến kiến trúc vật lý: rack, bandwith
Chính sách thông thường (không tối ưu)
• Chia block làm 3 bản sao
• Lưu ở node trong rack nội bộ, 2 block ở 2 node khác nhau trong
rack khác (remote rack)
22. 22
Độ bền vững của HDFS
Mục tiêu chính: đảm bảo dữ liệu chính xác
ngay cả khi lỗi hệ thống xảy ra
3 loại lỗi chính:
• Lỗi ở NameNode
• Lỗi ở DataNode
• Sự cản trở của mạng máy tính
23. 23
Độ bền vững của HDFS (t.t)
DataNode gửi định kỳ Heartbeat lên NameNode
• Xác định node bị lỗi nếu NameNode không nhận
được Heartbeat.
• Đưa DataNode khỏi liên kết & cố gắng tạo bản sao
khác
Tái cân bằng cluster
• Chuyển các block sang DataNode khác có khoảng
trống dưới đính mức qui định
24. 24
Độ bền vững của HDFS (t.t)
Lỗi ở NameNode
• Có thể làm hệ thống HDFS vô dụng
• Tạo các bản copy của FsImage và EditLog
• Khi NameNode restart, hệ thống sẽ lấy bản
sao gần nhất.
25. 25
Cơ chế hoạt động
Đọc dữ liệu:
• Chương trình client yêu cầu đọc dữ liệu từ
NameNode
• NameNode trả về vị trí các block của dữ liệu
• Chương trình trực tiếp yêu cầu dữ liệu tại các
node.
28. 28
Cơ chế hoạt động (t.t)
Ghi dữ liệu:
• Ghi theo dạng đường ống (pipeline)
• Chương trình yêu cầu thao tác ghi ở NameNode
• NameNode kiểm tra quyền ghi và đảm bảo file không
tồn tại
• Các bản sao của block tạo thành đường ống để dữ
liệu tuần tự được ghi vào
31. 31
Map Reduce
Tại sao cần Map Reduce ?
Map Reduce là gì ?
Mô hình Map Reduce
Thực thi
Hadoop Map Reduce
Demo
32. 32
Tại sao cần Map Reduce ?
Xử lý dữ liệu với quy mô lớn
• Muốn xử dụng 1000 CPU
Mong muốn một mô hình quản lý đơn giản
Kiến trúc Map Reduce
• Quản lý tiến trình song song và phân tán
• Quản lý, sắp xếp lịch trình truy xuất I/O
• Theo dõi trạng thái dữ liệu
• Quản lý số lượng lớn dữ liệu có quan hệ phụ thuộc nhau
• Xử lý lỗi
• Trừu tượng đối với các lập trình viên ….
33. 33
Map Reduce là gì ?
Mô hình lập trình
• MapReduce được xây dựng từ mô hình lập trình hàm và lập trình song
song
Hệ thống tính toán phân tán
• Tăng tốc độ thực thi xử lý dữ liệu
Giải quyết được nhiều bài toán
Ẩn các chi tiết cài đặt, quản lý
• Quản lý lỗi
• Gom nhóm và sắp xếp
• Lập lịch
• ….
34. 34
Map Reduce là gì ?
Cách tiếp cận : chia để trị
• Chia nhỏ vấn đề lớn thành các vấn đề nhỏ
• Xử lý song song từng việc nhỏ
• Tổng hợp kết quả
Đọc dữ liệu lớn
Rút trích thông tin cần thiết từ từng phần tử ( Map )
Trộn và sắp xếp các kết quả trung gian
Tổng hợp các kết quả trung gian ( Reduce )
Phát sinh kết quả cuối cùng
36. 36
Mô hình Map Reduce
Trải qua hai quá trình Map và Reduce
Map Reduce định nghĩa dữ liệu dưới dạng cặp
<key,value>
Map <k1,v1> -> list(<k2,v2>)
Reduce <k2,list(<v2>)> -> < k3, v3 >
(input) <k1, v1> -> map -> <k2, v2> -> combine -> <k2, v2>
-> reduce -> <k3, v3> (output)
37. 37
Mô hình Map Reduce
Hàm Map
• Mỗi phần tử của dữ liệu đầu vào sẽ được
truyền cho hàm Map dưới dạng cặp
<key,value>
• Hàm Map xuất ra một hoặc nhiều cặp
<key,value>
38. 38
Mô hình Map Reduce
Sau quá trình Map, các giá trị trung gian được
tập hợp thành các danh sách theo từng khóa
Hàm Reduce
• Kết hợp, xử lý, biến đổi các value
• Đầu ra là một cặp <key,value> đã được xử lý
40. 40
Ví dụ word count (tt)
Mapper
• Đầu vào : Một dòng của văn bản
• Đầu ra : key : từ, value : 1
Reducer
• Đầu vào : key : từ, values : tập hợp các giá trị
đếm được của mỗi từ
• Đầu ra : key : từ, value : tổng
41. 41
Tính toán song song
Hàm Map chạy song song tạo ra các giá trị trung
gian khác nhau từ các tập dữ liệu khác nhau
Hàm Reduce cũng chạy song song, mỗi reducer
xử lý một tập khóa khác nhau
Tất cả các giá trị được xử lý độc lập
Bottleneck: Giai đoạn Reduce chỉ bắt đầu khi
giai đoạn Map kết thúc
43. 43
Thực thi ( bước 1)
Chương trình (user program), thông qua
thư viện MapReduce phân mảnh dữ liệu
đầu vào
User
ProgramInput
Data
Shard 0
Shard 1
Shard 2
Shard 3
Shard 4
Shard 5
Shard 6
44. 44
Thực thi ( bước 2)
• Map Reduce sao chép chương trình này vào
các máy cluster ( master và các worker )
User
Program
Master
Workers
Workers
Workers
Workers
Workers
45. 45
Thực thi ( bước 3)
Master phân phối M tác vụ Map và R tác
vụ Reduce vào các worker rảnh rỗi
Master phân phối các tác vụ dựa trên vị trí
của dữ liệu
Master
Idle
Worker
Message(Do_map_task)
46. 46
Thực thi ( bước 4)
Mỗi map-task worker đọc dữ liệu từ phân
vùng dữ liệu được gán cho nó và xuất ra
những cặp <key,value> trung gian
• Dữ liệu này được ghi tạm trên RAM
Map
workerShard 0 Key/value pairs
47. 47
Thực thi ( bước 5)
Mỗi worker phân chia dữ liệu trung gian
thành R vùng, lưu xuống đĩa, xóa dữ liệu
trên bộ đệm và thông báo cho Master
Master
Map
worker
Disk locations
Local
Storage
48. 48
Thực thi ( bước 6)
Master gán các dữ liệu trung gian và chỉ ra
vị trí của dữ liệu cho các reduce-task
Master
Reduce
worker
Disk locations
remote
Storage
49. 49
Thực thi ( bước 7)
Mỗi reduce-task worker sắp xếp các key,
gọi hàm reduce và xuất kết quả đầu ra
Reduce
worker
Sorts data Partition
Output file
50. 50
Thực thi ( bước 8)
Master kích hoạt (wakes up) chương trình
của người dùng thông báo kết quả hoàn
thành
Dữ liệu đầu ra được lưu trong R tập tin
wakeup User
Program
Master
Output
files
51. 51
Hadoop - Map Reduce
Là một framework
Sử dụng HDFS
Kiến trúc master/slave
Master Slave
DFS Namenode Datanote
MapReduce Jobtracker Tasktracker
52. 52
Hadoop - Map Reduce
Client gửi MapReduce Job
JobTracker điều phối việc thực thi Job
TaskTracker thực thi các task đã được chia ra
54. 54
Job Submission
Yêu cầu ID cho job mới (1 )
Kiểm tra các thư mục đầu vào và đầu ra
Chia tách dữ liệu đầu vào
Chép các tài nguyên bao gồi chương trình (Jar), các tập
tin cấu hình, các mảnh dữ liệu đầu vào filesystem của
jobtracker (3)
Thông báo với jobtracker job sẵn sàng để thực thi (4)
55. 55
Khởi tạo Job
Thêm job vào hàng đợi & khơi tạo các tài
nguyên (5)
Tạo danh sách các tác vụ ( task ) (6)
56. 56
Phân phối các tác vụ
TaskTracker định kỳ thông báo sẵn sàng
nhận các tác vụ mới (7)
JobTracker giao tác vụ cố định cho
TaskTracker ( ví dụ 1 TaskTracker chạy
đồng thời 2 map-task và 2 reduce-task)
57. 57
Thực thi tác vụ
TaskTracker Chép chương trình thực thi
(Jar File) và các dữ liệu cần thiết từ hệ
thống chia sẻ file
Tạo tiến trình TaskRunner để thực thi tác
vụ
58. 58
Cập nhật trạng thái
Cập nhật trạng thái trong quá trìng thực thi
• Tác vụ xử lý được bao nhiêu dữ liệu đầu vào ?
• Tác vụ hoàn thành thành công ?
• Tác vụ lỗi ?
Task process gửi báo cáo 3s một lần cho TaskTracker
TaskTracker gửi báo cáo 5s một lần cho JobTracker
JobTracker tổng hợp các báo cáo, gửi lại cho JobClient
mỗi giây một lần
60. 60
Kết thúc Job
Khi JobTracker nhận được tín hiệu kết thúc của
tác vụ cuối cùng
JobTracker gủi tín hiệu success cho JobClient
JobClient thông báo cho chương trình của
người dùng
JobTracker thu gom rác, hủy các kết quả trung
gian
61. 61
Khả năng chịu lỗi
Master phát hiện các lỗi
Lỗi tác vụ (Task Failure)
• Văng lỗi ngoại lệ, Bị giết bởi VJM, Treo
• JobTracker giao cho TaskTracker khác xử lý trong
một giới hạn nhất định
• Hạn chế giao tác vụ mới cho TaskTracker đã xử lý
tác vụ bị lỗi
62. 62
Khả năng chịu lỗi
Lỗi TaskTracker
• Crashing, Chạy chậm, không gửi báo cáo đúng hạn
cho JobTracker
• JobTracker loại bỏ TaskTracker ra khỏi bảng lịch biểu
tác vụ ( schedule tasks ) và thêm vào blacklist
• JobTracker lập lịch lại để chạy các tác vụ đã trao cho
TaskTracer bị lỗi
63. 63
Khả năng chịu lỗi
Lỗi Jobtracker
• Nghiêm trọng
• Chưa có hướng giải quyết
64. 64
Tối ưu hóa
Reduce chỉ bắt đầu khi toàn bộ Map kết
thúc
• Đĩa trên một node truy xuất chậm có thể ảnh
hưởng tới toàn bộ quá trình
Băng thông của mạng
65. 65
Tối ưu hóa
Đưa ra hàm combiner
• Có thể chạy trên cùng máy với các mapper
• Chạy độc lập với các mapper khác
• Mini Reducer, làm giảm đầu ra của các giai
đoạn Map. Tiết kiệm băng thông
66. 66
Ứng dụng
Sắp xếp dữ liệu phân tán
Phân tích thống kê
Web Ranking
Dịch máy
Indexing
...
67. 67
Tổng kết
Là mô hình đơn giản để xử lý lượng dữ
liệu lớn trên mô hình phân tán
Tập trung vào vấn đề chính cần xử lý
68. 68
Demo Word Count (1)
Map
public static class MapClass extends MapReduceBase
implements Mapper {
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
public void map(WritableComparable key, Writable value,
OutputCollector output, Reporter reporter)
throws IOException {
String line = ((Text)value).toString();
StringTokenizer itr = new StringTokenizer(line);
while (itr.hasMoreTokens()) {
word.set(itr.nextToken());
output.collect(word, one);
}
}
}
69. 69
Demo Word Count (2)
Reduce
public static class Reduce extends MapReduceBase
implements Reducer {
public void reduce(WritableComparable key, Iterator
values, OutputCollector output, Reporter reporter)
throws IOException {
int sum = 0;
while (values.hasNext()) {
sum += ((IntWritable) values.next()).get();
}
output.collect(key, new IntWritable(sum));
}
}
70. 70
Demo Word Count (3)
Main
public static void main(String[] args) throws IOException {
//checking goes here
JobConf conf = new JobConf();
conf.setOutputKeyClass(Text.class);
conf.setOutputValueClass(IntWritable.class);
conf.setMapperClass(MapClass.class);
conf.setCombinerClass(Reduce.class);
conf.setReducerClass(Reduce.class);
conf.setInputPath(new Path(args[0]));
conf.setOutputPath(new Path(args[1]));
JobClient.runJob(conf);
}