Tải bản đầy đủ (.pdf) (13 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (536.83 KB, 13 trang )

lOMoARcPSD|22494962

Trường Đại Học Bách Khoa Tp. Hồ Chí Minh
Khoa Khoa Hc & K Thut Mỏy Tớnh

MễN HC Dỵ LIịU LN
___________________________________________________
Bỏo cá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
___________________________________________________

GVHD:

Nhóm 1:

PGS.TS. Thoại Nam

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


lOMoARcPSD|22494962

Group 1 - Design System Analysis & Evaluation Foods by Hadoop and Hive

May 2016



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

Trường Đại Học Bách Khoa Tp. Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

2


lOMoARcPSD|22494962


Group 1 - Design System Analysis & Evaluation Foods by Hadoop and Hive

May 2016

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 q 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. Giái Thißu Chung
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 tố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

Trường Đại Học Bách Khoa Tp. Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

3


lOMoARcPSD|22494962

Group 1 - Design System Analysis & Evaluation Foods by Hadoop and Hive

May 2016

2. Cơ Sở Lý Thuyết
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 : )
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
Trường Đại Học Bách Khoa Tp. Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

4


lOMoARcPSD|22494962

Group 1 - Design System Analysis & Evaluation Foods by Hadoop and Hive

May 2016

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

Trường Đại Học Bách Khoa Tp. Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
Downloaded by Hoc Vu ()

5


lOMoARcPSD|22494962

Group 1 - Design System Analysis & Evaluation Foods by Hadoop and Hive


May 2016

3. Phân tích và Thiết kế
3.1 Mơ hình Client – Server
Phân tích: Một 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 biệt. Hệ thống chỉ gửi dữ liệu trong những file khơng đi như hình vẽ
Trường Đại Học Bách Khoa Tp. Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
Downloaded by Hoc Vu ()

6



lOMoARcPSD|22494962

Group 1 - Design System Analysis & Evaluation Foods by Hadoop and Hive

3.3 Kiến trúc Server

May 2016

Hình 4. Phương thāc kết nối Client-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 tồ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 tố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. Ngồ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ì q 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 tố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.
Module server: Bởi vì cũng lúc sẽ có rất nhiều client gửi dữ liệu tới server, cho nên mới 1 kết nối
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

Trường Đại Học Bách Khoa Tp. Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
Downloaded by Hoc Vu ()

7


lOMoARcPSD|22494962

Group 1 - Design System Analysis & Evaluation Foods by Hadoop and Hive

May 2016

Để 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
đã hồ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  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 đượ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

Trường Đại Học Bách Khoa Tp. Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
Downloaded by Hoc Vu ()

8


lOMoARcPSD|22494962

Group 1 - Design System Analysis & Evaluation Foods by Hadoop and Hive

May 2016

4. Hißn thực và Kết quả
4.1 Yêu cầu hß thßng
Server: Hadoop Cluster

Client:

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

 OS: Windows, Linux, Mac, …

 Hadoop 2.7.0

 Oracle JDK 1.7 or later


 Hive 1.2.1

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

 Oracle JDK 1.7

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 đ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.
Trường Đại Học Bách Khoa Tp. Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
Downloaded by Hoc Vu ()

9


lOMoARcPSD|22494962

Group 1 - Design System Analysis & Evaluation Foods by Hadoop and Hive

May 2016

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 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:

Trường Đại Học Bách Khoa Tp. Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
Downloaded by Hoc Vu ()

10



lOMoARcPSD|22494962

Group 1 - Design System Analysis & Evaluation Foods by Hadoop and Hive

May 2016

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). Q 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)
Trường Đại Học Bách Khoa Tp. Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
Downloaded by Hoc Vu ()

11


lOMoARcPSD|22494962

Group 1 - Design System Analysis & Evaluation Foods by Hadoop and Hive



May 2016


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 thc tính của tập dÿ lißu.
Trường Đại Học Bách Khoa Tp. Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
Downloaded by Hoc Vu ()

12


lOMoARcPSD|22494962

Group 1 - Design System Analysis & Evaluation Foods by Hadoop and Hive

May 2016

5. Kết Luận
Phần này tổng kết lại tồn bộ q 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 tố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 tồ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 tồ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]
[2]

Elmasri, R & Navathe, S 2010 Fundamentals of Database Systems, 6th ed. Pearson,
Messachusetts
Programming Hive, Data Warehouse and Query Language for Hadoop, Dean Wampler,
Edward Capriolo, Jason Rutherglen, 2012

Trường Đại Học Bách Khoa Tp. Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
Downloaded by Hoc Vu ()

13



×