Hadoop, một dự án phần mềm quản lý dữ liệu Apache với nhân trong khung phầnmềm MapReduce của Google, được thiết kế để hỗ trợ các ứng dụng sử dụng được số lượng lớn dữ liệu cấu trúc và ph
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THỰC PHẨM
THÀNH PHỐ HỒ CHÍ MINH
ĐỒ ÁN KẾT THÚC MÔN HỌC
XỬ LÝ TÍNH TOÁN SONG SONG
Đề tài : Xây dựng HDFS (Hadoop Distributed File System) trong hệ
quản lý file phân tán cung cấp truy cập thông lượng cao.
Giáo viên hướng dẫn:
Sinh viên thực hiện:
Trang 2Mục Lục
Trang 3Mục đích : Mong muốn của các danh nghiệp là tận dụng việc lượng dữ liệu khổng
lồ để đưa ra quyết định kinh danh, Hadoop giúp các công ty xử lý khối lượng cỡterabyte và thậm chí là petabytes dữ liệu phức tạp tương đối hiệu quả với chi phíthấp
Các doanh nghiệp đang nỗ lực tìm kiếm thông tin quý giá từ khối lượng lớn dữliệuphi cấu trúc được tạo ra bởi các web log, công cụ clickstream, các sản phẩm truyềnthông xã hội
Chính yếu tố đó dẫn làm tăng sự quan tâm đến công nghệ mã nguồn mởHadoop
Hadoop, một dự án phần mềm quản lý dữ liệu Apache với nhân trong khung phầnmềm MapReduce của Google, được thiết kế để hỗ trợ các ứng dụng sử dụng được
số lượng lớn dữ liệu cấu trúc và phi cấu trúc
Không giống như các hệ quản trị cơ sở dữ liệu truyền thống, Hadoop được thiết kế
để làm việc với nhiều loại dữ liệu và dữ liệu nguồn
Công nghệ HDFS của Hadoop cho phép khối lượng lớn công việc được chia thànhcác khối dữ liệu nhỏ hơn được nhân rộng và phân phối trên các phần cứng của mộtcluster để xử lý nhanh hơn
Công nghệnày đã được sử dụng rộng rãi bởi một số trang web lớn nhất thế giới,
Trang 4Các nhà quan sát nhấn mạnh rằng Yahoo là một trong những nhà đóng góp lớn nhấtđối với Hadoop.
Một cụm Hadoop nhỏ gồm 1 master node và nhiều worker/slave node Toàn bộcụm chứa 2 lớp, một lớp MapReduce Layer và lớp kia là HDFS Layer
Mỗi lớp có các thành phần liên quan riêng Master node gồm JobTracker,TaskTracker, NameNode, và DataNode Slave/worker node gồm DataNode, vàTaskTracker Cũng có thể slave/worker node chỉ là dữ liệu hoặc node để tính toán
Hadoop framework gồm 4 module:
1 Distriduted file system (HDFS):
Trang 5
Đây là hệ thống file phân tán cung cấp truy cập thông lượng cao cho ứngdụng khai thác dữ liệu Hadoop Distributed File System (HDFS) là hệ thốngtập tin ảo
Khi chúng ta di chuyển 1 tập tin trên HDFS, nó tự động chia thành nhiềumảnh nhỏ Các đoạn nhỏ của tập tin sẽ được nhân rộng và lưu trữ trên nhiềumáy chủ khác để tăng sức chịu lỗi và tính sẵn sàng cao
HDFS sử dụng kiến trúc master/slave, trong đó master gồm một NameNode
để quản lý hệ thống file metadata và một hay nhiều slave DataNodes để lưutrữ dữ liệu thực tại
Một tập tin với định dạng HDFS được chia thành nhiều khối và những khốinày được lưu trữ trong một tập các DataNodes NameNode định nghĩa ánh
xạ từ các khối đến các DataNode Các DataNode điều hành các tác vụ đọc vàghi dữ liệu lên hệ thống file
Chúng cũng quản lý việc tạo, huỷ, và nhân rộng các khối thông qua các chỉthị từ NameNode
2 Hadoop MapReduce:
Đây là hệ thống dựa trên YARN dùng để xử lý song song các tập dữ liệu lớn
Là cách chia một vấn đề dữ liệu lớn hơn thành các đoạn nhỏ hơn và phân tán
nó trên nhiều máy chủ
Mỗi máy chủ có 1 tập tài nguyên riêng và máy chủ xử lý dữ liệu trên cục bộ.Khi máy chủ xử lý xong dữ liệu, chúng sẽ gởi trở về máy chủ chính
MapReduce gồm một single master (máy chủ) JobTracker và các slave (máytrạm) TaskTracker trên mỗi cluster-node
Master có nhiệm vụ quản lý tài nguyên, theo dõi quá trình tiêu thụ tàinguyên và lập lịch quản lý các tác vụ trên các máy trạm, theo dõi chúng vàthực thi lại các tác vụ bị lỗi
Những máy slave TaskTracker thực thi các tác vụ được master chỉ định vàcung cấp thông tin trạng thái tác vụ (task-status) để master theo dõi
Trang 6JobTracker là một điểm yếu của Hadoop Mapreduce Nếu JobTracker bị lỗithì mọi công việc liên quan sẽ bị ngắt quãng.
3 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ờichứa các mã lệnh Java để khởi động Hadoop
Mô hình Map-Reduce
Về mặt định nghĩa thuật toán, ta có thể mô tả Map-Reduce như sau:
Input: dữ liệu dưới dạng Key → Value
Trang 7IV.Hệ thống tệp phân tán Hadoop.
1. Các vấn đề Hadoop có thể giải quyết
• Hadoop có khả năng làm việc cùng với một khối lượng dữ liệu vô cùnglớn
• Hầu hết các nguồn dữ liệu đều có khả năng được xử lý trong một môitrường dạng phân tán, đồng bộ cũng như được lưu trữ tại nhiều phần cứngkhác nhau
Trang 8• Hadoop sở hữu khả năng băng thông được mọi lưu trữ giữa các phầncứng vật lý của kho dữ liệu có giới hạn cho phép Chính vì vậy, nó cầnđược quản lý cũng như nâng cấp sao cho kịp thời nhất
2. Hướng giải quyết của Hadoop
• Thực hiện nhiệm vụ quản lý các file phân tán: HDFS (Hadoop DistributedFile System) được giao nhiệm vụ chia nhỏ các kho dữ liệu thành nhiềuphần khác nhau và những dữ liệu này đều sẽ được quản lý sao cho có hệthống nhất
• Mô hình MapReduce: Đây là một trong những mô hình quen thuộc củaHadoop Nó được phân công thực hiện chia nhỏ các task thành nhiềuphần khác nhau để có thể dễ dàng xử lý hơn Những task này đều sẽ được
xử lý song song dựa trên các Node CPU khác nhau và sẽ được đồng bộvới máy chủ quản lý Master Node
V. Hadoop hoạt động như thế nào?
1 Giai đoạn 1
Một user hay một ứng dụng có thể submit một job lên Hadoop (hadoop job client)với yêu cầu xử lý cùng các thông tin cơ bản:
1. Nơi lưu (location) dữ liệu input, output trên hệ thống dữ liệu phân tán
2. Các java class ở định dạng jar chứa các dòng lệnh thực thi các hàm map
3 Giai đoạn 3
Trang 9TaskTrackers trên các node khác nhau thực thi tác vụ MapReduce và trả về kết quảoutput được lưu trong hệ thống file.
Khi “chạy Hadoop” có nghĩa là chạy một tập các trình nền – Daemon, hoặc cácchương trình thường trú, trên các máy chủ khác nhau trên mạng của bạn
Những trình nền có vai trò cụ thể, một số chỉ tồn tại trên một máy chủ, một số cóthể tồn tại trên nhiều máy chủ
Các điểm thuận lợi khi dùng Hadoop:
• Hadoop có khả năng thêm nhiều node mới và thay đổi được các cấu hìnhcủa chúng một cách dễ dàng
• Các doanh nghiệp không cần phải đầu tư quá nhiều vào phần cứng quámạnh và đặc biệt khi chạy Hadoop Nhờ vậy, bạn có thể tiết kiệm được tối
đa các chi phí đầu tư ban đầu
• Hadoop có khả năng xử lý được hầu hết những kho dữ liệu có cấu trúchoặc không có cấu trúc một cách dễ dàng
• Trong suốt quá trình hoạt động thì 1 node trên hệ thống nếu bị lỗi thì nềntảng của Hadoop sẽ có thể tự động di chuyển sang dạng node dự phòngkhác Nhờ vậy mà hệ thống sẽ có thể hoạt động xuyên suốt ổn định hơn
• Hadoop đó là mã nguồn mở, điều này giúp nó tương thích rất nhiều cấuhình và platform khác nhau
Trang 10VII. Demo cài đặt Hadoop
Vào https://hadoop.apache.org/ để tải bản hadoop
Vào https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html để tải bản Java SE Development Kit 8u201
Vào https://github.com/s911415/apache-hadoop-3.1.0-winutils để tải file cập nhật các Hadoop Configurations
Cài đặt môi trường Java
Trang 11Giải nén file Hadoop
Trang 12Cài đặt môi trường cho Hadoop
Trang 13Kiểm tra quá trình cấu hình môi trường Java và Hadoop
Trang 14Cấu hình các tập tin cho Hadoop
Trong thư mục C:/Hadoop-3.3.0/etc/hadoop lần lượt chỉnh sửa các file:
Trang 15Tạo thư mục “data” trong “C:/Hadoop-3.3.0”
Tạo thư mục con “datanode” trong “C:/Hadoop-3.3.0/data”
Tạo thư mục con “namenode” trong “C:/Hadoop-3.3.0/data”
Chép đè thư mục bin này trong thư mục bin của C:\hadoop-3.3.0\bin
Sao chép file: “C:/3.3.0/share/hadoop/yarn/timelineservice/
hadoop-yarn-server-timelineservice-3.3.0.jar” vào
“C:/hadoop-3.3.0/share/hadoop/yarn/hadoop-yarn-server-timelineservice-3.3.0.jar”
Trang 16Nếu chạy Muti Node vào C:\Windows\System32\drivers\etc thêm các
IP và tên Node master và các Slave
Trang 17VIII. HDFS là gì?
Hadoop Distributed File System (HDFS) [12] là một hệ thống file phân tánđược thiết kế để chạy trên phần cứng thông thường HDFS cũng tương tự những hệthống file phân tán hiện có Tuy nhiên, sự khác biệt ở đây là HDFS có khả năngchịu lỗi cao (fault-tolerant) và được thiết kế để deploy trên các phần cứng rẻ tiền.HDFS cung cấp khả năng truy cập high throughput từ ứng dụng và thích hợp vớicác ứng dụng có tập dữ liệu lớn
Kiến trúc của HDFS là master / slave Một HDFS cluster luôn gồm 1NameNode NameNode này là 1 master server và nó quản lý hệ thống tập tin cũngnhư điều chỉnh truy cập đến các tập tin khác nhau
Bổ sung cho NameNode có nhiều DataNodes Luôn có 1 DataNode cho mỗi máychủ dữ liệu Trong HDFS, 1 tập tin lớn được chia thành 1 hoặc nhiều khối và cáckhối này được lưu trong 1 tập các DataNodes
Tác vụ chính của NameNode là mở, đóng và đổi tên các tập tin, và thư mục và điềuchỉnh truy cập đến hệ thống tập tin, trong khi tác vụ chính của DataNode là đọc vàghi vào hệ thống tập tin DataNode cũng làm nhiệm vụ tạo, xóa, hoặc nhân rộng dữliệu dựa trên chỉ dẫn từ NameNode
Trang 18Trong thực tế, NameNode và DataNode là phần mềm được thiết kế để chạy trên
Namenode sẽ chịu trách nhiệm điều phối các thao tác truy cập (đọc/ghi dữ liệu)của client lên hệ thống HDFS Và tất nhiên, do các DataNode là nơi thật sự lưu trữcác block của các file trên HDFS, nên chúng sẽ là nơi trực tiếp đáp ứng các thaotác truy cập này
Chẳng hạn như khi client của hệ thống muốn đọc một file trên hệ thống HDFS,client này sẽ thực hiện một request (thông qua RPC) đến Namenode để lấy cácmetadata của file cần đọc
Từ Metadata này nó sẽ biết được danh sách các block của file và vị trí của cácDataNode chứa các bản sao của từng block Client sẽ truy cập vào các DataNode
để thực hiện các request đọc các block
Namenode thực hiện nhiệm vụ của nó thông qua một daemon tên namenode chạytrên port 8021 Mỗi DataNode server sẽ chạy một daemon datanode trên port 8022.Định kỳ, mỗi DataNode sẽ báo cáo cho NameNode biết về danh sách tất cả cácblock mà nó đang lưu trữ, NameNode sẽ dựa vào những thông tin này để cập nhậtlại các metadata trong nó
Cứ sau mỗi lần cập nhật lại như vậy, Metadata trên NameNode sẽ đạt được tìnhtrạng thống nhất với dữ liệu trên các DataNode Toàn bộ trạng thái của metadatakhi đang ở tình trạng thống nhất này được gọi là một checkpoint
Trang 19Metadata ở trạng thái checkpoint sẽ được dùng để nhân bản metadata dùng chomục đích phục hồi lại NameNode nếu NameNode bị lỗi.
X. Kiến trúc HDFS
Các khái niệm bạn cần nắm ở đây đó chính là master, slave, NameNode,DataNodes, cách đọc file trên HDFS, và cách ghi file trên HDFS
Trang 20Một cụm HDFS bao gồm hai loại nút (node) hoạt động theo mô hình nút chủ - nútthợ (master-worker):
Một cụm HDFS có 1 namenode (master – nút chủ)
Một cụm HDFS có một hoặc nhiều các datanode (worker - nút thợ)
Namenode quản lý các namespace filesystem Nó quản lý một filesystemtree và các metadata cho tất cả các file và thư mục trên tree Thông tin này đượclưu trữ trên đĩa vật lý dưới dạng không gian tên ảnh và nhật ký (edit log).Namenode còn quản lý thông tin các khối (block) của một tập tin được lưu trênnhững datanodes nào
HDFS đưa ra một không gian tên cho phép dữ liệu được lưu trên tập tin.Trong đó một tập tin được chia ra thành một hay nhiều khối (block) và các blockđược lưu trữ trên một tập các DataNode Namenode thực thi các hoạt động trên hệthống quản trị không gian tên tập tin như mở, đóng, đổi tên tập tin và thư mục.Namenode còn quyết định việc kết nối các khối với các DataNode Các DataNode
có tính năng xử lý các yêu cầu về đọc ghi từ máy khách Ngoài ra các DataNodecòn thực hiện việc tạo, xóa, lặp các khối theo sự hướng dẫn của DataNode
Trang 21Một phần mềm được thiết kế bao gồm NameNode và DataNode có thể chaytrên những máy tính thông thường Yêu cầu duy nhất chỉ là chạy hệ điều hànhGNU/Linux HDFS được xây dựng trên ngôn ngữ Java nên bất kỳ máy nào hỗ trợJava đều có thể chạy phần mềm thực thi NameNode và DataNode.
XI. Đọc ghi dữ file trên HDFS
1 Đọc dữ liệu
Với khối dữ liệu (block) ID và địa chỉ IP đích máy chủ (host) củaDatanode, máy khách (client) có thể liên lạc với các Datanode còn lại để đọccác khối (block) cần thiết Quá trình này lặp lại cho đến khi tất cả các khốitrong file được đọc và máy khách đóng luồng đọc file trực tuyến
Trang 222 Ghi file trên HDFS
Việc ghi dữ liệu sẽ phức tạp hơn việc đọc dữ liệu đối với hệ thống HDFS.Ban đầu,máy khách gửi yêu cầu đển tạo một file bằng việc sử dụng Hadoop FileSystemAPIs Một yêu cầu được gửi đến namenode để tạo tập tin metadata nếu user cóquyền tạo Thông tin Metadata cho tập tin mới đã được tạo; tuy nhiên lúc này chưa
có một block nào liên kết với tập này Một tiến trình trả kết quả được gửi lại chomáy khách xác nhận yêu cầu tạo file đã hoàn thành và bắt đầu có thể ghi dữ liệu Ởmức API, một đối tượng Java là stream sẽ trả về Dữ liệu của máy khách sẽ ghi vàoluồng này và được chia ra thành các gói, lưu trong queue của bộ nhớ Một tiếntrình riêng biệt sẽ liên hệ với namenode để yêu cầu một tập datanode phục vụ choviệc sao lưu dữ liệu vào các khối (block) Máy khách sẽ tạo một kết nối trực tiếpđến datanode đầu tiên trong danh sách Datanode đầu tiên đó sẽ kết nối lần lượtđến các datanode khác Các gói dữ liệu được ghi dần vào các datanode Mỗi
Trang 23datanode sẽ phản hồi dữ liệu ghi thành công hay không Quá trình này kết thúc khitoàn bộ các gói dữ liệu đã được lưu tại các khối (block) của datanode