Các giải pháp BigData (so sánh tương quan với Google)
Big Data
6
hadoop
11
White

Bùi Hồng Hà viết ngày 30/11/2015

Giới thiệu

Google là một công ty dẫn đầu về phần mềm xử lý Big Data. Hầu hết các phần mềm xử lý dữ liệu như Hadoop đều có nguồn gốc ý tưởng từ Google. Tuy vậy Google hầu như không opensource các phần mềm do họ viết ra mà chỉ viết bài báo công bố về sản phẩm của minh sau một thời gian nhất định. Đến khi cộng đồng mã nguồn mở clone lại thành công, thì Google thường tuyên bố rằng đó là công nghệ đã cũ và họ đã không còn dùng vài năm rồi :D.

Tuy rằng Google không còn sử dụng nhưng không có nghĩa là mọi người sẽ không sử dụng nữa vì đơn giản các công ty hoàn toàn có thể hưởng lợi từ các sản phẩm clone này (do không có nhiều dữ liệu như Google). Nhân đọc được 1 bài báo tổng hợp các sản phẩm Big Data của Google, mình nảy ra ý tưởng tổng hợp các phần mềm mã nguồn mở tương đương.

Ghi chú: viết nửa chừng xong mới nhận ra bạn cpplover cũng viết bài tương tự rồi nên mình cố gắng viết giải thích cụ thể hơn

Google Stack và các phần mềm nguồn mở tương đương

Google Stack

Bài báo mình đọc được là ở đây: https://news.ycombinator.com/item?id=9652528. Trong đó có mô hình tổng hợp các công cụ của Google như sau:

alt text

"Stack" của Google có thể chia làm các module như sau:

Quản lý cluster:

  • Borg
  • Omega

Đồng bộ hoá

  • Chubby: nhờ Chubby service mà các ứng dụng có thể đồng bộ được dữ liệu, hành vì cũng như môi trường của hoạt động.

Hệ thống quản lý File phân tán (Distributed File-System)

  • GFS
  • Colossus

Quản lý dữ liệu (Data Storage)

  • MegaStore
  • BigTable
  • Spanner
  • Dremel

Xử lý dữ liệu (Data Processing

  • Map-Reduce Framework dùng cho xử lý Batch
  • Percolator: dùng cho xử lý liên tục (incremental processing)
  • MillWheel: dùng cho xử lý stream
  • Pregel: dùng cho xử lý Graph.

Programming Framework

  • FlumeJava
  • Tenzing
  • PowerDrill

Giám sát (Monitoring)

  • Dapper
  • CPI

Mình cũng không hoàn toàn nắm được công dụng của tất cả các phần mềm ở trên nên chỉ giám giới thiệu qua các phần mềm mà mình tạm hiểu và các ứng dụng mã nguồn mở tương đương.

Các phần mêm nguồn mở tương đương

Quản lý Cluster

Nếu bạn nào đã từng quản lý một số lượng máy chủ nhất định cho các dịch vụ web chắc biết vấn đề là: truy cập web không phân bố đều theo thời gian mà sẽ chia làm khoảng thời gian không có ai dùng và khoảng thời gian peak. Ví dụ hình dưới dây là 1 máy chủ web của mình có. CPU lúc peak time cao gấp 3, 4 lần lúc bình thường. Tài nguyên dùng cho lúc peak nói chung cũng cao hơn lúc bình thường từ 3 tới 4 lần. Do vậy phần lớn tài nguyên máy chủ chủ yếu được lên kế hoạch cho peak time. Lúc không có người truy cập thì máy chủ hầu như hoạt động ở trạng thái "rảnh rỗi". Hiệu suất trung bình là không cao.

alt text

Do vậy thay vì mỗi máy chủ hoạt động một vai trò thì người ta cho một máy chủ đảm nhận nhiều vai trò với peak time khác nhau. Việc một máy chủ đảm bảo nhiều vai trò làm việc quản lý rất khó nhưng bù lại hiệu suất trung bình lại cao. Do vậy nếu ta có công cụ giúp việc quản lý nhiều vai trò trên 1 máy chủ, thì hiệu suất sử dụng máy chủ sẽ cao hơn rất nhiều. Đối với 1 công ty có nhiều máy chủ như Google thì việc sử dụng hiệu quả mỗi máy chủ sẽ giúp họ tiết kiệm được rất nhiều tiền.

Borg và Omega ra đời với mục tiêu này. Hiện tại Google đang phát triển phần mềm quản lý cluster thế hệ thứ 2 gọi là kubernetes sử dụng Docker và công bố mã nguồn của phần mềm này. Cộng đồng nguồn mở cũng có các giải pháp giải quyết vấn đề này dù mình chưa biết mức độ triển khai đến đâu.

Đồng bộ hoá

Lập trình viên viết phần mềm cho hệ phân tán phải giải quyết bài toán đồng bộ hoạt động giữa các máy chủ trong hệ phân tán (Giống kiểu lock trong bài toán multithread). Google giải quyết bài toán này bằng một phần mềm riêng biệt là Chubby. Trong cộng đồng nguồn mở thì phần mêm đồng bộ từ lâu nay được sử dụng như điều tất yếu là: Apache ZooKeeper. Zookeeper là phần mềm được thiết kế và viết mã rất tốt, đã qua được các bài kiểm tra khắt khe .

Một giải pháp khác có thể áp dụng được cho bài toán giống Chubby là: etcd dù rằng mình chưa nghe nhiều đến ứng dụng etcd trong thực tiễn.

File-System

GFS ra đời trong hoàn cảnh Google có quá nhiều dữ liệu đến nỗi họ không thể nào lưu trữ trong 1 máy tính được và họ cũng không có cách truy vấn hiệu quả dữ liệu được lưu trữ. Mô hình của GFS có thể được tham khảo ở hình dưới đây (Chi tiết về GFS mình sẽ viết vào 1 bài khác).

alt text

Để có thể truy vấn dữ liệu hiệu quả thì một hệ thống File-system phân tán là thành phần không thể không có. Do vậy trước khi có các module phân tích, thì module file system này đã được cộng đồng mã nguồn mở ưu tiên phát triển. Hệ thống nguồn mở được sử dụng nhiều nhất và có nhiều tương đồng nhất với GFS là HDFS. Một số công ty clone HDFS và phát triển sản phầm thương mại của họ bao gồm:

  • MapR
  • Kudu (bài toán Kudu giải quyết có phần khác hơn một xíu. Mình sẽ cố gắng viết vào các bài viết khác).

Gần đây có xu thế là kết hợp các Storage với những tính năng khác nhau phục vụ cho các mục tiêu truy vấn dữ liệu khác nhau. Mình đã gặp một trường hợp như vậy và đã viết bài tổng kết ở bài viết Ghi chú về star schema và ứng dụng trong BigData.

Storage

Do mình chỉ có kinh nghiệm với HDFS và HBase nên ở đây mình chỉ trình bày thay thế cho BigTable. Các thay thế của phần mềm như Spanner có vẻ vẫn chưa được ứng dụng nhiều trong "công nghiệp".

HBase chính là sản phẩm clone của BigTable. Trên website của tool này các lập trình viên cũng nói như vậy. Mình không thấy các sản phẩm khác thay thế HBase. Đọc bài viết của bạn cpplover thấy bạn đưa ra 2 tool thay thế:

  • Spanner: CockroachDB
  • Dremel/Percolator: haeinsa

Mình không có kinh nghiệm nên không biết 2 tool kia ứng dụng đến đâu. Giá mà bạn @cpplover cho ý kiến được thì tốt.

Xử lý dữ liệu

Map-Reduce là một cách query dữ liệu đã có được hơn 10 năm và đã từng là phương pháp truy vấn dữ liệu chính trên HDFS. Với các bài toán phải thực hiện Full-Scan (quét toàn bộ hệ thống dữ liệu) thì Map-Reduce vẫn là phương pháp hiệu quả nhất hiện nay chưa có thay thế. Hadoop Map Reduce là giải pháp nguồn mở tương đương với Map-Reduce của Google và gần như không có thay thế.

Tuy vậy có những bài toán đặc thù khác mà MR không đáp ứng được nhu cầu, đòi hỏi phải có giải pháp thay thế. Đối với xử lý stream dữ liệu thì Apache Spark đang được chú ý và Spark Streaming đang là giải pháp mã nguồn mở được cộng đồng tập trung thay thế cho Google Millwheel.

Đối với bài toán xử lý dữ liệu Graph, một giải pháp nguồn mở mà mình biết là Apache Gigraph là một tool có thể sử dụng được.

Phương pháp truy vấn

Các phương pháp xử lý dữ liệu trình bày ở trên (MR, Graph, Streaming, Batch) đòi hỏi người tham gia xử lý dữ liệu phải biết lập trình và sử dụng các Framework lập trình hiệu quả. Đòi hỏi này không phải lúc nào cũng đáp ứng được do những người giỏi lập trình thì làm kỹ sư hết rồi, và những người giỏi phân tích ý nghĩa của dữ liệu thì lại không sắc trong kỹ năng lập trình. Vì vậy việc thiết kế các phương pháp truy vấn dữ liệu hiệu quả và dễ dàng cho người sử dụng dựa trên những Framework ở trên trở thành yêu cầu cần thiết và Google đã làm việc đó thông qua các sản phẩm của họ:

  • FlumeJava
  • Tenzing
  • PowerDrill

Cộng đồng nguồn mở cũng nghĩ ra các sản phẩm tương tự hoặc giúp việc truy vấn dễ dàng hơn.

Hỗ trợ phương pháp truy vấn SQL truyền thống thì có sản phẩm như: Impala hay nhẹ nhàng hơn là Apache Hive. Bằng việc định nghĩa sẵn schema, người dùng chỉ cần viết các truy vấn SQL và các Framework trên sẽ tự động sinh ra các thủ tục MR truy vấn dữ liệu cho câu SQL người dùng viết. Facebook cũng chế ra ngôn ngữ query của riêng họ và cũng công khai mã nguồn: Presto.

Streaming thì Apache Spark đang là ứng cử viên nặng ký nhất hầu như không có đối thủ và không có thay thế.

Mình có thể tìm hiểu về PowerDrill nhưng không hiểu lắm nên cũng không biết có phần mềm nguồn mở tương tự nào không. Bạn nào biết cái này chỉ cho mình với.

Giám sát

Giám sát là phân mảnh rất khó tìm phần mềm nguồn mở thay thế vì bài toán cái gì và giám sát thế nào phụ thuộc rất nhiều vào đặc tính của từng hệ thống. Trong slide phát biểu của kỹ sư google, họ cũng trình bày một số con số trong hệ thống của họ và đưa ra các lời khuyên về giám sát. Tuy vậy những lời khuyên này khá khái quát nên hầu như không áp dụng được cho nguồn mở.

Bộ thư viện duy nhất (biết được qua anh Ngọc Đào) https://github.com/openzipkin/zipkin thì có vẻ tương đương với Dapper. Còn lại mình không tìm được nào tool tương tự.

Kết luận

Bài viết giới thiệu các phần mềm nguồn mở tương tự với Stack của Google (tương tự bài viết: http://kipalog.com/posts/Google-stack-61bc6fb3-3b1e-49f0-9c62-95ba81369a8f) nhưng cố gắng viết chi tiết hơn về các sản phẩm này. Hy vọng bài viết cung cấp phần nào thông tin giải pháp cho các bạn đang đi tìm giải pháp BigData. Đối với những bạn mới đảm nhận lĩnh vực này bài viết hy vọng sẽ đưa ra được vài các tên để các bạn Google thêm!

Mình sẽ cố gắng viết chi tiết hơn ở các bài viết sau.

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Bùi Hồng Hà

59 bài viết.
262 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
74 8
Bài viết tổng hợp cơ chế hoạt động của https Chút ít về chữ ký điện tử Chữ ký điện tử là cơ chế bao gồm 3 thuật toán: Thuật toán chọn một khóa...
Bùi Hồng Hà viết gần 3 năm trước
74 8
White
43 7
Giới thiệu Gần đây thấy bản thân chém gió rất nhiều về MapReduce, Hadoop v.v nhưng chưa thấy có bài viết nào tổng hợp + giải thích cụ thể về MapRe...
Bùi Hồng Hà viết 2 năm trước
43 7
White
21 5
1. Giới thiệu Redis]] là hệ thống lưu trữ keyvalue với rất nhiều tính năng và được sử dụng rộng rãi]]. Redis nổi bật bởi việc hỗ trợ nhiều cấu trú...
Bùi Hồng Hà viết gần 3 năm trước
21 5
Bài viết liên quan
White
13 0
Giới thiệu Công ty mình có một vấn đề (BigData) cần giải quyết như sau: "Trong số người dùng đang bình luận vào 1 video (bình luận là thời gian t...
Bùi Hồng Hà viết hơn 2 năm trước
13 0
White
15 0
Lang thang hacker news tìm được một phần nhỏ (Link) của một bác ở Anh tổng hợp về stack mà google đã tạo và sử dụng. Chi tiết về các stack được tổ...
cpplover viết hơn 2 năm trước
15 0
White
43 7
Giới thiệu Gần đây thấy bản thân chém gió rất nhiều về MapReduce, Hadoop v.v nhưng chưa thấy có bài viết nào tổng hợp + giải thích cụ thể về MapRe...
Bùi Hồng Hà viết 2 năm trước
43 7
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
59 bài viết.
262 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!