- Không có khả năng lặp lại và xác thực nghiên cứu - Phát hiện sai lệch dẫn đến lãng phí tài nguyên - Đánh lừa các nhà nghiên cứu khác để theo đuổi những con đường điều tra không có kết
Data Collection
Khái niệm
Quá trình thu thập dữ liệu (data collection) là việc hệ thống hóa thông tin về các biến số quan tâm nhằm trả lời câu hỏi nghiên cứu, kiểm tra giả thuyết và đánh giá kết quả Thành phần này là thiết yếu trong mọi lĩnh vực nghiên cứu, từ khoa học tự nhiên đến khoa học xã hội, nhân văn và kinh doanh Mặc dù phương pháp thu thập dữ liệu có thể khác nhau giữa các ngành, nhưng mục tiêu chính vẫn là đảm bảo tính chính xác và trung thực trong quá trình thu thập.
Dù là trong lĩnh vực nghiên cứu hay sở thích nào, việc thu thập dữ liệu chính xác, bao gồm cả dữ liệu định lượng và định tính, là rất quan trọng để đảm bảo tính toàn vẹn của nghiên cứu.
Việc lựa chọn công cụ thu thập dữ liệu phù hợp, bao gồm cả các công cụ hiện có, đã được sửa đổi hoặc mới phát triển, cùng với các hướng dẫn sử dụng rõ ràng, sẽ giúp giảm thiểu khả năng xảy ra sai sót.
Các phương pháp thu thập dữ liệu
- Phương pháp quan sát (observation)
Quan sát là một phương pháp thu thập dữ liệu hiệu quả, cho phép ghi lại có kiểm soát các sự kiện và hành vi của con người Phương pháp này thường được sử dụng kết hợp với các kỹ thuật khác để xác minh độ chính xác của dữ liệu thu thập.
Phỏng vấn là quá trình trao đổi thông tin giữa phỏng vấn viên và người được phỏng vấn, diễn ra qua nhiều hình thức tiếp xúc khác nhau Các hình thức này rất đa dạng trong thực tiễn.
Các hình thức tiếp xúc trong phỏng vấn:
+ Phỏng vấn qua thư tín;
+ Phỏng vấn qua điện thoại;
Phương pháp thu thập dữ liệu này gồm 2 loại:
Thử nghiệm trong phòng thí nghiệm nhằm quan sát và đo lường các phản ứng tâm lý, cũng như theo dõi các cuộc phỏng vấn và thảo luận của các nhóm trọng điểm Phòng thí nghiệm thường được chia thành hai ngăn: Ngăn 1 dành cho những người tham gia phỏng vấn hoặc thử nghiệm, trong khi Ngăn 2 dành cho các quan sát viên và thiết bị kỹ thuật Giữa hai ngăn có một tấm kính một chiều để đảm bảo sự quan sát hiệu quả.
Thử nghiệm tại hiện trường là quá trình quan sát và đo lường thái độ, phản ứng của khách hàng đối với những thay đổi từ nhà cung cấp sản phẩm hoặc dịch vụ, bao gồm thay đổi giá bán, phương thức phục vụ và chăm sóc khách hàng Hoạt động này diễn ra ngay tại địa điểm giao dịch, do đó được gọi là thử nghiệm tại hiện trường.
Phương pháp điều tra thăm dò là quá trình tìm hiểu kỹ lưỡng nguồn gốc của các sự kiện, tập trung vào việc thu thập thông tin từ nhân chứng và vật chứng Trong nghiên cứu marketing, phương pháp này được áp dụng rộng rãi nhờ vào những ưu điểm của nó, giúp đảm bảo bốn nguyên tắc cơ bản của nghiên cứu khoa học.
Công cụ chính để thu thập thông tin và sự kiện trong phương pháp này là "Bảng câu hỏi - Questions Form", được khách hàng tự điền.
Nghiên cứu định lượng rất hữu ích trong marketing vì nó tập trung vào việc đo lường và so sánh ý kiến, kỳ vọng của khách hàng, nhà cung cấp và người tiêu dùng Do đó, việc thu thập dữ liệu thông qua "bảng câu hỏi" trong các cuộc điều tra thăm dò là phương pháp phù hợp nhất.
- Thảo luận nhóm (focus group)
Thảo luận nhóm là phương pháp thu thập dữ liệu phổ biến trong nghiên cứu định tính, nơi dữ liệu được thu thập thông qua cuộc thảo luận giữa một nhóm đối tượng nghiên cứu dưới sự dẫn dắt của người điều khiển chương trình.
Hâu quả của thu thập dữ liệu sai cách
- Không có khả năng trả lời chính xác các câu hỏi nghiên cứu
- Không có khả năng lặp lại và xác thực nghiên cứu
- Phát hiện sai lệch dẫn đến lãng phí tài nguyên
- Đánh lừa các nhà nghiên cứu khác để theo đuổi những con đường điều tra không có kết quả
- Thỏa hiệp các quyết định đối với chính sách
- Gây hại cho người tham gia và động vật
Yếu tố quan trọng trong thu thập dữ liệu
Để đảm bảo chất lượng trước khi tiến hành thu thập dữ liệu, việc phòng ngừa là rất quan trọng nhằm ngăn chặn các vấn đề có thể xảy ra Phòng ngừa là phương pháp tiết kiệm chi phí nhất để duy trì tính toàn vẹn của quá trình thu thập dữ liệu Biện pháp chủ động này được thể hiện qua việc chuẩn hóa các giao thức trong sổ tay thủ tục chi tiết cho việc thu thập dữ liệu Một sổ tay hướng dẫn kém chất lượng có thể làm tăng nguy cơ không phát hiện sớm các vấn đề và sai sót trong nghiên cứu, dẫn đến những thất bại có thể được chứng minh theo nhiều cách khác nhau.
Sự không chắc chắn về thời gian, phương pháp và danh tính của (những) người chịu trách nhiệm xem xét dữ liệu
Liệt kê một phần các mục cần thu thập
Các công cụ thu thập dữ liệu sẽ được mô tả một cách tổng quát, thay vì cung cấp các hướng dẫn chi tiết và nghiêm ngặt về cách quản lý các bài kiểm tra.
Không xác định được nội dung và chiến lược cụ thể để đào tạo hoặc đào tạo lại các nhân viên chịu trách nhiệm Data collection
Các hướng dẫn sử dụng, điều chỉnh và hiệu chuẩn thiết bị Data collection bị che khuất (nếu thích hợp)
Không có cơ chế nào được xác định để ghi lại những thay đổi trong thủ tục có thể phát triển trong quá trình điều tra
Các hoạt động kiểm soát chất lượng, bao gồm phát hiện, giám sát và hành động, cần được thực hiện cẩn thận trong quá trình thu thập dữ liệu Việc xác định rõ ràng cấu trúc thông tin liên lạc là điều kiện tiên quyết để thiết lập hệ thống giám sát hiệu quả Không được có sự không chắc chắn nào về luồng thông tin giữa các điều tra viên chính và nhân viên khi phát hiện sai sót trong quá trình thu thập dữ liệu Một cấu trúc giao tiếp kém phát triển có thể dẫn đến giám sát lỏng lẻo và hạn chế khả năng phát hiện lỗi.
Việc phát hiện và giám sát có thể được thực hiện thông qua quan sát trực tiếp nhân viên trong các chuyến thăm thực địa, hội nghị, hoặc đánh giá thường xuyên các báo cáo dữ liệu để phát hiện sự không nhất quán và mã không hợp lệ Mặc dù thăm địa điểm không phải lúc nào cũng khả thi, việc không kiểm tra hồ sơ định kỳ sẽ gây khó khăn cho các nhà điều tra trong việc xác minh quy trình thu thập dữ liệu theo hướng dẫn Hơn nữa, nếu cấu trúc thông tin liên lạc không được mô tả rõ ràng trong sổ tay, việc truyền đạt thay đổi quy trình đến nhân viên có thể gặp khó khăn.
Kiểm soát chất lượng xác định các phản hồi cần thiết để khắc phục các lỗi trong quy trình thu thập dữ liệu và giảm thiểu sự cố trong tương lai Những hành động này khó có thể thực hiện nếu quy trình thu thập dữ liệu không rõ ràng và các bước cần thiết để ngăn chặn tái diễn không được thực hiện thông qua phản hồi và giáo dục.
Các bước để thu thập dữ liệu
Bước 1: Xác định mục tiêu nghiên cứu
Trước khi thu thập dữ liệu, bạn cần xác định rõ mục tiêu của mình Hãy bắt đầu bằng cách viết một bản tuyên bố vấn đề, nêu rõ vấn đề thực tế hoặc khoa học mà bạn muốn giải quyết và lý do tại sao nó quan trọng.
Để tiến hành nghiên cứu, trước tiên bạn cần hình thành một hoặc nhiều câu hỏi nghiên cứu rõ ràng, xác định chính xác những gì bạn muốn tìm hiểu Tùy thuộc vào các câu hỏi này, bạn có thể cần thu thập dữ liệu định lượng hoặc định tính.
Dữ liệu định lượng được thể hiện bằng số và đồ thị và được phân tích thông qua các phương pháp thống kê
Dữ liệu định tính được thể hiện bằng từ ngữ và được phân tích thông qua các diễn giải và phân loại
Để kiểm tra giả thuyết và thu thập thông tin thống kê chính xác, bạn nên thu thập dữ liệu định lượng Ngược lại, nếu bạn muốn khám phá ý tưởng và hiểu rõ hơn về bối cảnh cụ thể, dữ liệu định tính sẽ là lựa chọn phù hợp Trong trường hợp bạn có nhiều mục tiêu nghiên cứu, phương pháp hỗn hợp cho phép bạn kết hợp cả dữ liệu định lượng và định tính.
Bước 2: Chọn phương pháp thu thập dữ liệu của bạn
Dựa trên dữ liệu bạn muốn thu thập, hãy quyết định phương pháp nào phù hợp nhất cho nghiên cứu của bạn
Nghiên cứu thực nghiệm trước hết là một phương pháp định lượng
Phỏng vấn / nhóm tập trung và dân tộc học là các phương pháp định tính
8 Điều tra, quan sát, nghiên cứu lưu trữ và thu thập dữ liệu thứ cấp có thể là phương pháp định lượng hoặc định tính
Cẩn thận xem xét phương pháp bạn sẽ sử dụng để thu thập dữ liệu giúp bạn trực tiếp trả lời các câu hỏi nghiên cứu của mình
Bước 3: Lập kế hoạch cho các thủ tục thu thập dữ liệu của bạn
Khi đã xác định được các phương pháp sử dụng, bạn cần lập kế hoạch chi tiết để thực hiện chúng Điều này bao gồm việc xác định quy trình cụ thể để tiến hành các quan sát hoặc đo lường chính xác các biến mà bạn đang quan tâm.
Khi thực hiện khảo sát hoặc phỏng vấn, bạn cần xác định dạng câu hỏi Nếu tiến hành thử nghiệm, hãy quyết định thiết kế thử nghiệm Một số biến số có thể đo lường trực tiếp, như thu thập dữ liệu về độ tuổi trung bình của nhân viên qua ngày sinh Tuy nhiên, thường thì bạn sẽ cần thu thập dữ liệu về các khái niệm hoặc biến trừu tượng mà không thể quan sát trực tiếp.
Hoạt động hóa có nghĩa là biến những ý tưởng khái niệm trừu tượng thành những quan sát có thể đo lường được Khi kế hoạch
Để thu thập dữ liệu hiệu quả, bạn cần chuyển đổi định nghĩa khái niệm về đối tượng nghiên cứu thành các định nghĩa hoạt động cụ thể cho những gì bạn sẽ đo lường thực tế.
Bước 4: Thu thập dữ liệu
Cuối cùng, bạn có thể áp dụng các phương pháp đã chọn để đo lường hoặc quan sát các biến quan trọng Để đảm bảo dữ liệu chất lượng cao được ghi lại một cách có hệ thống, hãy tham khảo một số phương pháp tốt nhất sau đây.
Ghi lại tất cả thông tin liên quan khi thu thập dữ liệu, chẳng hạn như việc thiết bị phòng thí nghiệm có được hiệu chuẩn lại trong quá trình nghiên cứu hay không Đồng thời, kiểm tra kỹ lưỡng việc nhập dữ liệu thủ công để phát hiện và sửa chữa lỗi.
Khi thu thập dữ liệu định lượng, việc đánh giá độ tin cậy và tính hợp lệ là rất quan trọng để xác định chất lượng dữ liệu của bạn.
Hadoop
Hadoop là một framework nguồn mở của Apache, được viết bằng Java, cho phép phát triển ứng dụng phân tán với cường độ dữ liệu lớn miễn phí Nó có khả năng mở rộng từ một máy chủ đơn lẻ đến hàng ngàn máy tính với tính toán và lưu trữ cục bộ Hadoop được phát triển dựa trên các ý tưởng từ mô hình Map-Reduce và hệ thống file phân tán của Google.
Hadoop cung cấp một môi trường song song cho việc thực thi các tác vụ Map-Reduce thông qua hệ thống GFS Nhờ vào cơ chế streaming, Hadoop có khả năng phát triển trên các ứng dụng phân tán sử dụng nhiều ngôn ngữ lập trình khác nhau, bao gồm Java, C++, Python và Perl.
Hadoop sử dụng cấu trúc liên kết master-slave, bao gồm một node master và nhiều node slave Node master có nhiệm vụ phân công tác vụ cho các node slave và quản lý tài nguyên, trong khi các node slave là những máy tính thực tế, thường không mạnh mẽ, chịu trách nhiệm lưu trữ dữ liệu thực Metadata được lưu trữ trên node master.
Kiến trúc Hadoop gồm có ba lớp chính đó là:HDFS (Hadoop Distributed File
HDFS (Hadoop Distributed File System)
HDFS là một hệ thống file phân tán, cho phép lưu trữ dữ liệu lớn và tối ưu hóa băng thông giữa các node Nó có khả năng hoạt động trên các cluster lớn với hàng chục ngàn node.
Cho phép truy xuất nhiều ổ đĩa như một ổ đĩa duy nhất, giúp người dùng sử dụng dung lượng gần như không giới hạn Để tăng dung lượng, chỉ cần thêm node (máy tính) vào hệ thống.
Có kiến trúc Master-Slave
NameNode chạy trên máy chủ Master, có tác vụ quản lý Namespace và điều chỉnh truy cập tệp của client
DataNode chạy trên các nút Slave có tác vụ lưu trữ business data thực tế
Một tập tin với định dạng HDFS được chia thành nhiều block và những block này được lưu trữ trong một tập các DataNodes
Kích thước 1 block thông thường là 64MB, kích thước này có thể thay đổi được bằng việc cấu hình
Map-Reduce là một framework cho phép phát triển các ứng dụng xử lý song song với khả năng xử lý lượng lớn dữ liệu và đảm bảo tính chịu lỗi cao trên hàng ngàn 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
Giảm: Kết quả đầu ra từ tác vụ Map sẽ được kết hợp lại thành một tập dữ liệu nhỏ hơn Để minh họa, chúng ta sẽ xem xét ví dụ WordCount, một bài toán đếm tần suất xuất hiện của các từ trong văn bản Chúng ta sẽ mô tả quá trình xử lý bài toán này bằng phương pháp Map-Reduce Đối với hàm Map:
Input là 1 đoạn văn bản
Output là các cặp
Hàm Map được thực hiện song song để xử lý các tập dữ liệu khác nhau Đối Với hàm Reduce:
Input có dạng , trong đó list là tập hợp các giá trị đếm được của mỗi từ
Output:
Hàm Reduce cũng được chạy song song để xử lý các tập từ khoá khác nhau
Giữa hàm Map và Reduce, có một giai đoạn trung gian gọi là hàm Shuffle, có nhiệm vụ sắp xếp các từ và tổng hợp dữ liệu đầu vào cho hàm Reduce từ các kết quả đầu ra của hàm Map.
YARN (Yet-Another-Resource-Negotiator) is a framework designed to support the development of distributed applications It provides essential daemons and APIs for building these applications while managing and scheduling computational resources such as CPU and memory, as well as monitoring the execution of those applications.
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ới ResourceManger 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
App Master (App Mstr) là thành phần được chuyển đến một node tính toán để thực hiện nhiệm vụ Nó sẽ liên lạc với các NodeManager ở các node khác nhằm yêu cầu công việc cho node hiện tại.
Node Manager nhận yêu cầu và chạy các task trên container
Các thông tin trạng thái thay vì được gửi đến JobTracker sẽ được gửi đến App Master
ResourceManger có hai thành phần quan trọng đó là Scheduler và ApplicationManager
Scheduler có vai trò quan trọng trong việc phân bổ tài nguyên cho các ứng dụng khác nhau Đây là một loại Scheduler thuần túy, không thực hiện việc theo dõi trạng thái của ứng dụng.
Bộ lập lịch chịu trách nhiệm sắp xếp lại các tác vụ bị lỗi do phần cứng hoặc phần mềm Nó phân bổ tài nguyên dựa trên 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ết hợ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
YARN Federation cho phép mở rộng YARN lên hàng nghìn node bằng cách kết hợp nhiều cụm YARN thành một cụm lớn Tính năng này giúp sử dụng các cụm độc lập, kết hợp chúng lại để xử lý các job lớn một cách hiệu quả.
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 và reduce
3 Các thiết lập cụ thể liên quan đến job thông qua các thông số truyền vào
Khách hàng Hadoop gửi job (file jar, file thực thi) cùng với các thiết lập cho JobTracker Sau đó, master phân phối tác vụ đến các máy slave để theo dõi và quản lý tiến trình, đồng thời cung cấp thông tin về tình trạng và chẩn đoán liên quan đến job-client.
TaskTrackers 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", bạn đang thực hiện việc khởi động một tập hợp các trình nền (daemon) hoặc chương trình thường trú trên nhiều máy chủ trong mạng của mình Các trình nền này có vai trò cụ thể, với một số chỉ hoạt động trên một máy chủ, trong khi một số khác có thể chạy trên nhiều máy chủ khác nhau.
Các daemon bao gồm: NameNode, DataNode, SecondaryNameNode, JobTracker, TaskTracker
Data Integration
Khái niệm
Tích hợp dữ liệu là quá trình kết hợp các nguồn dữ liệu không đồng nhất vào một lược đồ duy nhất, giúp người dùng có cái nhìn thống nhất và dễ dàng truy vấn thông tin.
Tích hợp dữ liệu ngày càng trở nên phổ biến do khối lượng và nhu cầu chia sẻ dữ liệu lớn Để đảm bảo hiệu quả trong việc trao đổi dữ liệu trong hệ thống, cần xử lý các công việc tiếp theo theo các luồng công việc đã định sẵn như phân tích, so sánh, thống kê và báo cáo.
Các phương pháp tích hợp dữ liệu: Có hai phương pháp chủ yếu để tích hợp dữ liệu: Ghép nối chặt chẽ (Tight Coupling): kho dữ liệu
Phương pháp ghép nối chặt chẽ được thực hiện qua kho dữ liệu, nơi dữ liệu từ nhiều nguồn khác nhau được tập hợp tại một vị trí vật lý duy nhất thông qua quy trình ETL (Extraction, Transformation, Loading) Lớp ETL đóng vai trò ánh xạ dữ liệu từ các nguồn, tạo ra một kho dữ liệu thống nhất và cung cấp giao diện đồng nhất để truy vấn dữ liệu.
Cách tiếp cận ghép nối chặt chẽ kết hợp dữ liệu với kho lưu trữ vật lý ngay tại thời điểm truy vấn.
Ghép nối lỏng lẻo (Loose Coupling) sử dụng một lược đồ trung gian ảo để cung cấp giao diện nhận truy vấn từ người dùng Lược đồ này biến đổi truy vấn thành định dạng mà cơ sở dữ liệu nguồn có thể hiểu và gửi trực tiếp đến cơ sở dữ liệu nguồn để lấy kết quả Trong phương pháp này, dữ liệu chỉ tồn tại trong cơ sở dữ liệu nguồn thực tế Mô hình của phương pháp ghép nối lỏng lẻo được mô phỏng như hình dưới.
Mô hình phương pháp ghép nối lỏng lẻo trong tích hợp dữ liệu sử dụng lược đồ trung gian với các “bộ điều hợp” hoặc “trình bao bọc” để kết nối hệ thống nguồn và đưa dữ liệu đến giao diện người dùng Phương pháp này có những ưu điểm và nhược điểm riêng, cần được xem xét kỹ lưỡng trong quá trình triển khai.
So sánh ưu nhược điểm của 2 phương pháp: ghép nối chặt chẽ và ghép nối lỏng lẻo được thể hiện chi tiết trong sau:
Ghép nối chặt chẽ và ghép nối lỏng lẻo đều có những ưu điểm riêng Một trong những lợi ích của ghép nối lỏng lẻo là tính độc lập, giúp giảm thiểu sự phụ thuộc vào hệ thống nguồn do dữ liệu được sao chép về mặt vật lý.
- Xử lý truy vấn nhanh hơn
- Xử lý truy vấn phức tạp
- Tóm tắt dữ liệu nâng cao và có thể lưu trữ – Xử lý dữ liệu lớn
– Làm mới dữ liệu (độ trễ thấp – gần như thời gian thực)
Hệ thống nguồn mới hoặc sự thay đổi trong hệ thống nguồn hiện tại giúp tăng cường tính nhanh nhẹn, vì chỉ bộ điều hợp tương ứng được tạo hoặc thay đổi, phần lớn không ảnh hưởng đến các phần khác của hệ thống.
Nhược điểm – Độ trễ (vì dữ liệu cần được tải bằng ETL) – Chi phí cao
– Phản hồi truy vấn chậm hơn (do vấn đề về mạng / băng thông, tải dữ liệu trên hệ thống nguồn,…) – Phụ thuộc vào các nguồn dữ liệu
Hệ thống lưu trữ dữ liệu HDFS
HDFS, viết tắt của "Hadoop Distributed File System", là hệ thống lưu trữ dữ liệu được sử dụng trong Hadoop, cung cấp khả năng truy cập hiệu suất cao đến dữ liệu trên các cụm của Hadoop.
HDFS thường được triển khai trên phần cứng có chi phí hợp lý, vì máy chủ dễ gặp phải lỗi phần cứng Do đó, HDFS được thiết kế với khả năng chịu lỗi cao, nhằm giảm thiểu rủi ro và hạn chế sự phát sinh lỗi.
HDFS chia nhỏ dữ liệu lớn thành các mảnh nhỏ và phân tán chúng trên nhiều nodes khác nhau Mỗi mảnh dữ liệu được sao chép trên nhiều nodes để đảm bảo tính an toàn Khi một node gặp lỗi, hệ thống tự động sử dụng dữ liệu từ một node khác để tiếp tục quá trình xử lý Đây là một trong những tính năng quan trọng nhất của HDFS.
2.3.2 Ưu điểm nổi bật của HDFS
HDFS cho phép phân tán dữ liệu hiệu quả, nghĩa là khi bạn đưa một file vào HDFS trong một cụm Hadoop gồm 20 máy tính, file đó sẽ tự động được chia nhỏ và lưu trữ trên tất cả 20 máy.
HDFS cho phép tính toán và phân tán song song, giúp nhiều máy tính hoạt động đồng thời để xử lý một công việc, từ đó tiết kiệm thời gian hiệu quả.
HDFS cho phép nhân bản các file, giúp bảo vệ dữ liệu khỏi sự cố máy tính trong cụm Hadoop, đảm bảo rằng dữ liệu sẽ được sao lưu và không bị mất.
HDFS có khả năng mở rộng theo chiều dọc, cho phép nâng cấp hệ thống bằng cách tăng cường cấu hình cho máy tính Tính năng này được gọi là Scale.
HDFS có khả năng mở rộng hệ thống theo chiều ngang, cho phép người dùng không cần nâng cấp phần cứng mà chỉ cần thêm một máy tính mới để kết nối với máy hiện tại.
Kiến trúc của HDFS là master / slave, một HDFS Cluster sẽ luôn bao gồm 1
NameNode NameNode này là 1 master server và nó có nhiệm vụ quản lý cho hệ thống tập tin và điều chỉnh các truy cập đến những tập tin khác
Để tối ưu hóa hệ thống HDFS, cần bổ sung thêm DataNodes cho NameNode, trong đó luôn có một DataNode dành riêng cho các máy chủ dữ liệu Một tập tin lớn trong HDFS sẽ được chia thành nhiều khối, và các khối này sẽ được lưu trữ trên một tập hợp các DataNodes.
NameNode có nhiệm vụ chính là quản lý các tập tin và thư mục, bao gồm việc đóng, mở và đổi tên chúng, đồng thời điều chỉnh quyền truy cập vào hệ thống tập tin Ngược lại, DataNode thực hiện các tác vụ ghi và đọc dữ liệu trong hệ thống tập tin, cũng như tạo, xóa và nhân bản dữ liệu theo chỉ dẫn từ NameNode Cả NameNode và DataNode đều là phần mềm được phát triển để chạy trên máy chủ và được viết bằng ngôn ngữ Java.
NameNode có vai trò quan trọng trong việc điều phối các thao tác truy cập của client đối với hệ thống HDFS Nó quản lý thông tin về các DataNode, nơi lưu trữ thực tế các block của các file.
HDFS nên chúng là nơi đáp ứng các truy cập này NameNode sẽ thực hiện nhiệm vụ của nó thông qua daemon tên namemode chạy trên port 8021
DataNode là một máy chủ chạy daemon datanode trên cổng 8022, có nhiệm vụ định kỳ báo cáo cho Namenode danh sách tất cả các block mà nó lưu trữ Điều này giúp Namenode cập nhật lại các metadata của nó một cách chính xác.
Sau mỗi lần cập nhật, metadata trên NameNode sẽ đồng bộ hóa với dữ liệu trên các DataNode, đảm bảo sự thống nhất Tình trạng này của metadata được gọi là checkpoint, phản ánh trạng thái hiện tại của hệ thống.
Mỗi metadata ở trạng thái checkpoint được sử dụng để nhân bản metadata nhằm phục hồi NameNode khi xảy ra lỗi Khi các máy con client gửi yêu cầu đọc đến NameNode, nó sẽ thực hiện các tác vụ kiểm tra sự tồn tại của file, cũng như xác định xem file có bị lỗi hoặc nhiễm virus hay không.
Nếu file không gặp sự cố, NameNode sẽ cung cấp danh sách các Block của file cùng với địa chỉ các DataNode Hệ thống sau đó sẽ kết nối với DataNode và thực hiện chức năng RPC để lấy dữ liệu cần thiết, rồi đóng kết nối với các DataNode còn lại.
Data processing
Định nghĩa
Xử lý dữ liệu là quá trình quan trọng trong việc đồng bộ hóa và quản lý thông tin trong hệ thống, bao gồm việc tiếp nhận nguồn thông tin mới và lọc ra dữ liệu phù hợp Mục đích chính của xử lý dữ liệu là lưu trữ và phân loại thông tin, giúp người dùng dễ dàng truy cập và sử dụng khi cần thiết trong học tập và công việc.
Việc xử lý dữ liệu tốt dữ liệu sẽ đem lại năng suất, hiệu quả công việc cao.
Chức năng của data processing
Trong quá trình xử lý dữ liệu, có nhiều bước quan trọng cần thực hiện để đảm bảo hiệu quả công việc Mỗi bước đều có chức năng riêng biệt, góp phần vào sự thành công của toàn bộ quy trình.
Trong quá trình xử lý dữ liệu, bước đầu tiên là thu thập thông tin đầu vào cho hệ thống Sau khi tìm kiếm, chúng ta sẽ xác nhận và tổng hợp những thông tin theo yêu cầu.
19 thì cần xác nhận các dữ liệu đã tìm được có đúng chính xác và liên quan với yêu cầu ban đầu hay không
Sau khi xác nhận thông tin đã đúng yêu cầu, bước tiếp theo là kiểm tra tính chính xác và sự liên quan của các dữ liệu đã tìm được với yêu cầu ban đầu.
Sau khi xác nhận thông tin đúng yêu cầu, hệ thống sẽ tiến hành sắp xếp và phân loại dữ liệu theo từng nhóm có nội dung tương đồng, đồng thời đánh số thứ tự để dễ dàng kiểm soát.
Công việc này giúp tóm tắt dữ liệu bằng cách cung cấp những thông tin chính, giảm bớt các giải thích chi tiết, từ đó tạo điều kiện thuận lợi cho việc tổng hợp và tìm kiếm, mang lại sự tiện lợi cho người dùng.
Tập hợp nội dung là quá trình kết hợp các thông tin đã được phân loại và tóm tắt, giúp tạo ra những thư mục dữ liệu lớn từ các thông tin cùng loại.
Phân tích dữ liệu là bước quan trọng trong xử lý thông tin, quyết định hiệu quả công việc Quá trình này bao gồm nhiều bước, bắt đầu từ việc thu thập dữ liệu, tổ chức và phân loại thông tin, đến việc phân tích các nội dung liên quan Mục tiêu là tìm kiếm kết quả chính xác nhất và đưa ra giải thích về quá trình phân tích, cũng như trình bày kết quả sau khi hoàn thành các bước này.
Sau khi hoàn thành các bước xử lý và phân tích thông tin, cần báo cáo dữ liệu bằng cách trình bày chi tiết toàn bộ thông tin thông qua các tóm tắt cụ thể.
Bước phân loại nội dung tương tự như phân loại dữ liệu thông tin, nhưng khác ở chỗ nó tập trung vào việc phân loại thông tin đầu ra thay vì dữ liệu đầu vào.
Các hình thức xử lý dữ liệu
Xử lý dữ liệu thủ công là quá trình mà mọi công việc đều được thực hiện bởi con người, dẫn đến việc tiêu tốn nhiều thời gian và công sức.
Xử lý dữ liệu tự động là phương pháp tiên tiến được phát triển từ công nghệ, hỗ trợ áp dụng cho nhiều loại hình hoạt động thông qua các công cụ và thiết bị ghi nhận đơn vị cụ thể.
Xử lý dữ liệu điện tử là quá trình xử lý thông tin trên các thiết bị điện tử, chẳng hạn như máy tính, kết hợp với các tính năng tự động, phản ánh sự tiến bộ của công nghệ.
Xử lý dữ liệu thương mại là phương pháp xử lý thông tin với ít tính toán, nhằm mục đích lưu trữ và tạo ra một lượng thông tin đầu ra khổng lồ.
Công cụ hỗ trợ xử lý Apache Spark
Các tổ chức ở mọi quy mô đều phụ thuộc vào dữ liệu lớn, nhưng việc xử lý hàng terabyte dữ liệu cho ứng dụng thời gian thực có thể trở nên phức tạp Apache Spark đã ra đời như một giải pháp hiệu quả cho việc phân tích và xử lý dữ liệu Kể từ khi được phát hành, Apache Spark đã nhanh chóng được các doanh nghiệp trong nhiều ngành công nghiệp áp dụng.
Apache Spark là một framework mã nguồn mở cho xử lý dữ liệu quy mô lớn, cung cấp giao diện lập trình cho các cụm tính toán song song với khả năng chịu lỗi Được phát triển tại AMPLab của Đại học California Berkeley, mã nguồn của Spark đã được tặng cho Apache Software Foundation vào năm 2013 và tổ chức này đã duy trì và phát triển nó cho đến nay.
Apache Spark với khả năng tính toán phân tán mạnh mẽ rất phù hợp cho big data và machine learning, yêu cầu sức mạnh tính toán lớn để xử lý kho dữ liệu khổng lồ Nó cũng giảm bớt gánh nặng lập trình cho các nhà phát triển nhờ vào API dễ sử dụng, giúp xử lý phần lớn công việc phức tạp liên quan đến tính toán phân tán và xử lý dữ liệu lớn.
Các thành phần của Apache Spark
Apache Spark gồm có 5 thành phần chính: Spark Core, Spark Streaming, Spark SQL, MLlib và GraphX
Spark Core là thành phần cốt lõi của Apache Spark, là nền tảng mà các thành phần khác cần để hoạt động Nó thực hiện công việc tính toán và xử lý dữ liệu trong bộ nhớ (In-memory computing) và đồng thời tham chiếu đến dữ liệu lưu trữ tại các hệ thống bên ngoài.
Spark SQL là một công cụ mạnh mẽ cho việc xử lý dữ liệu có cấu trúc, áp dụng khung dữ liệu tương tự như R và Python (Pandas) Nó cho phép người dùng truy vấn dữ liệu bằng cú pháp SQL, mang lại sức mạnh của Apache Spark cho cả nhà phân tích và nhà phát triển Ngoài việc hỗ trợ SQL, Spark SQL còn cung cấp giao diện tiêu chuẩn để đọc và ghi dữ liệu từ nhiều nguồn khác nhau như JSON, HDFS, Apache Hive và JDBC.
ORC và Apache Parquet được hỗ trợ trực tiếp, cùng với các cơ sở dữ liệu phổ biến như Apache Cassandra, MongoDB và Apache HBase, thông qua các trình kết nối riêng biệt từ hệ sinh thái Spark Packages.
Spark Streaming là một phần mở rộng của Apache Spark, cho phép xử lý dữ liệu theo thời gian thực hoặc gần thời gian thực Nó chia nhỏ luồng dữ liệu thành các microbatch liên tục, giúp người dùng dễ dàng thao tác thông qua API của Apache Spark.
Mã trong các xử lý hàng loạt và trực tuyến có thể được tái sử dụng trên cùng một framework, giúp giảm chi phí cho cả nhà phát triển và nhà điều hành.
MLlib là nền tảng học máy phân tán trên Spark, sử dụng kiến trúc phân tán dựa trên bộ nhớ Theo các so sánh, Spark MLlib nhanh hơn 9 lần so với thư viện tương đương trên Hadoop, cụ thể là Apache Mahout.
Spark GraphX cung cấp các thuật toán phân tán để xử lý cấu trúc đồ thị, sử dụng phương pháp RDD của Spark Core để lập mô hình dữ liệu Gói GraphFrames cho phép thực hiện các xử lý biểu đồ trên khung dữ liệu, đồng thời tận dụng trình tối ưu hóa Catalyst cho các truy vấn đồ thị.
Kiến trúc của Apache Spark
Apache Spark chủ yếu bao gồm hai thành phần chính: trình điều khiển (driver) và trình thực thi (executors) Trình điều khiển có nhiệm vụ chuyển đổi mã của người dùng thành nhiều tác vụ (tasks) để phân phối trên các nút xử lý (worker nodes).
Trình thực thi của Apache Spark hoạt động trên các nút xử lý để thực hiện các nhiệm vụ được giao Spark có thể chạy ở chế độ cụm độc lập, chỉ cần cài đặt khung Apache Spark và JVM trên mỗi máy Tuy nhiên, việc sử dụng các công cụ quản lý cụm như Apache Mesos, Kubernetes và Docker Swarm giúp tối ưu hóa tài nguyên và cho phép phân bổ linh hoạt hơn trong môi trường doanh nghiệp.
Apache Spark chuyển đổi các lệnh xử lý dữ liệu của người dùng thành Đồ thị vòng có hướng (DAG), đóng vai trò là lớp lập lịch của hệ thống DAG xác định các tác vụ sẽ được thực hiện trên các nút và theo trình tự cụ thể Một trong những ưu điểm nổi bật của Apache Spark là khả năng tối ưu hóa hiệu suất xử lý dữ liệu.
- Tốc độ cao: Được thiết kế từ dưới lên để tăng hiệu suất, Spark có thể nhanh hơn
Apache Spark xử lý dữ liệu quy mô lớn nhanh gấp 100 lần so với Hadoop nhờ vào việc khai thác tính toán trên bộ nhớ và các tối ưu hóa khác Spark cũng duy trì tốc độ cao khi dữ liệu được lưu trữ trên đĩa và hiện đang nắm giữ kỷ lục thế giới về phân loại dữ liệu trên đĩa quy mô lớn.
Spark cung cấp các API thân thiện với người dùng, cho phép làm việc hiệu quả với các tập dữ liệu lớn Nó bao gồm hơn 100 toán tử để chuyển đổi dữ liệu và các API dataframe quen thuộc, giúp xử lý dữ liệu bán cấu trúc một cách dễ dàng.
Spark cung cấp một thư viện hỗ trợ phong phú, bao gồm các tính năng như truy vấn SQL, truyền dữ liệu trực tuyến, học máy và xử lý đồ thị Những thư viện tiêu chuẩn này không chỉ nâng cao năng suất của nhà phát triển mà còn cho phép kết hợp dễ dàng để xây dựng các quy trình làm việc phức tạp.
Các dữ liệu bị trùng lặp hoặc các dữ liệu không liên quan
Loại bỏ các đối tượng không mong muốn khỏi tập dữ liệu là rất quan trọng, bao gồm việc xử lý các đối tượng trùng lặp và các đối tượng không liên quan Việc này giúp cải thiện chất lượng dữ liệu và đảm bảo tính chính xác trong phân tích.
Trong quá trình thu thập dữ liệu, việc kết hợp các tập dữ liệu từ nhiều nguồn có thể dẫn đến tình trạng dữ liệu trùng lặp Khử trùng lặp là một trong những vấn đề quan trọng cần được giải quyết Ngoài ra, các quan sát không liên quan cũng cần được loại bỏ, vì chúng không phù hợp với vấn đề phân tích cụ thể Hiện nay, có nhiều phần mềm hỗ trợ trong việc này, trong đó nổi bật là phần mềm Tableau.
Chuyển dữ liệu sang một dạng mới để dễ dàng phân tích
Chuyển đổi dữ liệu là quá trình sửa đổi dữ liệu để phù hợp với các ứng dụng xuôi dòng trong công cụ, quy trình và phân tích Quy trình này thường bắt đầu bằng việc kiểm tra và làm sạch dữ liệu, sau đó kết thúc bằng việc xem xét các thay đổi với các bên liên quan chính, mặc dù các bước có thể khác nhau tùy thuộc vào mục tiêu dự án và nhu cầu dữ liệu.
Bước 1: Khám phá và xác thực dữ liệu
Mục tiêu của giai đoạn này là hiểu rõ các đặc điểm chính của dữ liệu và khám phá những thay đổi cần thiết để dữ liệu đáp ứng các mục đích cuối cùng.
Bước 2: Ánh xạ dữ liệu
Khi kết hợp dữ liệu từ nhiều nguồn thành một tập dữ liệu duy nhất, các trường dữ liệu cần phải khớp nhau để chuẩn bị cho việc nối Bước tiếp theo là thực thi việc tạo mã và chuyển đổi dữ liệu, nhằm đáp ứng các mục tiêu đã được xác định trước Đầu tiên, mã được tạo ra bằng tay hoặc thông qua các công cụ trực quan, sau đó mã sẽ được thực thi và quá trình chuyển đổi dữ liệu sẽ diễn ra.
Có nhiều loại chuyển đổi dữ liệu, bao gồm các hoạt động cộng để làm phong phú dữ liệu với ý nghĩa lớn hơn, chẳng hạn như tính tuổi từ ngày sinh Ngoài ra, các hoạt động trừ cũng đóng vai trò quan trọng trong việc xử lý dữ liệu.
Xóa các bản ghi hoặc trường không cần thiết, tiêu chuẩn hóa và chuẩn hóa dữ liệu là những bước quan trọng để định cỡ lại và thay đổi cấu trúc của tập dữ liệu.
Bước 4: Xác thực và Đánh giá
Sau khi hoàn tất quá trình chuyển đổi dữ liệu, người thực hiện sẽ xác minh rằng dữ liệu đáp ứng các mục tiêu đã đề ra trong giai đoạn khám phá ban đầu Những người sử dụng dữ liệu, như các doanh nghiệp vừa và nhỏ, sẽ kiểm tra xem dữ liệu có phù hợp với nhu cầu của họ hay không, chẳng hạn như để cải thiện một ứng dụng kinh doanh mới Thông thường, tại giai đoạn này, các điều chỉnh sẽ cần được thực hiện, dẫn đến việc chu kỳ chuyển đổi bắt đầu lại dưới một hình thức nào đó.
Data Analysis
Apache Hadoop
Apache Hadoop là nền tảng mã nguồn mở miễn phí, chuyên dùng để lưu trữ và xử lý các tập dữ liệu lớn từ gigabyte đến petabyte Nó cho phép phân cụm nhiều máy tính để thực hiện phân tích song song các bộ dữ liệu khổng lồ, thay vì phụ thuộc vào một máy tính lớn duy nhất để lưu trữ và phân tích dữ liệu.
MapReduce và Hệ thống tệp phân tán Hadoop là hai trong số các thành phần:
Bản đồ Giảm - MapReduce là một phương pháp lập trình song song hiệu quả, được thiết kế để xử lý khối lượng lớn dữ liệu có cấu trúc, bán cấu trúc và phi cấu trúc trên các cụm phần cứng thông dụng.
HDFS (Hệ thống tệp phân tán Hadoop) là một thành phần quan trọng trong khung Hadoop, có chức năng lưu trữ và xử lý dữ liệu Hệ thống này được thiết kế với khả năng chịu lỗi và hoạt động hiệu quả trên phần cứng tiêu chuẩn.
Các dự án con (công cụ) khác nhau trong hệ sinh thái Hadoop, bao gồm Sqoop, Pig và Hive, được sử dụng để hỗ trợ các mô-đun Hadoop
Tổ ong - Hive là một khuôn khổ để viết các script kiểu SQL thực hiện các phép tính MapReduce
Heo - Pig là một ngôn ngữ lập trình thủ tục có thể được sử dụng để tạo tập lệnh cho các quy trình MapReduce
Sqoop - Sqoop là công cụ nhập và xuất dữ liệu giữa HDFS và RDBMS.
Apache Hive
Apache Hive là một công cụ mã nguồn mở giúp quản lý và truy xuất các tập dữ liệu lớn được lưu trữ trong Hệ thống tệp phân tán Apache.
Hadoop (HDFS) hoặc các hệ thống lưu trữ dữ liệu khác như Apache HBase
Các nhà phát triển SQL có thể sử dụng Hive để tạo các câu lệnh Hive Query
Language (HQL) để truy vấn và phân tích dữ liệu có thể so sánh với các câu lệnh SQL
Hive được phát triển để đơn giản hóa lập trình MapReduce, loại bỏ nhu cầu học và viết mã Java phức tạp Thay vào đó, người dùng có thể viết truy vấn bằng HQL, và Hive sẽ tự động xây dựng các chức năng bản đồ và giảm cho họ.
Giao diện giống SQL của Apache Hive đã trở thành tiêu chuẩn vàng cho việc tìm kiếm, tóm tắt và phân tích dữ liệu Hadoop Khi triển khai trên nền tảng đám mây, giải pháp này không chỉ tiết kiệm chi phí mà còn dễ dàng mở rộng, lý do khiến nhiều công ty lớn như Netflix và Amazon tiếp tục phát triển và cải tiến Apache Hive.
Apache Hive chuyển đổi chương trình viết bằng ngôn ngữ HiveQL (tương tự SQL) thành các tác vụ Java MapReduce, Tez hoặc Spark, tất cả đều tương thích với Hadoop YARN Sau đó, Hive sắp xếp dữ liệu thành các bảng cho hệ thống tệp phân tán Hadoop (HDFS) và thực hiện các tác vụ trên cụm để thu được kết quả.
Các bảng trong Apache Hive được tổ chức tương tự như các bảng trong cơ sở dữ liệu quan hệ, với dữ liệu được sắp xếp từ lớn đến nhỏ Cơ sở dữ liệu bao gồm các bảng được chia thành các bộ phận và nhóm Để truy cập và thao tác với dữ liệu, người dùng sử dụng HiveQL (Ngôn ngữ truy vấn Hive) Mỗi cơ sở dữ liệu có dữ liệu bảng được tuần tự hóa và mỗi bảng có thư mục HDFS riêng biệt.
4.2.3 Cấu trúc của Apache Hive
Bây giờ chúng ta sẽ nói về khía cạnh quan trọng nhất của Kiến trúc Hive Các thành phần của Apache Hive như sau:
Kho hàng theo dõi thông tin về cấu trúc và vị trí của từng bảng, bao gồm cả siêu dữ liệu phân vùng trong Hive Điều này cho phép trình điều khiển giám sát tiến trình của các tập dữ liệu khác nhau trong cụm Dữ liệu được lưu trữ theo định dạng RDBMS thông thường, và siêu dữ liệu Hive đóng vai trò quan trọng trong việc duy trì theo dõi dữ liệu Máy chủ sao lưu thực hiện việc sao lưu dữ liệu thường xuyên để đảm bảo khả năng phục hồi trong trường hợp mất mát dữ liệu.
Người lái xe trong HiveQL hoạt động như một bộ điều khiển, nhận và thực hiện các câu lệnh Trình điều khiển thiết lập các phiên làm việc, theo dõi tuổi thọ và tiến độ của giám đốc điều hành Trong quá trình thực thi câu lệnh HiveQL, nó lưu trữ siêu dữ liệu cần thiết và cũng đóng vai trò là điểm thu thập dữ liệu hoặc kết quả truy vấn sau khi hoàn tất quá trình Rút gọn.
Trình biên dịch thực hiện việc biên dịch truy vấn HiveQL thành kế hoạch thực thi, trong đó liệt kê các nhiệm vụ và các bước mà MapReduce cần thực hiện để đạt được kết quả Truy vấn được chuyển đổi thành Cây cú pháp trừu tượng (AST) và sau đó chuyển đổi thành Đồ thị vòng có hướng dẫn (DAG) sau khi kiểm tra tính tương thích và lỗi thời gian biên dịch.
Trình tối ưu hóa cải thiện hiệu quả của DAG bằng cách thực hiện các thay đổi trên kế hoạch thực hiện Nó kết hợp các phép biến đổi, như biến một chuỗi các phép nối thành một phép nối duy nhất Để tăng tốc độ, trình tối ưu hóa có thể phân chia các hoạt động, chẳng hạn như áp dụng một phép chuyển đổi cho dữ liệu trước khi thực hiện thao tác giảm.
Công chức là người thực hiện các tác vụ sau khi quá trình biên dịch và tối ưu hóa hoàn tất, trong khi các công việc này được điều hành bởi Người thừa hành.
Giao diện dòng lệnh (CLI) là công cụ cho phép người dùng tương tác với Hive, trong khi máy chủ Thrift của Hive, tương tự như các giao thức JDBC và ODBC, hỗ trợ giao tiếp giữa các máy khách bên ngoài và Hive qua mạng.
Apache Hive tích hợp bảo mật Hadoop, sử dụng Kerberos để xác thực lẫn nhau giữa máy khách và máy chủ HDFS quản lý quyền truy cập cho các tệp mới trong Apache Hive, cho phép phê duyệt bởi người dùng, nhóm và các đối tượng khác.
Hive hỗ trợ các bảng bên ngoài, cho phép bạn xử lý dữ liệu mà không cần lưu trữ trong HDFS
Nó cũng cho phép phân đoạn dữ liệu ở cấp bảng để tăng tốc độ
Apache Hive đáp ứng xuất sắc nhu cầu giao diện cấp thấp của Hadoop
Hive giúp việc tóm tắt, truy vấn và phân tích dữ liệu trở nên dễ dàng hơn
HiveQL không yêu cầu bất kỳ kỹ năng lập trình nào; hiểu đơn giản về các truy vấn SQL là đủ
Chúng tôi cũng có thể sử dụng Hive để thực hiện các truy vấn đặc biệt để phân tích dữ liệu
Nó có thể mở rộng, quen thuộc và có thể thích ứng
HiveQL không yêu cầu bất kỳ kỹ năng lập trình nào; hiểu đơn giản về các truy vấn SQL là đủ
4.2.5 Ưu điểm và nhược điểm
Apache Hive hỗ trợ báo cáo hàng ngày, đánh giá giao dịch và phân tích dữ liệu hiệu quả Thông tin chi tiết mà Apache Hive cung cấp giúp doanh nghiệp có lợi thế cạnh tranh và dễ dàng đáp ứng nhu cầu thị trường.
Dễ sử dụng - Với ngôn ngữ giống SQL, việc truy vấn dữ liệu rất dễ hiểu
Chèn dữ liệu tăng tốc trong Apache Hive cho phép đọc lược đồ mà không cần xác minh loại bảng hoặc định nghĩa lược đồ, giúp dữ liệu không cần phải đọc, phân tích cú pháp và tuần tự hóa vào đĩa theo định dạng bên trong của cơ sở dữ liệu Điều này khác với các cơ sở dữ liệu thông thường, nơi dữ liệu phải được xác thực mỗi khi được thêm vào.
Apache Hive cung cấp khả năng mở rộng vượt trội, tính linh hoạt và hiệu quả chi phí nhờ vào việc lưu trữ dữ liệu trong HDFS, cho phép chứa tới 100 petabyte dữ liệu Điều này làm cho Apache Hive trở thành một lựa chọn khả thi hơn so với các cơ sở dữ liệu thông thường Là một dịch vụ Hadoop dựa trên đám mây, Apache Hive cho phép khách hàng dễ dàng điều chỉnh số lượng máy chủ ảo để phù hợp với khối lượng công việc thay đổi.
Năng lực làm việc rộng rãi - Bộ dữ liệu lớn có thể xử lý tới 100,000 truy vấn mỗi giờ
Nói chung, các truy vấn Apache Hive có độ trễ rất cao
Hỗ trợ truy vấn con bị hạn chế
Các truy vấn thời gian thực và thay đổi cấp độ hàng không khả dụng trong Apache Hive
Không có hỗ trợ cho các quan điểm cụ thể hóa
Trong tổ ong, các hành động cập nhật và xóa không được hỗ trợ
Không dành cho OLTP (quy trình chuyển tiếp trực tuyến).
Apache Impala
Impala là một công cụ truy vấn SQL MPP (Massive Parallel Processing) được thiết kế để xử lý khối lượng dữ liệu lớn trong cụm Hadoop Đây là phần mềm mã nguồn mở, giúp tối ưu hóa hiệu suất truy vấn và phân tích dữ liệu.
29 mở được viết bằng C ++ và Java Nó cung cấp hiệu suất cao và độ trễ thấp so với các công cụ SQL khác cho Hadoop
Impala là công cụ SQL hiệu suất cao nhất, mang lại trải nghiệm tương tự như RDBMS, và cung cấp phương pháp nhanh nhất để truy cập dữ liệu lưu trữ trong hệ thống tệp phân tán Hadoop.
Impala kết hợp khả năng hỗ trợ SQL và hiệu suất đa người dùng của cơ sở dữ liệu phân tích truyền thống với tính linh hoạt và khả năng mở rộng của Apache Hadoop, sử dụng các thành phần tiêu chuẩn như HDFS, HBase, Metastore, YARN và Sentry.
Với Impala, người dùng có khả năng giao tiếp nhanh chóng với HDFS hoặc HBase thông qua các truy vấn SQL, vượt trội hơn so với các công cụ SQL khác như Hive.
Impala có thể đọc hầu hết các định dạng tệp như Parquet, Avro, RCFile được Hadoop sử dụng
Impala sử dụng siêu dữ liệu và cú pháp SQL giống như Apache Hive, cùng với trình điều khiển ODBC và giao diện người dùng Hue Beeswax, tạo ra một nền tảng quen thuộc cho các truy vấn theo định hướng hàng loạt hoặc thời gian thực Khác với Apache Hive, Impala không dựa vào các thuật toán MapReduce.
Nó sử dụng kiến trúc phân tán với các quy trình daemon đảm nhận mọi khía cạnh của việc thực thi truy vấn trên cùng một máy.
Do đó, nó làm giảm độ trễ của việc sử dụng MapReduce và điều này làm cho Impala nhanh hơn Apache Hive
4.3.3 Ưu điểm và nhược điểm của Impala
Dưới đây là danh sách một số ưu điểm đáng chú ý của Cloudera Impala
Sử dụng impala, bạn có thể xử lý dữ liệu được lưu trữ trong HDFS với tốc độ nhanh như chớp với kiến thức SQL truyền thống
Quá trình xử lý dữ liệu diễn ra ngay tại nơi dữ liệu cư trú trên cụm Hadoop, do đó, việc chuyển đổi và di chuyển dữ liệu không cần thiết khi làm việc với Impala.
Sử dụng Impala, bạn có thể dễ dàng truy cập dữ liệu lưu trữ trong HDFS, HBase và Amazon S3 mà không cần phải có kiến thức về Java hay MapReduce, chỉ cần nắm vững các truy vấn SQL cơ bản.
Để viết truy vấn trong các công cụ kinh doanh, dữ liệu cần trải qua quy trình ETL (trích xuất-chuyển đổi-tải) phức tạp Tuy nhiên, với Impala, quy trình này được rút ngắn đáng kể Các giai đoạn tốn thời gian trong việc tải và tổ chức lại dữ liệu được cải thiện nhờ các kỹ thuật mới như phân tích dữ liệu thăm dò và khám phá dữ liệu, giúp tăng tốc độ xử lý.
Impala dẫn đầu trong việc áp dụng định dạng tệp Parquet, một cấu trúc lưu trữ cột được tối ưu hóa cho các truy vấn quy mô lớn, thường thấy trong các tình huống kho dữ liệu.
Một số nhược điểm của việc sử dụng Impala như sau:
Impala không cung cấp bất kỳ hỗ trợ nào cho Serialization và Deserialization
Impala chỉ có thể đọc các tệp văn bản, không thể đọc các tệp nhị phân tùy chỉnh
Bất cứ khi nào các bản ghi/tệp mới được thêm vào thư mục dữ liệu trong HDFS, bảng cần được làm mới
4.3.4 Các tính năng của Impala
Dưới đây là các tính năng của cloudera Impala:
Impala có sẵn miễn phí dưới dạng mã nguồn mở theo giấy phép Apache
Impala hỗ trợ xử lý dữ liệu trong bộ nhớ, cho phép truy cập và phân tích dữ liệu lưu trữ trên các nút dữ liệu Hadoop mà không cần di chuyển dữ liệu.
Bạn có thể truy cập dữ liệu bằng Impala bằng cách sử dụng các truy vấn giống SQL
Impala cung cấp quyền truy cập nhanh hơn cho dữ liệu trong HDFS khi so sánh với các công cụ SQL khác
Sử dụng Impala, bạn có thể lưu trữ dữ liệu trong các hệ thống lưu trữ như HDFS, Apache HBase và Amazon s3
Bạn có thể tích hợp Impala với các công cụ nghiệp vụ thông minh như Tableau, Pentaho, chiến lược Micro và dữ liệu Zoom
Impala hỗ trợ các định dạng tệp khác nhau như, LZO, Sequence File, Avro, RCFile và Parquet
Impala sử dụng siêu dữ liệu, trình điều khiển ODBC và cú pháp SQL từ Apache Hive
4.3.5 Cơ sở dữ liệu quan hệ và Impala
Impala sử dụng ngôn ngữ truy vấn tương tự như SQL và HiveQL Bảng dưới đây trình bày một số điểm khác biệt chính giữa SQL và ngôn ngữ truy vấn của Impala.
Impala Cơ sở dữ liệu quan hệ
Impala sử dụng SQL giống như ngôn ngữ truy vấn tương tự như HiveQL
Cơ sở dữ liệu quan hệ sử dụng ngôn ngữ SQL
Trong Impala, bạn không thể cập nhật hoặc xóa các bản ghi riêng lẻ
Trong cơ sở dữ liệu quan hệ, có thể cập nhật hoặc xóa các bản ghi riêng lẻ
Impala không hỗ trợ giao dịch và lập chỉ mục, trong khi đó, cơ sở dữ liệu quan hệ lại cung cấp cả hai tính năng này.
Impala lưu trữ và quản lý lượng lớn dữ liệu (petabyte)
Cơ sở dữ liệu quan hệ xử lý lượng dữ liệu nhỏ hơn (terabyte) khi so sánh với Impala.
Apache Drill
4.4.1 Tìm hiểu về Apacha Drill
Lấy cảm hứng từ hệ thống Dremel của Google, Apache Drill được thiết kế để phân tích tương tác với độ trễ thấp cho các tập dữ liệu lớn Drill hỗ trợ nhiều nguồn dữ liệu như HBase, Cassandra, MongoDB và các cơ sở dữ liệu quan hệ truyền thống Trong khi Hadoop cung cấp băng thông dữ liệu lớn, việc khám phá ý tưởng có thể mất nhiều thời gian Với Drill, bạn nhận được kết quả nhanh chóng, cho phép khám phá ý tưởng và phát triển lý thuyết hiệu quả hơn.
Apache Drill là một công cụ mạnh mẽ và dễ sử dụng, cho phép người dùng xử lý và phân tích dữ liệu lớn một cách đơn giản Với khả năng truy vấn nhiều bộ dữ liệu có cấu trúc và phi cấu trúc thông qua ANSI SQL, người dùng chỉ cần sử dụng SQL cùng với bất kỳ công cụ Business Intelligence (BI) nào để thực hiện các truy vấn trên dữ liệu từ nhiều nguồn khác nhau Apache Drill có thể hoạt động trên máy tính xách tay mà không cần xác định sơ đồ, giúp việc phân tích dữ liệu lớn trở nên dễ tiếp cận hơn cho nhiều người dùng.
Apache Khoan là một công cụ truy vấn nguồn mở, cho phép phân tích SQL tương tác và an toàn với quy mô petabytes Đây là công cụ đầu tiên cung cấp khả năng truy vấn và khám phá dữ liệu từ nhiều nguồn khác nhau, bao gồm cơ sở dữ liệu NoSQL và nhiều định dạng tệp Với việc tuân thủ tiêu chuẩn ANSI SQL, người dùng chỉ cần có kiến thức cơ bản về SQL để bắt đầu sử dụng.
Những lợi ích chính của Apache là khoan:
Các doanh nghiệp có thể tận dụng các hồ bơi tài năng hiện có và nguồn tài nguyên trên ANSI SQL để truy cập và phân tích dữ liệu một cách nhanh chóng, mà không cần phụ thuộc vào việc chuẩn bị dữ liệu từ bộ phận CNTT Các nhà phân tích SQL và chuyên gia kinh doanh thông minh có khả năng thực hiện các truy vấn và phân tích dữ liệu hiệu quả, giúp tiết kiệm thời gian và nâng cao hiệu suất làm việc.
Các bộ phận CNTT có thể tối ưu hóa quy trình làm việc bằng cách loại bỏ các công việc bảo trì không cần thiết và các chu trình ETL, đồng thời vẫn duy trì quản trị đơn giản và dễ hiểu nhờ vào các cơ chế truy cập dạng hạt dễ dàng triển khai.