Bài viết này là một bài nghiên cứu được sản sinh ra từ Google - MapReduce: Xử lý dữ liệu đơn giản trên các cluster lớn một tập hợp các máy tính/máy chủ phối hợp hoạt động với nhau như mộ
Trang 1TRƯỜNG ĐẠI HỌC DUY TÂN TRƯỜNG KHOA HỌC MÁY TÍNH
-o0o -TIỂU LUẬN MÔN HỌC PHÂN TÍCH DỮ LIỆU
Tên tiểu luận:
Thực hiện: Nhóm 3 – Lớp K24MCS.2 Thành viên: Hồ Thị Băng Nhân
Nguyễn Thị Lợi
Nguyễn Trần Minh Bảo
Giảng viên giảng dạy: PGS.TS Lê Hoàng Sơn
Quảng Ngãi, tháng 10/2022
Trang 2MỤC LỤC LỜI CẢM ƠN 1 Chương I TỔNG QUAN VỀ HỆ CHUYÊN GIA 2 CHƯƠNG II TƯ VẤN HƯỚNG NGHIỆP Ở TRƯỜNG TRUNG HỌC PHỔ THÔNG 9 CHƯƠNG III BÀI TOÁN TƯ VẤN NGHỀ NGHIỆP Ở TRƯỜNG TRUNG HỌC PHỔ THÔNG 16 TÀI LIỆU THAM KHẢO 21
Trang 3DANH MỤC HÌNH ẢNH, BẢNG BIỂU
Hình 1 Một số lĩnh vực ứng dụng của trí tuệ nhân tạo 2
Hình 2 Hoạt động của hệ chuyên gia 2
Hình 3 Quan hệ giữa lĩnh vực vấn đề và lĩnh vực tri thức 3
Hình 4 Thành phần cơ bản của Hệ chuyên gia 6
Hình 5 Mối quan hệ giữa các thành phần 6
Hình 6 Kiến trúc hệ chuyên gia theo J L Ermine 7
Hình 7 Kiến trúc hệ chuyên gia theo C Ernest 7
Hình 8 Kiến trúc hệ chuyên gia theo E V Popov 7
Hình 9 Nền tảng của công nghệ hệ chuyên gia dựa trên luật hiện đại 8
Hình 10: Mô hình tam giác hướng nghiệp 10
Hình 11: Kiến trúc hệ chuyên gia theo mô hình C Ernest 12
Bảng 1: Nhóm tính cách và môi trường làm việc 15
Bảng 2: Nhóm ngành nghề 18
Trang 4LỜI CẢM ƠN
Lời đầu tiên chúng em xin chân thành cảm ơn Ban giám hiệu trường Đại Học Duy Tân – Đà Nẵng đã tạo điều kiện để chúng em có một môi trường học tập thoải mái về cơ sở hạ tầng cũng như cơ sở vật chất.
Xin cảm ơn trường Khoa học máy tính đã giúp chúng em được mở mang tri thức
về Hệ chuyên gia, một nền móng hết sức quan trọng, đóng vai trò quyết định trong việc thực hiện chuyên ngành khoa học máy tính
Em chân thành cảm ơn PGS.TS Lê Hoàng Sơn đã trực tiếp hướng dẫn tận tình và đóng góp nhiều ý kiến quý báu giúp nhóm chúng em hoàn thành tốt bài tiểu luận này Với những giới hạn về kiến thức và thời gian, trong quá trình tìm hiểu chắc chắn chúng không tránh khỏi thiếu sót, mong Thầy và các bạn tận tình góp ý để nhóm em hoàn thiện hơn nữa những kiến thức của mình.
Nhóm em xin chân thành cảm ơn!
Thực hiện Nhóm 3 Trần Minh Anh Bảo Nguyễn Thị Lợi
Hồ Thị Băng Nhân
Trang 5Chương I.
TỔNG QUAN VỀ HADOOP 1.1 Khái niệm cơ bản
1.1.1 Khái niệm
Apache Hadoop hay Hadoop được định nghĩ là một framework có mã nguồn mở được viết bằng ngôn ngữ lập trình Java Hadoop cho phép phát triển được các ứng dụng phân tán (distributed processing) và nó có nguồn dữ liệu lớn hoàn toàn miễn phí Một số ứng dụng thường có thể làm việc với hàng trăm node khác cùng hàng ngàn petabyte dữ liệu Hadoop đã và đang được phát triển dựa vào các ý tưởng từ Google về các mô hình MapReduce và GFS (Google File System) Bên cạnh đó thì dựa vào cơ1 chế streaming nên khi được viết bằng ngôn ngữ Java thì Hadoop còn cho phép bạn2 phát triển các ứng dụng nằm dưới các dạng phân tán dựa vào các loại ngôn ngữ lập trình khác như: C++, Python , Pearl…
1.1.2 Khái quát về lịch sử hình thành
Nguồn gốc của Hadoop đến từ các bài viết File System Google được xuất bản vào tháng 10 năm 2003 Bài viết này là một bài nghiên cứu được sản sinh ra từ Google
- MapReduce: Xử lý dữ liệu đơn giản trên các cluster lớn (một tập hợp các máy tính/máy chủ phối hợp hoạt động với nhau như một hệ thống đơn nhất)
Bắt đầu phát triển trên dự án Apache Nutch, nhưng đã được chuyển qua dự án con Hadoop mới trong tháng 1 năm 2006 Doug Cutting đã làm việc tại Yahoo! vào thời điểm đó, đặt tên Hadoop theo tên của con voi đồ chơi của con trai mình Hadoop 0.1.0 được phát hành vào tháng 4 năm 2006 và tiếp tục phát triển bởi nhiều người đóng góp đến dự án Apache Hadoop
Do đó, Hadoop được phát hành chính thức vào năm 2005 bởi tập đoàn Apache Software Apache Software là một trong những tổ chức phi lợi nhuận chuyên dụng trong việc sản xuất các phần mềm cũng như các mã nguồn mở từ đó hỗ trợ cho các nền tảng khác trên Internet
Với hơn 15 năm phát triển nên Hadoop dần khẳng định được tầm quan trọng của chính mình trong quá trình lưu trữ cũng như xử lý cho các kho dữ liệu
1.2 Nhiệm vụ của Hadoop
- Xử lý và làm việc khối lượng dữ liệu khổng lồ tính bằng Petabyte.
- Xử lý trong môi trường phân tán, dữ liệu lưu trữ ở nhiều phần cứng khác nhau, yêu cầu xử lý đồng bộ.
- Các lỗi xuất hiện thường xuyên.
- Băng thông giữa các phần cứng vật lý chứa dữ liệu phân tán có giới hạn.
1.3 Nguyên tắc thiết kế của Hadoop
- Cần xử lý dữ liệu lớn
- Cần tính toán song song trên hàng ngàn node
- Chịu lỗi và phục hồi tự động
1 một mô hình được Google thiết kế độc quyền với khả năng lập trình xử lý một lượng lớn các dữ liệu song song đồng thời phân tán các thuật toán trên cùng một máy tính
2 công nghệ được sử dụng để truyền dữ liệu tới máy tính và các thiết bị di động thông qua Internet
Trang 6
-2-1.4 Cấu trúc của Hadoop là gì?
Hadoop framework gồm hai layer chính: Hadoop Distriduted file system (HDFS), Execution engine (MapReduce)
Hadoop hoạt động dựa trên 4 module:
- Hadoop Common: Đây được xem là một trong những thư viện tiện ích cần thiết
để đảm bảo cho các module khác có thể sử dụng Hầu hết, những thư viện này đều cung cấp cho các hệ thống các file và lớp OS trừu tượng có chứa các mã lệnh Java để
có thể khởi động được Hadoop
- Hadoop YARN: Là một framework được sử dụng cho việc quản lý cho các tiến trình cũng như tài nguyên của cluster
Hình: Cấu trúc của Hadoop
- Hadoop Distributed File System (HDFS): Đây là một trong những hệ thống file phân tán giúp cung cấp cũng như truy cập đến các thông lượng cao dành cho ứng dụng trong việc khai thác dữ liệu HDFS sử dụng kiến trúc master/slave, trong đó master gồm một NameNode để quản lý hệ thống file metadata và một hay nhiều slave DataNodes để lưu trữ dữ liệu thực tại Với một tập tin có dạng HDFS đều sẽ được chia thành nhiều khối khác nhau và chúng đều được lưu trữ trong các tập DataNodes.NameNode đều sẽ được định nghĩa là các ánh xạ đến từ những khối từ DataNode Những loại DataNode này đều điều hành những tác vụ đọc và ghi dữ liệu vào hệ thống file Ngoài ra, chúng còn có nhiệm vụ quản lý việc tạo, nhân rộng, hủy các khối thông qua những chỉ thị từ NameNode.
- Hadoop MapReduce: Là một trong những hệ thống dựa trên YARN để có thể thực hiện xử lý song song các tập dữ liệu lớn MapReduce sẽ bao gồm một single master JobTracker và các slave TaskTracker gay trên mỗi cluster-node Các Master này đều có nhiệm vụ quản lý được các tài nguyên cũng như theo dõi quá trình tiêu thụ rồi thực hiện lập lịch quản lý các tác vụ trên máy trạm Hầu hết, các máy slave TaskTracker đều sẽ thực thi được những master theo dạng chỉ định và có thể cung cấp được các thông tin trạng thái tác vụ để cho master có thể theo dõi Tính đến thời điểm
Trang 7hiện tại thì Hadoop đang ngày càng được mở rộng hơn cũng như được nhiều framework khác hỗ trợ như: Hive, Hbase, Pig Chình vì vậy, các lập trình viên có thể
sự vào mục đích sử dụng cụ thể để có thể nâng cao hiệu quả xử lý dữ liệu từ Hadoop
1.5 Các ưu điểm của Hadoop là gì?
- Hadoop có khả năng thêm nhiều node mới và thay đổi được các cấu hình của chúng một cách dễ dàng: Các doanh nghiệp không cần phải đầu tư quá nhiều vào phần cứng quá mạnh và đặc biệt khi chạy Hadoop Nhờ vậy, bạn có thể tiết kiệm được tối đa các chi phí đầu tư ban đầu
- Hadoop có khả năng xử lý được hầu hết những kho dữ liệu có cấu trúc hoặc không có cấu trúc một cách dễ dàng
Trong suốt quá trình hoạt động thì 1 node trên hệ thống nếu bị lỗi thì nền tảng của Hadoop sẽ có thể tự động di chuyển sang dạng node dự phòng khác Nhờ vậy mà
hệ thống sẽ có thể hoạt động xuyên suốt ổn định hơn
- Hadoop đó là mã nguồn mở, điều này giúp nó tương thích rất nhiều cấu hình và platform khác nhau
1.6 Các giai đoạn hoạt động
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:
- Nơi lưu (location) dữ liệu input, output trên hệ thống dữ liệu phân tán.
- 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.
- 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.
Giai đoạn 2: Hadoop job client submit job (file jar, file thực thi) và các thiết lập
cho JobTracker Sau đó, master sẽ phân phối tác vụ đến các máy slave để theo dõi và quản lý tiến trình các máy này, đồ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.
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
Trang 8
-4-CHƯƠNG II
CÁC MODULE HADOOP 2.1 MapReduce
2.1.1 Mapreduce là gì?
MapReduce là mô hình được thiết kế độc quyền bởi Google, nó có khả năng lập trình xử lý các tập dữ liệu lớn song song và phân tán thuật toán trên 1 cụm máy tính
H ình 2 1Định nghĩa Mapreduce là gì?
MapReduce sẽ bao gồm những thủ tục sau: thủ tục Map() và Reduce() Thủ tục Map() bao gồm lọc (filter) và phân loại (sort) trên dữ liệu, thủ tục Reduce() thực hiện quá trình tổng hợp dữ liệu Đây là mô hình dựa vào các khái niệm biển đối của bản đồ và reduce những chức năng lập trình theo hướng chức năng Thư viện của thủ tục Map() và Reduce() sẽ được viết bằng nhiều loại ngôn ngữ khác nhau Thủ tục được cài đặt miễn phí và được sử dụng phổ biến nhất là
là Apache Hadoop.
2.1.2 Các hàm chính của MapReduce
MapReduce có 2 hàm chính là Map() và Reduce(), đây là 2 hàm đã được định nghĩa bởi người dùng và nó cũng chính là 2 giai đoạn liên tiếp trong quá trình xử lý dữ liệu của MapReduce Nhiệm vụ cụ thể của từng hàm như sau:
Hàm Map(): có nhiệm vụ nhận Input cho các cặp giá trị/khóa và output
chính là tập những cặp giá trị/khóa trung gian Sau đó, chỉ cần ghi xuống đĩa cứng và tiến hành thông báo cho các hàm Reduce() để trực tiếp nhận dữ liệu
Trang 9Hàm Reduce(): có nhiệm vụ tiếp nhận từ khóa trung gian và những giá
trị tương ứng với lượng từ khóa đó Sau đó, tiến hành ghép chúng lại để có thể tạo thành một tập khóa khác nhau Các cặp khóa/giá trị này thường sẽ thông qua một con trỏ vị trí để đưa vào các hàm reduce Quá trình này sẽ giúp cho lập trình viên quản lý dễ dàng hơn một lượng danh sách cũng như phân bổ giá trị sao cho phù hợp nhất với bộ nhớ hệ thống
Ở giữa Map và Reduce còn 1 bước trung gian đó chính là Shuffle Sau khi Map hoàn thành xong công việc của mình thì Shuffle sẽ làm nhiệm vụ chính
là thu thập cũng như tổng hợp từ khóa/giá trị trung gian đã được Map sinh ra trước đó rồi chuyển qua cho Reduce tiếp tục xử lý.
Hình 2.2 Các hàm của MapReduce 2.1.3 Hoạt động của MapReduce
Nguyên tắc hoạt động
MapReduce hoạt động dựa vào nguyên tắc chính là "Chia để trị", như sau: Phân chia các dữ liệu cần xử lý thành nhiều phần nhỏ trước khi thực hiện
Xử lý các vấn đề nhỏ theo phương thức song song trên các máy tính rồi phân tán hoạt động theo hướng độc lập.
Tiến hành tổng hợp những kết quả thu được để đề ra được kết quả sau cùng
Các bước hoạt động của MapReduce
Bước 1: Tiến hành chuẩn bị các dữ liệu đầu vào để cho Map() có thể xử lý.
Bước 2: Lập trình viên thực thi các mã Map() để xử lý
Bước 3: Tiến hành trộn lẫn các dữ liệu được xuất ra bởi Map() vào trong Reduce Processor
Bước 4: Tiến hành thực thi tiếp mã Reduce() để có thể xử lý tiếp các dữ liệu cần thiết
Bước 5: Thực hiện tạo các dữ liệu xuất ra cuối cùng
Trang 10
-6-Luồng dữ liệu nền tảng của Mapreduce
Input Reader
Map Function
Partition Function
Compare Function
Reduce Function
Output Writer
2.1.4 Ví dụ cụ thể về hoạt động của MapReduce
Hình 2.3 Ví dụ về tiến trình hoạt động của MapReduce
MapReduce được ứng dụng cho việc thống kê hàng loạt những số liệu cụ thể như sau:
Thực hiện thống kê cho các từ khóa được xuất hiện ở trong các tài liệu, bài viết, văn bản hoặc được cập nhật trên hệ thống fanpage, website,…
Khi số lượng các bài viết đã được thống kê thì tài liệu sẽ có chứa các từ khóa đó
Sẽ có thể thống kê được những câu lệnh match, pattern bên trong các tài liệu đó
Khi thống kê được số lượng các URLs có xuất hiện bên trong một webpages
Sẽ thống kê được các lượt truy cập của khách hàng sao cho nó có thể tương ứng với các URLs.
Sẽ thống kê được tất cả từ khóa có trên website, hostname,…
2.2 Apache Hive
2.2.1 Apache Hive là gì?
Apache Hive là một hệ thống kho dữ liệu để tổng hợp và phân tích dữ liệu
và để truy vấn các hệ thống dữ liệu lớn trong nền tảng Hadoop mã nguồn mở.
Trang 11Nó chuyển đổi các truy vấn giống SQL thành các công việc MapReduce để dễ dàng thực thi và xử lý khối lượng dữ liệu cực lớn.
Apache Hive là một thành phần Hadoop thường được triển khai bởi các nhà phân tích dữ liệu
Ba chức năng quan trọng mà Hive được triển khai là tóm tắt dữ liệu, phân tích dữ liệu và truy vấn dữ liệu Ngôn ngữ truy vấn, được hỗ trợ độc quyền bởi Hive, là HiveQL Ngôn ngữ này chuyển các truy vấn giống SQL thành các công việc MapReduce để triển khai chúng trên Hadoop HiveQL cũng hỗ trợ các tập lệnh MapReduce có thể được cắm vào các truy vấn Hive tăng tính linh hoạt trong thiết kế lược đồ và cũng như tuần tự hóa và giải mã hóa dữ liệu.
2.2.2 Các thành phần chính của Apache Hive
Hình 2.4 Các thành phần chính của Apache Hive
Metastore: Đây là kho lưu trữ siêu dữ liệu Siêu dữ liệu này bao gồm dữ liệu
cho mỗi bảng như vị trí và giản đồ của nó Nó cũng chứa thông tin về siêu dữ liệu phân vùng cho phép bạn theo dõi các tiến trình dữ liệu phân tán khác nhau trong cụm Dữ liệu này thường có trong cơ sở dữ liệu quan hệ Siêu dữ liệu theo dõi dữ liệu, sao chép dữ liệu và cung cấp bản sao lưu trong trường hợp mất dữ liệu.
Trình điều khiển: Trình điều khiển nhận các câu lệnh HiveQL và hoạt động
giống như một bộ điều khiển Nó giám sát tiến trình và vòng đời của các lần thực thi khác nhau bằng cách tạo các phiên Trình điều khiển lưu trữ siêu dữ liệu được tạo trong khi thực thi câu lệnh HiveQL Khi hoàn thành thao tác thu gọn bằng công việc MapReduce , trình điều khiển sẽ thu thập các điểm dữ liệu và kết quả truy vấn.
Trình biên dịch: Trình biên dịch được giao nhiệm vụ chuyển đổi truy vấn
HiveQL thành đầu vào MapReduce Nó bao gồm một phương thức để thực thi các bước và tác vụ cần thiết để cho phép MapReduce xuất ra HiveQL khi cần.
Trang 12
-8-Trình tối ưu hóa: Điều này thực hiện các bước chuyển đổi khác nhau để tổng
hợp và chuyển đổi đường ống bằng một phép nối duy nhất cho nhiều phép nối Nó cũng được chỉ định để phân chia một nhiệm vụ trong khi chuyển đổi dữ liệu, trước khi giảm các hoạt động, để cải thiện hiệu quả và khả năng mở rộng.
Người thực thi: Người thực thi thực thi các tác vụ sau các bước biên dịch và tối
ưu hóa Nó tương tác trực tiếp với Trình theo dõi công việc Hadoop để lên lịch cho các nhiệm vụ sẽ được chạy.
CLI, UI và Thrift Server: Giao diện dòng lệnh (CLI) và giao diện người dùng (UI) gửi các truy vấn, giám sát quy trình và hướng dẫn để người dùng bên ngoài
có thể tương tác với Hive Thrift Server cho phép các máy khách khác tương tác với Hive.
2.3 Apache Hbase
2.3.1 Apache Hbase là gì?
Hbase là hệ quản trị cơ sở dữ liệu dựa trên Hadoop, đây là mã nguồn mở nằm trong dự án của Apache, phát triển và mở rộng từ dự án lưu trữ Bigdata của google (được xây dựng dựa trên Google Big Table) Hbase được viết bằng ngôn ngữ Java , có thể lưu trữ dữ liệu cực lớn từ terabytes đến petabytes.
Hbase thực chất là một NoSQL điển hình nên vì thế các table của Hbase không có một schemas cố định nào và cũng không có mối quan hệ giữa các bảng Hiện nay, có rất nhiều công ty và tập đoàn công nghệ lớn trên thế giới sử dụng Hbase, có thể kể đến: Facebook, Twitter, Yahoo, Adobe….
Các tính năng của Hbase
Thời gian lọc dữ liệu nhanh
Lưu trữ dữ liệu Big-Data, có thể lưu trữ hàng tỷ rows và columns
Có độ ổn định và giảm thiểu rủi ro (failover) khi lưu một lượng lớn dữ liệu.
Truy vấn dữ liệu theo thời gian thực
Cung cấp giao thức REST, giúp trả về dữ liệu theo các định dạng khác nhau như plain test, json, xml Nhờ đó chúng ta có thể khai thác dữ liệu không cần qua API từ phần mềm thứ 3.
Nhất quán cơ chế đọc và ghi dữ liệu dựa trên Hadoop
Nhiều extension hỗ trợ Hbase cho nhiều ngôn ngữ như Java, PHP Python , …
Lưu trữ dữ liệu đáng tin cậy, được các hãng công nghệ trên thế giới sử dụng trên quy mô lớn.
2.3.2 Kiến trúc của Apache Hbase