+ Big data có thể được thu thập từ các nguồn chia sẻ công khai trên các mạng xã hội và trang web, thu thập từ các ứng dụng và điện tử cá nhân, đặc biệt là từcác loại log, nhật ký ghi lại
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HCM
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO MÔN HỌC: HỆ PHÂN BỐ GVHD: NGUYỄN THIÊN BẢO
Nhóm 1:
Học kỳ: II – Năm học: 2021 – 2022
1
Trang 26.2 Các tính năng và chức năng của Hadoop YARN 146.3 Các thành phần chính của Hadoop YARN 15
2
Trang 37.1 What is ZooKeeper? 17
7.3 Apache Zookeeper Architecture 18
3
Trang 41 Big data
Định nghĩa: What is big data?
+ Big data là một số lượng lớn thông tin đa dạng đến trong việc tăng khốilượng và với vận tốc trị giá hơn bao giờ hết
+ Big data có thể được cấu trúc (thường là số, dễ dàng định dạng và lưu trữ)hoặc không cấu trúc (dạng tự do hơn, ít định lượng hơn) Gần như mọi bộ phậntrong một công ty có thể sử dụng những phát hiện từ phân tích big data, nhưngnhững vấn đề từ sự lộn xộn và noise gây ra nhiều vấn đề
+ Big data có thể được thu thập từ các nguồn chia sẻ công khai trên các mạng
xã hội và trang web, thu thập từ các ứng dụng và điện tử cá nhân, đặc biệt là từcác loại log, nhật ký ghi lại hành trình từ xe cộ, camera, …
+ Big data thường được lưu trữ trong cơ sở dữ liệu máy tính và được phân tíchbằng phần mềm được thiết kế đặc biệt để xử lý các bộ big data, phức tạp
The three Vs of big data:
+ Volume: Với big data, bạn sẽ phải xử lý khối lượng cao của mật độ thấp (phitập trung - bao nhiêu thông tin có thể được lưu trữ trong một lượng không gianlưu trữ cụ thể), dữ liệu không cấu trúc Đây có thể là dữ liệu của giá trị khôngxác định, chẳng hạn như nguồn cấp dữ liệu Twitter, click Streams trên trangweb hoặc ứng dụng di động hoặc thiết bị hỗ trợ cảm biến Đối với một số tổchức, đây có thể là hàng chục Terabyte dữ liệu hoặc hàng trăm petabyte
+ Velocity: là tốc độ mà dữ liệu được ghi Thông thường, vận tốc cao nhất củacác data stream vào bộ nhớ (RAM) so với được ghi vào đĩa Một số sản phẩmthông minh hỗ trợ Internet hoạt động trong thời gian thực hoặc gần thời gianthực và sẽ yêu cầu đánh giá và hành động thời gian thực
4
Trang 5+ Variety: đề cập đến nhiều loại dữ liệu có sẵn Các kiểu dữ liệu truyền thốngđược cấu trúc và phù hợp gọn gàng trong cơ sở dữ liệu quan hệ Với sự giatăng của big data, dữ liệu đi kèm trong các loại dữ liệu phi cấu trúc mới Cácloại dữ liệu phi cấu trúc và bán kết, như văn bản, âm thanh và video, yêu cầutiền xử lý bổ sung để lấy ý nghĩa và hỗ trợ siêu dữ liệu.
What are the requirements for Big Data?
+ File Storage: Mất bao lâu (Velocity) để business user truy xuất data từ cácdata center lưu trữ dữ liệu Các yếu tố ảnh hưởng đến Velocity không chỉ từphần cứng mà còn là phần mềm tối ưu như thế nào để đảm bảo độ trễ thấp nhất.+ Database System: Quá trình bảo quản và lưu trữ dữ liệu cần được đảm bảo đểtránh mất mát và hư hỏng dữ liệu
+ Data processing tools: Dữ liệu có cấu trúc và phi cấu trúc đòi hỏi mức độ xử
lý khác nhau Các tính năng xử lý dữ liệu liên quan đến việc thu thập và tổchức dữ liệu thô để cung cấp ý nghĩa nhất định Mô hình hóa dữ liệu sẽ thựchiện các tập dữ liệu phức tạp và hiển thị chúng trong một sơ đồ trực quan hoặcbiểu đồ Điều này làm cho nó dễ hiểu và dễ diễn giải cho người dùng đang cốgắng sử dụng dữ liệu đó để phục vụ cho mục đích công việc
+ Analytics: Các công cụ phân tích Dữ liệu lớn cung cấp nhiều gói và mô-đunphân tích để cung cấp cho người dùng các tùy chọn Ví dụ, phân tích rủi ro lànghiên cứu về sự không chắc chắn xung quanh bất kỳ hành động nào Nó cóthể được sử dụng kết hợp với dự báo để giảm thiểu các tác động tiêu cực củacác sự kiện trong tương lai Phân tích rủi ro cho phép người dùng giảm thiểunhững rủi ro này bằng cách xác định rõ ràng và hiểu được khả năng chịu đựng
và tiếp xúc với rủi ro của tổ chức
2 Tổng quan về Hadoop
- Hadoop là gì?
5
Trang 6Hadoop là một mã nguồn mở
Apache được viết bằng Java cho phép
xử lý phân tán các tập dữ liệu lớn trên
các cụm máy tính (clusters) bằng cách
sử dụng các mô hình lập trình đơn
giản
Ứng dụng trên Framework Hadoop
hoạt động trong một môi trường cung
cấp khả năng lưu trữ và tính toán phân
tán trên các cụm máy tính Hadoop
được thiết kế để mở rộng quy mô từ
máy chủ đơn lẻ lên hàng nghìn máy,
mỗi máy đều cung cấp khả năng tính
toán và lưu trữ cục bộ
- Lịch sử phát triển:
Hadoop được ra đời lần đầu
vào năm 2002 khi Doug Cutting và
Mike Cafarella đang nghiên cứu dự
án Apache Nutch, để giảm chi phí
thực hiện cũng như vấn đề lưu trữ
và xử lý các tập dữ liệu lớn
Cho tới 11/2011, Apache
Software Foundation đã phát hành
Apache Hadoop phiên bản 1.0
Tiếp theo vào 8/2013, Phiên
Trang 73 Hadoop và những vấn đề của Big Data
Hadoop giải quyết vấn đề Big Data bằng cách sử dụng khái niệm HDFS(Hadoop Distributed File System) Hadoop giải quyết bằng cách lưu trữ dữ liệu ởdạng phân tán trong các máy khác nhau Có rất nhiều dữ liệu nhưng dữ liệu đó phảiđược lưu trữ theo cách tiết kiệm chi phí và xử lý nó một cách hiệu quả
- Hadoop được xây dựng để chạy trên một nhóm máy:
Giả sử rằng chúng ta cần lưu trữ nhiều ảnh Chúng ta sẽ bắt đầu với một đĩa duy nhất.Khi vượt quá một đĩa đơn, chúng ta có thể sử dụng một vài đĩa xếp chồng lên nhautrên một máy Khi tối đa hóa tất cả các đĩa trên một máy, chúng ta cần nhận được mộtloạt các máy, mỗi máy có một loạt đĩa
Đây chính xác là cách Hadoop được xây dựng Hadoop được thiết kế để chạy trên mộtnhóm máy ngay từ đầu
- Các cụm Hadoop chia tỷ lệ theo chiều ngang:
Có thể đạt được nhiều khả năng lưu trữ và tính toán hơn bằng cách thêm nhiều núthơn vào một cụm Hadoop Điều này giúp loại bỏ nhu cầu mua ngày càng nhiều phầncứng mạnh mẽ và đắt tiền
- Hadoop có thể xử lý dữ liệu phi cấu trúc / bán cấu trúc:
Hadoop không thực thi một lược đồ trên dữ liệu mà nó lưu trữ Nó có thể xử lý vănbản và dữ liệu nhị phân tùy ý Vì vậy, Hadoop có thể tiêu hóa mọi dữ liệu phi cấu trúcmột cách dễ dàng
- Các cụm Hadoop cung cấp khả năng lưu trữ và tính toán:
Trang 8Chúng tôi đã thấy việc có các cụm xử lý và lưu trữ riêng biệt không phải là cách phùhợp nhất cho dữ liệu lớn Tuy nhiên, các cụm Hadoop cung cấp khả năng lưu trữ vàtính toán phân tán tất cả trong một
3.1 Lưu trữ: HDFS (Hadoop Distributed File System)
Là hệ thống lưu trữ dữ liệu chính được các ứng dụng Hadoop sử dụng
HDFS sử dụng kiến trúc NameNode và DataNode để triển khai hệ thống tệp phân táncung cấp quyền truy cập hiệu suất cao vào dữ liệu trên các cụm Hadoop có khả năng
mở rộng cao
Bản thân Hadoop là một khung xử lý phân tán mã nguồn mở quản lý quá trình
xử lý và lưu trữ dữ liệu cho các ứng dụng dữ liệu lớn HDFS là một phần quan trọngcủa nhiều công nghệ hệ sinh thái Hadoop Nó cung cấp một phương tiện đáng tin cậy
để quản lý nhóm dữ liệu lớn và hỗ trợ các ứng dụng phân tích dữ liệu lớn liên quan
HDFS có kiến trúc chủ / tớ (master/slave) Một cụm HDFS bao gồm mộtNamenode duy nhất, một máy chủ chính quản lý không gian tên hệ thống tệp và điềuchỉnh quyền truy cập vào tệp của máy khách Ngoài ra, có một số DataNodes, thường
là một trên mỗi nút trong cluster, quản lý lưu trữ gắn với các nút mà chúng chạy trên
đó
HDFS để lộ không gian tên hệ thống tệp và cho phép dữ liệu người dùng đượclưu trữ trong tệp Trong nội bộ, một tệp được chia thành một hoặc nhiều khối và cáckhối này được lưu trữ trong một tập hợp các Mã dữ liệu NameNode thực thi các hoạtđộng không gian tên của hệ thống tệp như mở, đóng và đổi tên tệp và thư mục Nócũng xác định ánh xạ của các khối (block) tới DataNodes Các DataNodes chịu tráchnhiệm cung cấp các yêu cầu đọc và ghi từ các máy khách của hệ thống tệp Các
Trang 9DataNodes cũng thực hiện việc tạo, xóa và sao chép khối theo hướng dẫn từNameNode.
YARN (Yet-Another-Resource-Negotiator) là một framework hỗ trợ phát triểnứng dụng phân tán 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ý và lập lịch sử dụng tài nguyên tính toán (CPU haymemory) cũng như giám sát quá trình thực thi các ứng dụng đó
Bên trong YARN, chúng ta có hai trình quản lý ResourceManager và NodeManage
ResourceManager: Quản lý toàn bộ tài nguyên tính toán của cluster
NodeManger: Giám sát việc sử dụng tài nguyên của container và báo cáo vớiResourceManger Các tài nguyên ở đây là CPU, memory, disk, network,…
Quá trình 1 ứng dụng chạy trên YARN được mô tả bằng sơ đồ trên qua các bước sau:
Client giao 1 task cho Resource Manager
Resource Manager tính toán tài nguyên cần thiết theo yêu cầu của ứng dụng vàtạo 1 App Master (App Mstr) Application Master được chuyển đến chạy 1 mộtnode tính toán Application Master sẽ liên lạc với các NodeManager ở các nodekhác để ra yêu cầu công việc cho node này
Node Manager nhận yêu cầu và chạy các task trên container
Trang 10 Các thông tin trạng thái thay vì được gửi đến JobTracker sẽ được gửi đến AppMaster.
ResourceManger có hai thành phần quan trọng đó là Scheduler và ApplicationManager
Scheduler có trách nhiệm phân bổ tài nguyên cho các ứng dụng khác nhau Đây làScheduler thuần túy vì nó không thực hiện theo dõi trạng thái cho ứng dụng Nó cũngkhông sắp xếp lại các tác vụ bị lỗi do lỗi phần cứng hoặc phần mềm Bộ lập lịch phân
bổ các tài nguyên dựa trên các yêu cầu của ứng dụng
ApplicationManager có chức năng sau:
Chấp nhận nộp công việc
Đàm phán container đầu tiên để thực thi ApplicationMaster Một nơi chứa kếthợp các yếu tố như CPU, bộ nhớ, đĩa và mạng
Khởi động lại container ApplicationMaster khi không thành công
Chúng ta có thể mở rộng YARN ngoài một vài nghìn node thông qua tính năng YARNFederation Tính năng này cho phép chúng ta buộc nhiều cụm YARN thành một cụmlớ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
Zookeeper : Trong các ứng dụng phân tán, ta phải đối mặt với những thách
thức lớn như sự không nhất quán về dữ liệu và không có được sự đồng thuận (thỏathuận chung) Vì tất cả các hệ thống phân tán đều phải đối phó với việc duy trì tínhnhất quán nên cần phải nỗ lực rất nhiều để vượt qua những thách thức trong tính toánphân tán Zookeeper cung cấp dịch vụ tập trung duy trì thông tin cấu hình, DNS vàcung cấp đồng bộ hóa phân tán
Để có được tính khả dụng cao, nhiều máy chủ Zookeeper có thể được sử dụng thay vìmột máy chủ Khi có nhiều máy chủ Zookeeper, nó được gọi là Ensemble Trong tổngthể, tất cả các máy chủ Zookeeper đều lưu trữ một bản sao dữ liệu Dữ liệu đang đượcsao chép qua các máy chủ trong tổ hợp để đảm bảo dữ liệu có sẵn cao
Các máy chủ trong nhóm phải biết về nhau Mỗi máy chủ duy trì một hình ảnh trạngthái trong bộ nhớ, cùng với nhật ký giao dịch trong một kho lưu trữ liên tục Miễn làphần lớn các máy chủ có sẵn, dịch vụ Zookeeper sẽ khả dụng Hãy xem xét một nhómZookeeper có năm máy chủ Dịch vụ Zookeeper có sẵn miễn là ba trong số năm máychủ hoạt động tốt
Hơn nữa, một người lãnh đạo cho nhóm được bầu chọn bằng cách sử dụng công thứcbầu cử người lãnh đạo
Trang 113.3 Data processing tools: Map Reduce, Pig, Hive, Spark
+ MapReduce: MapReduce là một kỹ thuật tính toán dựa trên Java và rất hữuích cho tính toán phân tán Nó bao gồm 2 hoạt động chính là Map và Reduces Quátrình Map lấy một tập dữ liệu và chuyển đổi nó thành một tập dữ liệu khác trong khichia nhỏ các phần tử riêng lẻ thành các bộ dữ liệu Sau đó, quy trình Reduce sẽ lấyđầu ra của quy trình Map và hợp nhất các bộ dữ liệu đó thành một bộ nhỏ các bộ giátrị
Kỹ thuật MapReduce có thể xử lý hàng ngàn petabyte dữ liệu ở tốc độ cao.Người dùng triển khai mô hình này để chia dữ liệu hiện có trên Máy chủ Sản phẩmHadoop thành các phần nhỏ hơn (chunk) Sau cùng, tất cả dữ liệu này được tổng hợpdưới dạng kết quả cuối cùng
+ Pig: Apache Pig là một công cụ luồng dữ liệu bậc cao để phân tích các tập dữliệu lớn Pig Latin là ngôn ngữ được sử dụng cho công cụ này Pig có thể chạy cáccông việc Hadoop trong MapReduce, Tez hoặc Spark Pig chuyển đổi các truy vấnsang MapReduce bên trong để tránh phải học cách viết các chương trình Java phứctạp Vì vậy, Pig giúp các lập trình viên chạy các truy vấn dễ dàng hơn rất nhiều
Nó có thể xử lý dữ liệu có cấu trúc, bán cấu trúc và phi cấu trúc Pig có thểtrích xuất, chuyển đổi và tải dữ liệu vào HDFS
Trang 12+ Hive: Apache Hive là một kho dữ liệu phân tán cho phép truy vấn và quản lýcác tập dữ liệu lớn Các tập dữ liệu này có thể được truy vấn bằng cú pháp SQL Hivecung cấp quyền truy cập vào các tệp trong HDFS hoặc các hệ thống lưu trữ khác nhưHBase Hive hỗ trợ ngôn ngữ truy vấn HiveQL, ngôn ngữ này chuyển đổi các truy vấngiống SQL thành DAG của MapReduce, Tez và Spark.
Hive tuân theo mô hình 'schema on read' Điều này có nghĩa là, nó chỉ tải dữliệu mà không cần thực thi lược đồ trước Quá trình nhập dữ liệu nhanh hơn vì nókhông phải trải qua các chuyển đổi nghiêm ngặt Nhưng vấn đề là hiệu suất truy vấnchậm hơn Không giống như HBase phù hợp hơn với xử lý thời gian thực, Hive hướngđến xử lý hàng loạt
+ Spark: Apache Spark là một công cụ phân tích hợp nhất để xử lý dữ liệu lớn
và cho các ứng dụng máy học Đây là dự án xử lý dữ liệu mã nguồn mở lớn nhất và đãđược áp dụng rất rộng rãi
Mặc dù Hadoop là một công cụ tuyệt vời để xử lý dữ liệu lớn, nhưng nó dựavào dung lượng lưu trữ trên ổ đĩa khiến nó trở nên chậm chạp Điều này làm cho việcphân tích dữ liệu tương tác trở thành một nhiệm vụ khó khăn Mặt khác, Spark xử lýtrong bộ nhớ nhanh hơn gấp nhiều lần
Cấu trúc dữ liệu RDD (Resilient Distributed Dataset) của Spark giúp phân phối
dữ liệu trên bộ nhớ của nhiều máy Spark cũng hỗ trợ một số công cụ bao gồm SparkSQL, MLib (dành cho máy học) và GraphX (để xử lý đồ thị)
4 HDFS:
4.1 What is HDFS?
HDFS – Hadoop Distrbuted File System là một hệ thống lưu trữ phân tán chínhđược dùng bởi Hadoop Nó cung cấp truy cập hiệu suất cao đến các dữ liệu trên cụmApache Hadoop HDFS giúp cho một cụm Hadoop có thể mở rộng lên hàng trăm(thậm chí hàng ngàn) node
Một hệ thống lưu trữ HDFS được xây dựng dựa trên 3 nguyên tắc sau:
+ Extremely large files
+ Streaming Data Access Pattern
+ Commodity hardware
4.2 Why is HDFS?
Trang 13Các cụm Hadoop thường được triển khai trên các phần cứng có chi phí thấp nêncác máy chủ này rất dễ xảy ra lỗi phần cứng Với tốc độ truyền dữ liệu giữa các nodetrong HDFS rất cao giúp giảm thiểu nguy cơ lỗi nên HDFS đã được xây dựng vàocụm Hadoop để có khả năng chịu lỗi cao.
4.3 HDFS idea
4.3.1 HDFS file block:
- HDFS cung cấp cơ chế lưu trữ phân tán trên nhiều máy tính để lưu trữ các file lớn, nó lưu mỗi file dưới dạng chuỗi các block có kích thước mặc định là 128MB
- Tất cả các thông tin về block đều được lưu trữ trog metadata của NameNode
4.3.2 Replication:
Để cung cấp khả năng chịu lỗi HDFS sử dụng kỹ thuật replication Trong đó, nó tạocác bản sao của các block và lưu trữ trên các DataNodes khác nhau Hệ số sao chépquyết định số lượng bản sao của các block được lưu trữ Nó là 3 theo mặc định nhưngchúng ta có thể cấu hình thành bất kỳ giá trị nào
Trang 144.4 HDFS architecture
Trang 15HDFS là một hệ thống có kiến trúc Master-slave Những thành phần chính củamột cụm gồm:
- Namenode (Master node)
Namenode là thành phần trung tâm của hệ thống HDFS đóng vai trò là Master node
Là nơi lưu trữ thông tin metadata của cum, bao gồm như vị trí, số lượng block củafile, quyền truy cập vào file đó NameNode là nơi tiếp nhận đọc ghi từ client và điềuphối hoạt động của cụm
+ Metadata trong NameNode được lưu trữ trong 2 file:
FSImage: Filesystem image lưu trữ metadata của NameNode từ khi khởi tạo
EditLogs: Chứa thông tin các thay đổi gần đây nhất của cụm chưa có trong FSImage.+ Một số chức năng của Namenode:
Xử lý các tác vụ hệ thống như đóng, mở và đổi tên cho các tập tin, thư mục.Quản lý và duy trì các DataNodes
Trang 16Xác định các ánh xạ của một tệp tin tới các DataNode.
Lưu trữ vị trí các block của một tệp tin
+ NameNode sẽ tiếp nhận các tín hiệu từ các DataNode để đảm bảo DataNode cònsống
+ Nếu một DataNode chết thì NameNode sẽ tìm một DataNode mới để thực hiện chứcnăng Replicas (nhân bản)
+ Một số chức năng của DataNodes:
DataNode chịu trách nhiệm tiếp nhận các yêu cầu đọc, ghi từ khách hàng
DataNode thực hiện việc khởi tạo các block, nhân bản và xóa các block
Các DataNode gửi tín hiệu về cho DataNode để xác nhận tình trạng củaDataNode
Gửi thông tin về các block mà DataNode đang chứa cho NameNode
4.5 Recovery
- Replica States and Transitions:
Trang 17+ Finalized Replica:
Khi một bản sao ở trạng thái hoàn thiện, điều đó có nghĩa là nội dung của nó đã
bị frozen 'Frozen' có nghĩa là thông tin meta cho khối này phù hợp với các trạng thái
và dữ liệu của các bản sao tương ứng của nó Điều này có nghĩa là bạn có thể đọc dữliệu một cách an toàn từ bất kỳ datanode và nhận được cùng một nội dung chính xác,duy trì tính nhất quán của việc đọc Mỗi khối dữ liệu có một số phiên bản được gọi làGeneration Stamp (GS) Các bản sao hoàn thiện được đảm bảo rằng tất cả đều có cùng
số GS
+ Replica Being Written to (RBW):
Ở trạng thái này, khối cuối cùng của tệp được mở hoặc mở lại để thêm vào Cácbyte được ghi nhận bởi các Datanode hạ lưu trong một pipeline sẽ hiển thị cho ngườiđọc bản sao này Ngoài ra, thông tin meta của Datanode và NameNode có thể khôngkhớp trong trạng thái này Trong trường hợp không thành công, nút dữ liệu sẽ cố gắngbảo toàn càng nhiều byte càng tốt với mục tiêu là độ bền của dữ liệu
+ Replica Waiting to be Recovered (RWR):