1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Tiểu luận thiết kế hệ thống phân tích đánh giá thực phẩm bằng hadoop và hive

13 5 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thiết Kế Hệ Thống Phân Tích & Đánh Giá Thực Phẩm bằng Hadoop và Hive
Tác giả Nhóm 1
Người hướng dẫn PGS.TS. Thoại Nam
Trường học Trường Đại Học Bỏch Khoa Thành phố Hồ Chí Minh
Chuyên ngành Khoa học và kỹ thuật
Thể loại Tiểu luận
Năm xuất bản 2016
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 13
Dung lượng 536,83 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Big Data đang được xem như một yếu tố mới quyết định đến việc phát triển cũng như mang lại lợi thế cạnh tranh cÿa các tổ chāc thông qua việc thu thập, phân tích và trích xuất các thông t

Trang 1

Trường Đại Học Bách Khoa Tp Hồ Chí Minh

Khoa Khoa Học & Kỹ Thuật Máy Tính

MÔN HỌC Dþ LIÞU LàN _

Thiết Kế Hß Thßng Phân Tích & Đánh Giá

T hực Phẩm Bằng Hadoop và Hive

_

GVHD:

PGS.TS Thoại Nam

Nhóm 1:

Nguyễn Châu Kỳ – 1570215 Nguyễn Kim Lanh – 1570216 Đào Thị Thu Trang – 1570233

TP Hà CHÍ MINH, NGÀY 15 THÁNG 5 NĂM 2016

Trang 2

Trường Đại Học Bách Khoa Tp Hồ Chí Minh

Khoa Khoa Học & Kỹ Thuật Máy Tính 2

Mục Lục

Lời cảm ơn 3

1 Giới Thiệu Chung 3

1.1 Tóm tắt nội dung 3

1.2 Vấn đề cần giải quyết 3

2 Cơ Sở Lý Thuyết 4

2.1 Kiến thāc về Hadoop 4

2.2 Kiến thāc về Hive 5

3 Phân tích và Thiết kế 6

3.1 Mô hình Client – Server 6

3.2 Kiến trúc Client 6

3.3 Kiến trúc Server 7

3.4 Cơ sở dữ liệu (Hive) 8

3.5 Tổng quan hệ thống 8

4 Hiện thực và Kết quả 9

4.1 Yêu cầu hệ thống 9

4.2 Hiện thực 9

4.3 Kết quả 10

5 Kết Luận 13

Tài Liệu Tham Khảo 13

Trang 3

Trường Đại Học Bách Khoa Tp Hồ Chí Minh

Khoa Khoa Học & Kỹ Thuật Máy Tính 3

Lời cảm ơn

Với lòng biết ơn sâu sắc nhất, chúng em xin gửi đến Thầy Thoại Nam, người đã tận tình truyền đạt cho chúng em nhiều kiến thāc về môn Dữ Liệu Lớn (Big Data), giúp chúng em dễ dàng hơn trong việc tiếp cận với những tri thāc cÿa đề tài này Bài báo cáo thực hiện trong khoảng thời gian gần 5 tuần Do trình độ lý luận cũng như kinh nghiệm thực tiễn còn hạn chế, chúng em không tránh khỏi những sai sót, cho nên chúng em rất mong nhận được những ý kiến đóng góp, phê bình từ thầy Đó sẽ là những kinh nghiệm quý giá để giúp chúng em hoàn thiện những kiến thāc cÿa mình trong lĩnh vực này

Chúng em xin chân thành cảm ơn thầy!

1.1 Tóm tắt nßi dung

Ngày nay, cùng với tốc độ tăng trưởng chóng mặt cÿa lượng dữ liệu khổng lồ được phát sinh liên tục ở khắp nơi trên toàn thế giới, Big Data cũng trở thành một thuật ngữ phổ biến và là

xu hướng phát triển mới cÿa ngành công nghệ thông tin Big Data đang được xem như một yếu

tố mới quyết định đến việc phát triển cũng như mang lại lợi thế cạnh tranh cÿa các tổ chāc thông qua việc thu thập, phân tích và trích xuất các thông tin có giá trị từ khối dữ liệu khổng lồ này, ví

dụ như thu thập hành vi, sở thích, thói quen, xu hướng cÿa từng người tiêu dùng để đưa các chiến lược kinh doanh hiệu quả, tăng trải nghiệm mua sắm cho người tiêu dùng Trong bài tập này, nhóm chúng tôi tìm hiểu về kiến trúc và nguyên lý hoạt động cÿa Hadoop và Hive Sau đó

áp dụng nó để hiện thực thiết kế hệ thống phân tích và đánh giá thực phẩm trên Amazon

1.2 Vấn đề cần giải quyết

Hệ thống phân tích và đánh giá thực phẩm (Foody, Lozi …)

 Lượng dữ liệu lớn thông tin đánh giá các thực phẩm tốt bao gồm: sản phẩm, thông tin người dùng, đánh giá xếp hạng …

 Hàng ngàn/triệu người dùng đồng thời cùng submit đánh giá hay sản phẩm

Vấn đề lưu trữ dữ liệu làm sao để phân tính và tìm kiếm dữ liệu nhanh chóng:

 Tính toán tổng số lượt review, điểm (ratings) trung bình cÿa 1 sản phẩm

 Thống kê về người dùng

Trang 4

Trường Đại Học Bách Khoa Tp Hồ Chí Minh

Khoa Khoa Học & Kỹ Thuật Máy Tính 4

2.1 Kiến thức về Hadoop

Hadoop Distributed File System (HDFS): HDFS là một nền tảng lưu trữ dữ liệu đáp āng cho một khối lượng dữ liệu lớn và chi phí rẻ, āng dụng kiến trúc cÿa Google File System (GFS) Nó

là một hệ thống tập tin phân tán cÿa Hadoop cung cấp khả năng tăng tuyến tính và lưu trữ dữ liệu đáng tin cậy, được thiết kế để lưu trữ các file rất lớn phân tán trên các cluster lớn sử dụng phần

cāng chi phí thấp (commodity hardware)

HDFS làm việc như thế nào?

Hình 1 Kiến trúc cÿa HDFS (source : http://hortonworks.com)

MapReduce: Hadoop MapReduce 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 (terabytes or petabytes) lưu trên Hadoop

Hadoop MapReduce làm việc như thế nào?

Hình 2 Hoạt động cÿa Hadoop MapReduce

Trang 5

Trường Đại Học Bách Khoa Tp Hồ Chí Minh

Khoa Khoa Học & Kỹ Thuật Máy Tính 5

2.2 Kiến thức về Hive

Hình 3 Kiến trúc cÿa Hive

Hoạt đßng của Hive

Mô hình dÿ lißu trong Hive

Downloaded by Hoc Vu (vuchinhhp7@gmail.com)

Trang 6

Trường Đại Học Bách Khoa Tp Hồ Chí Minh

Khoa Khoa Học & Kỹ Thuật Máy Tính 6

3.1 Mô hình Client – Server

Phân tích: Một yêu cầu đầu tiên cÿa hệ thống là phải thu thập được các dữ liệu đang nằm phân

tán tại các máy trạm về server trung tâm để phục vụ nhu cầu phân tích Quá trình này phải được

thực hiện liên tục và gần như tāc thời để đảm bảo tính đúng đắn cÿa hệ thống Dữ liệu được thu thập ở đây là các dữ liệu có cấu trúc đã thông qua các bước tiền xử lý tại điểm nhận Do dữ liệu

nằm rời rạc ở nhiều vị trí khác nhau nên āng với mỗi nơi cần có một client đảm trách nhiệm vụ

đọc và gửi dữ liệu đến server

Thiết kế: Āng dụng cần có một server để giải quyết các vấn đề đã phân tích ở trên Hệ thống sẽ hoạt động theo mô hình client – server được minh họa như hình:

Như trên sơ đồ trên, hệ thống sẽ gồm 2 thành phần:

 Client: đọc dữ diệu được lưu ở máy trạm và gửi về server thông qua TCP protocol

 Server: nhận dữ liệu từ client, lưu trữ dữ liệu xuống hệ thống HDFS

3.2 Kiến trúc Client

Phân tích: Client phải có khả năng phân biệt dữ liệu đã gửi rồi và dữ liệu cần gửi tiếp theo để tránh dư thừa tại server

Thiết kế: Client sẽ được hiện thực thông qua kết nối Socket, đồng thời hiển thị ACK từ server

Sau khi gửi hết dữ liệu trong 1 file, client sẽ tiến thành thêm <read= vào cuối tên file để phân

biệt Hệ thống chỉ gửi dữ liệu trong những file không đuôi <read= Mô hình hoạt động cÿa client như hình vẽ

Downloaded by Hoc Vu (vuchinhhp7@gmail.com)

Trang 7

Trường Đại Học Bách Khoa Tp Hồ Chí Minh

Khoa Khoa Học & Kỹ Thuật Máy Tính 7

Hình 4 Phương thāc kết nối Client-Server

3.3 Kiến trúc Server

Phân tích: Với những thông tin đã trình bày ở phần trước, có thể thấy rằng server đóng vai trò

tối quan trọng trong hoạt động cÿa toàn bộ āng dụng Ngoài việc lưu trữ lượng lớn dữ liệu, thực hiện các thao tác tính toán phāc tạp, server đồng thời phải đảm bảo được sự ổn định tối đa để có

thể đáp āng cho nhiều client cùng lúc Ngoài ra server còn phải giải quyết được các vấn đề sau:

 Gửi tín hiệu ACK để client tiến hành gửi record tiếp theo

 Bởi vì quá trình phân tích dữ liệu sẽ được thực hiện trên chính những file trên HDFS vào server đã ghi vào cho nên một vấn đề quan trọng là server phải giải quyết được việc đọc

và ghi đồng thời trên cùng 1 file có thể dẫn đến sự bất ổn cÿa hệ thống cũng như kết quả tính toán sau này

Thiết kế

Nền tảng: Như đã phân tích ở trên, hệ thống server sẽ được xây dựng trên nền tảng Hadoop để

hỗ trợ việc lưu trữ một lượng lớn dữ liệu

từ client, server sẽ tạo ra 1 Thread để nhận và ghi dữ liệu xuống HDFS Mỗi thread sẽ gồm 2

sub-module:

 Socket Handler: quản lí kết nối và nhận dữ lệu từ Client đồng thời trả về ACK

 HDFS Writer: ghi dữ liệu thu nhận được xuống file trên HDFS

Hình 5 Thiết Kế Server

Downloaded by Hoc Vu (vuchinhhp7@gmail.com)

Trang 8

Trường Đại Học Bách Khoa Tp Hồ Chí Minh

Khoa Khoa Học & Kỹ Thuật Máy Tính 8

Để tránh việc ghi và đọc đồng thời trên 1 file, phải tách những file đang được ghi và những phải

đã hoàn thành Vì thế trong những file đã ghi xong sẽ được chuyển vào một thư mục khác Cụ thể, khi nhận được dữ liệu server sẽ tiến hành ghi xuống 1 file <.tmp= File này sẽ được chuyển vào thư mục <done= khi có một trong 2 trường hợp:

 Kích thước file đạt đến một māc nhất định (có thể tùy chỉnh được)

 Kết nối từ client bị đóng lại

Bằng cách như trên, server có thể tránh khỏi việc xung đột đọc và ghi đồng thời cũng đảm bảo được dữ liệu sẵn dùng (trong thư mục <done=) sẽ gần như realtime tùy thuộc vào kích thước file được cài đặt Cấu trúc file trên HDFS sẽ như hình bên dưới

Hình 6 Cấu trúc file trên HDFS

3.4 Cơ sở dÿ lißu (Hive)

Phân tích: Tùy thuộc vào dữ liệu đầu vào, ta có thể xây dựng những table trên Hive để đáp āng

nhu cầu cụ thể Trong demo này, chúng tôi sử dụng tập dữ liệu từ Stanford với hơn 568,454 records:

Đánh giá thực phẩm tốt từ amazon

Bao gồm thực phẩm và thông tin người dùng, điểm (ratings)

Thiết kế: Với tập dữ liệu như trên, thiết kế Hive Table với số cột tương thích Từ đây có thể thực

hiện các HQL tương tự như SQL thông thường

3.5 Tổng quan hß thßng

Downloaded by Hoc Vu (vuchinhhp7@gmail.com)

Trang 9

Trường Đại Học Bách Khoa Tp Hồ Chí Minh

Khoa Khoa Học & Kỹ Thuật Máy Tính 9

4.1 Yêu cầu hß thßng

Server: Hadoop Cluster

 Hệ điều hành: CentOS 7

 Hadoop 2.7.0

 Hive 1.2.1

 Oracle JDK 1.7

Client:

 OS: Windows, Linux, Mac, …

 Oracle JDK 1.7 or later

 Network: Client và Server có thể kết nối với nhau qua port chỉ định

4.2 Hißn thực

Hệ thống được hiện thực thành 3 module riêng biệt: client, server và hive module

Client module:

 Client module được hiện thực bằng ngôn ngữ Java, sử dụng Socket API được cung cấp sẵn để thực hiện kết nối

 Java hỗ trợ lập trình mạng thông qua các lớp trong gói java.net Một số lớp tiêu biểu được dùng cho lập trình Client-Server sử dụng socket làm phương tiện giao tiếp như:

 InetAddress: Lớp này quản lý địa chỉ Internet bao gồm địa chỉ IP và tên máy tính

 Socket: Hỗ trợ các phương thāc liên quan đến Socket cho chương trình Client ở chế độ

có nối kết

 ServerSocket: Hỗ trợ các phương thāc liên quan đến Socket cho chương trình Server ở chế độ có nối kết

 DatagramSocket: Hỗ trợ các phương thāc liên quan đến Socket ở chế độ không nối kết cho cả Client và Server

 DatagramPacket: Lớp cài đặt gói tin dạng thư tín người dùng (Datagram Packet) trong giao tiếp giữa Client và Server ở chế độ không nối kết

Khi bắt đầu chạy, client sẽ khởi tạo 1 socket đến server thông qua IP và port chỉ định Client sẽ tiến hành duyệt qua tất cả các file không chāa đuôi <read=, dùng BufferReader để đọc, sau đó gửi từng dòng dữ liệu thông qua InputStream và nhận kết quả trả về thông qua OutputStream Kết thúc 1 file, sẽ tiến hành đổi tên file

Server module

 Socket Handler: sử dụng Java socket để nhận kết nối Với mỗi kết nối sẽ tạo ra 1 Thread dựa trên Runable cÿa Java để xử lí

 HDFS Writer: Sử dụng BufferReader phối hợp với Hadoop HDFS Java API để ghi dữ liệu xuống HDFS Các thao tác tạo file, di chuyển file cũng được thực hiện bằng FileSystem cÿa Hadoop

 Hadoop HDFS Java API: Org.apache.hadoop.fs.FileSystem là một class cơ bản cÿa Hadoop dùng để truy cập cũng như quản lí file/thư mục trên môi trường phân tán

Downloaded by Hoc Vu (vuchinhhp7@gmail.com)

Trang 10

Trường Đại Học Bách Khoa Tp Hồ Chí Minh

Khoa Khoa Học & Kỹ Thuật Máy Tính 10

Hive module

 Sử dụng Hive Query Language để tạo table, thực hiện một số query mẫu để kiểm tra kết quả

 User Define Funtion(UDF)

 Thông thường, Hive hỗ trợ 1 tập hợp các functions để người dùng có thể thực hiện query như: count, concat, … Tuy nhiên, trong một số trường hợp, các functions có sẵn cÿa Hive không thể đáp āng được như cầu cụ thể cÿa người dùng Vì vậy, Hive cũng hỗ trợ API để chúng ta có thể làm việc này một cách dễ dàng

 Với JAVA API, Hive cung cấp class adoop.hive.ql.exec.UDF, kế thước class này giúp chúng ta có thể linh hoạt xử lí input

 Thông qua hàm evaluate (Text input), chúng ta có thể áp dụng các logic cần thiết với input này sau đó trả về kết quả bằng cách return new Text(output)

4.3 Kết quả

Tập dÿ lißu (Dùng Stanford)

Hình 7 Tập dữ Foods Review cÿa Stanford Gồm có 568,454 records được gửi tới server thông qua các clients

Client:

Client module sẽ đọc tất cả các file trong thư mục và gửi đến server Các file đã đọc xong được thêm đuôi <read= ở cuối để phân biệt Client sẽ không đọc dữ liệu trong các file có đuôi <read= vì những data nãy đã được gửi rồi

Hình 8 Dữ liệu đã và chưa được Client gửi đi Nhận ACK từ server trả về sau mỗi record gửi đi:

Downloaded by Hoc Vu (vuchinhhp7@gmail.com)

Trang 11

Trường Đại Học Bách Khoa Tp Hồ Chí Minh

Khoa Khoa Học & Kỹ Thuật Máy Tính 11

Hình 9 Client gửi dữ liệu và nhận ACK chính là số thā tự record đã gửi

Server:

Bất cā lúc nào nhận được 1 connection từ client, server sẽ tạo ra 1 file tmp để lưu data tại đường dẫn chỉ định ftrong file server.properties File tmp sẽ được đóng lại và chuyển đến thư mục done khi có một trong 2 trường hợp xảy ra:

 File đã đạt đến kích thước nhất định (được config) Quá trình này gọi là roll file Lúc này server cũng sẽ tạo ra file tmp mới để lưu trữ data sắp tới

Hình 10 Roll File vái dung lượng cấu hình là 1kb (1000byte)

Downloaded by Hoc Vu (vuchinhhp7@gmail.com)

Trang 12

Trường Đại Học Bách Khoa Tp Hồ Chí Minh

Khoa Khoa Học & Kỹ Thuật Máy Tính 12

 Nếu kết nối từ client bị đóng lại Trong trường hợp này dù file chưa đÿ kích thước vẫn sẽ tiến thành roll file

Hình 11 Roll File khi đóng kết nßi (filesize = 1kb) Hive module

Table

Table được tạo trên Hive theo đúng cấu trúc cho trước:

Hình 12 Cấu trúc table trên Hive Nhóm đã thành công thiết kế mßt sß câu Query mẫu để tìm kiếm thực phẩm tßt mßt cách nhanh chóng dựa trên các thußc tính của tập dÿ lißu

Downloaded by Hoc Vu (vuchinhhp7@gmail.com)

Trang 13

Trường Đại Học Bách Khoa Tp Hồ Chí Minh

Khoa Khoa Học & Kỹ Thuật Máy Tính 13

Phần này tổng kết lại toàn bộ quá trình làm đề tài, những công việc đã hoàn thành, những vấn đề chưa giải quyết được, cũng như hướng phát triển cÿa đề tài trong tương lai

Kết quả đạt được

Sau quá trình thực hiện, đề tài đã đạt được nhiều kết quả khả quan, trong đó nổi bật nhất là:

 Đề tài đã phát triển hệ thống hoàn chỉnh phía server và client, có thể vận hành tốt với đầy

đÿ các chāc năng đã định ra

 Kiến trúc, nền tảng hệ thống phía server ổn định và vững chắc với mô hình 2 tầng, dễ dàng mở rộng ra trong tương lai

 Quá trình thực hiện đề tài đã giúp bản thân sinh viên học hỏi thêm được nhiều công cụ mới hiện đại và hiệu quả (Hive, Hadoop, Mapreduce), cũng như kĩ năng nghiên cāu các thuật toán, phân tích, thiết kế hệ thống, so sánh và lựa chọn các phương án hiệu quả

Nhÿng vấn đề còn lại

Nhìn chung, dù đã rất cố gắng, nhưng với thời gian có hạn, đề tài vẫn còn một số vấn đề như sau:

 Hiệu năng cÿa hệ thống chưa được kiểm tra và đánh giá toàn diện Với việc server cÿa hệ thống phải phục vụ cho nhiều client cùng lúc, cần có thời gian, cũng như công cụ để kiểm tra và đánh giá, từ đó tìm ra các vấn đề nếu có và nâng cao khả năng đáp āng cÿa hệ thống

 Các chāc năng cÿa hệ thống hiện còn rất đơn giản, và chỉ góp phần định hướng phát triển cho đề tài trong tương lai

 Chưa có các phương pháp bảo mật để đảm bảo an toàn thông tin cho hệ thống Trong tương lai, cần có các biện pháp bảo mật tốt hơn

Hưáng phát triển

Với những nền tảng đã xây dựng, đề tài có nhiều hướng đi để tiếp tục phát triển và hoàn thiện hơn, cụ thể:

 Giải quyết toàn diện vấn đề hiệu năng và bảo mật Hiện tại, hệ thống chỉ mới đáp āng hai vấn đề này ở māc cơ bản Trong tương lai, khi mà āng dụng có nhiều người dùng hơn cần có các giải pháp toàn diện hơn: kết nối https, sử dụng các công cụ kiểm tra và đánh giá hiệu năng hệ thống

Tài Lißu Tham Khảo

[1] Elmasri, R & Navathe, S 2010 Fundamentals of Database Systems, 6th ed Pearson,

Messachusetts

[2] Programming Hive, Data Warehouse and Query Language for Hadoop, Dean Wampler,

Edward Capriolo, Jason Rutherglen, 2012

Downloaded by Hoc Vu (vuchinhhp7@gmail.com)

Ngày đăng: 22/06/2023, 20:55

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w