2013-02-05 13 views
8

Burada neler olduğunu bilmiyorum ancak yerel dosya sistemimdeki bir dizinden basit bir dosyayı, hdfs için belirtilen dizine kopyalamaya çalışıyorum. Ben aşağıdaki komutu kullanıyorumCopyFromLocal anahtarını kullanarak verileri hdfs'ye taşıma

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

and 

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

- - Ben HDF'ler için dizin/home/vaibhav/Hadoop/dataNodeHadoopData aşağıdaki özellikleri kullanarak olacağını belirttiniz Benim içinde

HDF'ler-site.xml dosyasını

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

, u.data dosyasını yerel dosya sistem konumundan Hdfs dizini olarak belirttiğim dizine kopyalamak için. Ama bunu yaptığımda hiçbir şey olmaz - hata yok, hiçbir şey. Ve hiçbir dosya hdsf'ye kopyalanmaz. Yanlış bir şey mi yapıyorum? Herhangi bir izin sorunu var mı?

Öneriler gerekli.

Sözde dağıtılmış tek düğüm modunu kullanıyorum.

Ayrıca, ilgili bir notta, haritayı azalttığında programın, /home/vaibhav/ml-100k/u.data olarak inputFilePath işaret edecek şekilde yapılandırmasını istediğimi sormak istiyorum. Yani, dosyayı otomatik olarak verilen konumdan hdfs'ye kopyalamaz mı?

+1

Verileri yerel dosya sisteminden HDFS'ye aktarmak için gereken süreyi ölçebilir miyim? – Tariq

cevap

13

dfs.data.dir ve dfs.name.dir'un iki farklı ve varolan dizini işaret ettiğine inanıyorum. Ayrıca, yapılandırmadaki dizinleri değiştirdikten sonra adeno FS'yi formatladığınızdan emin olun.

HDFS'ye kopyalanırken, hedefi yanlış bir şekilde belirliyorsunuz demektir. HDF'ler için yerel bir dosya kopyalama için doğru sözdizimi şöyledir:

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

Örnek:

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

Bu HDF'ler da kullanıcının ana dizininde bir dosya my.data yaratacak. Dosyaları HDFS'ye kopyaladığınızdan önce, önce dizin içeriklerini ve dizin oluşturmayı listelemeye devam edin.

+0

Serin. Denedim. Yapılandırmayı iki farklı dir konum işaret edecek şekilde değiştirdim, adenode biçimlendirdim, tüm daemonları başlattım ve önerdiğin gibi copyFromLocal'ı denedim. Şimdi diyor - org.apache.hadoop.Security.AccessControlException: İzin reddedildi: user = root, access = write, inode = "": vaibhav: supergroup: rwxr-xr-x –

+0

Bu yüzden hdfs dizinine chmod 777 -R verdim (/ home/vaibhav/Hadoop/dataNodeHadoopData /). Ama şimdi başka bir hata var - File /user/vaibhav/u.data'nın sadece 1 yerine 0 düğümüne kopyalanabileceğini söylüyor. Neden bu klasöre yazmaya çalıştığı konusunda hiçbir fikrim yok! –

+0

Varsayılan dosyalar, HDFS'de kullanıcının giriş dizinine kopyalanır. Sizin durumunuzda/user/vaibhav'. Çoğaltma hatası için, bkz. [This] (http://stackoverflow.com/questions/5293446/hdfs-error-could-only-be-replicated-to-0-nodes-instead-of-1) ve [çalışma zamanı hadoop wiki ise hatalar bölümü] (http://wiki.apache.org/hadoop/HowToSetupYourDevelopmentEnvironment). Büyük olasılıkla hadoop dfs daemons doğru şekilde başlamamıştır. – harpun

İlgili konular