- 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
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
BÀI TẬP 2 LÝ THUYẾT VỀ DATA
MÔN HỌC CÔNG NGHỆ 4.0 TRONG LÃNH VỰC CƠ KHÍ - ME4063
GVHD: TRẦN QUANG PHƯỚC
Kiều Trung Tín 1910610 4, 6, Tổng hợp Nhóm trưởng Bùi Trung Kiên 1910285 2
Huỳnh Nhật Trường 1910652 1
Huỳnh Lê Hữu Tuấn 1915762 3
Ngô Trần Quang Châu 1912766 5
Lê Gia Khánh 1913734 5
Trang 2MỤC LỤC
MỤC LỤC 1
1 Data Collection 4
1.1 Khái niệm 4
1.2 Các phương pháp thu thập dữ liệu 4
1.3 Hâu quả của thu thập dữ liệu sai cách 5
1.4 Yếu tố quan trọng trong thu thập dữ liệu 6
1.5 Các bước để thu thập dữ liệu 7
1.6 Hadoop 9
1.6.1 Khái niệm 9
1.6.2 Kiến trúc Hadoop 9
1.6.3 Hoạt động của Hadoop 12
2 Data Integration 12
2.1 Khái niệm 12
2.3 Hệ thống lưu trữ dữ liệu HDFS 15
2.3.1 Khái niệm 15
2.3.2 Ưu điểm nổi bật của HDFS 15
2.3.3 Kiến trúc của HDFS 16
3 Data processing 18
3.1 Định nghĩa 18
3.2 Chức năng của data processing 18
3.3 Các hình thức xử lý dữ liệu 19
3.4 Công cụ hỗ trợ xử lý Apache Spark 20
3.5 Các thành phần của Apache Spark 21
3.6 Các dữ liệu bị trùng lặp hoặc các dữ liệu không liên quan 23
3.7 Chuyển dữ liệu sang một dạng mới để dễ dàng phân tích 24
4 Data Analysis 25
4.1 Apache Hadoop 25
4.2 Apache Hive 25
4.2.1 Khái niệm 25
Trang 34.2.2 Nguyên lý hoạt động 26
4.2.3 Cấu trúc của Apache Hive 26
4.2.4 Các Tính Năng Chính 27
4.2.5 Ưu điểm và nhược điểm 28
4.3 Apache Impala 28
4.3.1 Khái niệm 28
4.3.2 Nhiệm vụ 29
4.3.3 Ưu điểm và nhược điểm của Impala 29
4.3.4 Các tính năng của Impala 30
4.3.5 Cơ sở dữ liệu quan hệ và Impala 30
4.4 Apache Drill 31
4.4.1 Tìm hiểu về Apacha Drill 31
4.4.2 Khái niệm 32
5 Data Visualization 32
5.1 Khái niệm 32
5.2 Các loại trực quan hóa dữ liệu 34
5.3 Các công cụ trực quan hóa 34
5.4 Ưu điểm và nhược điểm 35
5.5 Power BI 35
5.5.1 Sơ bộ về phần mềm Power BI 35
5.5.2 Các thành phần của Power BI 36
5.5.3 Ưu điểm và nhược điểm 36
5.5.4 Hướng dẫn sử dụng Power BI 37
5.6 Apache Zeppelin 44
5.6.1 Giới thiệu Apache Zeppelin 44
5.6.2 Các tính năng của Apache Zeppelin 45
5.7 Tableau 53
5.7.1 Giới thiệu Tableau 53
5.7.2 Ưu điểm, nhược điểm của Tableau 55
6 Data Management 56
Trang 46.1 Khát quát 56
6.2 Ứng dụng 56
6.3 Điểm mạnh 56
6.3.1 Hệ thống phân tán 56
6.3.2 Cơ chế lưu dữ liệu 57
6.4 Cấu trúc dữ liệu 58
6.5 Tính dư thừa 58
6.6 Ưu điểm và nhược điểm 58
6.6.1 Ưu điểm 58
6.6.2 Nhược điểm 58
Trang 51 Data Collection
1.1 Khái niệm
Data collection là quá trình thu thập và đo lường thông tin về các biến số quan tâm, theo một cách thức có hệ thống đã được thiết lập cho phép người ta trả lời các câu hỏi nghiên cứu đã nêu, kiểm tra giả thuyết và đánh giá kết quả Thành phần Data collection của nghiên cứu là chung cho tất cả các lĩnh vực nghiên cứu bao gồm khoa học vật lý và xã hội, nhân văn, kinh doanh, v.v Mặc dù các phương pháp khác nhau tùy theo ngành học, nhưng trọng tâm về việc đảm bảo thu thập chính xác và trung thực vẫn không đổi
Bất kể lĩnh vực nghiên cứu hoặc sở thích xác định dữ liệu (định lượng, định tính) là
gì, việc Data collection chính xác là điều cần thiết để duy trì tính toàn vẹn của nghiên cứu
Cả việc lựa chọn các công cụ Data collection thích hợp (hiện có, sửa đổi hoặc mới được phát triển) và các hướng dẫn được mô tả rõ ràng để sử dụng chúng đúng cách đều làm giảm khả năng xảy ra sai sót
1.2 Các phương pháp thu thập dữ liệu
- Phương pháp quan sát (observation)
Quan sát là phương pháp thu thập dữ liệu bằng cách ghi lại có kiểm soát các sự kiện hoặc các hành vi ứng xử của con người Phương pháp thu thập dữ liệu này khá tiện dụng thường được dùng kết hợp với các phương pháp khác để kiểm tra chéo độ chính xác của
dữ liệu thu thập
- Phương pháp phỏng vấn
Trang 6Phỏng vấn là một cuộc hỏi đáp giữa một bên là phỏng vấn viên và một bên là người được phỏng vấn thông qua một hình thức tiếp xúc nào đó Trong thực tiễn các hình thức tiếp xúc trong phỏng vấn khá đa dạng:
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 là để quan sát và đo lường các phản ứng tâm lý hoặc theo dõi các cuộc phỏng vấn, thảo luận của các nhóm trọng điểm Phòng thí nghiệm thường được chia làm 2 ngăn: Ngăn 1 dành cho những người được phỏng vấn, hay thử nghiệm; Ngăn 2 dành cho những quan sát viên và các trang bị kỹ thuật,
ở giữa 2 ngăn được trang bị 1 tấm kính 1 chiều
- Thử nghiệm tại hiện trường là việc quan sát đo lường thái độ, phản ứng của khách hàng trước những sự thay đổi của nhà cung cấp sản phẩm/dịch vụ như: thay đổi giá bán, thay đổi cách thức phục vụ, chăm sóc khách hàng… Việc quan sát được thực hiện tại nơi diễn ra sự giao dịch, cho nên được gọi là thử nghiệm tại hiện trường
- Phương pháp điều tra thăm dò
Điều tra là việc tìm hiểu thật kỹ ngọn nguồn các sự kiện, chú trọng tới việc thu thập thông tin cùng các nhân chứng, vật chứng Trong nghiên cứu marketing phương pháp thu thập dữ liệu này được áp dụng khá phổ biến vì những ưu thế của nó nhằm bảo đảm 4 nguyên tắc của một nghiên cứu khoa học
Công cụ chủ yếu được dùng để thu thập các thông tin, sự kiện trong phương pháp này
là “Bảng câu hỏi – Questions Form” do khách hàng tự trả lời
Nó đặc biệt hữu dụng trong nghiên cứu định lượng bởi vì: Đối tượng nghiên cứu chủ yếu của nghiên cứu marketing là các ý kiến, kỳ vọng của khách hàng, nhà cung cấp, người tiêu dùng… cần được đo lường, tính toán, so sánh một cách cụ thể Vì vậy, cách thức để thu thập dữ liệu bằng “bảng câu hỏi” trong điều tra thăm dò là phù hợp hơn cả
- 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 nhất trong nghiên cứu định tính Các dữ liệu được thu thập thông qua một cuộc thảo luận giữa một nhóm đối tượng nghiên cứu (nhóm tập trung hay nhóm chuyên đề) dưới sự dẫn dắt của người điều khiển chương trình (moderator)
1.3 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
Trang 7- 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
- Mặc dù mức độ tác động từ việc Data collection bị lỗi có thể khác nhau tùy theo kỷ luật và bản chất của cuộc điều tra, nhưng có khả năng gây ra tác hại không cân xứng khi các kết quả nghiên cứu này được sử dụng để hỗ trợ các khuyến nghị chính sách công 1.4 Yếu tố quan trọng trong thu thập dữ liệu
Đảm bảo chất lượng
Vì đảm bảo chất lượng có trước việc Data collection, trọng tâm chính của nó là ‘phòng ngừa’ (tức là ngăn chặn các vấn đề với việc Data collection) Phòng ngừa là hoạt động tiết kiệm chi phí nhất để đảm bảo tính toàn vẹn của việc Data collection Biện pháp chủ động này được thể hiện rõ nhất bằng việc chuẩn hóa giao thức được phát triển trong sổ tay thủ tục toàn diện và chi tiết để Data collection Sổ tay hướng dẫn viết kém làm tăng nguy cơ không xác định sớm được các vấn đề và sai sót trong quá trình nghiên cứu Những thất bại này có thể được chứng minh theo một số cách:
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
Mô tả mơ hồ về các công cụ Data collection sẽ được sử dụng thay cho các hướng dẫn từng bước nghiêm ngặt về việc 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
Kiểm soát chất lượng
Mặc dù các hoạt động kiểm soát chất lượng (phát hiện / giám sát và hành động) diễn
ra trong và sau khi Data collection, các chi tiết cần được thực hiện cẩn thận trong sổ tay thủ tục Một cấu trúc thông tin liên lạc được xác định rõ ràng là tiền đề cần thiết để thiết lập hệ thống giám sát Không được có bất kỳ 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à các nhân viên sau khi phát hiện ra các sai sót trong quá trình Data collection Một cấu trúc giao tiếp kém phát triển khuyến khích việc giám sát lỏng lẻo
và hạn chế cơ hội phát hiện lỗi
Trang 8Việc phát hiện hoặc giám sát có thể dưới hình thức quan sát nhân viên trực tiếp trong các chuyến thăm thực địa, các cuộc gọi hội nghị, hoặc đánh giá thường xuyên và thường xuyên các báo cáo dữ liệu để xác định sự không nhất quán, giá trị cực đoan hoặc mã không hợp lệ Mặc dù việc thăm địa điểm có thể không phù hợp với tất cả các lĩnh vực, nhưng việc không kiểm tra hồ sơ thường xuyên, dù là định lượng hay định lượng, sẽ khiến các nhà điều tra khó xác minh rằng việc Data collection đang tiến hành theo các thủ tục được thiết lập trong sổ tay hướng dẫn Ngoài ra, nếu cấu trúc thông tin liên lạc không được mô
tả rõ ràng trong sổ tay thủ tục, việc truyền tải bất kỳ thay đổi nào trong thủ tục đến nhân viên đều có thể bị tổn hại
Kiểm soát chất lượng cũng xác định các phản hồi bắt buộc hoặc “hành động” cần thiết
để sửa chữa các thực hành Data collection bị lỗi và cũng giảm thiểu các sự cố xảy ra trong tương lai Những hành động này ít có khả năng xảy ra nếu các thủ tục Data collection được viết một cách mơ hồ và các bước cần thiết để giảm thiểu sự tái diễn không được thực hiện thông qua phản hồi và giáo dục
1.5 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 bắt đầu quá trình thu thập dữ liệu, bạn cần xác định chính xác những gì bạn muốn đạt được Bạn có thể bắt đầu bằng cách viết một bản tuyên bố vấn đề: vấn đề thực tế hoặc khoa học mà bạn muốn giải quyết là gì và tại sao nó lại quan trọng?
Tiếp theo, hình thành một hoặc nhiều câu hỏi nghiên cứu 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âu hỏi nghiên cứu của bạn, 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
Nếu mục đích của bạn là kiểm tra một giả thuyết, đo lường chính xác điều gì đó hoặc
có được những hiểu biết thống kê quy mô lớn, hãy thu thập dữ liệu định lượng Nếu mục đích của bạn là khám phá ý tưởng, hiểu kinh nghiệm hoặc hiểu biết chi tiết về bối cảnh cụ thể, hãy thu thập dữ liệu định tính Nếu bạn có nhiều mục tiêu, bạn có thể sử dụng cách tiếp cận phương pháp hỗn hợp để thu thập cả hai loại dữ liệu
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
Trang 9Đ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 bạn biết mình đang sử dụng (các) phương pháp nào, bạn cần lập kế hoạch chính xác cách bạn sẽ thực hiện chúng Bạn sẽ tuân theo quy trình nào để thực hiện các quan sát hoặc đo lường chính xác các biến mà bạn quan tâm?
Ví dụ: nếu bạn đang thực hiện các cuộc khảo sát hoặc phỏng vấn, hãy quyết định các câu hỏi sẽ có dạng gì; nếu bạn đang tiến hành một thử nghiệm, hãy đưa ra quyết định về thiết kế thử nghiệm của bạn
Đôi khi các biến số của bạn có thể được đo lường trực tiếp: ví dụ: bạn có thể thu thập
dữ liệu về độ tuổi trung bình của nhân viên chỉ bằng cách hỏi ngày sinh Tuy nhiên, bạn thường quan tâm đến việc thu thập dữ liệu về các khái niệm hoặc biến trừu tượng hơn 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
Nếu bạn sẽ thu thập dữ liệu như thế nào, bạn cần chuyển định nghĩa khái niệm về những gì bạn muốn nghiên cứu thành định nghĩa hoạt động của những gì bạn sẽ thực sự đo lường
Trang 10Cuối cùng, bạn có thể triển khai các phương pháp đã chọn để đo lường hoặc quan sát các biến mà bạn quan tâm
Để đảm bảo rằng dữ liệu chất lượng cao được ghi lại một cách có hệ thống, đây là một
số phương pháp hay nhất:
Ghi lại tất cả thông tin liên quan khi và khi bạn lấy dữ liệu Ví dụ, ghi lại xem thiết bị phòng thí nghiệm có được hiệu chuẩn lại trong quá trình nghiên cứu thử nghiệm hay không Kiểm tra kỹ việc nhập dữ liệu thủ công để tìm lỗi
Nếu bạn thu thập dữ liệu định lượng, bạn có thể đánh giá độ tin cậy và tính hợp lệ để
có được dấu hiệu về chất lượng dữ liệu của bạn
1.6 Hadoop
1.6.1 Khái niệm
Hadoop là một Apache framework nguồn mở viết bằng Java cho phép phát triển các ứng dụng phân tán có cường độ dữ liệu lớn một cách miễn phí Nó được thiết kế để mở rộng quy mô từ một máy chủ đơn sang hàng ngàn máy tính khác có tính toán và lưu trữ cục bộ (local computation and storage) Hadoop được phát triển dựa trên ý tưởng từ các công bố của Google về mô hình Map-Reduce và hệ thống file phân tán Google File
System (GFS) Và có cung cấp cho chúng ta một môi trường song song để thực thi các tác
vụ Map-Reduce Nhờ có cơ chế streaming mà Hadoop có thể phát triển trên các ứng dụng phân tán bằng cả java lẫn một số ngôn ngữ lập trình khác như C++, Pyhthon, Pearl, 1.6.2 Kiến trúc Hadoop
Hadoop có một cấu trúc liên kết master-slave Trong cấu trúc này, chúng ta có một node master và nhiều node slave Chức năng của node master là gán một tác vụ cho các node slave khác nhau và quản lý tài nguyên Các node slave là máy tính thực tế có thể không mạnh lắm Các node slave lưu trữ dữ liệu thực trong khi trên master chúng ta có metadata
Kiến trúc Hadoop gồm có ba lớp chính đó là:HDFS (Hadoop Distributed File
System), Map-Reduce, Yarn
HDFS (Hadoop Distributed File System)
Là hệ thống file phân tán, cung cấp khả năng lưu trữ dữ liệu khổng lồ và tính năng tối ưu hoá việc sử dụng băng thông giữa các node HDFS có thể được sử dụng để chạy trên một cluster lớn với hàng chục ngàn node
Cho phép truy xuất nhiều ổ đĩa như là 1 ổ đĩa Nói cách khác, chúng ta có thể sử dụng một ổ đĩa mà gần như không bị giới hạn về dung lượng Muố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
Trang 11 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
Map-Reduce là một framework dùng để viết các ứng dụng xử lý song song một lượng lớn dữ liệu có khả năng chịu lỗi cao xuyên suốt hàng ngàn cluster(cụm) máy tính
Map-Reduce thực hiện 2 chức năng chính đó là Map và Reduce
Map: Sẽ thực hiện đầu tiên, có chức năng tải, phân tích dữ liệu đầu vào và được chuyển đổi thành tập dữ liệu theo cặp key/value
Reduce: Sẽ nhận kết quả đầu ra từ tác vụ Map, kết hợp dữ liệu lại với nhau thành tập dữ liệu nhỏ hơn
Để dễ hiểu hơn, chúng ta hãy cùng xem ví dụ WordCount sau đây WordCount là bài toán đếm tần suất xuất hiện của các từ trong đoạn văn bản Và chúng ta sẽ mô tả quá trình xử lý bài toán này bằng Map-Redue
Đối với hàm Map:
Input là 1 đoạn văn bản
Output là các cặp <word, 1>
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 <word, [list]>, trong đó list là tập hợp các giá trị đếm được của mỗi
từ
Output: <word, tổng số lần xuất hiện của từ>
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 xử lý trung gian gọi là hàm Shuffle Hàm này có nhiệm vụ sắp xếp các từ và tổng hợp dữ liệu đầu vào cho Reduce từ các kết quả
Trang 12YARN
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 hay memory) 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ớ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
1 App Master (App Mstr) Application Master được chuyển đến chạy 1 một node tính toán Application Master sẽ liên lạc với các NodeManager ở các node khá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
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ó 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ũng không
Trang 13sắ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ế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
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 YARN Federation Tính năng này cho phép chúng ta buộc nhiều cụm YARN thành một cụm lớn Điều này cho phép sử dụng các cụm độc lập, ghép lại với nhau cho một job rất lớn
1.6.3 Hoạt động của Hadoop
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 và
Giai đoạn 3
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” có nghĩa là chạy một tập các trình nền – daemon, hoặc các
chươ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 daemon bao gồm: NameNode, DataNode, SecondaryNameNode, JobTracker, TaskTracker
2 Data Integration
2.1 Khái niệm
Tích hợp dữ liệu (Data Integration) bao gồm việc kết hợp dữ liệu không đồng nhất trong các nguồn khác nhau vào một lược đồ duy nhất và có thể truy vấn, cung cấp cho người dùng một cái nhìn thống nhất về chúng
Trang 14Tích hợp dữ liệu được sử dụng với tần số ngày càng nhiều khi mà khối lượng và nhu cầu chia sẻ dữ liệu hiện nay rất lớn Để đảm bảo việc trao đổi dữ liệu trong hệ thống được hiệu quả hoặc xử lý các công việc tiếp theo theo các luồng công việc định trước như: phân tích, so sánh, thống kê, báo cáo,…
Cách tiếp cận này được gọi là ghép nối chặt chẽ vì trong cách tiếp cận này dữ liệu được kết hợp chặt chẽ với kho lưu trữ vật lý tại thời điểm truy vấn
Ghép nối lỏng lẻo (Loose Coupling): lược đồ trung gian ảo
Ở đây một lược đồ trung gian ảo cung cấp một giao diện nhận truy vấn từ người dùng, biến đổi nó theo cách mà cơ sở dữ liệu nguồn có thể hiểu và gửi truy vấn trực tiếp tới cơ
sở dữ liệu nguồn để thu được kết quả Trong phương pháp này, dữ liệu chỉ nằm 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
Trang 15Mô hình phương pháp ghép nối lỏng lẻo trong tích hợp dữ liệu Lược đồ trung gian chứa một số “bộ điều hợp” hoặc “trình bao bọc” có thể kết nối lại với hệ thống nguồn để mang dữ liệu đến giao diện người dùng
Ưu điểm và nhược điểm
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ẽ Ghép nối lỏng lẻo
Ưu điểm – Độc lập (phụ thuộc ít hơn
vào hệ thống nguồn vì 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)
– Nhanh nhẹn hơn (khi có
hệ thống nguồn mới hoặc hệ thống nguồn hiện tại thay đổi thì chỉ bộ điều hợp tương ứng mới đượ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)
Trang 16– Chi phí thấp
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
2.3 Hệ thống lưu trữ dữ liệu HDFS
2.3.1 Khái niệm
HDFS (tên viết tắt của từ Hadoop Distributed File System” là một hệ thống lưu dữ dữ
dữ liệu được sử dụng bởi Hadoop Chức năng của hệ thống này là cung cấp khả năng truy cập với hiệu suất cao đến với các dữ liệu nằm trên các cụm của Hadoop
Thông thường, HDFS sẽ sử dụng cũng như triển khai trên các phần cứng với chi phí vừa phải, bởi các máy chủ sẽ rất dễ phát sinh các lỗi phần cứng Đây là lý do mà HDFS được lập trình và được xây dựng nhằm mục đích chịu lỗi cao để giảm rủi ro cũng như giảm thiểu được quá trình phát sinh lỗi
HDFS tạo ra các mảnh nhỏ hơn của dữ liệu lớn rồi phân tán chúng lên các nodes khác nhau Từ đó, sao chép mỗi miếng dữ liệu nhỏ hơn trên nhiều nodes khác Do vậy, khi node bất kỳ có dữ liệu bị lỗi thì hệ thống sẽ tự động sử dụng dữ liệu từ 1 node khác rồi tiếp tục
xử lý Đây là một trong những tính năng đặc biệt quan trọng của HDFS
2.3.2 Ưu điểm nổi bật của HDFS
HDFS cho phép dữ liệu có thể phân tán: Điều này có thể hiểu như sau: Nếu như có một cụm Hadoop mà trong đó bao gồm 20 máy tính thì bạn chỉ cần đưa một file dữ liệu vào HDFS Khi đó, thì file sẽ tự động được chia nhỏ thành nhiều phần rồi được lưu trữ ở 20 máy tính đó
HDFS cho phép tính toán và phân tán song song: Thay vì chỉ sử dụng một máy để xử
lý công việc, thì với HDFS thì bạn có thể để các máy hoạt động song song để xử lý chung một công việc để tiết kiệm thời gian
HDFS cho phép nhân bản các file: Đặc điểm này sẽ giúp bạn đề phòng được các trường hợp một máy tính trong cụm Hadoop phát sinh sự cố thì dữ liệu sẽ được backup lại mà không bị mất
HDFS có thể mở rộng theo chiều dọc: Lúc này, bạn sẽ có nhiệm vụ nâng cấp cho các
hệ thống bằng cách tăng cấu hình cho máy tính lên Tính năng này còn được gọi là Scale
Up hay Vertical scaling
Trang 17HDFS sở hữu khả năng mở rộng hệ thống theo chiều ngang: Đặc điểm này có nghĩa rằng, bạn không cần phải nâng cấp cho phần cứng mà chỉ cần mua thêm một chiếc máy tính mới để chia sẻ với chiếc máy hiện tại là được
2.3.3 Kiến trúc của HDFS
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ừ đó, bổ sung cho NameNode để có nhiều DataNodes Bạn nên chú ý rằng, sẽ luôn
có 1 DataNode dành riêng cho các máy chủ dữ liệu Trong một HDFS, 1 tập tin lớn sẽ được chia thành 1 hoặc nhiều khối, những khối này đều sẽ được lưu trữ trong 1 tập các DataNodes
Kiến trúc của HDFS
NameNode có tác vụ chính là đóng, mở và đổi tên cho các tập tin, thư mục Ngoài ra,
nó còn điều chỉnh cho các truy cập đến hệ thống tập tin Trong khi đó, DataNode có tác vụ
là ghi, đọc vào hệ thống tập tin; nó còn có nhiệm vụ tạo, xóa, nhân rộng các dữ liệu dựa trên chỉ dẫn của NameNode Lưu ý: NameNode và DataNode đều là phần mềm được thiết
kế nhằm mục đích chạy trên máy chủ và chúng được viết bằng Java Quá trình hoạt động của NameNode và DataNode như sau:
NameNode: Có trách nhiệm điều phối cho các thao tác truy cập của client với hệ thống HDFS Bởi vì các DataNode là nơi lưu trữ thật sự các block của các file trên
Trang 18HDFS 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: DataNode server sẽ chạy một daemon datanode trên port 8022, theo định kỳ thì mỗi DataNode sẽ có nhiệm vụ báo cáo cho Namenode biết được danh sách tất cả các block mà nó đang lưu trữ Để NameNode có thể dựa vào nó để cập nhật lại các metadata trong nó
Sau mỗi lần cập nhật thì metadata trên NameNode đều sẽ đạt được các tình trạng thống nhất dữ liệu trên các DataNode Toàn bộ trạng thái của metadata trên NameNode sẽ đạt được sự thống nhất với các dữ liệu ở trên DataNode Tất cả các trạng thái của metadata ngay khi đang ở tình trạng hệ thống này sẽ được gọi là checkpoint
Mỗi một metadata ở trạng thái checkpoint đều sẽ được sử dụng cho mục đích nhân bản metadata với mục đích phục hồi lại NameNode nếu như NameNode xuất hiện lỗi Đọc file trên HDFS: Khi các máy con client gửi yêu cầu đọc đến NameNode, khi đó NameNode nhận được phải sẽ thực hiện các tác vụ để kiểm tra xem file có tồn tại không, file có bị lỗi hoặc bị nhiễm virus không?
Nếu như file không có vấn đề thì NameNode sẽ gửi các danh sách của các Block của file cùng với địa chỉ của các DataNode Sau đó, hệ thống sẽ mở kết nối với DataNode rồi thực hiện chức năng RPC để nhận được các dữ liệu cần đọc, rồi đóng kết nối với DataNode còn lại
Khi đó, các client đọc các block của file liên tục và lặp lại cho đến block cuối của file Tiếp theo, lập trình viên sẽ sử dụng một tập tin API của Hadoop để có thể tương tác trực tiếp được với HDFS Những tập API sẽ có chức năng giấu đi các NameNode để giúp kết nối với các DataNode để nhận được dữ liệu
HDFS là một hệ thống quan trọng trong Hadoop
Trang 19Cách ghi file trên HDFS: Tương tự quá trình đọc file, tuy nhiên quá trình này thì các
client sẽ gửi đến cho các NameNode một file entry (đây là file chưa có bất kỳ block nào
bên trong) Những file client sẽ thực hiện chia file dữ liệu thành các block và mỗi block
đều sẽ được đóng gói thành packet
Tiếp theo, Client sẽ gửi Packet cho DataNode thứ nhất, sau khi được lưu xong thì
DataNode đầu tiên lại gửi tiếp packet cho DataNode thứ hai để sao lưu Quá trình này sẽ
tiếp diễn cho đến các DataNode cuối cùng nhận được packet và sao lưu nó Thì nó sẽ lại
gửi thông báo cho client là đã lưu thành công Từ đó, client sẽ thực hiện hành động để
babos cáo cho NameNode biết rồi cập nhật lại toàn bộ danh sách các block mà file đã ghi
lại
3 Data processing
3.1 Định nghĩa
Xử lý dữ liệu là quá trình xữ lý và đồng bộ hóa toàn bộ dữ liệu trong hệ thống như tiếp
nhận nguồn thông tin mới và lọc ra những dữ liệu phù hợp với yêu cầu, xử lý dữ liệu đóng
vai trò rất quan trọng trong việc học tập và làm việc Mục đích của việc xử lý dữ liệu chính
là giúp lưu trữ và phân loại thông tin để có thể sữ dụng trong mọi thời điểm và trường hợp
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
3.2 Chức năng của data processing
Trong quá trình xử lý dữ liệu gồm có rất nhiều bước cần phải bắt buộc thực hiện để
đảm bảo hiệu quả công việc Trong đó các bước có chức năng khác nhau:
- Xác nhận thông tin: trong quá trình xử lý dữ liệu thì việc đầu tiên chính là thu thập
những thông tin đầu vào cho hệ thống Thì sau khi tìm kiếm những thông tin theo yêu cầu
Trang 20thì 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
- Sắp xếp dữ liệu: Việc tiếp theo sau khi xác nhận các thông tin đã đảm bảo đúng yêu cầu 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
- Sắp xếp dữ liệu: Việc tiếp theo sau khi xác nhận các thông tin đã đảm bapr đúng yêu cầu thì hệ thống sẽ sữ lý bằng cách sắp xếp và phân loại các dữ liệu theo từng bộ riêng có nội dung tương đồng rồi đánh số thứ tự đê có thể dễ kiểm soát
- Tóm tắt dữ liệu: công việc này hỗ trợ xử lý bằng cách đưa ra những thông tin chính của dữ liệu và giảm bớt những giải thích chi tiết cho nội dung chính để dễ tổng hợp
và tìm kiếm như vậỵ sẽ tiện lợi hơn với người dung
- Tập hợp nội dung: sau khi thông tin đã được phân loại và thâu tóm những nội dung chính thì tập hợp dữ liệu giúp kết hợp những thông tin có cùng loại với nhau tạo thành những thư mục dữ liệu lớn
- Phân tích dữ liệu: Đây là bước quan trọng trong quá trình xử lý thông tin, đóng vai trò quyết định hiệu quả công việc Quá trình phân tích dữ liệu cũng được coi là một quá trình xử lý dữ liệu con bỡi cũng phải trải qua nhiều bước thực hiện đó là thu thập dữ liệu sau đó tổ chức phân loại thông tin tiến hành phân tích các nội dung liên quan đến yêu cầu
và tìm kiếm kết quả sát sao nhất đưa ra giải thích về quá trình phân tích và trình bày kết quả phân tích thông tin sau khi đã hoàn thành những bước trên
- Báo cáo: sau khi hoàn thành những bước xử lý bên trên và đưa ra kết quả phân tích thông tin thì cần phải báo cáo dữ liệu bằng cách kê khai toàn bộ những thông tin chi tiết cụ thể về dữ liệu thông qua những thông tin tóm tắt
- Phân loại nội dung: Bước phân loại này khá giống với phân loại dữ liệu thông tin phía trên chỉ khác ở điểm là cái ở trên phân loại dữ liệu đầu vào còn bước này là phân loại thông tin đầu ra
- Xử lý dữ liệu thương mại: đây là hình thức xử lý thông tin dưới dạng ít tính toán
mà có mục đích lưu trữ cùng với lượng thông tin đầu ra khổng lồ
Trang 213.4 Công cụ hỗ trợ xử lý Apache Spark
Các tổ chức thuộc mọi quy mô đều dựa 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 cồng kềnh Lúc này, Apache Spark ra đời như một sứ mệnh mang đến giải pháp hiệu quả cho việc phân tích và xử lý
dữ liệu Kể từ khi phát hành, Apache Spark đã được các doanh nghiệp trong nhiều ngành công nghiệp áp dụng nhanh chóng
Apache Spark là một framework xử lý dữ liệu mã nguồn mở trên quy mô lớn Spark cung cấp một giao diện để lập trình các cụm tính toán song song với khả năng chịu lỗi Ban đầu Spark được phát triển tại AMPLab của Đại học California Berkeley, sau đó mã nguồn được tặng cho Apache Software Foundation vào năm 2013 và tổ chức này đã duy trì nó cho đến nay
Khả năng tính toán phân tán của Apache Spark khiến nó rất phù hợp với big data và machine learning, vốn đòi sức mạnh tính toán khổng lồ để làm việc trên các kho dữ liệu lớn Spark cũng giúp loại bỏ một số gánh nặng lập trình khỏi vai của các nhà phát triển với một API dễ sử dụng đảm nhiệm phần lớn công việc khó khăn của tính toán phân tán
và xử lý dữ liệu lớn
Trang 223.5 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
Như tên gọi, Spark Core là thành phần cốt lõi của Apache Spark, các thành phần khác muốn hoạt động đều cần thông qua Spark Core Spark Core có vai trò thực hiện công việc tính toán và xử lý trong bộ nhớ (In-memory computing), đồng thời nó cũng tham chiếu đến các dữ liệu được lưu trữ tại các hệ thống lưu trữ bên ngoài
Spark SQL
Spark SQL tập trung vào việc xử lý dữ liệu có cấu trúc, sử dụng phương pháp tiếp cận khung dữ liệu được mượn từ các ngôn ngữ R và Python (trong Pandas) Như tên gọi, Spark SQL cũng cung cấp giao diện với cú pháp SQL để truy vấn dữ liệu, mang sức mạnh của Apache Spark đến các nhà phân tích dữ liệu cũng như các nhà phát triển Bên cạnh khả năng hỗ trợ SQL, Spark SQL cung cấp một giao diện tiêu chuẩn để đọc
và ghi vào các kho dữ liệu khác bao gồm JSON, HDFS, Apache Hive, JDBC, Apache
Trang 23ORC và Apache Parquet, tất cả đều được hỗ trợ trực tiếp Các cơ sở dữ liệu phổ biến khác như Apache Cassandra, MongoDB, Apache Hbase,… cũng được hỗ trợ thông qua các trình kết nối riêng biệt từ hệ sinh thái Spark Packages
Spark Streaming
Spark Streaming là một bổ sung ban đầu cho Apache Spark giúp nó đáp ứng các yêu cầu xử lý thời gian thực (realtime) hoặc gần như thời gian thực Spark Streaming chia nhỏ luồng xử lý thành một chuỗi liên tục gồm các microbatch mà sau đó có thể được thao tác bằng API Apache Spark
Bằng cách này, mã trong các xử lý hàng loạt và trực tuyến có thể được tái sử dụng, chạy trên cùng một framework, do đó giảm chi phí cho cả nhà phát triển và nhà điều hành
MLlib (Machine Learning Library)
MLlib là một nền tảng học máy phân tán bên trên Spark với kiến trúc phân tán dựa trên bộ nhớ Theo các một số so sánh, Spark MLlib nhanh hơn 9 lần so với thư viện tương đương chạy trên Hadoop là Apache Mahout
Kiến trúc của Apache Spark
Về cơ bản, Apache Spark 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 dùng để chuyển đổi mã của người dùng thành nhiều tác vụ (tasks) có thể được phân phối trên các nút xử lý (worker nodes)
Trang 24Trình thực thi chạy trên các nút xử lý và thực hiện các nhiệm vụ được giao cho chúng Spark cũng có thể chạy ở chế độ cụm độc lập chỉ yêu cầu khung Apache Spark và JVM trên mỗi máy trong cụm Tuy nhiên, sử dụng các công cụ quản lý cụm như trung gian giữa hai thành phần giúp tận dụng tài nguyên tốt hơn và cho phép phân bổ theo yêu cầu Trong doanh nghiệp, Apache Spark có thể chạy trên Apache Mesos, Kubernetes và Docker Swarm
Apache Spark xây dựng các lệnh xử lý dữ liệu của người dùng thành Đồ thị vòng có hướng hoặc DAG DAG là lớp lập lịch của Apache Spark; nó xác định những tác vụ nào được thực thi trên những nút nào và theo trình tự nào
Ưu điểm Apache Spark
- Tốc độ cao: Được thiết kế từ dưới lên để tăng hiệu suất, Spark có thể nhanh hơn
100 lần so với Hadoop khi xử lý dữ liệu quy mô lớn bằng cách khai thác tính toán trên bộ nhớ và các tối ưu hóa khác Spark cũng nhanh khi dữ liệu được lưu trữ trên đĩa và hiện đang giữ kỷ lục thế giới về phân loại trên đĩa quy mô lớn
- Dễ sử dụng: Spark có các API dễ sử dụng để làm việc trên các tập dữ liệu lớn, bao gồm hơn 100 toán tử để chuyển đổi dữ liệu và các API dataframe quen thuộc để xử lý dữ liệu bán cấu trúc
- Thư viện hỗ trợ rộng: Spark được đóng gói với các thư viện cấp cao, bao gồm hỗ trợ truy vấn SQL, truyền dữ liệu trực tuyến, học máy và xử lý đồ thị Các thư viện tiêu chuẩn này làm tăng năng suất của nhà phát triển và có thể được kết hợp liền mạch để tạo
ra các quy trình làm việc phức tạp
3.6 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 của , bao gồm các đối tượng trùng lặp hoặc đối tượng không liên quan Các đối tượng trùng lặp sẽ xảy ra
Trang 25thường xuyên nhất trong quá trình thu thập dữ liệu Khi kết hợp các tập dữ liệu từ nhiều nơi, loại bỏ dữ liệu hoặc nhận dữ liệu từ khách hàng hoặc nhiều bộ phận, sẽ có cơ hội tạo
dữ liệu trùng lặp Khử trùng lặp là một trong những lĩnh vực lớn nhất được xem xét trong quá trình này Các quan sát không liên quan là khi nhận thấy các quan sát không phù hợp với vấn đề cụ thể đang cố gắng phân tích Hiện nay có rất nhiều phần mềm để giải quyết việc này và một trong số đó là phần mềm Tableau
3.7 Chuyển dữ liệu sang một dạng mới để dễ dàng phân tích
Về cơ bản, chuyển đổi dữ liệu có thể được định nghĩa là quá trình sửa đổi dữ liệu để làm cho nó có thể sử dụng được cho ứng dụng xuôi dòng trong các công cụ, quy trình và phân tích Mặc dù các bước có thể khác nhau tùy thuộc vào mục tiêu của dự án và nhu cầu dữ liệu của bạn, quy trình chuyển đổi dữ liệu thường bắt đầu bằng việc kiểm tra trước mức độ hiểu và làm sạch dữ liệu, đồng thời 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
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 cuối cùng là để hiểu các đặc điểm chính của dữ liệu và khám phá những thay đổi nào có thể cần xảy ra đối với dữ liệu để đáp ứng các mục đích cuối cùng
Bước 2: Ánh xạ dữ liệu
Thường thì sẽ cần kết hợp dữ liệu từ nhiều nguồn vào một tập dữ liệu duy nhất Trong tình huống này, các trường dữ liệu phải khớp giữa các bộ dữ liệu để chuẩn bị nối chúng Bước 3: Thực thi tạo mã và chuyển đổi dữ liệu
Đây là lúc thực sự chuyển đổi dữ liệu để đáp ứng các mục tiêu đã xác định trước đó Đầu tiên, mã được tạo bằng tay hoặc trực quan với một số công cụ Sau đó, mã được thực thi và chuyển đổi xảy 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ữ
Trang 26xóa bản ghi hoặc các trường không cần thiết, tiêu chuẩn hóa hoặc chuẩn hóa để định cỡ lại dữ liệu và thay đổi cấu trúc đối với chính tập dữ liệu
Bước 4: Xác thực và Đánh giá
Cuối cùng, sau khi quá trình chuyển đổi dữ liệu diễn ra, người thực hiện quá trình chuyển đổi xác thực rằng nó đáp ứng các mục tiêu cuối cùng được đặt ra trong các giai đoạn khám phá ban đầu Cuối cùng, những người liên quan đến việc sử dụng dữ liệu xuôi dòng sẽ xác nhận dữ liệu đáp ứng nhu cầu của họ, chẳng hạn như các doanh nghiệp vừa
và nhỏ sẽ sử dụng dữ liệu để làm phong phú thêm một ứng dụng kinh doanh mới Thông thường tại thời điểm này, các sửa đổi sẽ cần được thực hiện và do đó, chu kỳ bắt đầu lại dưới một hình thức nào đó
4 Data Analysis
4.1 Apache Hadoop
Apache Hadoop là miễn phí và mã nguồn mở nền tảng để lưu trữ và xử lý các tập dữ liệu lớn có kích thước từ gigabyte đến petabyte Hadoop cho phép phân cụm nhiều máy tính để phân tích song song các bộ dữ liệu khổng lồ, thay vì yêu cầu 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 kỹ thuật lập trình song song để xử lý khối lượng lớn dữ liệu có tổ chức, bán cấu trúc và phi cấu trúc trên các cụm phần cứng hàng hóa
HDFS - HDFS (Hệ thống tệp phân tán Hadoop) là một thành phần khung Hadoop lưu trữ và xử lý dữ liệu Đó là một hệ thống tệp có khả năng chịu lỗi chạy 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
4.2 Apache Hive
4.2.1 Khái niệm
Apache Hive là một mã nguồn mở kho dữ liệu chương trình để đọc, ghi và quản lý các tập dữ liệu khổng lồ được lưu trữ trực tiếp 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
Trang 27thông thường Nó được tạo ra để giúp lập trình MapReduce dễ dàng hơn bằng cách loại
bỏ nhu cầu học và viết mã Java dài Thay vào đó, bạn có thể viết các truy vấn của mình trong HQL và Hive sẽ xây dựng bản đồ và giảm bớt các chức năng cho bạn
Giao diện giống SQL của Apache Hive đã trở thành Tiêu chuẩn vàng để thực hiện các tìm kiếm đặc biệt, tóm tắt và phân tích dữ liệu Hadoop Khi được đưa vào đám mây mạng máy tính, giải pháp này đặc biệt hiệu quả về chi phí và có thể mở rộng, đó là lý do tại sao nhiều công ty, bao gồm Netflix và Amazon, tiếp tục phát triển và cải tiến Apache Hive
4.2.2 Nguyên lý hoạt động
Apache Hive chuyển đổi chương trình đầu vào được viết bằng ngôn ngữ HiveQL (giống SQL) thành một hoặc nhiều tác vụ Java MapReduce, Tez hoặc Spark (Tất cả các công cụ thực thi này đều tương thích với Hadoop YARN.) Sau đó, Apache Hive sắp xếp
dữ liệu thành các bảng cho HDFS Hệ thống tệp phân tán Hadoop) và thực hiện các tác vụ trên một cụm để nhận được câu trả lời
Các bảng Apache Hive được sắp xếp giống như các bảng trong cơ sở dữ liệu quan hệ được tổ chức, với các đơn vị dữ liệu có kích thước từ lớn hơn đến nhỏ hơn Cơ sở dữ liệu được tạo thành từ các bảng được chia thành các bộ phận, các bảng này lại được chia thành các nhóm HiveQL (Ngôn ngữ truy vấn Hive) được sử dụng để truy cập dữ liệu, dữ liệu này có thể được thay đổi hoặc thêm vào Dữ liệu bảng được tuần tự hóa trong mỗi cơ
sở dữ liệu và mỗi bảng có thư mục HDFS riêng
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:
Trang 28Kho hàng - Nó theo dõi thông tin về mỗi bảng, chẳng hạn như cấu trúc và vị trí của
nó Siêu dữ liệu phân vùng cũng được bao gồm trong Hive Điều này cho phép trình điều khiển theo dõi tiến trình của các tập dữ liệu khác nhau trải rộng trong cụm Dữ liệu được lưu trữ ở định dạng RDBMS thông thường Siêu dữ liệu Hive là cực kỳ quan trọng để trình điều khiển duy trì theo dõi dữ liệu Máy chủ sao lưu sao lưu dữ liệu một cách
thường xuyên để nó có thể được phục hồi trong trường hợp mất dữ liệu
Người lái xe - Các câu lệnh HiveQL được nhận bởi một trình điều khiển, có chức năng như một bộ điều khiển Bằng cách thiết lập các phiên, trình điều khiển bắt đầu thực hiện câu lệnh Nó 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 một câu lệnh HiveQL, trình điều khiển sẽ lưu siêu dữ liệu được yêu cầu Nó cũng đóng vai trò là điểm thu thập dữ liệu hoặc kết quả truy vấn sau quá trình Rút gọn
Trình biên dịch - Nó thực hiện biên dịch truy vấn HiveQL Truy vấn hiện được chuyển đổi thành một kế hoạch thực thi Các nhiệm vụ được liệt kê trong kế hoạch Nó cũng bao gồm các bước mà MapReduce phải thực hiện để có được kết quả như được dịch bởi truy vấn Truy vấn được trình biên dịch của Hive (AST) chuyển đổi thành Cây cú pháp trừu tượng Chuyển đổi AST thành Đồ thị vòng có hướng dẫn sau khi kiểm tra tính tương thích và lỗi thời gian biên dịch (DAG)
Trình tối ưu hóa - Nó tối ưu hóa DAG bằng cách thực hiện các thay đổi khác nhau trên kế hoạch thực hiện Nó kết hợp các phép biến đổi để cải thiện hiệu quả, chẳng hạn như biến một đường dẫn các phép nối thành một phép nối duy nhất Để cải thiện 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 - Người thực thi chạy các tác vụ khi quá trình biên dịch và tối ưu hóa kết thúc Các công việc được điều hành bởi Người thừa hành
CLI, UI và Thrift Server - Giao diện dòng lệnh (CLI) là giao diện người dùng cho phép người dùng bên ngoài giao tiếp với Hive Máy chủ tiết kiệm của Hive, tương tự như các giao thức JDBC hoặc ODBC, cho phép các máy khách bên ngoài giao tiếp với Hive qua mạng
Bảo mật - Apache Hive được tích hợp với bảo mật Hadoop, sử dụng Kerberos để xác thực lẫn nhau giữa máy khách-máy chủ HDFS chỉ định quyền cho các tệp mới được tạo trong Apache Hive, cho phép bạn phê duyệt bởi người dùng, nhóm và những người khác 4.2.4 Các Tính Năng Chính
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
Trang 29HiveQL 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 cho phép báo cáo cuối ngày, đánh giá giao dịch hàng ngày, tìm kiếm đột xuất và phân tích dữ liệu Thông tin chi tiết toàn diện do Apache Hive cung cấp mang lại lợi thế cạnh tranh đáng kể và giúp bạn đáp ứng nhu cầu thị trường dễ dàng hơn
- Ưu điểm:
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 - Vì Apache Hive đọc lược đồ mà không xác minh loại bảng hoặc định nghĩa lược đồ, dữ liệu không phải đọc, phân tích cú pháp và tuần tự hóa vào đĩa ở định dạng bên trong của cơ sở dữ liệu Ngược lại, trong cơ sở dữ liệu thông thường, dữ liệu phải được xác thực mỗi khi được thêm vào
Khả năng mở rộng vượt trội, tính linh hoạt và hiệu quả chi phí - Bởi vì dữ liệu được lưu trữ trong HDFS, Apache Hive có thể chứa 100 petabyte dữ liệu, làm cho nó trở thành một tùy chọn có khả năng mở rộng hơn nhiều so với một cơ sở dữ liệu thông
thường Apache Hive, là một dịch vụ Hadoop dựa trên đám mây, cho phép khách hàng nhanh chóng quay lên và xuống các máy chủ ảo để đáp ứng khối lượng công việc đang 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ờ
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)
4.3 Apache Impala
4.3.1 Khái niệm
Impala là một công cụ truy vấn SQL MPP (Massive Parallel Processing) để xử lý khối lượng dữ liệu khổng lồ được lưu trữ trong cụm Hadoop Nó là một phần mềm mã nguồn
Trang 30mở đượ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
Nói cách khác, Impala là công cụ SQL có hiệu suất cao nhất (mang lại trải nghiệm giống như RDBMS) cung cấp cách nhanh nhất để truy cập dữ liệu được lưu trữ trong Hệ thống tệp phân tán Hadoop
4.3.2 Nhiệm vụ
Impala kết hợp 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 khả năng mở rộng và tính linh hoạt của Apache Hadoop, bằng cách 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ó thể giao tiếp với HDFS hoặc HBase bằng cách sử dụng các truy vấn SQL một cách nhanh 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 cùng một siêu dữ liệu, cú pháp SQL (Hive SQL), trình điều khiển ODBC và giao diện người dùng (Hue Beeswax) như Apache Hive, cung cấp một nền tảng quen thuộc và thống nhất cho các truy vấn theo định hướng hàng loạt hoặc thời gian thực Không giống như Apache Hive, Impala không dựa trên các thuật toán MapReduce
Nó thực hiện một kiến trúc phân tán dựa trên các quy trình daemon chịu trách nhiệm cho tất cả các khía cạnh của thực thi truy vấn chạy 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
Vì quá trình xử lý dữ liệu được thực hiện ở nơi dữ liệu cư trú (trên cụm Hadoop), nên việc chuyển đổi dữ liệu và di chuyển dữ liệu là không cần thiết đối với dữ liệu được lưu trữ trên Hadoop, trong khi làm việc với Impala
Sử dụng Impala, bạn có thể truy cập dữ liệu được lưu trữ trong HDFS, HBase và Amazon s3 mà không cần kiến thức về Java (công việc MapReduce) Bạn có thể truy cập chúng với một ý tưởng cơ bản về các truy vấn SQL
Để viết truy vấn trong các công cụ kinh doanh, dữ liệu phải trải qua một chu trình trích xuất-chuyển đổi-tải (ETL) phức tạp Nhưng, với Impala, thủ tục này được rút ngắn Các giai đoạn tốn thời gian của việc tải và tổ chức lại được khắc phục bằng các kỹ thuật mới như phân tích dữ liệu thăm dò & khám phá dữ liệu giúp quá trình nhanh hơn