2013-02-05 26 views
8

Tôi không biết điều gì đang xảy ra ở đây nhưng tôi đang cố sao chép một tệp đơn giản từ một thư mục trong hệ thống tệp cục bộ của tôi vào thư mục được chỉ định cho hdfs.Chuyển dữ liệu sang hdfs bằng cách sử dụng công tắc copyFromLocal

Trong tôi HDFS-site.xml tôi đã xác định rằng các thư mục cho HDFS sẽ là/home/Vaibhav/Hadoop/dataNodeHadoopData sử dụng các thuộc tính sau -

<name>dfs.data.dir</name> 
<value>/home/vaibhav/Hadoop/dataNodeHadoopData/</value> 

and 

<name>dfs.name.dir</name> 
<value>/home/vaibhav/Hadoop/dataNodeHadoopData/</value> 

Tôi đang sử dụng các lệnh sau -

bin/hadoop dfs -copyFromLocal /home/vaibhav/ml-100k/u.data /home/vaibhav/Hadoop/dataNodeHadoopData 

để sao chép tệp u.data từ vị trí hệ thống tệp cục bộ của nó vào thư mục mà tôi đã chỉ định làm thư mục Hdfs. Nhưng khi tôi làm điều này, không có gì xảy ra - không có lỗi, không có gì. Và không có tập tin được sao chép vào hdsf. Tôi có làm điều gì sai? Bất kỳ vấn đề quyền nào có thể có?

Đề xuất cần thiết.

Tôi đang sử dụng chế độ nút đơn được phân phối giả.

Ngoài ra, trên một lưu ý liên quan, tôi muốn hỏi rằng trong bản đồ của tôi giảm chương trình tôi đã đặt cấu hình để trỏ đến inputFilePath dưới dạng /home/vaibhav/ml-100k/u.data. Vì vậy, nó sẽ không tự động sao chép các tập tin từ vị trí nhất định để hdfs?

+1

Tôi có thể đo thời gian cần để chuyển dữ liệu từ tệp ssytem cục bộ sang HDFS không? – Tariq

Trả lời

13

Tôi tin rằng dfs.data.dirdfs.name.dir phải trỏ đến hai thư mục khác nhau và hiện có. Hơn nữa hãy chắc chắn rằng bạn đã định dạng mã tên FS sau khi thay đổi các thư mục trong cấu hình.

Trong khi sao chép sang HDFS, bạn chỉ định không chính xác mục tiêu. Cú pháp đúng để sao chép một tập tin địa phương để HDFS là:

bin/hadoop dfs -copyFromLocal <local_FS_filename> <target_on_HDFS> 

Ví dụ:

bin/hadoop dfs -copyFromLocal /home/vaibhav/ml-100k/u.data my.data 

Điều này sẽ tạo ra một file my.data trong thư mục chính của người dùng của bạn trong HDFS. Trước khi sao chép các tệp vào HDFS, hãy đảm bảo rằng trước tiên bạn nắm vững nội dung thư mục và tạo thư mục.

+0

Tuyệt. Tôi đã thử nó. Tôi đã thay đổi cấu hình để trỏ đến hai vị trí dir khác nhau, định dạng nút tên, bắt đầu tất cả các trình nền và thử copyFromLocal như bạn đã đề xuất. Bây giờ nó nói - org.apache.hadoop.Security.AccessControlException: Quyền bị từ chối: user = root, access = write, inode = "": vaibhav: supergroup: rwxr-xr-x –

+0

Vì vậy, tôi đã đưa chmod 777 -R vào thư mục hdfs (/ home/vaibhav/Hadoop/dataNodeHadoopData /). Nhưng bây giờ có một số lỗi khác - nó nói File /user/vaibhav/u.data chỉ có thể được nhân rộng thành 0 nút, thay vì 1. Tôi không biết tại sao nó cố gắng ghi vào thư mục này! –

+0

Mỗi tệp mặc định được sao chép vào thư mục chính của người dùng trên HDFS. Trong trường hợp của bạn '/ user/vaibhav'. Đối với lỗi nhân rộng, hãy xem [this] (http://stackoverflow.com/questions/5293446/hdfs-error-could-only-be-replicated-to-0-nodes-instead-of-1) và [thời gian chạy một phần lỗi] (http://wiki.apache.org/hadoop/HowToSetupYourDevelopmentEnvironment) nếu hadoop wiki. Rất có thể các trình tiện ích dfs hadoop không khởi động chính xác. – harpun

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