Giới thiệu Ngày này việc các cơ sở dữ liệu ngày càng khổng lồ kéo theo đó là việc lưu trữ, thao tác và tính toándựa trên lượng dữ liệu đó cũng phải phát triển theo để có thể thích ứng..
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Trang 2Mục lục
Mục lục 2
Chương 1: Mở đầu 3
I Giới thiệu 3
II Big Data 3
III Apache Hadoop 5
Chương 2: HDFS 10
I) Cách NameNode quản lý siêu dữ liệu 10
II) Sập DataNode và cơ chế sao chép 11
III) Rack Awareness trong HDFS 12
IV) Cơ chế kiểm tra Checksum 13
V) Kiến trúc HDFS 14
VI) Cơ chế đọc của HDFS 15
VII) Cơ chế viết của HDFS 16
VIII) Advantages: 17
Chương 3: So sánh với các nền tảng tương tự 18
I) HDFS và Google Bigquery 18
II) HDFS và Ceph 19
Demo HDFS 21
I) Cài đặt Hadoop 21
II) Các thao tác với cơ sở dữ liệu 27
Tài liệu tham khảo 28
Trang 3Chương 1: Mở đầu
I Giới thiệu
Ngày này việc các cơ sở dữ liệu ngày càng khổng lồ kéo theo đó là việc lưu trữ, thao tác và tính toándựa trên lượng dữ liệu đó cũng phải phát triển theo để có thể thích ứng Việc xử lý những dữ liệu nàykhông chỉ còn là việc đọc và đưa ra kết quả đơn thuần mà còn yêu cầu hiệu quả và nhanh chóng, nhậnthấy nhu cầu đó, các công ty, tập đoàn lớn đã cung nhiều nhiều công cụ để thao tác với “Dữ liệu lớn”(Big Data) có thể kể đến như Amazon EMR (Elastic MapReduce) của Amazon, IBM InfoSphereBigInsights của IBM, Google Cloud Dataflow của Google, Trong giới hạn bài báo cáo này thì chúng
ta sẽ chỉ tìm hiểu về Apache Hadoop
II Big Data
Ngày nay, dữ liệu được sản sinh ngày càng nhiều và phức tạp, các nhà nghiên cứu ước tính cótới 328,77 triệu terabytes dữ liệu được tạo ra mỗi ngày và con số trên đang không ngừngtăng Dữ liệu đến từ mọi nơi như điện thoại, máy tính và các loại thiết bị IoT, dưới mọi kiểuhình thức từ văn bản, âm thanh tới hình ảnh Tập dữ liệu khổng lồ và phức tạp trên thườngđược biết đến với tên gọi là “Big data” Đó là khái niệm thu thập những hiểu biết hữu ích từlượng lớn dữ liệu có cấu trúc, bán cấu trúc và phi cấu trúc có thể được sử dụng để ra quyếtđịnh hiệu quả trong môi trường kinh doanh Big data là dữ liệu có 3 đặc trưng quan trọng sau:
● Độ đa dạng: các kiểu dữ liệu khác nhau, thường là phi cấu trúc
● Dung lượng tăng dần: trong big data, ta cần phải xử lý lượng lớn dữ liệu phân tán vàphi cấu trúc
● Tốc độ ngày càng cao: tốc độ ở đây là tốc độ dữ liệu tới hệ thống và tốc độ nó cầnđược xử lý tại đó
Ngoài ra còn có 2 đặc trưng khác mới được quan tâm tới gần đây là:
● Giá trị: dữ liệu luôn có giá trị nhưng cách tận dụng giá trị đó có thể khác nhau
● Tính xác thực: độ tin cậy của dữ liệu
Do các đặc trưng nói trên mà dữ liệu rất khó quản lý bằng các công cụ cơ sở dữ liệu truyềnthống Trọng tâm của các kỹ thuật Big Data là lưu trữ và sử dụng dữ liệu một cách hiệu quả.Một số ứng dụng của Big Data có thể kể tới bao gồm:
● Phát triển sản phẩm theo nhu cầu, thị yếu của người dùng bằng cách sử dụng dữ liệutrong quá khứ về các mối quan tâm, thói quen của người dùng
● Bảo trì hệ thống thiết bị bằng cách dự đoán các sự cố cơ khí bằng cách sử dụng dữliệu nhật kí của thiết bị, dữ liệu cảm biến, thông điệp báo lỗi hay nhiệt độ thiết bị
● Học máy hiện giờ đang là một công nghệ đang phát triển vô cùng mạnh mẽ và bigdata chính là nền tảng cho sự phát triển đó
Trang 4Mặc dù Big Data có rất nhiều tiềm năng, thử thách cũng đi cùng với chúng Big Data là vôcùng lớn, mặc dù các kỹ thuật công nghệ mới đang được phát triển liên tục, lượng thông tinđược ước tính tăng gấp đôi mỗi hai năm do vậy các tổ chức gặp khá nhiều khó khăn để bắtkịp với nó Việc lưu trữ dữ liệu cũng phải mang tính chọn lọc dựa theo mức độ hữu dụng của
dữ liệu đó với người dùng Để giải quyết những vấn đề nói trên, một trong những giải phápphổ biến là sử dụng công nghệ Apache Hadoop
III Apache Hadoop
A Giải pháp của Hadoop:
Hadoop là một framework sử dụng kỹ thuật lưu trữ phân tán và xử lý song song để lưu trữ vàquản lý dữ liệu lớn Nó là phần mềm được sử dụng nhiều nhất bởi các nhà phân tích dữ liệu
để xử lý dữ liệu lớn, và kích thước thị trường của nó vẫn tiếp tục tăng trưởng Hadoop baogồm ba thành phần chính: Hadoop Distributed File System (HDFS) là đơn vị lưu trữ, HadoopMapReduce là đơn vị xử lý và Hadoop YARN là đơn vị xử lý tài nguyên
Vậy lưu trữ phân tán và xử lý song song là như thế nào? Trước đây khi dữ liệu còn hạn chếviệc lưu trữ và xử lý dữ liệu được thực hiện bởi một đơn vị xử lý dữ liệu và một bộ lưu trữduy nhất, trong khi đó với lượng dữ liệu lớn và đa dạng như hiện nay thì chỉ một đơn vị xử lý
dữ liệu là không đủ, cần đến nhiều bộ xử lý chạy song song với các đơn vị lưu trữ được phânchia cho từng bộ
Trang 5- Hadoop hỗ trợ phân tích thời gian thực và tải công việc lịch sử, tăng cường quá trình
ra quyết định vận hành và phân tích thời gian thực
- Dữ liệu có thể được lưu trữ bởi các tổ chức và có thể được lọc cho các mục đích phântích cụ thể khi cần
- Một số lượng lớn các nút có thể được thêm vào Hadoop vì nó có tính mở rộng, do đócác tổ chức có thể thu thập nhiều dữ liệu hơn
- Cơ chế bảo vệ ngăn các ứng dụng và quá trình xử lý dữ liệu bị ảnh hưởng bởi sự cốphần cứng Các nút bị ngừng hoạt động sẽ được tự động chuyển hướng đến các nútkhác, cho phép các ứng dụng hoạt động mà không bị gián đoạn
Đặc điểm của HDFS:
● Cung cấp lưu trữ phân tán
● Có thể được thực hiện trên phần cứng hàng hóa
● Cung cấp bảo mật dữ liệu
Trang 6Một cụm HDFS được cấu thành nên bởi các master node và slave nodes, name node chính làmaster và các data nodes là slaves.
Name node chịu trách nhiệm về hoạt động của các nút dữ liệu Nó cũng lưu trữ siêu dữ liệu(meta data)
Các nút dữ liệu đọc, ghi, xử lý và sao chép dữ liệu Chúng cũng gửi tín hiệu, được gọi là nhịptim, đến nút tên Những nhịp tim này hiển thị trạng thái của nút dữ liệu
Hãy xem xét rằng 30TB dữ liệu được tải vào nút tên Name node phân phối nó trên các nút
dữ liệu và dữ liệu này được sao chép giữa các ghi chú dữ liệu Bạn có thể thấy trong hình trênrằng dữ liệu màu xanh lam, xám và đỏ được sao chép giữa ba nút dữ liệu
Việc sao chép dữ liệu được thực hiện ba lần theo mặc định Nó được thực hiện theo cách này,
vì vậy nếu máy thông thường bị lỗi, bạn có thể thay thế nó bằng một máy mới có cùng dữliệu
Trang 7b Hadoop MapReduce
Hadoop MapReduce là đơn vị xử lý của Hadoop Trong phương pháp MapReduce, quá trình
xử lý được thực hiện tại các nút phụ và kết quả cuối cùng được gửi đến nút chính
Theo phương pháp truyền thống thì dữ liệu sẽ được gửi từ các Slave Nodes đến MasterNodes để tổng hợp và xử lý Trong khi đó thì ở Hadoop MapReduce, dữ liệu sẽ được xử lýtheo cách song song tại mỗi DataNodes trước khi được gửi đến MasterNode để tổng hợp Đó
là lý do tại sao MapReduce có thể xử lý một lượng lớn dữ liệu một cách “song song và phânphối” (parallel and distributed)
Dữ liệu chứa mã được sử dụng để xử lý toàn bộ dữ liệu Dữ liệu được mã hóa này thường rấtnhỏ so với chính dữ liệu đó Bạn chỉ cần gửi mã có giá trị vài kilobyte để thực hiện quy trìnhnặng trên máy tính
MapReduce bao gồm hai giai đoạn như chính tên gọi của nó là Map và Reduce:
- Ở giai đoạn Map, dữ liệu đầu vào sẽ được chia thành các mảnh nhỏ hơn và xử lý mộtcách độc lập bởi nhiều worker nodes (hay chính là slave nodes) một cách song song.Mỗi worker node áp dụng một hàm map vào dữ liệu đầu vào và tạo ra một cặp khóakey-value làm giá trị đầu ra
- Dữ liệu đầu ra của giai đoạn Map được trộn và sắp xếp sau đó kết quả sẽ tiến vào giaiđoạn Reduce Trong giai đoạn Reduce, cặp khóa key-value được tạo ra ở giai đoạnMap được nhóm lại theo khóa (key) và hàm reduce sẽ được áp dụng cho mỗi nhóm đểtạo ra kết quả cuối cùng
Trong ví dụ này, dữ liệu đầu vào có ba dòng văn bản với ba thực thể riêng biệt - “tàu xebuýt”, “tàu tàu thủy”, “xe buýt tàu thủy” Sau đó, tập dữ liệu được chia thành ba phần, dựatrên các thực thể này và được xử lý song song
Trong giai đoạn lập bản đồ, dữ liệu được gán một khóa và giá trị là 1 Trong trường hợp này,chúng ta có một xe buýt, một ô tô, một con tàu và một chuyến tàu
Các cặp khóa-giá trị này sau đó được xáo trộn và sắp xếp cùng nhau dựa trên khóa của chúng
Ở giai đoạn rút gọn, quá trình tổng hợp diễn ra và thu được đầu ra cuối cùng
Trang 8Trong phần node, mỗi node đều có node managers Những node managers này quản lý cácnút và giám sát việc sử dụng tài nguyên trong node Các container chứa một tập hợp các tàinguyên vật lý, có thể là RAM, CPU hoặc ổ cứng Bất cứ khi nào có yêu cầu công việc, appmaster sẽ yêu cầu container từ node managers Sau khi trình node managers nhận được tàinguyên, nó sẽ quay trở lại Resource Manager.
D Cơ chế hoạt động của Hadoop:
Chức năng chính của Hadoop là xử lý dữ liệu một cách có tổ chức giữa cụm phần mềmthương mại Khách hàng nên gửi dữ liệu hoặc chương trình cần được xử lý Hadoop HDFSlưu trữ dữ liệu YARN, MapReduce phân chia tài nguyên và phân công nhiệm vụ cho dữ liệu.Hãy tìm hiểu chi tiết hoạt động của Hadoop
● Dữ liệu đầu vào của máy khách được HDFS chia thành các khối 128 MB Các khốiđược sao chép theo hệ số sao chép: các DataNode khác nhau chứa các liên kết và cácbản sao của chúng
● Người dùng có thể xử lý dữ liệu sau khi tất cả các khối đã được đặt trên DataNodesHDFS
● Máy khách gửi chương trình MapReduce cho Hadoop để xử lý dữ liệu
● Sau đó, phần mềm do người dùng gửi được ResourceManager lên lịch trên các cụmnodes cụ thể
● Kết quả được ghi lại vào HDFS sau khi tất cả các nút xử lý đã hoàn tất
Trang 9Chương 2: HDFS
I) Cách NameNode quản lý siêu dữ liệu
NameNode lưu metadata và để quản lý metadata, NameNode duy trì 2 cấu trúc dữ liệu chính
là không gian tên (Namespace) và bản đồ khối (BlockMap)
Namespace là một cấu trúc cây phân cấp đại diện cho cấu trúc thư mục của hệ thống tệp Mỗinode trong cây đại diện cho một tệp hoặc một thư mục Mỗi node thư mục chứa một danhsách các nodes con, trong khi mỗi node tệp chứa thông tin như tên tệp, chủ sở hữu, quyềntruy cập và thời gian sửa đổi
BlockMap là một ánh xạ của các khối dữ liệu tới các DataNodes lưu trữ các khối Nó chứathông tin về việc DataNodes nào giữ các bản sao của từng khối và bản sao nào được coi làhợp lệ
Như đã nói ở trên thì NameNode lưu trữ metadata, còn metadata sẽ đưa ra thông tin về vị trícác tệp, kích cỡ các khối,
Metadata trong HDFS được duy trì bởi hai tệp:
● editlog: Lần theo các thay đổi vừa được thực hiện ở trong HDFS
● fsimage: Lần theo mọi thay được thực hiện trong HDFS kể từ lúc bắt đầu
Có hai vấn đề xảy ra là khi kích cỡ của file editlog tăng lên hay là NameNode sụp đổ và giảipháp là tạo các bản sao của editlog và fsimage (hay nói cách khác là tạo ra một NameNodethứ 2 để duy trì bản sao của editlog và fsimage)
NameNode thứ 2 đóng vai trò quan trọng trong cơ chế Checkpoint Sau một khoảng thời gianđược định sẵn, nó sẽ tổng hợp hai bản sao thành một tệp fsimage duy nhất sau đó cập nhật tệpmới được tạo ra này vào tệp fsimage trên node chính Tệp editlog trên node chính sau đó sẽcắt bớt để tạo chỗ cho các bản ghi thay đổi mới
Trang 10II) Sập DataNode và cơ chế sao chép
Giả sử mỗi blocks dữ liệu chỉ được lưu trữ trên một DataNode, lúc này nếu một Node bị sập
sẽ dần tới việc mất block dữ liệu do không có bản ghi nào của nó được lưu trữ trên hệ thống
nữa
BlockDbịmấtkhiNode5sập
Điều này dẫn tới giải pháp là sử dụng cơ chế sao chép: Các tệp được phân nhỏ ra thành cácblocks dữ liệu và được phân phối ra các DataNodes Các blocks này sẽ được sao chép trêncác DataNodes khác nhau để có thể hỗ trợ khả năng chịu lỗi của hệ thống
Lúc này khi Node 5 bị sập thì các block dữ liệu có trên nó vẫn còn trên các Node khác để khôi phục
Hệ số sao chép là được đặt một cách mặc định là 3, có nghĩa là ta sẽ có tổng cộng 3 bản saocủa mỗi datablock
Trang 11III) Rack Awareness trong HDFS
Rack là một tập hợp khoảng 30 tới 40 DataNodes Rack Awareness là một cơ chế thiết lập đểcải thiện tính khả năng chịu lỗi và hiệu suất của hệ thống, nó giúp quyết định xem một bảnghi của block dữ liệu nên được lưu trữ ở đâu
CácblockđượclưutrữtrênnhiềuDataNodetrênnhiềuRack
Mục đích của Rack Awareness là giúp cải thiện độ tin cậy, tính có sẵn của dữ liệu, tăng hiệuquả sử dụng băng thông
IV) Cơ chế kiểm tra Checksum
Một block dữ liệu khi lấy ra từ DataNode có thể bị hỏng (corrupted) Việc này có thể là dothiết bị lưu trữ, đường truyền mạng hoặc xung đột phần mềm, Phần mềm bên phía kháchcủa HDFS có nhiệm vụ thực hiện kiểm tra checksum trên nội dung của các tệp HDFS Khibên phía khách tạo một tệp HDFS, nó tính toán checksum cho từng block của tệp và lưu trữcác checksum này trong các tệp ẩn trong cùng một HDFS namespace Khi phía khách lấy dữliệu từ tệp, nó sẽ kiểm tra xem dữ liệu nhận được từ mỗi DataNode có khớp với checksumđược lưu trữ trong tệp checksum không Nếu không, bên phía khách sẽ có thể lấy block đó từmột DataNode khác
Trang 12Một công việc khác của NameNode là thực thi các Block operations khi client đẩy dữ liệulên Block operations bao gồm các công việc như tạo, xóa hay sao chép block.
Trang 13VI) Cơ chế đọc của HDFS
Đầu tiên HDFS client mở một kết nối tới Distributed FileSystem, gửi một yêu cầu đọc dữ liệutới NameNode sử dụng RPC Khi này NameNode sẽ kiểm tra xem liệu client này có quyềnđọc dữ liệu trong yêu cầu không, nếu có NameNode sẽ cung cấp cho client vị trí của blockchứa dữ liệu đó và một token Token này được client sử dụng để xác thực quyền được đọc vớiDataNode chứa block đó HDFS client sẽ đọc dữ liệu ở DataNodes thông qua trung gian làFSData InputStream Sau khi đọc xong kết nối tới FDSData InputStream sẽ được đóng, cáctoken sẽ bị xóa đi
Trang 14VII) Cơ chế viết của HDFS
HDFS Client ban đầu sẽ tạo ra một DistributedFileSystem, DFS tạo ra một NameNode Sau
đó client sẽ viết thông qua FSData OutputStream vào một block rồi được sao chép tới cácblock khác ở trong DataNode Khi viết thành công gói tin Ack sẽ được gửi đi qua các block.Sau khi xác nhận được gói tin Ack thì Client sẽ đóng kết nối và thông báo cho NameNode
VídụvềcơchếviếtcủaHDFS
Trang 15VIII) Lợi ích khi sử dụng:
Những lợi ích của HDFS có thể kể tới:
● Khả năng mở rộng: HDFS được thiết kế để xử lý khối lượng dữ liệu lớn Nó có thể
mở rộng theo chiều ngang bằng cách thêm nhiều node dữ liệu hơn, điều này cho phép
nó chứa được lượng dữ liệu khổng lồ
● Chống lỗi tốt: HDFS sao chép dữ liệu trên nhiều nút Nếu một nút hoặc bản sao dữliệu bị lỗi, bản sao khác có thể được sử dụng để đảm bảo tính khả dụng của dữ liệu.Khả năng chịu lỗi này được tích hợp vào hệ thống
● Lưu trữ tiết kiệm chi phí: Nó được thiết kế cho phần cứng thương mại, giúp tiết kiệmchi phí Bạn có thể sử dụng các máy chủ rẻ tiền để xây dựng cụm Hadoop
● Dữ liệu được bảo mật tốt: HDFS hỗ trợ xác thực quyền truy cập vào từng mục dữ liệucủa người dùng bằng Kerberos và mã hóa dữ liệu
Trang 16Chương 3: So sánh với các nền tảng tương tự
I) HDFS và Google Bigquery
Hadoop HDFS (Hadoop Distributed File System) và Google BigQuery là hai công nghệ khácnhau được sử dụng trong việc xử lý và lưu trữ dữ liệu lớn Dưới đây là một so sánh giữachúng về điểm mạnh và điểm yếu, cũng như khi nào nên sử dụng mỗi phương pháp:HDFS: hệ thống lưu trữ phân tán sử dụng cơ sở hạ tầng vật lý
Điểm mạnh:
● Lưu trữ dữ liệu lớn: Hadoop HDFS là một hệ thống lưu trữ phân tán được thiết kế đểlưu trữ và quản lý dữ liệu lớn (big data) Nó có khả năng lưu trữ petabyte dữ liệu hoặcnhiều hơn
● Tích hợp với nhiều công cụ xử lý dữ liệu: Hadoop HDFS thường được sử dụng cùngvới các công cụ xử lý dữ liệu như Apache MapReduce, Apache Hive và ApacheSpark
● Kiểm soát hoàn toàn: Hadoop HDFS cho phép bạn có kiểm soát hoàn toàn đối với lưutrữ và xử lý dữ liệu, điều này có thể quan trọng đối với các tổ chức có nhu cầu bảomật và tuân thủ nghiêm ngặt
Điểm yếu:
● Phức tạp cài đặt và quản lý: Hadoop HDFS yêu cầu kiến thức kỹ thuật cao để cài đặt
và quản lý Điều này có thể đòi hỏi một đội ngũ IT kỹ thuật và tài nguyên đáng kể
● Chậm cho các truy vấn phức tạp: Hadoop HDFS không phải là hệ thống truy vấnnhanh, và việc thực hiện các truy vấn phức tạp có thể mất thời gian
● Chi phí đầu tư cơ sở hạ tầng: tuy rằng Hadoop là mã nguồn mở miễn phí nhưng bạnphải đầu tư xây dựng một cơ sở hạ tầng, mặc dù chúng chỉ là phần cứng, máy chủthương mại
● Đội ngũ quản lý: đi đôi với việc có thể kiểm soát hoàn toàn là yêu cầu về một đội ngũ
IT với kiến thức kỹ thuật đủ để quản lý và triển khai Hadoop
Google BigQuery: dịch vụ truy vấn và lưu trữ dữ liệu trên đám mây
Điểm mạnh
● Truy vấn nhanh và phân tích dữ liệu thời gian thực: Google BigQuery là dịch vụ truyvấn dựa trên đám mây, cho phép bạn thực hiện truy vấn dữ liệu lớn với tốc độ nhanh
● Không cần quản lý cơ sở hạ tầng: BigQuery loại bỏ nhu cầu cài đặt và quản lý cơ sở
hạ tầng, giúp tiết kiệm thời gian và nguồn lực
● Tích hợp với các dịch vụ khác của Google Cloud*: BigQuery dễ dàng tích hợp vớicác dịch vụ khác của Google Cloud, giúp bạn xây dựng các ứng dụng phức tạp