Kinh nghiệm làm việc với Big DataĐã bao giờ bạn cảm thấy quá tải khi làm việc với Big Data chưa? Đã bao giờ bạn phải ngồi hàng giờ chỉ để transfer dữ liệu từ server này sang server khác chỉ để test thuật toán của mình? Hay những lúc chán chường khi nhìn script của mình bắt đầu chạy hàng giờ và cuối cùng phát hiện ra mình đã sai đâu đó? Mình nghĩ rằng tất cả những ai khi mới bắt đầu làm việc với Big Data đều có những cảm nhận như vậy. Trong bài viết này, tôi xin góp một chút kinh nghiệm của mình để làm việc với Big Data hiệu quả hơn, kể cả cá nhân hay làm việc nhóm.Hãy lên plan thật tốtKhi bắt đầu một dự án về Big Data, Project manager sẽ đối mặt với rất nhiều quyết định như nên lựa chọn hệ database nào cho phù hợp với bài toán đặt ra, phát triển trên ngôn ngữ lập trình gì để dễ dàng phát triển và bảo trì sau này. Khi chưa có nhiều kinh nghiệm, việc mắc sai lầm là điều tất yếu. Nhưng mấu chốt vấn đề vẫn là có được một plan thật tốt sẽ cứu sống dự án cũng như các thành viên của mình về sau.Ví dụ, ở các công ty chuyên xử lý dữ liệu log và time series, thì dữ liệu sinh ra hàng giờ lên đến hàng Gigabytes là chuyện bình thường. Bài toán đặt ra gồm hai phần. Thứ nhất, làm thế nào để lưu trữ nhanh dữ liệu xuất phát từ nhiều nguồn về chung một nơi lưu trữ mà không bị mất mát thông tin. Thứ hai, làm sao có thể tổng hợp nhanh dữ liệu từ cấp độ phút sang giờ sang ngày để thực hiện phân tích dữ liệu.Lúc này, Project manager sẽ đứng trước hai lựa chọn để lưu trữ và truy vấn nhanh thông tin:Sử dụng MongoDB và Java: các thành viên đã có kinh nghiệm về hai công nghệ này nên có thể phát triển ngay.Sử dụng Kafka và Spark: đây là công nghệ mới đáp ứng được nhu cầu của bài toán nhưng đòi hỏi thời gian cập nhật công nghệ và chưa có nhiều kinh nghiệm để phát triển.Cuối cùng, do ưu tiên việc cho ra sản phẩm nhanh chóng cũng như tự tin với kinh nghiệm của đội nhóm hiên tại, Project manager đã quyết định chạy dự án trên MongoDB. Và đây là một quyết định chỉ đáp ứng được nhu cầu hiện tại nhưng về lâu dài sẽ gây ra nhiều rắc rối và phiền toái có thể dẫn đến thất bại của toàn bộ dự án.Bên cạnh những ưu điểm của một NoSQL system đó là đảm bảo tính sẵn sàng của hệ thống, MongoDB có nhiều khuyết điểm không phù hợp cho phân tích real-time trên Big Data.Cơ chế MapReduce (MR) chậm, khó lập trình phân tán trên nhiều server. Mặc dù có Aggregation thay thế cho MapReduce để cải thiện về tốc độ tổng hợp dữ liệu nhưng vẫn còn đó nhiều lỗi phát sinh liên quan đến quản lý bộ nhớ chưa được khắc phục.Các phiên bản nâng cấp không tương thích ngược với các phiên bản trước đó. Dẫn đến nhiều khó khăn trong việc nâng cấp mã nguồn. Nhiều hàm sẽ bị loại bỏ và thay thế, ta khó có thể sử dụng lại được.Database không có schema hay ràng buộc toàn vẹn, khiến cho dữ liệu có nhiều thông tin bị trùng lặp và không chính xác. Việc thực thi các phân tích số liệu dựa trên dữ liệu không toàn vẹn (invalid data) như thế này dẫn đến những sai sót không thể chấp nhận được.Không thể chuyển qua sử dụng công nghệ khác. Hệ thống đã chạy và phát triển được một thời gian dài nên không thể đập bỏ hết và làm lại từ đầu. Điều này lại khiến cho việc bảo trì hệ thống về lâu dài không được đảm bảo, khó khăn trong việc kế thừa hệ thống.Do vậy, nếu bạn lên plan tốt hơn thì đã chọn Kafka kết hợp với Spark để làm nền tảng phát triển. Việc nâng cấp và bảo trì cũng dễ dàng hơn. Đừng vì tính dễ sử dụng và thời gian phát triển nhanh mà đưa ra plan không tốt.Nên rút data sample để thực nghiệmKhi làm việc với Big Data, điểm khác biệt duy nhất đó là thời gian. Thời gian copy, thời gian chạy thuật toán, thời gian kiểm chứng, … đều kéo dài từ một đến nhiều tiếng thậm chí là vài ngày. Cách tốt nhất đó là hãy quyên chữ Big đi và rút trích ngay small sample để thực nghiệm, như vậy sẽ nhanh và dễ kiểm soát hơn.Nhỏ ở đây có nghĩa là từ vài chục đến vài trăm dòng dữ liệu, có thể chạy trực tiếp và kiểm tra trên các phần mềm như Excel. Nhờ vậy, ta có thể kiểm tra được thuật toán của mình có chạy đúng hay không, và tự tin khi implement trên dữ liệu Big thật sự.Cho nên, hãy rút trích ra các mẫu dữ liệu có thể quan sát được và thực nghiệm trên đó để đảm bảo tính đúng đắn. Ta có thể tư duy theo kiểu quy nạp từ tiền đề, giả thuyết, cho đến chứng minh tổng quát tính đúng đắn của dữ liệu.
đang được dịch, vui lòng đợi..