Apakah mereka seharusnya setara?
tapi, mengapa perintah " hadoop fs
" menampilkan hdfs files
sementara perintah " hdfs dfs
" menampilkan file lokal?
berikut adalah informasi versi hadoop:
Hadoop 2.0.0-mr1-cdh4.2.1 Subversi git: //ubuntu-slave07.jenkins.cloudera.com/var/lib/jenkins/workspace/CDH4.2.1-Packaging-MR1/build/cdh4/mr1/2.0.0 -mr1-cdh4.2.1 / source -r Disusun oleh jenkins pada Senin 22 April 10:48:26 PDT 2013
hdfs dfs
menunjukkan file HDFS juga.Jawaban:
Berikut adalah tiga perintah yang tampak sama tetapi memiliki perbedaan menit
FS berkaitan dengan sistem file generik yang dapat mengarah ke sistem file apa pun seperti lokal, HDFS, dll. Jadi ini dapat digunakan ketika Anda berurusan dengan sistem file yang berbeda seperti Local FS, (S) FTP, S3, dan lainnya
dfs sangat spesifik untuk HDFS. akan bekerja untuk operasi yang berkaitan dengan HDFS. Ini sudah tidak digunakan lagi dan kita harus menggunakan hdfs dfs sebagai gantinya.
sama seperti 2nd yaitu akan bekerja untuk semua operasi yang terkait dengan HDFS dan merupakan perintah yang direkomendasikan daripada hadoop dfs
di bawah ini adalah daftar yang dikategorikan sebagai
hdfs
perintah.Jadi bahkan jika Anda menggunakan Hadoop DFS , akan terlihat mencari HDFS dan mendelegasikan bahwa perintah untuk HDFS DFS
sumber
hadoop fs
terkait dengan sistem file seperti, lokal atau hdfs, Bagaimana hadoop memilih untuk menampilkan konten direktori root HDFS ketika saya melakukannyahadoop fs -ls /
? Juga, Bagaimana cara memberi tahu hadoop untuk menampilkan konten direktori root lokal saya ketika saya menjalankanhadoop fs -ls /
perintah?file
skema di URI yang diteruskan sebagai argumen kehadoop fs
perintah (misalnyahdoop fs -ls file:///
). Jika tidak ada yang dikatakan, defaultnya adalahhdfs
skema, AFAIK (hdoop fs -ls /
==hadoop fs -ls hdfs:///
).hadoop fs -ls file:///
, sementara ada cara yang lebih tradisional untuk membuat daftar file lokal?https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/FileSystemShell.html
Shell Sistem File (FS) menyertakan berbagai perintah mirip shell yang berinteraksi langsung dengan Hadoop Distributed File System (HDFS) serta sistem file lain yang didukung Hadoop, seperti Local FS, WebHDFS, S3 FS, dan lainnya.
Semua perintah shell FS menggunakan URI jalur sebagai argumen. Format URI adalah skema: // otoritas / jalur. Untuk HDFS skemanya adalah hdfs, dan untuk FS Lokal skemanya adalah file. Skema dan kewenangan bersifat opsional. Jika tidak ditentukan, skema default yang ditentukan dalam konfigurasi akan digunakan. File atau direktori HDFS seperti / parent / child dapat ditentukan sebagai hdfs: // namenodehost / parent / child atau hanya sebagai / parent / child (asalkan konfigurasi Anda disetel ke hdfs: // namenodehost).
Sebagian besar perintah di shell FS berperilaku seperti perintah Unix yang sesuai. Perbedaan dijelaskan dengan masing-masing perintah. Informasi kesalahan dikirim ke stderr dan output dikirim ke stdout.
Jika HDFS digunakan,
adalah sinonim.
sumber
fs mengacu pada sistem file apa pun, bisa jadi lokal atau HDFS tetapi dfs hanya mengacu pada sistem file HDFS. Jadi jika Anda perlu melakukan akses / transfer data antara filesystem yang berbeda, fs adalah cara yang tepat.
sumber
Dari apa yang saya tahu, tidak ada perbedaan antara
hdfs dfs
danhadoop fs
. Mereka hanyalah konvensi penamaan yang berbeda berdasarkan versi Hadoop yang Anda gunakan. Misalnya, catatan dalam 1.2.1 digunakanhdfs dfs
sementara 0.19 digunakanhadoop fs
. Perhatikan bahwa perintah terpisah dijelaskan secara verbatim. Mereka digunakan secara identik.Perhatikan juga bahwa kedua perintah dapat merujuk ke sistem file yang berbeda tergantung pada apa yang Anda tentukan (hdfs, file, s3, dll). Jika tidak ada sistem file yang terdaftar, mereka kembali ke default yang ditentukan dalam konfigurasi Anda.
Anda menggunakan Hadoop 2.0.0 dan sepertinya ( berdasarkan dokumentasi 2.0.5 ) versi Alpha digunakan
hadoop fs
dan diatur untuk menggunakan HDFS sebagai skema default dalam konfigurasi Anda. Thehdfs dfs
perintah mungkin tersisa di dari sebelumnya, dan karena tidak ditentukan dalam konfigurasi, bisa saja akan default ke sistem file lokal.Jadi saya hanya akan bertahan
hadoop fs
dan tidak terlalu khawatir karena dalam dokumentasi, mereka identik.sumber
FS berhubungan dengan sistem file generik yang dapat menunjuk ke sistem file apapun seperti lokal, HDFS dll. Tetapi dfs sangat spesifik untuk HDFS. Jadi ketika kita menggunakan FS dapat melakukan operasi dengan dari / ke lokal atau sistem file terdistribusi hadoop ke tujuan. Tetapi menentukan operasi DFS berkaitan dengan HDFS.
Di bawah ini adalah kutipan dari dokumentasi hadoop yang menggambarkan keduanya sebagai cangkang yang berbeda.
FS Shell Shell FileSystem (FS) dipanggil oleh bin / hadoop fs. Semua perintah shell FS menggunakan URI jalur sebagai argumen. Format URI adalah skema: // autority / path. Untuk HDFS skemanya adalah hdfs, dan untuk sistem berkas lokal skemanya adalah file. Skema dan kewenangan bersifat opsional. Jika tidak ditentukan, skema default yang ditentukan dalam konfigurasi akan digunakan. File atau direktori HDFS seperti / parent / child dapat ditentukan sebagai hdfs: // namenodehost / parent / child atau hanya sebagai / parent / child (asalkan konfigurasi Anda disetel ke hdfs: // namenodehost). Sebagian besar perintah di shell FS berperilaku seperti perintah Unix yang sesuai.
DFShell Shell HDFS dipanggil oleh bin / hadoop dfs. Semua perintah shell HDFS menggunakan URI jalur sebagai argumen. Format URI adalah skema: // autority / path. Untuk HDFS skemanya adalah hdfs, dan untuk sistem berkas lokal skemanya adalah file. Skema dan kewenangan bersifat opsional. Jika tidak ditentukan, skema default yang ditentukan dalam konfigurasi akan digunakan. File atau direktori HDFS seperti / parent / child dapat ditentukan sebagai hdfs: // namenode: namenodeport / parent / child atau hanya sebagai / parent / child (asalkan konfigurasi Anda disetel ke namenode: namenodeport). Sebagian besar perintah di shell HDFS berperilaku seperti perintah Unix yang sesuai.
Jadi dari penjelasan di atas dapat disimpulkan bahwa semuanya tergantung dari skema konfigurasi. Saat menggunakan dua perintah ini dengan URI absolut, yaitu skema: // a / b, perilakunya harus identik. Hanya nilai skema yang dikonfigurasi default untuk file dan hdfs untuk masing-masing fs dan dfs yang merupakan penyebab perbedaan perilaku.
sumber
fs
= sistem filedfs
= sistem file terdistribusifs
= sistem file lain + sistem file terdistribusiFS berhubungan dengan sistem file generik yang dapat menunjuk ke sistem file apapun seperti lokal, HDFS dll. Tetapi dfs sangat spesifik untuk HDFS. Jadi ketika kita menggunakan FS dapat melakukan operasi dengan dari / ke lokal atau sistem file terdistribusi hadoop ke tujuan. Tetapi menentukan operasi DFS berkaitan dengan HDFS.
Itu semua tergantung pada konfigurasi skema. Saat menggunakan dua perintah ini dengan URI absolut, yaitu
scheme://a/b
perilaku harus identik. Hanya nilai skema yang dikonfigurasi default untukfile://
danhdfs://
untukfs
dandfs
masing - masing yang merupakan penyebab perbedaan perilaku.sumber