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ÂN
TRƯỜ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 Long
Lớp: DS 303 A
Nhóm: 03
Thành viên 1: Trần Nguyễn Hoàng HuyThà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 2MỤC LỤC
LỜI CẢM ƠN 3
CHƯƠNG I: TỔNG QUAN 5
1.1 Giới thiệu về Apache Hadoop 5
1.2 Mục tiêu đề tài 9
1.3 Hướng giải quyết 9
1.4 Khó khăn và thách thức 9
1.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áclỗ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 2thành phần là: MapReduce và Hadoop Distributed File System (HDFS) Theo thời gian, nền tảngHadoop 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ềntả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 HadoopHadoop MapReduce: Map-Reduce là một framework dùng để viết các ứng dụng xử lý songsong 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áytí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 đổithà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ữliệu nhỏ hơn
Hình 1.2 Mô hình MapReduceCác tính năng của MapReduce:
- Xử lý cục bộ
- Xây dựng sẵn
- Ngôn ngữ độc lập
- 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ônglượ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ênnề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 đíchnày thì cách thức “wrice once, read many” được sử 7 dụng, cho phép dữ liệu thường được ghimộ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ườngrấ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áctrong 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 SystemCác tính năng của HDFS:
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 YARNcung 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ậplị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ớiResourceManager 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épchú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 độclậ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.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ệubấ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
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