2012-05-13 64 views
56

Khi tôi kết nối cụm Hadoop của mình với bộ nhớ Amazon và tải tệp xuống HDFS, tôi thấy s3: // không hoạt động nhưng tìm kiếm trợ giúp trên internet. S3n đã sử dụng nó đã hoạt động. Tôi không hiểu khác nhau giữa việc sử dụng S3 hoặc s3n với cụm hadoop của tôi, ai đó có thể giải thích?Sự khác nhau giữa Amazon S3 và S3n trong Hadoop

+3

Chủ đề này tắt như thế nào !? – Maziyar

Trả lời

29

Tôi nghĩ rằng vấn đề chính của bạn có liên quan với việc có S3 và S3N hai điểm kết nối riêng biệt cho Hadoop. S3n: // có nghĩa là "Một tệp thông thường, có thể đọc được từ thế giới bên ngoài, tại địa chỉ S3 này". S3: // đề cập đến một hệ thống tệp HDFS được ánh xạ vào một thùng S3 đang nằm trên cụm lưu trữ AWS. Vì vậy, khi bạn đang sử dụng một tập tin từ kho lưu trữ Amazon, bạn phải sử dụng S3N và đó là lý do tại sao vấn đề của bạn được giải quyết.Thông tin được thêm bởi @Steffen cũng tuyệt vời !!

+0

Tôi đã hiểu tại sao có vấn đề. Cảm ơn bạn. –

+0

Tôi tin rằng từ bên trong AWS EMR, cả s3: và s3n: lược đồ đều giống nhau. Hadoop 2.x + khuyên bạn nên sử dụng s3a: anyway. – DavidJ

+1

Đối với bất kỳ ai tình cờ gặp phải vấn đề này, tài liệu [aws docs] (http://docs.aws.amazon.com/ElasticMapReduce/latest/ManagementGuide/emr-plan-file-systems.html) hiện đề xuất tiền tố s3: // Cập nhật: s3n: // – Papples

56

Hai hệ thống tập tin cho việc sử dụng Amazon S3 được diễn tả trong các tương ứng Hadoop wiki page addressing Amazon S3:

  • S3 Native FileSystem (URI Đề án: s3n)
    Một hệ thống tập tin gốc để đọc và ghi các file thường xuyên trên S3 . Lợi thế của hệ thống tập tin này là bạn có thể truy cập các tập tin trên S3 được viết bằng các công cụ khác. Ngược lại, các công cụ khác có thể truy cập các tệp được ghi bằng cách sử dụng Hadoop. Điểm bất lợi là giới hạn 5 GB đối với kích thước tệp được áp dụng bởi S3. Vì lý do này nó không phù hợp như một sự thay thế cho HDFS (trong đó có hỗ trợ cho các tệp rất lớn).

  • S3 Khối FileSystem (URI Đề án: s3)
    Một hệ thống tập tin khối dựa trên sự hỗ trợ của S3. Các tệp được lưu trữ dưới dạng các khối, giống như chúng nằm trong HDFS. Điều này cho phép thực hiện hiệu quả các đổi tên. Hệ thống tệp yêu cầu bạn dành một nhóm cho hệ thống tệp - bạn không được sử dụng nhóm chứa tệp hiện có hoặc viết các tệp khác vào cùng một nhóm. Các tệp được lưu trữ bởi hệ thống tệp này có thể là lớn hơn 5 GB, nhưng chúng không tương thích với các công cụ S3 khác.

Có hai cách mà S3 có thể được sử dụng với Map Hadoop của/Giảm thiểu, hoặc như một sự thay thế cho HDFS sử dụng S3 khối hệ thống tập tin (tức sử dụng nó như một hệ thống tập tin phân phối đáng tin cậy với sự hỗ trợ cho rất các tệp lớn) hoặc dưới dạng kho lưu trữ dữ liệu thuận tiện cho đầu vào và đầu ra từ MapReduce, sử dụng hệ thống tệp S3. Trong trường hợp thứ hai HDFS vẫn được sử dụng cho giai đoạn Map/Reduce. [...]

[tôi nhấn mạnh]

Vì vậy, sự khác biệt chủ yếu là liên quan đến cách giới hạn 5GB được xử lý (đó là đối tượng lớn nhất mà có thể được tải lên trong một PUT đơn , mặc dù đối tượng có thể có kích thước từ 1 byte đến 5 terabyte, xem How much data can I store?): trong khi sử dụng Hệ thống tệp khối S3 (Lược đồ URI: s3) cho phép khắc phục giới hạn 5 GB và lưu trữ tệp lên tới 5TB, nó thay thế HDFS lần lượt.

+3

Các tệp mẫu của tôi khoảng 60MB và trong trường hợp đó tôi có thể sử dụng s3 hoặc s3n nhưng chỉ s3n hoạt động. Nếu chỉ khác biệt là giới hạn kích thước tệp 5 GB thì cả s3 và s3n đều hoạt động nhưng không .. –

+0

Cảm ơn bạn đã cung cấp thông tin. –

+0

S3 hỗ trợ tối đa 5 terabyte cho mỗi đối tượng, nó chỉ cần được tải lên ở nhiều phần, xem: http://aws.amazon.com/s3/faqs/#How_much_data_can_I_store –

4

Dưới đây là một lời giải thích: https://notes.mindprince.in/2014/08/01/difference-between-s3-block-and-s3-native-filesystem-on-hadoop.html

Các S3 hậu thuẫn Hadoop hệ thống tập tin đầu tiên được giới thiệu vào Hadoop 0.10.0 (Hadoop-574). Nó được gọi là hệ thống tập tin khối S3 và nó được gán lược đồ URI s3: //. Trong triển khai này, các tệp được lưu trữ dưới dạng các khối, giống như chúng ở trong HDFS. Các tệp được lưu trữ bởi hệ thống tập tin này không tương thích với các công cụ S3 khác - điều này có nghĩa là nếu bạn đi tới bàn điều khiển AWS và cố gắng tìm tệp được hệ thống tệp này viết, bạn sẽ không tìm thấy chúng - thay vào đó bạn sẽ tìm thấy tệp được đặt tên giống như block_-1212312341234512345 v.v.

Để khắc phục những hạn chế này, một hệ thống tệp được S3 hỗ trợ khác đã được giới thiệu trong Hadoop 0.18.0 (HADOOP-930). Nó được gọi là hệ thống tập tin gốc S3 và nó được gán lược đồ URI s3n: //. Hệ thống tập tin này cho phép bạn truy cập các tập tin trên S3 được viết bằng các công cụ khác ... Khi hệ thống tập tin này được giới thiệu, S3 có giới hạn kích cỡ là 5GB và do đó hệ thống tập tin này chỉ có thể hoạt động với các tệp nhỏ hơn 5GB. Vào cuối năm 2010, Amazon ... đã tăng giới hạn kích thước tệp từ 5GB lên 5TB ...

Không nên sử dụng hệ thống tệp khối S3 nữa. Nhiều nhà cung cấp dịch vụ Hadoop khác nhau như Qubole và Amazon EMR đi xa như ánh xạ cả hai s3: // và s3n: // URI đến hệ thống tệp gốc S3 để đảm bảo điều này.

Vì vậy, hãy luôn sử dụng hệ thống tệp gốc. Không có giới hạn 5Gb nữa. Đôi khi bạn có thể phải nhập s3:// thay vì s3n://, nhưng chỉ cần đảm bảo rằng mọi tệp bạn tạo đều hiển thị trong trình khám phá nhóm trong trình duyệt.

Đồng thời xem http://docs.aws.amazon.com/ElasticMapReduce/latest/ManagementGuide/emr-plan-file-systems.html.

Trước đây, Amazon EMR đã sử dụng S3 FileSystem gốc với lược đồ URI, s3n. Mặc dù điều này vẫn hoạt động, chúng tôi khuyên bạn nên sử dụng lược đồ URI s3 để có hiệu suất, bảo mật và độ tin cậy tốt nhất.

Nó cũng cho biết bạn có thể sử dụng s3bfs:// để truy cập hệ thống tệp khối cũ, trước đây được gọi là s3://.

+0

: hãy xem xét sử dụng 's3a: //' thay thế. – osa

Các vấn đề liên quan