Làm thế nào lớn là dữ liệu lớn?


86

Nhiều người sử dụng thuật ngữ dữ liệu lớn theo cách khá thương mại , như một phương tiện để chỉ ra rằng các bộ dữ liệu lớn có liên quan đến tính toán, và do đó các giải pháp tiềm năng phải có hiệu suất tốt. Tất nhiên, dữ liệu lớn luôn mang các thuật ngữ liên quan, như khả năng mở rộng và hiệu quả, nhưng điều gì xác định chính xác một vấn đề là một vấn đề dữ liệu lớn ?

Việc tính toán có phải liên quan đến một số mục đích cụ thể, như khai thác dữ liệu / truy xuất thông tin hoặc thuật toán cho các vấn đề đồ thị chung có thể được gắn nhãn dữ liệu lớn nếu tập dữ liệu đủ lớn không? Ngoài ra, lớn như thế nào là đủ lớn (nếu điều này là có thể xác định)?


7
Một bài viết hay về thời điểm dữ liệu của bạn bắt đầu quá lớn đối với việc sử dụng bình thường chrisstucchio.com/blog/2013/hadoop_hatred.html
Johnny000

18
"Bất cứ điều gì quá lớn để tải vào Excel" là trò đùa đang chạy.
Spainedman

1
Điều đó phụ thuộc vào việc nó có bị ném vào như một từ thông dụng hay không.
John Robertson

Đó chính xác là 1 GB. Đó là điểm cắt trong cuốn sách quy tắc. Không có chỗ cho sự mơ hồ.
Hack-R

Đây là một câu hỏi tuyệt vời. Được biểu thị bằng sự đa dạng của câu trả lời, định nghĩa là ... không xác định
Manu H

Câu trả lời:


86

Đối với tôi (đến từ nền tảng cơ sở dữ liệu quan hệ), "Dữ liệu lớn" không phải chủ yếu về kích thước dữ liệu (phần lớn những gì các câu trả lời khác cho đến nay).

"Dữ liệu lớn" và "Dữ liệu xấu" có liên quan chặt chẽ với nhau. Cơ sở dữ liệu quan hệ yêu cầu 'dữ liệu nguyên sơ'. Nếu dữ liệu nằm trong cơ sở dữ liệu, nó chính xác, rõ ràng và đáng tin cậy 100%. Cơ sở dữ liệu quan hệ yêu cầu "Dữ liệu lớn" và một lượng lớn thời gian, tiền bạc và trách nhiệm được đưa vào để đảm bảo dữ liệu được chuẩn bị tốt trước khi tải vào cơ sở dữ liệu. Nếu dữ liệu nằm trong cơ sở dữ liệu, đó là 'phúc âm' và nó xác định sự hiểu biết hệ thống về thực tế.

"Dữ liệu lớn" đã giải quyết vấn đề này từ hướng khác. Dữ liệu được xác định kém, phần lớn có thể không chính xác và thực tế phần lớn có thể bị thiếu. Cấu trúc và bố cục của dữ liệu là tuyến tính trái ngược với quan hệ.

Dữ liệu lớn phải có đủ âm lượng để lượng dữ liệu xấu hoặc dữ liệu bị thiếu trở nên không đáng kể về mặt thống kê. Khi các lỗi trong dữ liệu của bạn đủ phổ biến để loại bỏ nhau, khi dữ liệu bị thiếu tương đối nhỏ đến mức không đáng kể và khi các yêu cầu và thuật toán truy cập dữ liệu của bạn hoạt động ngay cả với dữ liệu không đầy đủ và không chính xác, thì bạn có "Dữ liệu lớn" .

"Dữ liệu lớn" không thực sự là về khối lượng, nó là về các đặc điểm của dữ liệu.


6
+1 Tôi đánh giá khá cao sự căng thẳng đối với dữ liệu lớn không phải là về kích thước , mà là về nội dung (đặc điểm của) .
Rubens

4
Đó là một quan điểm rất mới mẻ. Tôi chưa bao giờ nghe điều này trước đây, nhưng nó rất đúng. Điều này cho thấy rằng các công nghệ SQL và NoQuery không phải là cạnh tranh, mà là bổ sung.
Jay Godse

7
Bạn đang nói về dữ liệu phi cấu trúc, không phải dữ liệu lớn. Dữ liệu phi cấu trúc thường dẫn đến các giải pháp NoQuery và dữ liệu lớn trong ứng dụng, nhưng chúng vẫn khác nhau.
TheGrimmSellectist

Tôi nghĩ rằng đây là một quan điểm kinh doanh tốt về dữ liệu lớn là gì nhưng không trả lời câu hỏi cụ thể khá rõ ràng "dữ liệu lớn lớn như thế nào?"
wợi

33

Như bạn lưu ý một cách đúng đắn, ngày nay "dữ liệu lớn" là điều mà mọi người muốn nói rằng họ đã có, điều này đòi hỏi một sự lỏng lẻo nhất định trong cách mọi người định nghĩa thuật ngữ này. Tuy nhiên, nói chung, tôi nói rằng bạn chắc chắn xử lý dữ liệu lớn nếu quy mô không còn khả thi để quản lý với các công nghệ truyền thống hơn như RDBMS, ít nhất là không bổ sung cho chúng bằng các công nghệ dữ liệu lớn như Hadoop.

Làm thế nào lớn dữ liệu của bạn phải thực sự là trường hợp gây tranh cãi. Đây là một bài đăng trên blog (hơi khiêu khích) tuyên bố rằng đó không thực sự là trường hợp dưới 5 TB dữ liệu. (Để rõ ràng, nó không yêu cầu "Dưới 5 TB không phải là dữ liệu lớn", nhưng chỉ "Dưới 5 TB không đủ lớn để bạn cần Hadoop".)

Nhưng ngay cả trên các bộ dữ liệu nhỏ hơn, các công nghệ dữ liệu lớn như Hadoop có thể có các lợi thế khác, bao gồm rất phù hợp với các hoạt động hàng loạt, chơi tốt với dữ liệu phi cấu trúc (cũng như dữ liệu có cấu trúc không biết trước hoặc có thể thay đổi), khả năng mở rộng theo chiều ngang ( nhân rộng bằng cách thêm nhiều nút thay vì tăng cường các máy chủ hiện tại của bạn) và (như một trong những người bình luận về các ghi chú bài đăng được liên kết ở trên) khả năng tích hợp xử lý dữ liệu của bạn với các bộ dữ liệu bên ngoài (nghĩ về việc giảm bản đồ trong đó trình ánh xạ thực hiện cuộc gọi đến máy chủ khác). Các công nghệ khác liên quan đến dữ liệu lớn, như cơ sở dữ liệu NoSql, nhấn mạnh hiệu năng nhanh và tính sẵn sàng nhất quán trong khi xử lý các bộ dữ liệu lớn, cũng có thể xử lý dữ liệu bán cấu trúc và mở rộng theo chiều ngang.

Tất nhiên, RDBMS truyền thống có những ưu điểm riêng bao gồm các đảm bảo ACID (Nguyên tử, Tính nhất quán, Cách ly, Độ bền) và hiệu suất tốt hơn cho các hoạt động nhất định, cũng như được chuẩn hóa hơn, trưởng thành hơn và (đối với nhiều người dùng) quen thuộc hơn. Vì vậy, ngay cả đối với dữ liệu "lớn" không thể chối cãi, việc tải ít nhất một phần dữ liệu của bạn vào cơ sở dữ liệu SQL truyền thống và sử dụng kết hợp với các công nghệ dữ liệu lớn là điều hợp lý.

Vì vậy, một định nghĩa hào phóng hơn sẽ là bạn có dữ liệu lớn miễn là nó đủ lớn để các công nghệ dữ liệu lớn cung cấp một số giá trị gia tăng cho bạn. Nhưng như bạn có thể thấy, điều đó có thể không chỉ phụ thuộc vào kích thước dữ liệu của bạn mà còn phụ thuộc vào cách bạn muốn làm việc với dữ liệu đó và loại yêu cầu nào bạn có về tính linh hoạt, tính nhất quán và hiệu suất. Cách bạn sử dụng dữ liệu của mình có liên quan đến câu hỏi hơn là bạn đang sử dụng dữ liệu đó để làm gì (ví dụ: khai thác dữ liệu). Điều đó nói rằng, sử dụng như khai thác dữ liệu và học máy có nhiều khả năng mang lại kết quả hữu ích nếu bạn có một bộ dữ liệu đủ lớn để làm việc.


Nhận xét này đã gần 5 năm và trong khi các phần của nó vẫn đúng, ngưỡng 5 TB từ blog tôi trích dẫn chắc chắn không còn đúng nữa. Ví dụ: Microsoft cung cấp các DB SQL "hyperscale" lên tới 100 TB: docs.microsoft.com/en-us/azure/sql-database/. Tất nhiên, người ta có thể giả sử nhiều tổ chức có DB SQL khổng lồ cũng có, giả sử, một cụm Spark để hỗ trợ khối lượng công việc khác nhau. Không có quy tắc bạn phải chọn cái này hay cái khác.
Tim Goodman

21

Tổng lượng dữ liệu trên thế giới: 2,8 zetabyte vào năm 2012, ước tính đạt 8 zetabyte vào năm 2015 ( nguồn ) và với thời gian nhân đôi là 40 tháng. Không thể lớn hơn thế :)

Lấy ví dụ về một tổ chức lớn duy nhất, Facebook thu được 500 terabyte mỗi ngày, vào kho 100 petabyte và chạy 70k truy vấn mỗi ngày trên đó vào năm 2012 ( nguồn ) Kho hiện tại của họ là> 300 petabyte.

Dữ liệu lớn có lẽ là một phần nhỏ của các số Facebook (1/100 có thể có, 1/10000 có thể không: đó là một phổ không phải là một số duy nhất).

Ngoài kích thước, một số tính năng làm cho nó "lớn" là:

  • nó được phân tích tích cực, không chỉ được lưu trữ (trích dẫn "Nếu bạn không tận dụng dữ liệu lớn, thì bạn không có dữ liệu lớn, bạn chỉ có một đống dữ liệu" Jay Parikh @ Facebook)

  • xây dựng và vận hành kho dữ liệu là một dự án cơ sở hạ tầng lớn

  • nó đang tăng trưởng với tốc độ đáng kể

  • nó không có cấu trúc hoặc có cấu trúc không đều

Định nghĩa của Gartner: "Dữ liệu lớn là khối lượng lớn, tốc độ cao và / hoặc tài sản thông tin đa dạng cao đòi hỏi các hình thức xử lý mới" (3Vs) Vì vậy, họ cũng nghĩ rằng "bigness" không hoàn toàn về kích thước của tập dữ liệu, nhưng cũng về vận tốc và cấu trúc và loại công cụ cần thiết.


2
Nếu tổng số lượng dữ liệu trên thế giới tăng gấp đôi cứ sau 40 tháng, thì chắc chắn nó có thể lớn hơn thế. ; p
Air

2
Những người khác mô tả 4 V của dữ liệu lớn IBM hoặc thậm chí 5 V's DAVE BEULKE 2011
nmtoken

2
3 V ban đầu được đặt ra vào năm 2001 bởi Doug Laney Quản lý dữ liệu 3D: Kiểm soát khối lượng dữ liệu, vận tốc và đa dạng .
nmtoken

13

Đối với tôi Big Data chủ yếu là về các công cụ (sau tất cả, đó là nơi nó bắt đầu); một bộ dữ liệu "lớn" là một bộ dữ liệu quá lớn để được xử lý bằng các công cụ thông thường - đặc biệt, đủ lớn để yêu cầu lưu trữ và xử lý trên một cụm thay vì một máy đơn lẻ. Điều này loại trừ RDBMS thông thường và yêu cầu các kỹ thuật mới để xử lý; đặc biệt, các khung giống như Hadoop khác nhau giúp dễ dàng phân phối một tính toán trên một cụm, với chi phí hạn chế hình thức tính toán này. Tôi sẽ thứ hai tham chiếu đến http://www.chrisstucchio.com/blog/2013/hadoop_hatred.html; Các kỹ thuật Dữ liệu lớn là giải pháp cuối cùng cho các bộ dữ liệu đơn giản là quá lớn để xử lý bất kỳ cách nào khác. Tôi muốn nói rằng bất kỳ tập dữ liệu nào cho bất kỳ mục đích nào cũng có thể đủ điều kiện nếu nó đủ lớn - mặc dù nếu hình dạng của vấn đề là các công cụ "dữ liệu lớn" hiện tại không phù hợp, thì có lẽ tốt hơn là đưa ra một công cụ mới Tên.

Tất nhiên là có một số chồng chéo; Khi tôi (một thời gian ngắn) làm việc tại last.fm, chúng tôi đã làm việc trên cùng một bộ dữ liệu 50TB bằng Hadoop và cả cơ sở dữ liệu SQL trên một máy chủ khá lố bịch (tôi nhớ rằng nó có RAM 1TB, và đây là vài năm trước). Điều đó có nghĩa là cả hai đều không phải là dữ liệu lớn, tùy thuộc vào công việc bạn đang làm. Nhưng tôi nghĩ đó là một đặc điểm chính xác; những người đã làm việc trong các công việc Hadoop thấy hữu ích khi đi đến các hội nghị và trang web về Dữ liệu lớn, trong khi những người làm công việc SQL thì không.


10

Dữ liệu trở nên "lớn" khi một máy tính hàng hóa không còn có thể xử lý lượng dữ liệu bạn có. Nó biểu thị điểm mà bạn cần bắt đầu suy nghĩ về việc xây dựng siêu máy tính hoặc sử dụng các cụm để xử lý dữ liệu của mình.


7

Dữ liệu lớn được xác định bởi khối lượng dữ liệu, điều đó đúng, nhưng không chỉ. Các đặc thù của dữ liệu lớn là bạn cần lưu trữ một nhiều của khác nhau và đôi khi không có cấu trúc chất liệu tất cả các lần và từ một tấn các cảm biến , thông thường trong nhiều năm hoặc thập kỷ .

Hơn nữa, bạn cần một cái gì đó có thể mở rộng, để bạn không mất nửa năm để tìm lại dữ liệu.

Vì vậy, đây là Big Data, nơi phương pháp truyền thống sẽ không hoạt động nữa. SQL không thể mở rộng. Và SQL hoạt động với dữ liệu rất có cấu trúc và được liên kết (với tất cả các yêu cầu khóa chính và ngoại khóa, yêu cầu bên trong, yêu cầu nhập khẩu ...).

Về cơ bản, vì lưu trữ trở nên rẻ hơn và rẻ hơn và dữ liệu ngày càng có giá trị, người quản lý lớn yêu cầu kỹ sư ghi lại mọi thứ. Thêm vào hàng tấn cảm biến mới này với tất cả những thiết bị di động, mạng xã hội, công cụ nhúng ... vv. Vì vậy, khi các phương thức cổ điển không hoạt động, họ phải tìm các công nghệ mới (lưu trữ mọi thứ trong tệp, ở định dạng json, với chỉ mục lớn, cái mà chúng ta gọi là noQuery).

Vì vậy, Dữ liệu lớn có thể rất lớn nhưng có thể không quá lớn nhưng dữ liệu phức tạp không có cấu trúc hoặc dữ liệu khác nhau phải được lưu trữ nhanh chóng và đang chạy ở định dạng thô. Chúng tôi tập trung và lưu trữ lúc đầu, và sau đó chúng tôi xem xét làm thế nào để liên kết mọi thứ lại với nhau.


6

Tôi sẽ chia sẻ Big Data giống như thế nào trong bộ gen, đặc biệt là lắp ráp de-novo.

Khi chúng tôi sắp xếp bộ gen của bạn (ví dụ: phát hiện các gen mới), chúng tôi có hàng tỷ lượt đọc ngắn thế hệ tiếp theo. Nhìn vào hình ảnh dưới đây, nơi chúng tôi cố gắng lắp ráp một số lần đọc.

nhập mô tả hình ảnh ở đây

Điều này có vẻ đơn giản? Nhưng nếu bạn có hàng tỷ lượt đọc thì sao? Điều gì xảy ra nếu những lần đọc chứa lỗi trình tự? Điều gì xảy ra nếu RAM của bạn không có đủ bộ nhớ để giữ cho các lần đọc? Còn các vùng DNA lặp đi lặp lại, chẳng hạn như Nguyên tố Alu rất phổ biến thì sao?

Việc lắp ráp De-novo được thực hiện bằng cách xây dựng biểu đồ De-Bruijn :

nhập mô tả hình ảnh ở đây

Biểu đồ là một cấu trúc dữ liệu được khai thác thông minh để thể hiện các lần đọc chồng chéo. Nó không hoàn hảo nhưng tốt hơn là tạo ra tất cả các lớp phủ có thể và lưu trữ chúng trong một mảng.

Quá trình lắp ráp có thể mất nhiều ngày để hoàn thành, bởi vì có khá nhiều đường dẫn mà trình biên dịch sẽ cần phải đi qua và thu gọn.

Trong genomics, bạn có một dữ liệu lớn khi:

  • Bạn không thể vũ phu tất cả các kết hợp
  • Máy tính của bạn không có đủ bộ nhớ vật lý để lưu trữ dữ liệu
  • Bạn cần giảm kích thước (ví dụ: thu gọn các đường dẫn biểu đồ dự phòng)
  • Bạn bực mình vì bạn phải đợi nhiều ngày để làm bất cứ điều gì
  • Bạn cần một cấu trúc dữ liệu đặc biệt để thể hiện dữ liệu
  • Bạn cần lọc bộ dữ liệu của mình để tìm lỗi (ví dụ: lỗi tuần tự)

https://en.wikipedia.org/wiki/De_Bruijn_graph


5

Có một điều đặc biệt đối với các thuật toán đồ thị, đó là những câu hỏi ban đầu khiến nó trở nên đặc biệt, đó là về khả năng phân vùng dữ liệu của anh ấy.

Đối với một số thứ, như sắp xếp các số trên một mảng, không quá khó để phân chia vấn đề trên cấu trúc dữ liệu thành các phần nhỏ hơn, ví dụ: Ở đây: Sắp xếp hợp nhất song song

Tuy nhiên, đối với các thuật toán đồ thị, có một thách thức là việc tìm phân vùng tùy chọn trên một số liệu đồ họa nhất định được biết là .NPhard

Vì vậy, trong khi 10GB số để sắp xếp có thể là một vấn đề rất dễ tiếp cận trên một PC bình thường (Bạn chỉ có thể thông qua lập trình động và có khả năng dự đoán rất tốt về luồng chương trình), làm việc với cấu trúc dữ liệu đồ thị 10 GB có thể đã rất khó khăn.

Có một số khung chuyên dụng như GraphX sử dụng các phương thức và mô hình điện toán đặc biệt để phần nào tránh được những thách thức vốn có của đồ thị.

Vì vậy, để trả lời ngắn gọn câu hỏi của bạn: Như những người khác đã đề cập trước đây, khi dữ liệu của bạn không vừa với bộ nhớ chính trên PC bình thường nhưng bạn cần tất cả để trả lời vấn đề của mình, đó là một gợi ý hay rằng dữ liệu của bạn đã hơi lớn. Việc ghi nhãn chính xác mặc dù phụ thuộc vào tôi nghĩ một chút về cấu trúc dữ liệu và câu hỏi được hỏi.


4

Tôi nghĩ rằng dữ liệu lớn bắt đầu tại thời điểm kích thước ngăn bạn thực hiện những gì bạn muốn. Trong hầu hết các kịch bản, có giới hạn về thời gian chạy được coi là khả thi. Trong một số trường hợp là một giờ, trong một số trường hợp có thể là vài tuần. Miễn là dữ liệu không đủ lớn để chỉ các thuật toán O (n) có thể chạy trong khung thời gian khả thi, bạn đã không đạt được dữ liệu lớn.

Tôi thích định nghĩa này vì nó không liên quan đến khối lượng, trình độ công nghệ và các thuật toán cụ thể. Nó không phải là bất khả tri đối với các tài nguyên vì vậy một sinh viên tốt nghiệp sẽ đạt đến điểm của cách dữ liệu lớn trước Google.

Để có thể định lượng dữ liệu lớn như thế nào, tôi muốn xem xét thời gian cần thiết để sao lưu dữ liệu. Kể từ khi công nghệ tiến bộ, khối lượng được coi là lớn một số năm trước đây bây giờ là vừa phải. Thời gian sao lưu được cải thiện, khi công nghệ cải thiện, giống như thời gian chạy của các thuật toán học tập. Tôi cảm thấy hợp lý hơn khi nói về một tập dữ liệu phải mất X giờ để sao lưu và không phải là tập dữ liệu của byte Y.

Tái bút

Điều quan trọng cần lưu ý là ngay cả khi bạn đạt đến điểm dữ liệu lớn và bạn không thể chạy các thuật toán phức tạp hơn O (n) theo cách thẳng tiến, vẫn có rất nhiều điều bạn có thể làm để vẫn được hưởng lợi từ các thuật toán đó.

Ví dụ: Lựa chọn tính năng có thể giảm số lượng tính năng mà nhiều thuật toán chạy thời gian phụ thuộc vào. Trong nhiều phân phối đuôi dài tập trung vào một vài vật phẩm trong đầu có thể có ích. Bạn có thể sử dụng một mẫu và chạy trên đó các thuật toán chậm hơn.


Lưu ý rằng rào cản cũng đã bị vi phạm trong một số miền của ML. Xem [ grigory.us/mpc-workshop-dimacs.html] cho Hội thảo về Sublinear thuật toán cho ML [1]: grigory.us/mpc-workshop-dimacs.htmlO(n)
Wabbit

4

Dữ liệu là "Dữ liệu lớn" nếu nó có khối lượng lớn đến mức ít tốn kém hơn khi phân tích nó trên hai hoặc nhiều máy tính hàng hóa, so với trên một máy tính cao cấp.

Đây thực chất là cách hệ thống tệp "BigFiles" của Google bắt nguồn. Page và Brin không thể đủ khả năng cho một máy chủ Sun ưa thích để lưu trữ và tìm kiếm chỉ mục web của họ, vì vậy đã kết nối một số máy tính hàng hóa


1

Tôi có xu hướng đồng ý với những gì @Dan Levin đã nói. Cuối cùng, vì chúng tôi muốn rút ra những hiểu biết hữu ích từ dữ liệu thay vì chỉ lưu trữ dữ liệu, đó là khả năng học các thuật toán / hệ thống sẽ xác định cái gì được gọi là "Dữ liệu lớn". Khi các hệ thống ML phát triển, dữ liệu lớn ngày hôm nay sẽ không còn là Dữ liệu lớn vào ngày mai.

Một cách để xác định Dữ liệu lớn có thể là:

  • Dữ liệu lớn : Dữ liệu mà bạn không thể xây dựng các mô hình ML trong thời gian hợp lý (1-2 giờ) trên một máy trạm thông thường (với RAM 4GB)
  • Dữ liệu không lớn : bổ sung ở trên

Giả sử định nghĩa này, miễn là bộ nhớ bị chiếm bởi một hàng riêng lẻ (tất cả các biến cho một điểm dữ liệu) không vượt quá RAM máy, chúng ta sẽ ở chế độ Dữ liệu không lớn .

Lưu ý: Vowpal Wợi (cho đến nay là hệ thống ML nhanh nhất hiện nay) có thể tìm hiểu trên bất kỳ tập dữ liệu nào miễn là một hàng riêng lẻ (điểm dữ liệu) là <RAM (giả sử 4GB). Số lượng hàng không phải là giới hạn vì nó sử dụng SGD trên nhiều lõi. Phát biểu từ kinh nghiệm, bạn có thể đào tạo một mô hình với các tính năng 10k và hàng 10MN trên máy tính xách tay trong một ngày.


1

"Dữ liệu lớn" thực sự chỉ là rất nhiều dữ liệu. Mặc dù nó là một thuật ngữ tiếp thị nhiều hơn bất cứ điều gì, nhưng hàm ý thường là bạn có quá nhiều dữ liệu mà bạn không thể phân tích tất cả dữ liệu cùng một lúc vì dung lượng bộ nhớ (RAM) sẽ mất để giữ dữ liệu trong bộ nhớ xử lý và phân tích nó lớn hơn dung lượng bộ nhớ khả dụng.

Điều này có nghĩa là các phân tích thường phải được thực hiện trên các phân đoạn dữ liệu ngẫu nhiên, cho phép các mô hình được xây dựng để so sánh với các phần khác của dữ liệu.

Licensed under cc by-sa 3.0 with attribution required.