Cảm ơn TopDev và các bạn trẻ đã tổ chức và hỗ trợ tôi hoàn thành tốt buổi chia sẻ hôm thứ bảy 30/09/2017 vừa qua. Mặc dù trời mưa to, nhưng các bạn khán giả vẫn tham gia khá đầy đủ. Tuy có nhiều phần chưa đáp ứng được mong đợi của mọi người nhưng phần hỏi đáp luôn là phần sôi động nhất đã lắp được phần nào khoảng trống này. Hy vọng, mỗi bạn đều đem về được những kinh nghiệm thiết thực khi đụng đến công nghệ xử lý Big Data, cụ thể là Apache Spark. Bên dưới, tôi xin tổng hợp lại các câu hỏi thường gặp trong buổi chia sẻ này cùng với Slide chứa notebook về Spark bên trên. Nếu bạn nào có thêm câu hỏi, mình sẽ cập nhật vào bài viết này để thêm phần phong phú cho các bạn khác tìm hiểu và tham khảo.
Notebooks:
Các event trước:
Thế nào thì được gọi là Big Data?
Big Data thoả tính chất 5V thì được gọi là Big. Cá nhân mình thấy 3 điểm sau thì đã gọi là Big rồi.
- Dữ liệu phức tạp (unstructured data).
- Tốc độ phình to nhanh, tính theo giây.
- Không thể xử lý với các công nghệ trước đó.
Có cần phải học thêm bằng cấp nào không?
Các nhà tuyển dụng hiện tại xem kinh nghiệm quan trọng hơn bằng cấp. Một số công nghệ nên biết: Docker, PostgreSQL, MongoDB, Apache Spark, Bash shell, AWS, Kafka, Jenkins.
Nếu bạn có thêm các Certificate cloud computing sau thì cũng có thể tạo nên lợi thế riêng:
Nên tự build hay sử dụng cloud service cho Big Data?
- Tự build: ưu điểm bảo mật dữ liệu theo ý mình, khuyết điểm tốn kém về thời gian chi phí, hệ thống lỗi thời nhanh.
- Cloud service: ưu điểm nhanh chóng tích hợp hệ thống, khuyết điểm phụ thuộc hãng cung cấp, chi phí tăng cao nếu không biết kiểm soát. (Amazon, Google, Microsoft)
Ứng dụng Bigdata trong các ngành công nghiệp/dịch vụ truyền thống?
- Telecom (Viettel, Mobifone).
- Grab bike, Uber.
- Hàng không (Vietnam airline).
- Siêu thị (AEON, Big C, Coop mart).
- Xuất nhập khẩu.
- Y tế.
- Sàn giao dịch chứng khoán.
Nghiên cứu Bigdata cần chuẩn bị những gì? Có document nào để tiếp cận một cách từ căn bản đến chuyên sâu không?
- Chuẩn bị: kiến thức cơ sở dữ liệu, mạng máy tính, lập trình, và đọc hiểu tiếng Anh.
- Document: của các hãng cung cấp giải pháp (Docker, PostgreSQL, MongoDB, Apache Spark, Bash shell, AWS, Kafka, Jenkins,…). Hoặc tìm sách trên Amazon với các từ khoá về Big Data.
Người ta nói cần phải nắm thật là sâu cấu trúc dữ liệu mới tiếp xúc được Bigdata, vậy đúng không?
Big data luôn đi kèm tập các công nghệ nhằm giải quyết các bài toán như: khả năng lưu trữ phân tán, khả năng giảm thất thoát thông tin, khả năng tính toán, khả năng quản trị hiệu quả. Nếu muốn tìm hiểu thì em nên xác định được mình đang bị vấn đề gì rồi tìm kiếm thông tin liên quan để giải quyết.
Cấu trúc dữ liệu cần có giải thuật đi kèm và điều này là đúng với Big Data. Nên nắm vững các giải thuật tối ưu và thông minh càng nhiều càng tốt. Các giải thuật nên nằm trong tầm kiểm soát từ trở xuống
mà thôi vì ta không đủ nguồn lực để xử lý nếu giải thuật tồi.
Hadoop hoạt động như thế nào?
Các ứng dụng tương tự/dựa trên Hadoop: Dropbox, Google drive, Microsoft Drive, AWS S3, Google Cloud Storage, …
Phân tán, tạo bản sao dữ liệu trên nhiều máy cluster. Không quan tâm một file nằm trên một hay nhiều máy, điều quan trọng khi user cần truy cập thì máy master sẽ xác định được dữ liệu nằm ở đâu. Ví dụ, có 1 máy master và 2 máy cluster (mỗi máy có dung lượng 10GB). Nếu có một file 15GB cần lưu trữ thì máy master sẽ chia ra một cluster chứa 8GB dữ liệu, cluster còn lại chứa 7GB dữ liệu. Đối với phía user, họ chỉ thấy một file 15GB duy nhất mà không quan tâm file này được phân tán ra bao nhiêu máy cluster.
Tổng quan về Big Data?
Hiểu được lịch sử phát triển của data sẽ hiểu được Big Data. Các giai đoạn hình thành theo thứ tự: văn bản trên giấy > văn bản được số hoá > bảng tính excel > cơ sở dữ liệu SQL > Big Data: Hadoop/ NoSQL, Kafka, Spark, Storm.
Bắt đầu như thế nào?
- Từ bài toán cần giải quyết.
- Cần tới đâu thì dùng tới đó. Không nên dùng dao chém đá đi chém chuối. Nếu MySQL có thể handle được thì cứ tiếp tục sử dụng, không cần thiết phải dùng NoSQL như MongoDB hay Cassandra.
- Sử dụng keyword để tìm giải pháp: message queue (AWS Kinesis, Apache Kafka), processing (Apache Spark, Apache Storm), Storage (Hadoop, NoSQL), management/monitoring (Jenkins, Ansible, Vagrant)
Thuần phục Big Data như thế nào?
- Chia để trị.
- Indexing.
- Mini-batch.
- Manage/Monitoring hiệu quả.
Spark hoạt động như thế nào?
- Tính toán trên RAM thay vì trên đĩa như Hadoop.
- Driver quản lý và phân chia tác vụ cho các máy workers.
- Workers làm việc trên các block RDD sau đó gửi kết quả về máy Driver.
Ngành Bigdata này có nhất thiết phải theo học thạc sĩ và tiến sĩ để lấy bằng không ạ?
Không. Bằng cử nhân hệ thống thông tin, mạng máy tính là đủ. Thậm chí bằng trung cấp nghề của APTECH hay Nhất Nghệ đều có thể làm việc với Big Data. Điều quan trọng là bạn có kiến thức về Cơ sở dữ liệu và quản trị mạng máy tính.
Những tập đoàn lớn khi tuyển dụng họ chú trọng vào những kỹ năng, skillset nào?
- Kinh nghiệm làm việc.
- Các công nghệ họ đang làm: Hadoop, MongoDB, Spark.
- Khả năng học tập thích nghi nhanh các công nghệ mới.
- Có tư duy thiết kế kiến trúc hệ thống lớn.
Tự học các khóa trên mạng thì có hiệu quả không? Cơ hội nghề nghiệp về lĩnh vực này như thế nào?
- Học trên mạng giúp bạn có thêm kiến thức.
- Đi làm thực tế mới cho bạn nhiều kinh nghiệm.
- Ngành này đang khát nhân lực nên cơ hội còn rất lớn.
Tuyển dụng chỉ nhắm đến đối tượng với 2, 3 năm kinh nghiệm cùng với bằng cấp ở mức Master hoặc Phd, liệu VN có phải là nơi cho ngành Bigdata phát triển khi các sinh viên không được tạo môi trường và điều kiện để phát triển và nghiên cứu?
Yêu cầu cao như vậy là do đặc thù ở một số công ty lớn. Vẫn có một số công ty săn đón sinh viên từ năm 3 Đại học để có nguồn lực ngay khi mới ra trường. Bạn có thể tìm cơ hội thực tập 2-3 tháng ở các hội chợ việc làm tổ chức tại các trường ĐH trong thành phố.
Để bắt đầu nghiên cứu về data, chắc hẳn phải có nguồn dữ liệu mẫu, vậy thì em có thể tìm/lấy chúng ở đâu để có dữ liệu đủ lớn cho việc học và nghiên cứu?
Bạn có thể lên mackaroo download 1000 dữ liệu mẫu, sau đó tự viết code để mô phỏng ra tập dữ liệu lớn hơn để tính toán tuỳ thích.
Giữa dữ liệu có quan hệ như trong một bảng SQL và dữ liệu hỗn loạn cào từ các nguồn khác nhau về thì cách phân tích có gì khác nhau ạ?
- SQL là dữ liệu đã có schema, việc phân tích sẽ dựa trên ngôn ngữ SQL là chủ yếu.
- Unstructure data như text, hình ảnh, video, nhạc được phân tích tương ứng với các ngành khoa học liên quan: Xử lý ngôn ngữ tự nhiên, Thị giác máy tính, Xử lý tín hiệu số, …
Facebook, Google áp dụng song song SQL, No SQL. Với những tính chất nào thì dữ liệu sẽ là SQL, khi nào là NoSQL. Sự kết hợp đó như thế nào là hiệu quả?
SQL: dùng cho các mô hình quản lý cần sự chuẩn mực và chính xác về kiểu dữ liệu và ràng buộc quan hệ giữa các thực thể. Ví dụ, dữ liệu ngân hàng, đặt vé tàu, vé phim có lượng giao dịch và truy cập đồng thời cao, SQL truyền thống giúp cho mô hình ứng dụng này được đảm bảo tính chính xác trong quá trình thực thi.
NoSQL: Not only SQL nghĩa là vẫn có SQL trong đó nhưng sẽ có thêm các tính năng giải quyết vấn đề của Big Data như lưu trữ tốc độ cao, dễ dàng nhân bản hay phân tán dữ liệu, schema dữ liệu không rõ ràng và thay đổi thường xuyên, mô hình hoá được cho các bài toán lưu trữ document, phân tích mạng xã hội, và hỗ trợ tìm kiếm thông tin nâng cao hơn SQL truyền thống.
Kết hợp: SQL thường dùng khi use case đã rõ ràng ít thay đổi trong quá trình triển khai. NoSQL thường dùng khi tính năng sản phẩm thay đổi nhiều (tính theo ngày, tuần).
Bài toán về big data mọi người đang giải là gì, họ gặp các khó khăn và thách thức gì?
Tốc độ lưu trữ được tính trên giây. Ví dụ, giao dịch của các mạng viễn thông, ngân hàng, sàn giao dịch chứng khoán, lịch sử các chuyến bay của hãng hàng không, messenger của Facebook, Zalo, Twitter.
Tốc độ xử lý thống kê dữ liệu đòi hỏi real-time. Thống kê lượt view, phân tích sentiment của cộng đồng mạng, thống kê khớp lệnh ở các sàn giao dịch, hiển thị sắp xếp ngày giờ chuyến bay trong ngày.
Khả năng lưu trữ phình to ngoài kiểm soát. Lưu trữ các cuộc gọi tổng đài, các cuộc gọi đặt Grab bike, Uber, tracking lượt view quảng cáo, logging của hệ thống web. Trong vài giây, những hệ thống này phải đối mặt với lượng lưu trữ ngoài tầm kiểm soát.
Hệ thống quản trị và giám sát chưa ổn định. Chưa có nhiều ứng dụng hỗ trợ giám sát và quản lý Big Data. Các nhóm phát triển thường tự viết script để phát hiện và khắc phục kịp thời các lỗi của hệ thống nhằm đảm bảo trải nghiệm của người dùng không bị gián đoan.
Hiện tại nhắc đến bigdata người ta thường nhắc đến các hệ thống liên quan đến Hadoop, vậy Hadoop có phải là câu trả lời cho mọi bài toán liên quan đến bigdata không và liệu chỉ cần biết 1 mình hadoop là đủ?
Hadoop là nền tảng cho các dịch vụ Cloud Storage như Amazon S3, Google Storage, Dropbox, Drive. Biết về Hadoop chỉ giúp em tự xây dựng một dịch vụ hay hệ thống tương tự.
Hadoop chỉ giải quyết bài toán lưu trữ file phân tán. Vì nó là công nghệ đầu tiên khi Big Data bùng nổ nên mọi người thường nhắc đến nó. Còn nhiều bài toán và công nghệ khác cần quan tâm: lưu trữ transactions cao (NoSQL), giải quyết request cao (message queue), tính toán thống kê real-time (Spark, Storm), quản trị và giám sát (Jenkins, Docker, Ansible) để đảm bảo hệ thống chạy ổn định và kịp thời khắc phục sự cố.
Ngôn ngữ lập trình nào hiện được sử dụng nhiều nhất để nghiên cứu, xử lí và khai phá bigdata?
- Python
- Java
- Scala
- R
- Golang
- Julia
Dear anh Hồng
Em đang rất muốn tìm hiểu về Big data, nên nhờ anh tư vấn giúp một số thắc măc của em với ạ:
Em có nền tảng về Y tế công cộng, được đào tạo về nghiên cứu, thống kê. Tuy nhiên, chỉ dùng các phần mềm phân tích cơ bản như Stata, SPSS, R… với những bộ số liệu nhỏ (cỡ mẫu khoảng vài nghìn).
Với background là phân tích số liệu cơ bản như vậy thì em nên đầu tư học kỹ năng gì để làm việc về Big data ạ? Em đang muốn áp dụng Big data trong y học ạ
Mong nhận được reply của anh.
EH
ThíchThích
Hiện nay, để thực hiện các phân tích thống kê trên Big Data, mọi người thường sử dụng Hadoop để lưu trữ và Spark để tính toán cũng như tổng hợp số liệu. Em có thể bắt đầu với 2 công nghệ này.
ThíchThích
hi Hong,
Mình cũng mới bắt đầu research về BigData và tìm hướng đi mới cho công việc,
Hiện tại mình đã nắm dc cơ bản về Hadoop, Map/Reduce, HDFS,
+ Ngoài ra cũng từng xử lý vấn đề liên quan tới Stream Processing với Kafka-Zookeeper-Spark ===> Logstask —> Elasticsearch (hoặc HDFS/Cassandra).
+ Đọc các file storage (csv, json, xml) và sử dụng Spark core API/Dataset/Dataframe/SQL để truy vấn.
——–
Mình đang gặp 1 số khó khăn để quyết định tìm hiểu tiếp ( vấn đề cơ bản là toán học của mình yếu), vậy nhờ bạn chia sẻ cách/hướng đi tiếp.
– Về mảng nào sẽ ít đụng vào toán: cá nhân mình thiên về hệ thống và kiến trúc nhiều hơn ?
best regards,
TA
ThíchThích
Hi,
Nếu thiên về thiên về hệ thống và kiến trúc thì bạn nên tập trung làm Data Engineer, và hầu như rất ít đụng toán nếu làm vai trò này.
ThíchThích
Cám ơn vì chia sẻ 🙂
– Với Data Engineer, H có thể cho mình những skill bắt buộc, cần và có, và có bài toàn cụ thể càng tốt để mình practice
– Ngoài ra mình cũng đang muốn thử sức với https://spark.apache.org/docs/2.3.0/ml-guide.html Mlib của Spark để tập giải quyết các vấn đề liên quan tới predictions, recommend. (đi tiếp sâu hơn vào những skill mình đã học, dc mô tả ở câu hỏi phía trên)
Vậy step by step mình cần lần lượt bổ sung là những gì.
Thanks!
ThíchThích
Skills chủ yếu là Network và Database, còn Mlib thì ko bằng sklearn vì chưa đc nghiên cứu cẩn thận. Sklearn thì cty nên đầu tư máy tính nhiều RAM để training nhé.
ThíchThích
Hi anh, link notebooks trên không tồn tại https://nbviewer.jupyter.org/github/ongxuanhong/topdev_talks_Jul_2017/blob/master/study_apache_spark/rdd_co_ban.ipynb
ThíchThích
thanks bạn, mình đã update lại link
ThíchThích
Chào anh, em đang là sv năm 4 hiện tại đang làm đồ án. Em muốn tìm hiểu về Bigdata nhưng chưa biết nên bắt đầu như thế nào. Không biết anh có thể cho em một vài lời khuyên không ạ?
Em cảm ơn!!
ThíchThích
Chào anh, Công ty em đang về lĩnh vực tài chính, đang tìm các khóa học chuyên sâu về Big data ( chủ yếu xử lý các bài toán như phân tích hàng vi khách hàng…liên quan đến predictions, recommend). Vậy anh có gợi ý nào không ạ. Có thể ở Việt Nam hoặc nước ngoài. Học theo dạng học thật việc thật luôn ạ. Cảm ơn anh
ThíchThích
hiện tại a nghĩ các khoá học chỉ dừng ở mức demo để hiểu concept, còn lại sẽ dựa vào kinh nghiệm làm việc để ứng dụng, khi bị stuck thì search google để giải quyết vấn đề thôi em.
ThíchThích
Cám ơn bạn
ThíchThích
Hi a Hồng,
Mình cũng mới bắt đầu tìm hiểu về DS, quy trình xây dựng Bigdata, datawarehouse. Mình không biết nên bắt đầu tư đâu. A có thể tư vấn giúp mình không?
ThíchThích