Thứ Ba, 29 tháng 11, 2016

Phân tích dữ liệu lớn với công nghệ Hadoop

Với sự phát triển của công nghệ và số lượng người dùng internet, một khối lượng khổng lồ đang được sinh ra hàng ngày gồm các loại dữ liệu đa cấu trúc như hình ảnh, video, weblog, dữ liệu thu nhận từ các cảm biến… Từ đó nảy sinh nhu cầu lớn về lưu trữ, xử lý, phân tích dữ liệu để từ đó khai phá các thông tin hữu ích


Vậy phân tích dữ liệu lớn là gì?

Dữ liệu lớn chủ yếu được tạo ra từ các trang web đa phương tiện truyền thông xã hội, cảm biến, thiết bị, video / âm thanh, mạng, đăng nhập các tập tin và các trang web, các loại dữ liệu này thường được tạo ra theo thời gian thực. Việc phân tích dữ liệu lớn là quá trình kiểm tra, khai phá dữ liệu để khám phá ra các mô hình ẩn, mối tương quan và thông tin hữu ích khác. Nói cách khác, phân tích dữ liệu lớn là quá trình tìm kiếm thông tin từ dữ liệu.

Những giá trị của quá trình phân tích dữ liệu lớn

Phân tích dữ liệu lớn cho phép các nhà phân tích thị trường, các nhà nghiên cứu và doanh nghiệp phát triển những hiểu biết sâu sắc từ các dữ liệu sẵn có từ đó có thể dẫn đến rất nhiều lợi thế kinh doanh. Các doanh nghiệp có thể đưa ra một phân tích chính xác từ dữ liệu và các chỉ số sản xuất, kinh doanh ... từ phân tích này có thể có xây dựng định hướng tiếp theo cho doanh nghiệp. Một số trường hợp sử dụng điển hình như sau:
  • Bất cứ khi nào khách hàng truy cập cổng thông tin du lịch, trang web mua sắm, tìm kiếm chuyến bay, khách sạn hoặc mua một sản phẩm nào đó, dữ liệu lịch sử các hành động của khách hàng được lưu lại. Doanh nghiệp sẽ sử dụng nguồn dữ liệu (weblog) này để phân tích xu hướng, thị hiếu của người dùng, sau đó có thể 1/ Đưa ra các gói sản phẩm phù hợp hơn 2/ đưa ra các quảng cáo phù hợp với mối quan tâm của khách hàng …
  • Cụ thể hơn, một siêu thị có thể cung cấp tới khách hàng dịch vụ truy cập wifi miễn phí khi tới mua hàng. Lịch sử truy cập wifi của khách hàng sẽ được siêu thị phân tích để biết 1/ tổng lượng khách hàng trong một khoảng thời gian; 2/ số lượng khách quay lại siêu thị và số lần quay lại; 3/ số lượng khách hàng mới tới siêu thị lần đầu .... Đây là một case thực tế mà bạn có thể tham khảo tại đây.

Một số công nghệ sử dụng phân tích dữ liệu lớn trong Hadoop

 

Featured MapReducePigHive
LanguageAlgorithm of Map and Reduce Functions (Can be implemented in C, Python, Java)PigLatin (Scripting Language)SQL-like
Schemas/TypesNoYes (implicit)Yes(explicit)
PartitionsNo NoYes
ServerNo No Optional (Thrift)
Lines of codeMore lines of codeFewer (Around
10 lines of PIG = 200 lines of Java)
Fewer than MapReduce and Pig due to SQL Like nature
Development TimeMore development effortRapid developmentRapid development
AbstractionLower level of abstraction (Rigid Procedural Structure)Higher level of abstraction (Scripts)Higher level of abstraction (SQL like)
JoinsHard to achieve join functionalityJoins can be easily writtenEasy for joins
Structured vs Semi-Structured Vs Unstructured dataCan handle all these kind of data typesWorks on all these kind of data typesDeal mostly with structured and semi-structured data
Complex business logicMore control for writing complex business logicLess control for writing complex business logicLess control for writing complex business logic
PerformanceFully tuned MapReduce program would be faster than Pig/HiveSlower than fully tuned MapReduce program, but faster than badly written MapReduce codeSlower than fully tuned MapReduce program, but faster than bad written MapReduce code

Một số phân tích về các công nghệ trên

Việc phân tích sử dụng công nghệ nào phải dựa trên đặc điểm của nguồn dữ liệu đã có. Giả sử chúng ta có bộ dữ liệu có những đặc tính sau:
  •    Dữ liệu có định dạng cấu trúc
  •    Phải tính toán trên bộ số liệu đã có để tìm ra các đặc tính mới
  •    Dữ liệu có thể được tổ chức thành giản đồ (ví dụ đồ thị)
  •    Trong môi trường thực tế, kích thước dữ liệu là lớn (định nghĩa lớn là thế nào các bạn tự google nhé :D

Dựa trên các đặc tính của bộ dữ liệu trên:

   Nếu chúng ta sử dụng MapReduce, sẽ cần lập trình viên viết những đoạn lệnh phức tạp để có thể phân tích dữ liệu. Trong đó cần giải quyết nghiệp vụ của hai pha: pha Map sẽ thực thi thế nào? Pha Reduce sẽ thực thi thế nào. Đối với một script sử dụng MapReduce, sẽ đạt được hiệu năng cao nếu script đó được tối ưu hóa một cách hoàn hảo. Ngược lại, hiệu năng sẽ là tồi.
   Nếu dụng Pig, sẽ không thể để phân vùng dữ liệu, vì vậy, chúng ta chỉ có phân tích trên một tập dữ liệu nhỏ, có thể là dữ liệu mẫu hoặc một đoạn dữ liệu giới hạn trong khoảng thời gian nào đó. Tuy nhiên Pig cung cấp một ngôn ngữ kịch bản cho phép phân tích dữ liệu nhanh chóng hơn so với MapReduce. Nếu so sánh về mặt tốc độ, Pig nhanh hơn một script Mapreduce tồi nhưng chậm hơn một script MapReduce được tối ưu hóa.
   Hive không chỉ cung cấp một mô hình lập trình quen thuộc đối với những người biết SQL, nó còn giúp loại bỏ rất nhiều khó khăn so với lập trình MapReduce. Chúng ta có thể đựa dữ liệu vào một bảng trong HIVE, sau đó sử dụng khả năng truy vấn của Hive-QL để phân tích dữ liệu. Ngôn ngữ Hive-QL khá giống với các ngôn ngữ T-SQL thông thường nên khá dễ sử dụng. Về mặt tốc độ thì giống Pig, Hive nhanh hơn một script Mapreduce tồi nhưng chậm hơn một script MapReduce được tối ưu hóa.
Trong bài tiếp theo, chúng ta sẽ thực hành cài đặt Hive trong môi trường Centos

Không có nhận xét nào :

Đăng nhận xét