LỜI CẢM ƠNĐể hoàn thành đề tài này, chúng em xin gửi lời cảm ơn chân thành đến: Khoa, Trường Đại học Duy tân vì đã tạo điều kiện về cơ sở vật chất với hệ thống thư viện hiện đại, đa dạng
Trang 1TRƯỜNG ĐẠI HỌC DUY TÂNTRƯỜNG KHOA HỌC MÁY TÍNH
ĐỒ ÁN NHÓM
MÔN HỌC PRINCIPLES OF BIG DATA
ĐỀ TÀI
HADOOP MAPREDUCE VÀ
CHƯƠNG TRÌNH WORDCOUNT CƠ BẢN VỚI MAPREDUCE
GVHD: TH S Lê Thanh LongLớp: DS 303 A
Nhóm: 03
Thành viên 1: Trần Nguyễn Hoàng Huy Thành viên 2: Phạm Vũ Long Thành viên 3: Lê Kim Quang Thành viên 4: Tăng Tạ Minh Nhân Thành viên 5: Vongvilay Chanthaphone
Trang 21.5Đề xuất hướng giải quyết 9
CHƯƠNG II: CHẠY CHƯƠNG TRÌNH 9
CHƯƠNG III: KẾT LUẬN 27
3.1 Kết luận 27
3.2 Hướng phát triển 27
TÀI LIỆU THAM KHẢO 28
Trang 3LỜI CẢM ƠN
Để hoàn thành đề tài này, chúng em xin gửi lời cảm ơn chân thành đến: Khoa, Trường Đại học Duy tân vì đã tạo điều kiện về cơ sở vật chất với hệ thống thư viện hiện đại, đa dạng các loại sách, tài liệu thuận lợi cho việc tìm kiếm, nghiên cứu thông tin.
Xin cảm ơn giảng viên hướng dẫn - Thầy Lê Thanh Long đã giảng dạy tận tình, chi tiết để chúng em có đủ kiến thức và vận dụng được kiến thức vào đề tài này Do chưa có nhiều kinh nghiệm làm đề tài cũng như những hạn chế về kiến thức, trong bài tiểu luận chắc chắn sẽ không tránh khỏi những thiếu sót Rất mong nhận được sự nhận xét, ý kiến đóng góp, phê bình từ phía Thầy để bài tiểu luận được hoàn thiện hơn.
Lời cuối cùng, chúng em xin kính chúc Thầy nhiều sức khỏe, thành công và hạnh phúc.
Chúng em xin chân thành cảm ơn!
Trang 4NHẬN XÉT CỦA GIÁO VIÊN
Trang 5CHƯƠNG I: TỔNG QUAN
1.1 Giới thiệu về Apache Hadoop
Apache hadoop là một framework giúp lưu trữ và xử lý BigData áp dụng MapReduce Mô hình MapReduce là mô hình mà ứng dụng sẽ được chia nhỏ ra thành nhiều phần khác nhau và các phần này sẽ được chạy song song trên nhiều node khác nhau, thêm vào đó hadoop cung cấp hệ thống file phân tán (HDFS) đều được thiết kế sao cho framework sẽ tự động quản lý được các lỗi, các hư hỏng về phần cứng của các node.
Hadoop viết bằng Java Tuy nhiên, nhờ cơ chế streaming, Hadoop cho phép phát triển các ứng dụng phân tán bằng cả java lẫn một số ngôn ngữ lập trình khác như C++, Python, Pearl.
Kiến trúc Hadoop: Apache Hadoop dùng để quản lý và truy cập dữ liệu, và chỉ bao gồm 2 thành phần là: MapReduce và Hadoop Distributed File System (HDFS) Theo thời gian, nền tảng Hadoop mở rộng kết hợp với một loạt các dự án khác để thành một nền tảng hoàn chỉnh Nền tảng này chia thành 5 loại sau: data access, data management, security, operations và governance.
Trang 6Hình 1.1 Kiến trúc Hadoop
Hadoop MapReduce: Map-Reduce là một framework dùng để viết các ứng dụng xử lý song song một lượng lớn dữ liệu có khả năng chịu lỗi cao xuyên suốt hàng ngàn cluster(cụm) máy tính Map-Reduce thực hiện 2 chức năng chính đó là Map và Reduce.
- Map: Sẽ thực hiện đầu tiên, có chức năng tải, phân tích dữ liệu đầu vào và được chuyển đổi thành tập dữ liệu theo cặp key/value
- Reduce: Sẽ nhận kết quả đầu ra từ tác vụ Map, kết hợp dữ liệu lại với nhau thành tập dữ
- MapReduce execution framework - Truyền thông liên tiến trình.
Trang 7Hadoop Distributed File System (HDFS): Đây là hệ thống file phân tán cung cấp truy cập thông lượng cao cho ứng dụng khai thác dữ liệu HDFS là hệ thống quản lý dữ liệu phân tán dựa trên nền tảng Java cung cấp giải pháp lưu trữ tin cậy, ổn định, truy cập nhanh chóng Với mục đích này thì cách thức “wrice once, read many” được sử 7 dụng, cho phép dữ liệu thường được ghi một lần mỗi HDFS, sau đó sẽ được đọc nhiều lần Do vậy việc sửa đổi dữ liệu sau khi ghi thường rất hạn chế Để lưu trữ dữ liệu phân tán, dữ liệu sẽ được chia thành các block (64/128 MB) và được phân phối tới các node xử lý Mỗi block đồn thời sẽ được sao chép đến các server khác trong cụm cluster để đảm bảo tính toàn vẹn của dữ liệu.
Hình 1.3 Mô hình Hadoop Distributed File System
Trang 8Bên cạnh 2 thành phần cốt lõi Hadoop cũng có một số modules:
- Hadoop YARN: Đây là framework để quản lý tiến trình và tài nguyên của các node YARN cung cấp daemons và APIs cần thiết cho việc phát triển ứng dụng phân tán, đồng thời xử lý, lập lịch sử dụng tài nguyên tính toán (CPU hay Memory) cũng như giám sát quá trình thực thi các ứng dụng đó 8 YARN tổng quát hơn MapReduce thế hệ đầu tiên (gồm mô hình JobTracker / TaskTracker) Bên trong YARN, chúng ta có hai trình quản lý ResourceManager và NodeManager
- ResourceManager: Quản lý toàn bộ tài nguyên tính toán của cluster
- NodeManager: Giám sát việc sử dụng tài nguyên của container và báo cáo với ResourceManager Các tài nguyên ở đây là CPU, memory, disk, network,
- Ta có thể mở rộng YARN thông qua tính năng YARN Federation Tính năng này cho phép chúng ta buộc nhiều cụm YARN thành một cụm lớn Điều này cho phép sử dụng các cụm độc lập, ghép lại với nhau cho một job rất lớn
Hình 1.4 Mô hình Hadoop YARN
Trang 9- Hadoop Common: Đây là các thư viện và tiện ích cần thiết của Java để các module khác sử dụng Những thư viện này cung cấp hệ thống file và lớp OS trừu tượng, đồng thời chứa các mã lệnh Java để khởi động Hadoop.
1.2 Mục tiêu đề tài
Xây dựng chương trình WordCount trên CentOS 1.3 Hướng giải quyết
Sử dụng MapReduce của Hadoop để thực hiện chương trình 1.4 Khó khăn và thách thức
- Cấu hình môi trường: Việc cài đặt và cấu hình Hadoop có thể khó khăn và gặp lỗi - Hiệu suất: Tối ưu hóa hiệu suất cho việc xử lí dữ liệu lớn có thể là một thách thức - Gỡ lỗi: Việc gỡ lỗi trong Hadoop có thể khó khăn do thiếu chế độ tương tác, thông tin lỗi có thể không rõ ràng.
1.5 Đề xuất hướng giải quyết
- Thiết lập môi trường Hadoop: Cài đặt Hadoop và cấu hình môi trường phù hợp - Tạo dữ liệu đầu vào: File txt chứa dữ liệu cần xử lí.
- Viết mã cho file WordCount.java - Kiểm tra cục bộ
- Chạy chương trình MapReduce để thực hiện đếm từ
Trang 10CHƯƠNG II: CHẠY CHƯƠNG TRÌNH
Đảm bảo Hadoop đã được cài đặt và chạy: hadoop version
Trang 11Đảm bảo javac đang chạy chính xác: javac -version
Trang 12Wordcount.java
Trang 13Bây giờ, tạo thư mục mới cho dữ liệu đầu vào (input_data):
Thêm tập tin văn bản của riêng bạn vào thư mục này:
Trang 15Tạo thư mục mới để chứa các tập tin lớp java (tutorial_classes):
Bây giờ, hãy đặt biến môi trường HADOOP_CLASSPATH
Trang 16Đảm bảo rằng nó đã được đặt chính xác: echo $HADOOP_CLASSPATH
Tạo một thư mục trên HDFS: hadoop fs -mkdir <DIRECTORY_NAME>
Trang 17Tạo một thư mục bên trong nó cho đầu vào: hadoop fs -mkdir <HDFS_INPUT_DIRECTORY>
Truy cập localhost:50070 để vào giao diện của hadoop
Trang 19Tải tập tin đầu vào vào thư mục đó:
hadoop fs -put <INPUT_FILE> <HDFS_INPUT_DIRECTORY>
Trang 22Thay đổi thư mục hiện tại thành thư mục hướng dẫn:
cd <TUTORIAL_DIRECTORY>
Trang 23Biên dịch mã java: javac -classpath ${HADOOP_CLASSPATH} -d < CLASSES_FOLDER> < TUTORIAL_JAVA_FILE>
Trang 24Check the files!
Trang 25Đặt các tập tin đầu ra vào một tập tin jar: jar -cvf < JAR_FILE_NAME> -C <CLASSES_FOLDER>
Bây giờ chúng ta có tệp jar
Chạy jar trên Hadoop: hadoop jar <JAR_FILE> < CLASS_NAME>
<HDFS_INPUT_DIRECTORY> <HDFS_OUTPUT_DIRECTORY>
Trang 27hadoop dfs -cat <HDFS_OUTPUT_DIRECTORY>*
Trang 28CHƯƠNG III: KẾT LUẬN
3.1 Kết luận
Đồ án đã giới thiệu khái quát được mô hình của Apache Hadoop Giúp chúng ta hiểu hơn về Hadoop là gì, mô hình Hadoop, nguyên tắc hoạt động của nó Đồng thời, đồ án cũng giúp chúng ta biết về cài đặt Apache Hadoop, các thành phần, cách thức làm việc, và tìm hiểu một số API cơ bản mà Hadoop cung cấp, cần thiết cho việc lập trình một ứng dụng, hay triển khai một thuật toán ứng dụng.
3.2 Hướng phát triển
Big Data đang trở thành một quan trọng và là tài sản to lớn của mỗi doanh nghiệp, trong đó Hadoop là công nghệ cốt lõi cho việc lưu trữ và truy cập dữ liệu lớn.
Các node trong Hadoop được chia làm 2 loại: Name node (master), data node (slave) Hadoop sinh ra để giải quyết 2 vấn đề: Lưu trữ và quản lý các tập dữ liệu lớn.
Khả năng linh hoạt của Hadoop cho phép các công ty có thể thêm hoặc sửa đổi hệ thống dữ liệu bất cứ lúc nào khi có nhu cầu phát sinh sự thay đổi.
Một số lý do nên sử dụng Hadoop:
-Hadoop là hệ thống cung cấp lưu trữ và xử lý dữ liệu trên phần cứng được sử dụng rộng rãi nhất - tương đối hiệu quả về chi phí
- Open source
- Hiệu quả trong việc lưu trữ phân tán và tính toán phân tán
Trang 29TÀI LIỆU THAM KHẢO
anjali (2022) MapReduce Tutorial–Learn to implement Hadoop WordCount Example projectpro Anushkakhatri (2023) An Introduction to MapReduce with a Word Count Example analyticsvidhya CodeGyani (2019) MapReduce Word Count Example javatpoint.
Huy, N Q (2021) Hadoop MapReduce và chương trình WordCount cơ bản với MapReduce Ho Chi Minh: Demanejar.
Sheeha, M (2016) How to run Word Count example on Hadoop MapReduce (WordCount Tutorial) Youtube.