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á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:
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 đổi và chuẩ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 đọc và ghi 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:
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.
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 .
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:
Họ cũng đưa ra ví dụ cho mỗi lớp.
á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.
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.