| Welcome to Huynh's Collections. We hope you enjoy your visit. You're currently viewing our forum as a guest. This means you are limited to certain areas of the board and there are some features you can't use. If you join our community, you'll be able to access member-only sections, and use many member-only features such as customizing your profile, sending personal messages, and voting in polls. Registration is simple, fast, and completely free. Join our community! If you're already a member please log in to your account to access all of our features: |
| Small file problem in Hadoop | |
|---|---|
| Tweet Topic Started: Jan 9 2014, 08:37 PM (202 Views) | |
| Huynhnb8x | Jan 9 2014, 08:37 PM Post #1 |
|
Th1nk
![]() ![]() ![]() ![]() ![]()
|
Như chúng ta đă biết, file trong HDFS được chia thành nhiều block, mỗi block được lưu thành nhiều bản (mặc định là 3) trên các node khác nhau. Độ lớn của block có thể dùng tham số để điều chỉnh, mặc định là 64MB. Một file có dung lượng nhỏ hơn độ lớn của 1 block th́ được xem là small file. Hadoop được phát triển dựa trên ư tưởng của Google cloud computing system, đặc biệt thích hợp với xử lí massvie data, big file. Trong khi đó, nhiều ứng dụng không thể tránh khỏi làm việc với các small file. Các small file có thể là input data hoặc output data, được sinh ra trong quá tŕnh chạy ứng dụng. Trong trường hợp này, Hadoop bộc lộ một số khuyết điểm. Quá nhiều small file sẽ dẫn đến tăng độ lớn của metadata trong NameNode, trong khi đó Hadoop cluster lại thường dùng PCs nên lượng tăng này không thể không chú ư đến. Quá nhiều metadata có thể làm cho RAM của NameNode không đủ dùng, c̣n làm tăng thời gian t́m kiếm. Quá nhiều file cũng làm cho DataNode cần nhiều thời gian hơn để scan các dữ liệu mà nó lưu để tạo heartbeat gởi về NameNode theo định ḱ. Hơn nữa, nếu input data của một ứng dụng chứa quá nhiều small file sẽ dẫn đến ứng dụng sẽ được chia thành quá nhiều map task, do hệ thống chỉ định 1 map task để xử lí 1 block dữ liệu. V́ vậy, nếu hệ thống có thiết lập cận trên của số lượng task/user, khi số lượng task đă đạt cận trên, ứng dụng sẽ bị abort dù có quan trọng thế nào đi nữa. Hiện tại, Hadoop cung cấp 2 cách khắc phục vấn đề trên: archives và sequence files. Hadoop archives là file dạng *.har, chứa metadata (chia thành masterindex và index) với data. Archives thật ra sử dụng 1 file để đại diện cho 2 hoặc nhiều file, do đó có thể giảm được độ lớn của metadata. Tuy nhiên, cách này không hỗ trợ nén dữ liệu, hoặc nối dữ liệu, nên dữ liệu trên DataNode vẫn không hề thay đổi, số lượng small file vẫn nhiều như vậy. Hơn nữa, việc t́m kiếm file sẽ phải qua 2 bước (t́m trong masterindex rồi đến index) mới thấy được data, do vậy cần nhiều thời gian hơn. Phương pháp sequence files đem nhiều small file nối lại với nhau thành 1 file sequence, file này được xử lí theo kiểu streaming. Khác với archives, cách này hỗ trợ nén dữ liệu giúp giảm dung lượng ổ cứng được sử dụng. Do đó, sequence file đồng thời giảm được metadata mà cũng giảm được số lượng file và dung lượng. Tuy nhiên, xử lí sequence file cần nhiều thời gian hơn, hơn nữa lại phụ thuộc vào java platform, nếu các node cài các version khác nhau của java th́ không thể sử dụng được. Tài liệu []đưa ra một cách giải quyết khác, cho phép cả việc nén dữ liệu và không phụ thuộc platform. Phương pháp này thông qua phán đoán input data block xem có nhỏ hơn block mặc định không, nếu đúng th́ tự động giảm số reduce task. Do mỗi reduce task sinh ra 1 file output, nên giảm đi số reduce task sẽ làm giảm đi số output file. Tuy nhiên, tôi cho rằng độ lớn của input data block không liêu quan ǵ đến số reduce task, small input cũng có thể dẫn đến big output! Tiếc là, tài liệu này chỉ nói là đang test phương pháp này mà không cung cấp một chi tiết kĩ thuật nào, giống như tham phát biểu quá mà quên chất lượng. ![]() |
| Knowledge crawling | |
![]() |
|
| « Previous Topic · Tài liệu sưu tầm · Next Topic » |
| Track Topic · E-mail Topic |
9:00 AM Jul 11
|
Theme by James... of the ZBTZ and themeszetaboards.com





![]](http://z5.ifrm.com/static/1/pip_r.png)




9:00 AM Jul 11