Khoa học dữ liệu và mô hình lập trình MapReduce của Hadoop


8

Các lớp khác nhau của các vấn đề khoa học dữ liệu có thể được giải quyết bằng mô hình lập trình mapreduce là gì?

Câu trả lời:


13

Trước tiên hãy chia nó thành nhiều phần.

Khoa học dữ liệu là về kiến ​​thức từ dữ liệu thô. Nó sử dụng học máy, thống kê và các lĩnh vực khác để đơn giản hóa (hoặc thậm chí tự động hóa) việc ra quyết định. Kỹ thuật khoa học dữ liệu có thể hoạt động với bất kỳ kích thước dữ liệu nào, nhưng nhiều dữ liệu hơn có nghĩa là dự đoán tốt hơn và do đó quyết định chính xác hơn.

Hadoop là tên gọi chung cho một bộ công cụ dự định hoạt động với lượng dữ liệu lớn. Hai thành phần quan trọng nhất trong Hadoop là HDFS và MapReduce.

HDFS , hay Hệ thống tệp phân tán Hadoop, là một bộ lưu trữ phân tán đặc biệt có khả năng chứa lượng dữ liệu thực sự lớn. Các tệp lớn trên HDFS được chia thành các khối và đối với mỗi khối, HDFS API sẽ hiển thị vị trí của nó .

MapReduce là khung để chạy các tính toán trên các nút có dữ liệu. MapReduce sử dụng rất nhiều địa phương dữ liệu được HDFS trưng ra: khi có thể, dữ liệu không được chuyển giữa các nút, mà thay vào đó, mã được sao chép vào các nút có dữ liệu.

Vì vậy, về cơ bản mọi vấn đề (bao gồm các nhiệm vụ khoa học dữ liệu) không phá vỡ nguyên tắc cục bộ dữ liệu có thể được triển khai hiệu quả bằng MapReduce (và một số vấn đề khác có thể được giải quyết không hiệu quả, nhưng vẫn đủ đơn giản).


Hãy lấy một số ví dụ. Nhà phân tích rất thường chỉ cần một số thống kê đơn giản về dữ liệu bảng của mình. Trong trường hợp này , Hive , về cơ bản là công cụ SQL trên MapReduce, hoạt động khá tốt (cũng có Impala, Shark và những người khác, nhưng họ không sử dụng MapReduce của Hadoop, vì vậy sẽ có nhiều hơn về sau).

Trong các trường hợp khác, nhà phân tích (hoặc nhà phát triển) có thể muốn làm việc với dữ liệu không có cấu trúc trước đó. Pure MapReduce khá tốt để chuyển đổichuẩn hóa dữ liệu.

Một số người được sử dụng để khám phá các số liệu thống kê và trực quan hóa bằng các công cụ như R. Có thể áp dụng phương pháp này cho số lượng dữ liệu lớn bằng gói RHadoop .

Và khi nói đến học máy dựa trên MapReduce Apache Mahout là người đầu tiên đề cập đến.


Tuy nhiên, có một loại thuật toán hoạt động khá chậm trên Hadoop ngay cả khi có mặt địa phương dữ liệu, đó là thuật toán lặp. Các thuật toán lặp có xu hướng có nhiều giai đoạn Map và Giảm. Khung MR của Hadoop đọcghi dữ liệu vào đĩa trên mỗi giai đoạn (và đôi khi ở giữa), điều này làm cho các tác vụ lặp (cũng như bất kỳ giai đoạn nào) chậm kinh khủng.

May mắn thay, có các khung thay thế có thể vừa - sử dụng dữ liệu cục bộ vừa giữ dữ liệu trong bộ nhớ giữa các giai đoạn. Có lẽ, đáng chú ý nhất trong số họ là Apache Spark . Spark hoàn toàn thay thế cho MapReduce của Hadoop sử dụng thời gian chạy riêng của nó và hiển thị API khá phong phú để thao tác dữ liệu phân tán của bạn. Spark có một số dự án phụ, liên quan chặt chẽ đến khoa học dữ liệu:

  • Cá mập Spark SQL cung cấp các giao diện giống như SQL thay thế cho dữ liệu được lưu trữ trên HDFS
  • Truyền phát tia lửa giúp dễ dàng làm việc với các luồng dữ liệu liên tục (ví dụ: nguồn cấp dữ liệu Twitter)
  • MLlib triển khai một số thuật toán học máy với API khá đơn giản và linh hoạt
  • Đồ thị cho phép xử lý đồ thị quy mô lớn

Vì vậy, có rất nhiều vấn đề khoa học dữ liệu mà bạn có thể giải quyết với Hadoop và các dự án liên quan.


Tôi không chắc lắm về những gì bạn nói trên MapReduce, đặc biệt So basically any problem that doesn't break data locality principle may be efficiently implemented using MapReduce. Theo hiểu biết của tôi, bạn chỉ có thể giải quyết các vấn đề có thể được thể hiện bằng mẫu MapReduce.
merours

@fxm: Khung MapReduce có thể được sử dụng cho khá nhiều tác vụ khác nhau. Ví dụ, Oozie - bộ lập lịch quy trình công việc cho các thành phần Hadoop khác nhau - có cái gọi là hành động Java, chỉ đơn giản là tạo một trình ánh xạ và chạy mã Java tùy chỉnh trong đó. Với phương pháp này, về cơ bản bạn có thể chạy bất kỳnào . Tuy nhiên, điều này sẽ không cung cấp cho bạn bất kỳ lợi thế MR nào so với ứng dụng Java đơn giản. Cách duy nhất để đạt được những lợi thế này là chạy song song các tính toán (sử dụng Bản đồ) trên các nút có dữ liệu , nghĩa là cục bộ. Để tóm tắt: bạn có thể chạy bất kỳnào với MR, nhưng để có được hiệu suất, bạn cần giữ địa phương dữ liệu.

Tôi đồng ý, nhưng điều tôi muốn nói là một nhà phát triển không nên lo lắng về việc quản lý địa phương dữ liệu (được quản lý bởi hadoop), mà là về việc thể hiện các thuật toán mong muốn với mẫu MapReduce.
merours

@fxm: nhà phát triển đảm bảo địa phương bằng cách sử dụng mapper. Nói một cách đơn giản, "map (f, data)" có nghĩa là "chuyển f () sang các nút dữ liệu và chạy cục bộ". Nếu nhà phát triển không xem xét địa phương (ví dụ: đặt tất cả các tính toán cho bộ giảm tốc), anh ta sẽ mất tất cả các lợi thế của MR. Vì vậy, biểu thị công việc MR như (hiệu quả) ngụ ý việc sử dụng địa phương dữ liệu nào. Điều đó nói rằng, tôi vẫn sẽ đề nghị sử dụng các công cụ linh hoạt hơn so với MR thuần túy như Spark.

9

Khoa học dữ liệu có nhiều lĩnh vực phụ khác nhau như được mô tả trong bài viết của tôi ). Gần như cho mỗi khu vực, các nhà khoa học và nhà phát triển có những đóng góp đáng kể. Để tìm hiểu thêm về những gì có thể được thực hiện, vui lòng xem các trang web sau:

Ngoài ra, có một số công việc trên tổ hợp MapReduce + Excel + Cloud nhưng tôi chưa tìm thấy liên kết.

Các lớp khác nhau của vấn đề Khoa học dữ liệu là gì ...

Mỗi "lớp" không hoàn toàn là miền vấn đề đồng nhất, nghĩa là một số vấn đề không thể được giải quyết thông qua bản đồ và giảm cách tiếp cận do chi phí truyền thông hoặc hành vi thuật toán của nó. Điều tôi muốn nói là hành vi là một số vấn đề muốn có quyền kiểm soát trên tất cả các tập dữ liệu thay vì khối. Vì vậy, tôi từ chối liệt kê loại "lớp" vấn đề.

Đừng quên rằng việc biết MapReduce có thể làm gì là không đủ đối với Khoa học dữ liệu. Bạn cũng nên biết về những gì MapReduce cũng không thể làm được .


4

Có một bài báo bạn nên xem qua:

MapReduce: Máy tính phân tán cho máy học

Chúng phân biệt 3 loại vấn đề máy học hợp lý để giải quyết với MapReduce:

  1. Thuật toán vượt qua đơn
  2. Thuật toán lặp
  3. Các thuật toán dựa trên truy vấn

Họ cũng đưa ra ví dụ cho mỗi lớp.


2

ánh xạ / thu nhỏ là thích hợp nhất cho các tính toán ngoại tuyến song song. Nói chính xác hơn, nó hoạt động tốt nhất khi có thể tìm thấy kết quả từ kết quả của một số chức năng của một phân vùng đầu vào. Tính trung bình là một ví dụ tầm thường; bạn có thể làm điều này với ánh xạ / thu nhỏ bằng cách tính tổng từng phân vùng, trả về tổng và số phần tử trong phân vùng, sau đó tính toán trung bình tổng thể bằng các kết quả trung gian này. Nó ít thích hợp hơn khi các bước trung gian phụ thuộc vào trạng thái của các phân vùng khác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.