Helpex - Trao đổi & giúp đỡ Đăng nhập

6 câu hỏi và trả lời phỏng vấn Hadoop thường gặp

Bạn đang chuẩn bị cho một cuộc phỏng vấn sớm và cần phải có kiến ​​thức về Hadoop? ĐỪNG BỎ QUA! Dưới đây là một số câu hỏi bạn có thể được hỏi và câu trả lời bạn nên cố gắng đưa ra.

Q1. Hadoop là gì?

Hadoop là một khuôn khổ phần mềm mã nguồn mở để lưu trữ một lượng lớn dữ liệu và xử lý / truy vấn những dữ liệu trên một cluster với nhiều nút của phần cứng hàng hóa (tức là phần cứng chi phí thấp). Nói tóm lại, Hadoop bao gồm những điều sau đây:

HDFS (Hệ thống tệp phân tán Hadoop): HDFS cho phép bạn lưu trữ lượng dữ liệu khổng lồ theo cách phân tán và dự phòng. Ví dụ: tệp văn bản 1 GB (tức là 1024 MB) có thể được chia thành các tệp 16 * 128 MB và được lưu trữ trên 8 nút khác nhau trong cụm Hadoop. Mỗi lần phân tách có thể được sao chép 3 lần cho khả năng chịu lỗi để nếu 1 nút bị hỏng, bạn có các bản sao lưu. HDFS là tốt cho tuần tự  ghi một lần và đọc-nhiều lần truy cập loại.

MapReduce: Một khung tính toán. Điều này xử lý một lượng lớn dữ liệu theo cách phân tán và song song. Khi bạn làm một truy vấn vào file 1 GB trên cho tất cả người sử dụng với tuổi> 18, sẽ được nói “8 bản đồ ” các chức năng chạy song song để giải nén cho người dùng với tuổi> 18 trong tập tin 128MB chia của nó, và sau đó là “ giảm ” Hàm sẽ chạy để kết hợp tất cả các đầu ra riêng lẻ thành một kết quả cuối cùng.

YARN (Yet Another Resource Nagotoder): Một khung để lập lịch công việc và quản lý tài nguyên cụm.

Hệ sinh thái Hadoop, với hơn 15 khung và công cụ như Sqoop, Flume, Kafka, Pig, Hive, Spark, Impala, v.v. để nhập dữ liệu vào HDFS, để sắp xếp dữ liệu (như chuyển đổi, làm giàu, tổng hợp, v.v.) trong HDFS và truy vấn dữ liệu từ HDFS cho phân tích và thông tin kinh doanh. Một số công cụ như Pig và Hive là các lớp trừu tượng trên MapReduce, trong khi các công cụ khác như Spark và Impala được cải tiến kiến ​​trúc / thiết kế từ MapReduce cho độ trễ được cải thiện nhiều để hỗ trợ thời gian thực (ví dụ NRT) và xử lý thời gian thực.

Quý 2 Tại sao các tổ chức chuyển từ các công cụ kho dữ liệu truyền thống sang các trung tâm dữ liệu thông minh hơn dựa trên hệ sinh thái Hadoop?

Các tổ chức đang đầu tư để tăng cường:

Cơ sở hạ tầng dữ liệu hiện có:

  • chủ yếu sử dụng dữ liệu có cấu trúc trên mạng, được lưu trữ trong các phần cứng cao cấp và đắt tiền
  • chủ yếu được xử lý như các công việc hàng loạt ETL để nhập dữ liệu vào RDBMS và hệ thống kho dữ liệu để khai thác dữ liệu, phân tích và báo cáo để đưa ra các quyết định kinh doanh quan trọng.
  • chủ yếu xử lý khối lượng dữ liệu tính bằng gigabyte đến terabyte

Cơ sở hạ tầng dữ liệu thông minh hơn dựa trên Hadoop

  • Cấu trúc (ví dụ RDBMS), không cấu trúc (ví dụ: hình ảnh, PDF, tài liệu) và  dữ liệu bán cấu trúc (ví dụ: nhật ký, XML) có thể được lưu trữ trong các máy hàng hóa rẻ hơn theo cách có thể mở rộng và chịu lỗi.
  • dữ liệu có thể được nhập qua các công việc hàng loạt và gần thời gian thực (ví dụ NRT, 200ms đến 2 giây) phát trực tuyến (ví dụ Flume và Kafka).
  • dữ liệu có thể được truy vấn với khả năng có độ trễ thấp (tức là dưới 100ms) với các công cụ như Spark & ​​Impala.
  • khối lượng dữ liệu lớn hơn tính bằng terabyte đến petabyte có thể được lưu trữ.

Điều này trao quyền cho các tổ chức đưa ra quyết định kinh doanh tốt hơn với dữ liệu thông minh hơn và lớn hơn với các công cụ mạnh hơn để nhập dữ liệu , sắp xếp dữ liệu được lưu trữ (ví dụ: tổng hợp, làm giàu, chuyển đổi, v.v.) và truy vấn dữ liệu bị xáo trộn với khả năng báo cáo độ trễ thấp và kinh doanh thông minh.

H3 Kiến trúc trung tâm dữ liệu thông minh hơn và lớn hơn khác với kiến ​​trúc kho dữ liệu truyền thống như thế nào?

Kiến trúc kho dữ liệu doanh nghiệp truyền thống

Kiến trúc trung tâm dữ liệu dựa trên Hadoop

Q4. Lợi ích của các Trung tâm dữ liệu dựa trên Hadoop là gì?

Cải thiện SLA tổng thể (tức là Thỏa thuận cấp độ dịch vụ) khi khối lượng dữ liệu và độ phức tạp tăng lên. Ví dụ, Kiến trúc được chia sẻ không có gì, Kiến trúc xử lý song song, khung xử lý chuyên sâu về bộ nhớ như Spark và Impala và quyền ưu tiên tài nguyên trong bộ lập lịch khả năng của YARN.

Kho dữ liệu mở rộng có thể tốn kém . Thêm các năng lực phần cứng cao cấp bổ sung và  cấp phép cho các công cụ kho dữ liệu có thể có giá cao hơn đáng kể. Các giải pháp dựa trên Hadoop không chỉ có thể rẻ hơn với các nút phần cứng hàng hóa và  các công cụ nguồn mở , mà còn có thể bổ sung cho giải pháp kho dữ liệu bằng cách giảm tải các biến đổi dữ liệu cho các công cụ Hadoop như Spark và Impala để xử lý song song dữ liệu lớn hiệu quả hơn. Điều này cũng sẽ giải phóng tài nguyên kho dữ liệu.

Khám phá những con đường mới và dẫn . Hadoop có thể cung cấp một hộp cát khám phá cho các nhà khoa học dữ liệu để khám phá dữ liệu có giá trị từ phương tiện truyền thông xã hội, tệp nhật ký, email, v.v., thường không có sẵn trong kho dữ liệu.

Linh hoạt tốt hơn . Thông thường các yêu cầu nghiệp vụ thay đổi và điều này đòi hỏi phải thay đổi lược đồ và báo cáo. Các giải pháp dựa trên Hadoop không chỉ linh hoạt để xử lý các lược đồ đang phát triển mà còn có thể xử lý dữ liệu bán cấu trúc và không cấu trúc từ các nguồn khác nhau như phương tiện xã hội, tệp nhật ký ứng dụng, hình ảnh, tệp PDF và tệp tài liệu.

Câu 5. Các bước chính trong giải pháp dữ liệu lớn là gì?

Nhập dữ liệu, lưu trữ dữ liệu (tức là mô hình hóa dữ liệu) và xử lý dữ liệu (nghĩa là sắp xếp dữ liệu, biến đổi dữ liệu và truy vấn dữ liệu).

Nhập dữ liệu

Trích xuất dữ liệu từ nhiều nguồn khác nhau như:

  1. Các  hệ thống quản lý cơ sở dữ liệu quan hệ RDBM như Oracle, MySQL, v.v.

  2. Các hệ thống hoạch định nguồn lực doanh nghiệp của ERP (tức là ERP) như SAP.

  3. Các  hệ thống quản lý quan hệ khách hàng CRM như Siebel, Salesforce, v.v.

  4. Nguồn cấp dữ liệu xã hội và các tệp nhật ký .

  5. Tập tin phẳng, tài liệu và hình ảnh .

Và lưu trữ chúng trên trung tâm dữ liệu dựa trên Hệ thống tệp phân tán của Hadoop, được viết tắt là HDFS . Dữ liệu có thể được nhập qua các công việc hàng loạt (ví dụ: chạy mỗi 15 phút, mỗi đêm một lần, v.v.), phát trực tuyến gần thời gian thực (tức là 100ms đến 2 phút) và phát trực tuyến trong thời gian thực (tức là dưới 100ms).

Một thuật ngữ phổ biến được sử dụng trong Hadoop là Schema-On-Read Nhận . Điều này có nghĩa là dữ liệu chưa được xử lý (còn gọi là thô) có thể được tải vào HDFS với cấu trúc được áp dụng tại thời điểm xử lý dựa trên yêu cầu của ứng dụng xử lý. Điều này khác với Schema-On-Write, được sử dụng trong RDBM nơi lược đồ cần được xác định trước khi dữ liệu có thể được tải.

Lưu trữ dữ liệu

Dữ liệu có thể được lưu trữ trên cơ sở dữ liệu HDFS hoặc NoQuery như HBase. HDFS được tối ưu hóa để truy cập tuần tự  và mô hình sử dụng của Viết Viết một lần & Đọc-Nhiều. HDFS có tốc độ đọc và ghi cao vì nó có thể song song I / O với nhiều ổ đĩa. HBase nằm trên HDFS và lưu trữ dữ liệu dưới dạng các cặp khóa / giá trị theo kiểu cột. Các cột được ghép lại với nhau như các họ cột. HBase phù hợp để truy cập đọc / ghi ngẫu nhiên . Trước khi dữ liệu có thể được lưu trữ trong Hadoop, bạn cần xem xét những điều sau:

  1. Định dạng lưu trữ dữ liệu:  Có một số định dạng tệp (ví dụ CSV, JSON, chuỗi, AVRO, Parquet, v.v.) và thuật toán nén dữ liệu (ví dụ snappy, LZO, gzip, bzip2, v.v.) có thể được áp dụng. Mỗi người có những điểm mạnh riêng. Các thuật toán nén như LZO và bzip2 có thể chia được.

  2. Mô hình hóa dữ liệu:  Mặc dù bản chất không có lược đồ của Hadoop, thiết kế lược đồ là một cân nhắc quan trọng. Điều này bao gồm các cấu trúc thư mục và lược đồ của các đối tượng được lưu trữ trong HBase, Hive và Impala. Hadoop thường phục vụ như một trung tâm dữ liệu cho toàn bộ tổ chức và dữ liệu được dự định chia sẻ. Do đó, việc lưu trữ dữ liệu có tổ chức và có tổ chức cẩn thận là rất quan trọng.

  3. Quản lý siêu dữ liệu:  Siêu dữ liệu liên quan đến dữ liệu được lưu trữ.

  4. Đa năng:  Là trung tâm dữ liệu thông minh hơn lưu trữ nhiều người dùng, nhóm và ứng dụng. Điều này thường dẫn đến những thách thức liên quan đến quản trị, tiêu chuẩn hóa và quản lý.

Tài liệu đã qua xử lý

Khung xử lý của Hadoop sử dụng HDFS. Nó sử dụng kiến trúc của Shared Shared nothing , trong các hệ thống phân tán, mỗi nút hoàn toàn độc lập với các nút khác trong hệ thống. Không có tài nguyên được chia sẻ như CPU, bộ nhớ và lưu trữ đĩa có thể trở thành nút cổ chai. Các khung xử lý của Hadoop như Spark , Pig , Hive , Impala , v.v., xử lý một tập hợp con dữ liệu riêng biệt và không cần quản lý quyền truy cập vào dữ liệu được chia sẻ. “ Chia sẻ không có gì ” kiến trúc là rất khả năng mở rộng khi có thêm các nút có thể được thêm vào mà không tranh hơn nữa và  lỗi khoan dung vì mỗi nút là độc lập và không có điểm nào bị lỗi và hệ thống có thể nhanh chóng phục hồi sau sự cố của một nút riêng lẻ.

Câu 6. Làm thế nào bạn sẽ đi về việc lựa chọn trong số các định dạng tệp khác nhau để lưu trữ và xử lý dữ liệu?

Một trong những quyết định thiết kế chính liên quan đến các định dạng tệp dựa trên:

  1. Các kiểu sử dụng như truy cập 5 cột trong số 50 cột so với truy cập hầu hết các cột.

  2. Khả năng chia tách được xử lý song song.

  3. Chặn nén tiết kiệm không gian lưu trữ so với hiệu suất đọc / ghi / truyền

  4. Lược đồ tiến hóa để thêm các trường, sửa đổi các trường và đổi tên các trường.

Tệp CSV

Các tệp CSV là phổ biến để trao đổi dữ liệu giữa Hadoop và các hệ thống bên ngoài. CSV có thể đọc và phân tích được. CSV rất tiện cho việc tải số lượng lớn từ cơ sở dữ liệu đến Hadoop hoặc vào cơ sở dữ liệu phân tích. Khi sử dụng tệp CSV trong Hadoop không bao giờ bao gồm các dòng tiêu đề hoặc chân trang. Mỗi dòng của tập tin nên chứa hồ sơ. Các tệp CSV hỗ trợ giới hạn cho các đánh giá lược đồ vì các trường mới chỉ có thể được thêm vào cuối bản ghi và các trường hiện tại không bao giờ có thể bị giới hạn. Các tệp CSV không hỗ trợ nén khối, do đó, nén tệp CSV có chi phí hiệu suất đọc đáng kể.

Tệp JSON

Các bản ghi JSON khác với các tệp JSON; mỗi dòng là bản ghi JSON của riêng nó. Vì JSON lưu trữ cả lược đồ và dữ liệu cùng nhau cho mỗi bản ghi, nó cho phép tiến hóa và  phân tách lược đồ đầy đủ . Ngoài ra, các tệp JSON không hỗ trợ nén mức khối.

Tập tin trình tự

Các tệp tuần tự lưu trữ dữ liệu ở định dạng nhị phân có cấu trúc tương tự như các tệp CSV. Giống như CSV, các tệp Trình tự không lưu trữ siêu dữ liệu, do đó chỉ có tiến hóa lược đồ đang nối thêm các trường mới vào cuối bản ghi. Không giống như các tệp CSV, các tệp Sequence hỗ trợ nén khối . Tập tin trình tự cũng có thể chia tách . Các tệp tuần tự có thể được sử dụng để giải quyết vấn đề về các tệp nhỏ của vấn đề bằng cách kết hợp các tệp XML nhỏ hơn bằng cách lưu trữ tên tệp làm khóa và nội dung tệp làm giá trị. Do sự phức tạp trong việc đọc các tệp trình tự, chúng phù hợp hơn cho việc lưu trữ dữ liệu trên máy bay (tức là trung gian).

Lưu ý: SequenceFile là trung tâm Java và không thể sử dụng đa nền tảng.

Tập tin Avro

Đây là phù hợp để lưu trữ lâu dài với lược đồ. Các tệp Avro lưu trữ siêu dữ liệu với dữ liệu, nhưng cũng cho phép đặc tả lược đồ độc lập để đọc tệp. Điều này cho phép hỗ trợ tiến hóa lược đồ đầy đủ cho phép bạn đổi tên, thêm và xóa các trường và thay đổi loại dữ liệu của các trường bằng cách xác định một lược đồ độc lập mới. Tệp Avro định nghĩa lược đồ theo định dạng JSON và dữ liệu sẽ ở định dạng JSON nhị phân. Các tập tin Avro cũng có thể chia nhỏ  và hỗ trợ nén khối . Phù hợp hơn trong mô hình sử dụngnơi truy cập cấp hàng là bắt buộc. Điều này có nghĩa là tất cả các cột trong hàng được truy vấn. Không phù hợp khi một hàng có hơn 50 cột và mẫu sử dụng chỉ yêu cầu 10 hoặc ít hơn các cột được truy cập. Định dạng tệp sàn gỗ phù hợp hơn cho mẫu sử dụng truy cập cột này.

Các định dạng cột, ví dụ RCFile, ORC

Các RDBM lưu trữ các bản ghi theo kiểu định hướng theo hàng vì điều này hiệu quả đối với các trường hợp cần lấy nhiều cột của bản ghi. Viết theo hướng hàng cũng hiệu quả nếu tất cả các giá trị cột được biết tại thời điểm ghi một bản ghi vào đĩa. Nhưng cách tiếp cận này sẽ không hiệu quả khi chỉ tìm nạp 10% số cột trong một hàng hoặc nếu tất cả các giá trị cột không được biết tại thời điểm viết. Đây là nơi tập tin cột có ý nghĩa hơn. Vì vậy, định dạng cột hoạt động tốt

  • bỏ qua I / O và giải nén trên các cột không phải là một phần của truy vấn
  • cho các truy vấn chỉ truy cập vào một tập hợp con nhỏ của các cột.
  • cho các ứng dụng loại kho dữ liệu nơi người dùng muốn tổng hợp các cột nhất định trên một bộ sưu tập lớn các bản ghi.

Các định dạng RC & ORC được viết riêng bằng Hive và không nhằm mục đích chung như Parquet.

Tập tin sàn gỗ

Tệp parquet là một tệp cột như RC và ORC. Các tệp sàn hỗ trợ nén khối và được tối ưu hóa cho hiệu suất truy vấn vì có thể chọn 10 cột hoặc ít hơn từ 50+ bản ghi cột. Hiệu suất ghi tệp Parquet chậm hơn các định dạng tệp không phải là màu. Sàn gỗ cũng hỗ trợ tiến hóa lược đồ hạn chế bằng cách cho phép các cột mới được thêm vào cuối. Sàn gỗ có thể được đọc và viết bằng API Avro và lược đồ Avro.

Vì vậy, tóm lại, bạn nên ưu tiên các định dạng tệp Sequence, Avro và Parquet hơn các định dạng khác; Các tệp tuần tự cho lưu trữ thô và trung gian, và các tệp Avro và Parquet để xử lý.

Đọc thêm: Hơn  70 câu hỏi và câu trả lời phỏng vấn Hadoop, spark và BigData

3 hữu ích 0 bình luận 18k xem chia sẻ

Có thể bạn quan tâm

loading