Sık Kullanılan Hadoop HDFS Komutları

Giriş

Merhabalar bu yazımızda en sık kullanılan Hadoop hdfs komutlarına örnekler vereceğiz. Öncelikle belirtmem gerekir ki nasılki linux dünyasının süper kullanıcısı root ise hdfs dünyasının da süper kullanıcısı hdfs kullanıcıdır. Komutlar içinde sık sık hdfs kullanacağız. Bu hdfs’lerin bazısı kullanıcı bazısı da komuttur. Lütfen karıştırmayalım. Erişim yetkisi hatası almamak adına komutların başında bazen sudo -u hdfs kullanacağım. Buunun sebebi yapacağım işi süper kullanıcı hdfs adıyla yapacağım anlamına gelir. Ayrıca linux /home dizini karşılığı hdfs’te /user diznidir. Bu bilgilerden sonra örneklerimize başlayalım.

  1. Linux’tan HDFS’e dosya kopyalamak (put)
  2. HDFS diznini listelemek (ls)
  3. HDFS klasör/dizin oluşturma (mkdir)
  4. HDFS dosya taşıma (mv)
  5. HDFS Dosya kopyalama (cp)
  6. HDFS sahiplik yetkisi değiştirmek (chown)
  7. HDFS erişim yetkisi belirlemek (chmod)
  8. HDFS’deki bir dosyayı linux lokal dizine kopyalamak (hdfs copyToLocal, get)
  9. HDFS’de bir klasörün kapladığı alan nedir (du)
  10. HDFS klasör/dosya silmek (rm)
  11. HDFS’deki bir dosyayı okumak (head, tail, cat)

1. Linux’tan HDFS’e dosya kopyalamak (put)

[root@cdh1 ~]# sudo -u admin hdfs dfs -put /home/admin/iris.csv /user/admin/

Yukarıda komutu root kullanıcısı ile verdim ancak iris.csv dosyası /home/admin/ dizninde ve sahipliği de admin‘e ait olduğu için sudo -u admin kullandım. Ayrıca hedef hdfs dizni de /user/admin‘e ait bir hdfs dizni olduğundan bunu yaptık.

Benzer şekilde bir klasör ve içindeki dosyaları da put komutuyla hdfs’e kopyalayabiliriz.

[train@localhost ~]$ hdfs dfs -put datasets/retail_db /user/train/myHDFSFolder

Kontrol:
[train@localhost ~]$ hdfs dfs -ls /user/train/myHDFSFolder/retail_db
Found 6 items
-rw-r--r--   1 train supergroup       1074 2020-07-23 22:07 /user/train/myHDFSFolder/retail_db/categories.csv
-rw-r--r--   1 train supergroup     953847 2020-07-23 22:07 /user/train/myHDFSFolder/retail_db/customers.csv
-rw-r--r--   1 train supergroup         88 2020-07-23 22:07 /user/train/myHDFSFolder/retail_db/departments.csv
-rw-r--r--   1 train supergroup    5408988 2020-07-23 22:07 /user/train/myHDFSFolder/retail_db/order_items.csv
-rw-r--r--   1 train supergroup    2999990 2020-07-23 22:07 /user/train/myHDFSFolder/retail_db/orders.csv
-rw-r--r--   1 train supergroup     174240 2020-07-23 22:07 /user/train/myHDFSFolder/retail_db/products.csv

2. HDFS diznini listelemek (ls)

[root@cdh1 ~]# hdfs dfs -ls /user/admin

Çıktı:

Found 3 items
drwxrwxrwx - admin admin 0 2019-07-14 08:48 /user/admin/.scratchdir
drwx------ - admin admin 0 2019-07-14 09:14 /user/admin/.staging
-rw-r--r-- 3 admin admin 4765 2019-07-14 09:33 /user/admin/iris.csv

Yukarıda az önce kopyaladığımız iris.csv dosyasını görüyoruz.

3. HDFS klasör/dizin oluşturma (mkdir)

[root@cdh1 ~]# sudo -u admin hdfs dfs -mkdir /user/admin/data

Yukarıdaki komut ile hdfs /user/admin dizini içinde data adında yeni bir klasör oluşturduk. sudo -u admin kullanmamızın sebebi admin kullanıcısının hdfs dünyasındaki home dizni olan /user/admin içinde bu işi yapıyor olmamızdır. Dizin oluşmuş mu kontrol edelim.

[root@cdh1 ~]# hdfs dfs -ls /user/admin

Çıktı:

Found 4 items
drwxrwxrwx - admin admin 0 2019-07-14 08:48 /user/admin/.scratchdir
drwx------ - admin admin 0 2019-07-14 09:14 /user/admin/.staging
drwxr-xr-x - admin admin 0 2019-07-14 10:24 /user/admin/data
-rw-r--r-- 3 admin admin 4765 2019-07-14 09:33 /user/admin/iris.csv

Yukarıda yeni oluşan klasörü (/user/admin/data) görüyoruz.

4. HDFS dosya taşıma (mv)

[root@cdh1 ~]# sudo -u admin hdfs dfs -mv /user/admin/iris.csv /user/admin/data

iris.csv dosyasını yukarıda oluşturduğumuz data klasörü içine taşıdık. Kontrol edelim:

[root@cdh1 ~]# hdfs dfs -ls /user/admin/data

Çıktı:

Found 1 items
-rw-r--r--   3 admin admin       4765 2019-07-14 09:33 /user/admin/data/iris.csv

Görüldüğü gibi iris.csv data klasörü içine taşınmış. Ancak eski yerinde bir kopyası duruyor mu? Durmaması lazım. Kontrol edelim.

[root@cdh1 ~]# hdfs dfs -ls /user/admin

Çıktı:

Found 3 items
drwxrwxrwx   - admin admin          0 2019-07-14 08:48 /user/admin/.scratchdir
drwx------   - admin admin          0 2019-07-14 09:14 /user/admin/.staging
drwxr-xr-x   - admin admin          0 2019-07-14 10:32 /user/admin/data

Artık göremiyoruz. Operasyon başarılı.

5. HDFS dosya kopyalama (cp)

Linux’ta olduğu gibi kopyalarken ismini de değiştirebiliriz.

[train@localhost ~]$ hdfs dfs -cp /user/train/myHDFSFolder/Advertising.csv /user/train/copied.csv

Kontrol:
[train@localhost ~]$ hdfs dfs -ls /user/train
Found 4 items
drwxr-xr-x   - train supergroup          0 2020-07-22 16:54 /user/train/.sparkStaging
-rw-r--r--   1 train supergroup       4556 2020-07-23 21:53 /user/train/copied.csv
drwxr-xr-x   - train supergroup          0 2020-07-21 18:59 /user/train/datasets
drwxr-xr-x   - train supergroup          0 2020-07-23 20:12 /user/train/myHDFSFolder

6. HDFS sahiplik yetkisi değiştirmek (chown)

Sahiplik yetkisi komutu ve mantığı linux ile aynıdır. Eski sahiplik: -rw-r–r– 1 train supergroup 4556 2020-07-23 20:08 /user/train/myHDFSFolder/Advertising.csv şeklindeydi. Bunu train:train yapalım

[train@localhost ~]$ hdfs dfs -chown train:train /user/train/myHDFSFolder/Advertising.csv

Sonucu görme
[train@localhost ~]$ hdfs dfs -ls /user/train/myHDFSFolder
Found 1 items
-rw-r--r--   1 train train       4556 2020-07-23 20:08 /user/train/myHDFSFolder/Advertising.csv

7. HDFS erişim yetkisi belirlemek (chmod)

En baştaki karakter dizin dosya olduğu kalan 9 karakter üçerli gruplar halinde kullanıcı-grup-değer herkes yetkilerini belirler. Her bir grup için bir rakam kullanabiliriz. Rakamların okuma-yazma ve çalıştırma yetkileri:

0 : — | 1 : –x | 2 : -w- | 3 : -wx

4 : r– | 5 : r-x | 6 : rw- | 7 : rwx

Yukarıdaki bilgiler ışığında dosyamıza sadece kullanıcı için okuma yazma yetkisi verelim kalan herkese kapatalım.

[train@localhost ~]$ hdfs dfs -chmod 600 /user/train/myHDFSFolder/Advertising.csv
[train@localhost ~]$ hdfs dfs -ls /user/train/myHDFSFolder
Found 1 items
-rw-------   1 train train       4556 2020-07-23 20:08 /user/train/myHDFSFolder/Advertising.csv

8. HDFS’deki bir dosyayı linux lokal dizine kopyalamak (hdfs copyToLocal, get)

copyToLocal ve get: ikisi de aynı işi görür, hdfs’deki dosya kalır, linux yerel dosya sisteminde belirtilen yere dosya kopyalanır.

[train@localhost ~]$ hdfs dfs -get /user/train/myHDFSFolder/Advertising.csv /home/train

Kontrol:
[train@localhost ~]$ ls -l | grep Advertising
-rw-r--r--. 1 train train 4556 Jul 23 21:49 Advertising.csv

9. HDFS’de bir klasörün kapladığı alan nedir (du)

-h human-readable, -s total, sum, -v başlıklarla beraber

[train@localhost ~]$ hdfs dfs -du -h /user/train/myHDFSFolder
4.4 K  4.4 K  /user/train/myHDFSFolder/Advertising.csv
9.1 M  9.1 M  /user/train/myHDFSFolder/retail_db

[train@localhost ~]$ hdfs dfs -du -s -h /user/train/myHDFSFolder
9.1 M  9.1 M  /user/train/myHDFSFolder

[train@localhost ~]$ hdfs dfs -du -s -h -v /user/train/myHDFSFolder
SIZE   DISK_SPACE_CONSUMED_WITH_ALL_REPLICAS  FULL_PATH_NAME
9.1 M  9.1 M                                  /user/train/myHDFSFolder

Replication factor 1 olduğu için iki rakam da aynı, eğer 3 olsaydı sağdaki rakam diğerinin 3 katı civarında olacaktı.

10. HDFS klasör/dosya silmek (rm)

-r veya -R recursive olarak işlemi uygula. Shift+delete tarzında silmek için -skipTrash argümanını ekleyebilirsiniz.

[train@localhost ~]$ hdfs dfs -rm -r /user/train/folderToDelete
Deleted /user/train/folderToDelete

Kontrol:
[train@localhost ~]$ hdfs dfs -ls /user/train
Found 4 items
drwxr-xr-x   - train supergroup          0 2020-07-22 16:54 /user/train/.sparkStaging
-rw-r--r--   1 train supergroup       4556 2020-07-23 21:53 /user/train/copied.csv
drwxr-xr-x   - train supergroup          0 2020-07-21 18:59 /user/train/datasets
drwxr-xr-x   - train supergroup          0 2020-07-23 22:07 /user/train/myHDFSFolder

11. HDFS’deki bir dosyayı okumak (head, tail, cat)

1 KB içine kaç satır sığarsa head başını, tail sonunu okur; cat ise tamamını okur. Büyük dosyalar için cat tavsiye edilmez.

[train@localhost ~]$ hdfs dfs -head /user/train/myHDFSFolder/retail_db/orders.csv
orderId,orderDate,orderCustomerId,orderStatus
1,2013-07-25 00:00:00.0,11599,CLOSED
2,2013-07-25 00:00:00.0,256,PENDING_PAYMENT
3,2013-07-25 00:00:00.0,12111,COMPLETE
4,2013-07-25 00:00:00.0,8827,CLOSED
5,2013-07-25 00:00:00.0,11318,COMPLETE
6,2013-07-25 00:00:00.0,7130,COMPLETE
7,2013-07-25 00:00:00.0,4530,COMPLETE
8,2013-07-25 00:00:00.0,2911,PROCESSING
9,2013-07-25 00:00:00.0,5657,PENDING_PAYMENT
10,2013-07-25 00:00:00.0,5648,PENDING_PAYMENT
11,2013-07-25 00:00:00.0,918,PAYMENT_REVIEW
12,2013-07-25 00:00:00.0,1837,CLOSED
13,2013-07-25 00:00:00.0,9149,PENDING_PAYMENT
14,2013-07-25 00:00:00.0,9842,PROCESSING
15,2013-07-25 00:00:00.0,2568,COMPLETE
16,2013-07-25 00:00:00.0,7276,PENDING_PAYMENT
17,2013-07-25 00:00:00.0,2667,COMPLETE
18,2013-07-25 00:00:00.0,1205,CLOSED
19,2013-07-25 00:00:00.0,9488,PENDING_PAYMENT
20,2013-07-25 00:00:00.0,9198,PROCESSING
21,2013-07-25 00:00:00.0,2711,PENDING
22,2013-07-25 00:00:00.0,333,COMPLETE
23,2013-07-25 00:00:00.0,4367,PENDING_PAYMENT
24,2013-07-25 00:00:00.0,11441,CLOSED

Yazar Hakkında
Toplam 180 yazı
Erkan ŞİRİN
Erkan ŞİRİN
10 yılı aşkın süredir yurtiçi ve yurtdışında sektörde büyük veri mühendisliği, platform yönetimi ve makine öğrenmesi ile ilgili çalışmalar yürütmekte ve aynı zamanda birçok kurum ve şirkete danışmanlık ve eğitimler vermektedir. Çalışma alanları: Data ve MLOps platformları, gerçek zamanlı veri işleme, değişen veriyi yakalama (CDC) ve Lakehouse.
Yorumlar (Yorum yapılmamış)

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

×

Bir Şeyler Ara