Tải bản đầy đủ (.pdf) (29 trang)

đề tài hadoop mapreduce và chương trình wordcount cơ bản với mapreduce

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.74 MB, 29 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>TRƯỜNG ĐẠI HỌC DUY TÂNTRƯỜNG KHOA HỌC MÁY TÍNH</b>

<b>ĐỒ ÁN NHĨM</b>

<b>MƠN HỌC PRINCIPLES OF BIG DATA</b>

<b>ĐỀ TÀI</b>

<b>HADOOP MAPREDUCE VÀ </b>

<b>CHƯƠNG TRÌNH WORDCOUNT CƠ BẢN VỚI MAPREDUCE</b>

<b>GVHD: TH. S Lê Thanh LongLớp: DS 303 A</b>

<b>Nhóm: 03</b>

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

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>1.5Đề xuất hướng giải quyết...9</b>

<i><b>CHƯƠNG II: CHẠY CHƯƠNG TRÌNH...9</b></i>

<i><b>CHƯƠNG III: KẾT LUẬN...27</b></i>

<b>3.1 Kết luận...27</b>

<b>3.2 Hướng phát triển...27</b>

<i><b>TÀI LIỆU THAM KHẢO...28</b></i>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>LỜI CẢM ƠN</b>

Để 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 hồ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!

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

NHẬN XÉT CỦA GIÁO VIÊN

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>CHƯƠNG I: TỔNG QUAN</b>

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.

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

Hì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.

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

Hadoop 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 tồn vẹn của dữ liệu.

Hình 1.3. Mơ hình Hadoop Distributed File System

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

Bê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 ngun tính tố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 ngun tính tố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

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="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ừ.

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<b>CHƯƠNG II: CHẠY CHƯƠNG TRÌNH</b>

Đảm bảo Hadoop đã được cài đặt và chạy: hadoop version

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

Đảm bảo javac đang chạy chính xác: javac -version

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

Wordcount.java

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

Bâ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:

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

Tạ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

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="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>

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

Tạ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

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

Tải tập tin đầu vào vào thư mục đó:

hadoop fs -put <INPUT_FILE> <HDFS_INPUT_DIRECTORY>

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

Thay đổi thư mục hiện tại thành thư mục hướng dẫn:

cd <TUTORIAL_DIRECTORY>

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

Biên dịch mã java: javac -classpath ${HADOOP_CLASSPATH} -d < CLASSES_FOLDER> < TUTORIAL_JAVA_FILE>

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

Check the files!

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="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>

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

hadoop dfs -cat <HDFS_OUTPUT_DIRECTORY>*

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

<b>CHƯƠNG III: KẾT LUẬN</b>

<b>3.1 Kết luận</b>

Đồ án đã giới thiệu khái qt đượ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, ngun 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.

<b>3.2 Hướng phát triển</b>

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 tốn phân tán

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

<b>TÀI LIỆU THAM KHẢO</b>

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.

</div>

×