Đáp án đúng: "Execution model, Latency, Scalability, Programming Language, Fault Tolerance". Khi so sánh các hệ xử lý dữ liệu lớn như MapReduce, Spark, Flink, Storm, người ta xét năm tiêu chí: mô hình thực thi (theo lô, theo luồng, cách biểu diễn luồng xử lý), độ trễ (thời gian từ khi dữ liệu vào tới khi có kết quả), khả năng mở rộng (thêm máy để xử lý nhiều dữ liệu hơn), ngôn ngữ lập trình được hỗ trợ (Java, Scala, Python, SQL) và khả năng chịu lỗi (khôi phục khi nút hỏng). Phương án "Coordination, Latency, Productivity, Speed, Fault Tolerance" lẫn vào phối hợp, năng suất và tốc độ, trong đó tốc độ trùng ý với độ trễ. Phương án "Execution model, Speed, Scalability, Flexibility, Fault Tolerance" thay độ trễ bằng tốc độ và thay ngôn ngữ lập trình bằng tính linh hoạt, là những khái niệm chung chung. Phương án "Coordination, Latency, Productivity, Flexibility" lại bỏ mất mô hình thực thi và khả năng mở rộng, hai tiêu chí quan trọng nhất.
Đáp án đúng: "Spark". Apache Spark là động cơ xử lý hợp nhất: phần lõi với RDD và DataFrame xử lý theo lô (batch), còn Spark Streaming chia luồng dữ liệu thành các lô nhỏ (micro-batch) và Structured Streaming xử lý luồng trên cùng API DataFrame, nên một nền tảng chạy được cả hai kiểu, dùng chung mã và bộ nhớ đệm. "Hive" sai vì là kho dữ liệu truy vấn bằng HiveQL, dịch thành các tác vụ theo lô trên MapReduce, Tez hoặc Spark, không xử lý luồng thời gian thực. "Pig" sai vì Pig Latin cũng được biên dịch thành các tác vụ theo lô, dùng cho biến đổi dữ liệu kiểu ETL. "Sqoop" sai vì nó chỉ chuyển dữ liệu hàng loạt giữa Hadoop và cơ sở dữ liệu quan hệ, không phải nền tảng xử lý.
Đáp án đúng: "To process structured data using SQL queries.". Spark SQL là mô-đun của Apache Spark để xử lý dữ liệu có cấu trúc: nó cung cấp DataFrame và Dataset, cho phép viết truy vấn SQL hoặc dùng API tương đương, đọc nhiều nguồn như Parquet, JSON, Hive, JDBC, và dùng bộ tối ưu Catalyst để lập kế hoạch thực thi hiệu quả. "To provide machine learning capabilities." là việc của MLlib, thư viện học máy của Spark. "To manage distributed graph computation." là việc của GraphX (hoặc GraphFrames), mô-đun tính toán đồ thị phân tán. "To perform real-time streaming analytics." là việc của Spark Streaming và Structured Streaming; Structured Streaming dựng trên nền Spark SQL nhưng mục đích chính của Spark SQL vẫn là truy vấn dữ liệu có cấu trúc, còn phân tích dòng là mô-đun khác.
Đáp án đúng: "No". K-Means bắt đầu bằng việc chọn ngẫu nhiên k tâm cụm ban đầu, rồi lặp hai bước: gán mỗi điểm vào tâm gần nhất và tính lại tâm bằng trung bình các điểm trong cụm, cho tới khi hội tụ. Thuật toán chỉ bảo đảm hội tụ về một cực tiểu cục bộ của tổng bình phương khoảng cách trong cụm, và cực tiểu đó phụ thuộc vào tâm khởi tạo, nên hai lần chạy với khởi tạo ngẫu nhiên khác nhau có thể cho cách phân cụm khác nhau. Vì vậy trong thực hành người ta chạy nhiều lần rồi chọn kết quả có tổng sai số nhỏ nhất, hoặc dùng k-means++ để khởi tạo tốt hơn. "Yes" chỉ đúng khi cố định hạt giống ngẫu nhiên hoặc dùng cùng một bộ tâm khởi tạo, điều mà câu hỏi không giả định.
AHDFS and through the system directory with the “cd” terminal command.
BHDFS and through the “hadoop fs” command.
CThe local file system and through the “hadoop fs” command.
DThe local file system and through the directory with the “cd” terminal command.
Lời giải
Đáp án đúng: "HDFS and through the “hadoop fs” command.". Hàm saveAsTextFile của Spark ghi RDD ra đường dẫn được chỉ định, ở đây đường dẫn có tiền tố hdfs nên dữ liệu được ghi vào hệ tệp phân tán HDFS; coalesce(1) gộp về một phân vùng nên thư mục outputDir chứa một tệp part-00000 cùng tệp đánh dấu _SUCCESS. Vì HDFS không gắn vào cây thư mục cục bộ, muốn xem phải dùng lệnh hadoop fs như hadoop fs -ls hay hadoop fs -cat. Phương án "HDFS and through the system directory with the “cd” terminal command." đúng nơi ghi nhưng sai cách truy cập, lệnh cd chỉ đi trong hệ tệp cục bộ của máy. "The local file system and through the “hadoop fs” command." sai nơi ghi vì tiền tố hdfs không trỏ về đĩa cục bộ. "The local file system and through the directory with the “cd” terminal command." sai cả nơi ghi lẫn cách truy cập.
BA type of data to contain the information on connections between vertices and edges.
CA type of data to contain both edge and vertex info.
DA type of data to contain edge info.
Lời giải
Đáp án đúng: "A type of data to contain both edge and vertex info.". Trong Spark GraphX, đồ thị gồm VertexRDD chứa thuộc tính đỉnh và EdgeRDD chứa thuộc tính cạnh; triplet là khung nhìn ghép chúng lại: mỗi phần tử EdgeTriplet mang mã và thuộc tính của đỉnh nguồn (srcAttr), đỉnh đích (dstAttr) cùng thuộc tính của cạnh nối chúng (attr), lấy ra qua graph.triplets. Nhiều tài liệu ôn tập lại ghi "A type of data to contain the information on connections between vertices and edges." vì triplet nghe như mô tả mối nối; nhưng theo tài liệu GraphX, triplet không chứa quan hệ giữa đỉnh với cạnh mà chứa trọn dữ liệu của một cạnh và hai đỉnh đầu mút, nên mô tả đúng là chứa cả thông tin cạnh lẫn đỉnh. "A type of data to contain vertex info." chỉ đúng với VertexRDD, thiếu phần cạnh. "A type of data to contain edge info." chỉ đúng với EdgeRDD, thiếu thuộc tính hai đỉnh mà triplet gắn thêm vào.
, {email:1, _id:0})". Trong MongoDB, lệnh find nhận hai đối số: điều kiện lọc (query) và phép chiếu (projection). Yêu cầu là lọc theo trường userIndex lớn hơn 24 nên điều kiện phải là userIndex với toán tử $gt, và chỉ lấy email nên projection đặt email bằng 1 và tắt _id bằng 0. "
Lời giải
db.userIndex.find({
email:{
$gt:24}}
, {_id:0})" đặt điều kiện lên email, so một địa chỉ thư với số 24, và projection trả mọi trường trừ _id. "
Lời giải
db.userIndex.find({
email:{
$lte:24}}
, {_id:0})" vừa lọc nhầm trường email vừa dùng $lte (nhỏ hơn hoặc bằng), ngược chiều yêu cầu. "
Lời giải
db.email.find({
userIndex:{
$lte:24}}
, {email:1, _id:0})" đúng trường và đúng phép chiếu nhưng $lte lấy các chỉ số từ 24 trở xuống, trái với điều kiện lớn hơn 24.
BSchemas created entirely from attribute grouping.
CA type of probabilistic schema mapping.
DSchema created from integrating two or more schemas.
Lời giải
Đáp án đúng: "Schema created from integrating two or more schemas.". Lược đồ trung gian (mediated schema) là lược đồ hợp nhất dựng từ việc tích hợp nhiều lược đồ nguồn, ví dụ ghép lược đồ bệnh nhân của hai bệnh viện thành một lược đồ chung; người dùng truy vấn trên lược đồ này và hệ thống dịch truy vấn xuống từng nguồn qua các ánh xạ. "Schemas created from customer info." gắn lược đồ với một loại dữ liệu cụ thể, trong khi lược đồ trung gian có thể dựng cho bất kỳ miền nào. "Schemas created entirely from attribute grouping." quá hẹp: nhóm thuộc tính (attribute grouping) chỉ là một bước giúp xác định thuộc tính nào nên gộp chung khi dựng lược đồ trung gian, không phải toàn bộ quá trình. "A type of probabilistic schema mapping." nhầm vai trò: ánh xạ lược đồ xác suất là các ánh xạ có gán xác suất nối lược đồ nguồn với lược đồ trung gian, còn lược đồ trung gian là đích của các ánh xạ đó.
Đáp án đúng: "128 MB". HDFS chia mỗi tệp thành các khối (block) lớn rồi phân tán và sao lưu chúng trên các DataNode; từ Hadoop 2.x kích thước khối mặc định là 128 MB, đặt qua tham số dfs.blocksize. Khối lớn giúp giảm số siêu dữ liệu NameNode phải giữ trong bộ nhớ và giảm thời gian tìm kiếm so với thời gian truyền dữ liệu. "32 MB" chưa từng là mặc định của HDFS, khối nhỏ như vậy làm số khối tăng vọt và đè nặng NameNode. "64 MB" là kích thước mặc định của Hadoop 1.x, đã được tăng lên ở phiên bản 2.x mà câu hỏi nhắc tới. "256 MB" là giá trị quản trị viên thường tự cấu hình cho cụm có tệp rất lớn, nhưng không phải mặc định. Ví dụ một tệp 300 MB sẽ được chia thành hai khối 128 MB và một khối 44 MB.
Đáp án đúng: "MongoDB". MongoDB là cơ sở dữ liệu NoSQL hướng tài liệu: mỗi tài liệu lưu dạng BSON giống JSON, các tài liệu trong cùng một collection không bắt buộc có cùng tập trường hay cùng kiểu, nên có thể thêm trường mới bất cứ lúc nào mà không cần sửa lược đồ; vì vậy nó được gọi là không lược đồ (schema-less), hay đúng hơn là lược đồ linh hoạt. "MySQL" sai vì là hệ quản trị cơ sở dữ liệu quan hệ, bảng phải định nghĩa cột và kiểu trước bằng CREATE TABLE. "Oracle" cũng là RDBMS với lược đồ cố định, muốn thêm cột phải chạy ALTER TABLE. "PostgreSQL" là cơ sở dữ liệu quan hệ có lược đồ chặt; nó hỗ trợ cột JSONB để chứa dữ liệu bán cấu trúc, nhưng bảng vẫn có lược đồ khai báo trước nên không phải hệ không lược đồ.
Đáp án đúng: "supp(X ∪ Y) / supp(X)". Trong phân tích luật kết hợp, confidence (độ tin cậy) của luật X suy ra Y là xác suất có điều kiện giao dịch chứa Y khi đã chứa X, tính bằng support của tập gồm cả X và Y chia cho support của X. Ví dụ trong 100 giao dịch có 40 giao dịch chứa bánh mì và 30 giao dịch chứa cả bánh mì lẫn sữa thì confidence của luật bánh mì suy ra sữa là 30 chia 40, bằng 0,75. "Frequency of rule" là định nghĩa của support của luật, tức tỉ lệ giao dịch chứa cả X và Y, không chia cho support của X. "Support of consequence" chỉ là support của Y, dùng trong mẫu số của chỉ số lift chứ không phải confidence. "supp(X) / supp(Y)" là tỉ số giữa hai support đơn lẻ, không phản ánh việc X và Y cùng xuất hiện nên không đo độ tin cậy của luật.
Đáp án đúng: "Hardware Only". IaaS (Infrastructure as a Service, hạ tầng như một dịch vụ) là tầng dưới cùng của mô hình đám mây: nhà cung cấp cho thuê hạ tầng phần cứng đã ảo hoá gồm máy ảo, ổ lưu trữ, mạng, còn hệ điều hành, runtime và ứng dụng do người dùng tự cài và tự quản lý, ví dụ Amazon EC2. Dễ nhầm nhất là "Computing Environment": môi trường tính toán gồm hệ điều hành, runtime, thư viện, công cụ phát triển dựng sẵn là thứ PaaS (Platform as a Service) cung cấp, không phải IaaS, vì với IaaS người dùng chỉ nhận phần cứng ảo hoá trống và tự dựng môi trường phía trên. "Software On-Demand" là SaaS, phần mềm hoàn chỉnh dùng ngay qua mạng mà không phải cài đặt hay quản lý gì. "LOud software" không phải thuật ngữ của điện toán đám mây và không ứng với tầng dịch vụ nào.
Đáp án đúng: "MongoDB". MongoDB là cơ sở dữ liệu NoSQL hướng tài liệu (document store): mỗi bản ghi là một tài liệu dạng BSON giống JSON, có thể chứa trường lồng nhau và mảng, các tài liệu trong cùng collection không bắt buộc cùng lược đồ, phù hợp dữ liệu bán cấu trúc. "Neo4j" là cơ sở dữ liệu đồ thị, mô hình hoá dữ liệu thành nút, quan hệ và thuộc tính, truy vấn bằng Cypher. "Redis" là kho key-value trong bộ nhớ, ánh xạ khoá tới giá trị hoặc cấu trúc dữ liệu đơn giản, dùng nhiều làm bộ đệm. "MySQL" là hệ quản trị cơ sở dữ liệu quan hệ, lưu dữ liệu trong bảng có lược đồ cố định và truy vấn bằng SQL, không thuộc nhóm NoSQL.
Đáp án đúng: "YARN". Hadoop 2 có ba thành phần cốt lõi: HDFS lo lưu trữ, YARN lo quản lý tài nguyên và lập lịch, MapReduce lo mô hình xử lý. YARN gồm ResourceManager trên nút chủ theo dõi CPU, bộ nhớ của cả cụm và cấp container, cùng NodeManager trên mỗi nút giám sát tài nguyên tại chỗ. "HDFS" sai vì đó là hệ thống tệp phân tán, chia tệp thành khối và nhân bản trên các DataNode, thuộc tầng lưu trữ. "MapReduce" sai vì từ Hadoop 2 nó chỉ là mô hình lập trình xử lý dữ liệu chạy trên YARN, không còn tự quản lý tài nguyên như thời JobTracker. "Spark" là động cơ xử lý dữ liệu trong bộ nhớ, có thể chạy trên YARN như một ứng dụng, chứ không phải thành phần của Hadoop chịu trách nhiệm cấp phát tài nguyên.
Đáp án đúng: "Give equal importance to variables". Các thuật toán phân cụm như k-means dựa vào khoảng cách giữa các điểm, thường là khoảng cách Euclid; nếu một biến có thang đo lớn, ví dụ thu nhập tính bằng triệu, và biến khác có thang nhỏ như số con, thì biến thang lớn sẽ áp đảo khoảng cách và quyết định cụm. Chuẩn hoá (normalization) như min-max hay z-score đưa các biến về cùng thang để mỗi biến đóng góp ngang nhau. "Remove outliers" là một bước tiền xử lý khác; chuẩn hoá không loại điểm nào, và chuẩn hoá min-max còn bị ngoại lai làm lệch. "Use more variables" không liên quan, vì chuẩn hoá giữ nguyên số biến. "Reduce support" lẫn sang khái niệm support (độ hỗ trợ) của phân tích luật kết hợp, không phải phân cụm.
Đáp án đúng: "kNN". kNN (k-Nearest Neighbors, k láng giềng gần nhất) là thuật toán phân lớp (classification) có giám sát: với một mẫu mới, nó tìm k mẫu huấn luyện gần nhất theo một độ đo khoảng cách như Euclid, rồi gán nhãn theo lớp chiếm đa số trong k láng giềng đó. "FP-Growth" là thuật toán khai phá tập phổ biến và luật kết hợp, xây cây FP-tree để tìm các mặt hàng hay được mua cùng nhau mà không cần nhãn lớp. "Apriori" cũng thuộc khai phá luật kết hợp, sinh tập ứng viên theo từng kích thước và cắt tỉa dựa trên tính chất mọi tập con của một tập phổ biến đều phổ biến. "PCA" (Principal Component Analysis, phân tích thành phần chính) là kỹ thuật giảm chiều không giám sát, chiếu dữ liệu lên các hướng có phương sai lớn nhất, không dự đoán nhãn lớp.
Đáp án đúng: "kNN". Thuật toán k láng giềng gần nhất (k-nearest neighbors) là thuật toán học lười (lazy learner): nó không dựng mô hình trước mà chỉ lưu lại toàn bộ dữ liệu huấn luyện, đến khi cần phân loại một mẫu mới mới tính khoảng cách tới mọi điểm, lấy k điểm gần nhất và bỏ phiếu theo nhãn, nên không có pha huấn luyện thật sự. "Decision tree" phải học từ dữ liệu bằng cách chọn thuộc tính tách tốt nhất theo độ đo như Gini hay information gain để dựng cây trước khi dự đoán. "Naïve Bayes" phải ước lượng xác suất tiên nghiệm của từng lớp và xác suất có điều kiện của từng thuộc tính từ dữ liệu huấn luyện. "SVM" phải giải bài toán tối ưu để tìm siêu phẳng phân tách có lề lớn nhất, đây là pha huấn luyện tốn kém.
DBatch processing is an older method that is not as accurate as real-time processing.
Lời giải
Đáp án đúng: "Prevents missed opportunities.". Xử lý thời gian thực (real-time) phân tích dữ liệu ngay khi nó tới, nên giá trị đến từ tính kịp thời: phát hiện gian lận thẻ trước khi giao dịch hoàn tất, gợi ý sản phẩm khi khách còn trên trang, cảnh báo sự cố khi cảm biến vừa báo; chờ xử lý theo lô cuối ngày thì cơ hội hành động đã trôi qua. "More accurate." sai vì thời gian thực không làm kết quả chính xác hơn; xử lý theo lô trên toàn bộ dữ liệu thậm chí thường chính xác hơn. "More expensive to batch process." sai vì xử lý theo lô thường rẻ hơn tính toán liên tục trên luồng, nên chi phí không phải lý do. "Batch processing is an older method that is not as accurate as real-time processing." sai vì lô và luồng là hai cách bổ trợ nhau cho các bài toán khác nhau; xử lý theo lô không kém chính xác chỉ vì ra đời trước.
ASupport for geospatial data storage and geospatial queries.
BEnables real-time data streaming from external sources.
CBetter equipped for string-based search applications.
DImages as values within the database.
Lời giải
Đáp án đúng: "Support for geospatial data storage and geospatial queries.". Aerospike là cơ sở dữ liệu NoSQL dạng khoá giá trị phân tán, tối ưu cho ổ SSD và độ trễ rất thấp; một tính năng nổi bật của nó là lưu dữ liệu địa lý theo GeoJSON, lập chỉ mục không gian và truy vấn như tìm các điểm nằm trong một vùng hay trong bán kính quanh một toạ độ, hữu ích cho ứng dụng định vị và quảng cáo theo vị trí. "Enables real-time data streaming from external sources." là việc của các công cụ thu thập và truyền dữ liệu dòng như Kafka hay Flume, không phải điểm đặc trưng của một cơ sở dữ liệu lưu trữ. "Better equipped for string-based search applications." là thế mạnh của các máy tìm kiếm văn bản như Elasticsearch, Solr với chỉ mục đảo ngược. "Images as values within the database." là khả năng lưu dữ liệu nhị phân mà nhiều hệ khoá giá trị đều có, không phải nét riêng quan trọng của Aerospike.
Đáp án đúng: "Pie chart". Câu hỏi dùng chữ graph theo nghĩa lý thuyết đồ thị: một tập đỉnh nối với nhau bởi các cạnh biểu diễn quan hệ. Biểu đồ tròn chỉ là cách vẽ tỷ lệ các phần của một tổng thành những lát cắt, không có đỉnh và cạnh, nên không phải đồ thị dù tiếng Anh thông thường cũng gọi nó là một kiểu chart. "Social network" là đồ thị điển hình: mỗi người là một đỉnh, quan hệ bạn bè hay theo dõi là cạnh. "Gene interaction map" cũng là đồ thị, mỗi gen hoặc protein là đỉnh và tương tác sinh học giữa chúng là cạnh, dùng để tìm các cụm gen cùng chức năng. "Road map" là đồ thị có trọng số, giao lộ hoặc thành phố là đỉnh, đoạn đường là cạnh mang độ dài, làm nền cho các bài toán tìm đường ngắn nhất.