Takip et

DigitalOcean Droplet’leri ile Hadoop Kümesi Kurulumu: Adım Adım Teknik Rehber

DigitalOcean Droplet’leri ile Hadoop Kümesi Kurulumu: Adım Adım Teknik Rehber Büyük veri dünyası, günümüzün dijital ekonomisinde işletmel

DigitalOcean Droplet’leri ile Hadoop Kümesi Kurulumu: Adım Adım Teknik Rehber

Büyük veri dünyası, günümüzün dijital ekonomisinde işletmelerin ve araştırmacıların karşılaştığı en önemli zorluklardan biridir. Geleneksel veri işleme yöntemleri, petabaytlarca veriyi depolama, işleme ve analiz etme konusunda yetersiz kalmaktadır. İşte tam bu noktada Apache Hadoop devreye giriyor. Hadoop, dağıtık bir ortamda büyük veri kümelerini depolamak ve işlemek için tasarlanmış açık kaynaklı bir çerçevedir. Bu makalede, maliyet etkinliği, esnekliği ve kullanım kolaylığı ile öne çıkan bulut sağlayıcısı DigitalOcean’ın Droplet’lerini kullanarak nasıl bir Hadoop kümesi oluşturacağınızı adım adım inceleyeceğiz.

Giriş: Neden DigitalOcean ve Hadoop?

Büyük veri analizi, günümüzde rekabet avantajı elde etmek isteyen her kurum için vazgeçilmez bir araç haline gelmiştir. Bu analizler genellikle devasa veri kümeleri üzerinde gerçekleştirilir ve bu da özel, yüksek performanslı altyapılar gerektirir. Apache Hadoop, bu tür altyapıları dağıtık ve ölçeklenebilir bir şekilde sunan lider bir teknolojidir. Ancak, yerinde (on-premise) bir Hadoop kümesi kurmak ve yönetmek önemli maliyetler ve operasyonel karmaşıklıklar içerebilir.

Bulut bilişim, bu zorlukları aşmak için güçlü bir alternatif sunar. DigitalOcean, basit arayüzü, uygun fiyatlandırması ve güçlü sanal makineleri (Droplet’ler) ile geliştiriciler ve küçük/orta ölçekli işletmeler arasında popüler bir seçimdir. DigitalOcean Droplet’leri üzerinde bir Hadoop kümesi kurmak, hem maliyetleri düşürür hem de gerektiğinde kümenin kolayca ölçeklendirilmesini sağlar. Bu, özellikle prototipleme, geliştirme ve belirli iş yükleri için esnek bir çözüm arayanlar için idealdir.

Bu makalenin amacı, DigitalOcean platformunda bir Hadoop 3.x kümesini sıfırdan kurmak için kapsamlı ve pratik bir rehber sunmaktır. Hedefimiz, okuyucuların bu adımları takip ederek kendi dağıtık veri işleme ortamlarını başarıyla oluşturabilmelerini sağlamaktır.

Hadoop ve Temel Bileşenlerine Kısa Bir Bakış

Hadoop, birçok bileşenden oluşan bir ekosistemdir, ancak çekirdeğini üç ana bileşen oluşturur: HDFS, YARN ve MapReduce.

HDFS (Hadoop Dağıtık Dosya Sistemi)

HDFS, Hadoop’un temel depolama katmanıdır. Büyük dosyaları birden fazla makineye dağıtarak depolar ve yüksek hata toleransı ile çalışır.
* NameNode: Kümedeki tüm dosya sistemi meta verilerini (dosya adları, dizinler, blok konumları vb.) yöneten ana düğümdür. Tüm istemci erişimleri NameNode üzerinden geçer. Yüksek erişilebilirlik için genellikle yedekli NameNode’lar kullanılır.
* DataNode: Gerçek veri bloklarını depolayan düğümlerdir. İstemcilerden gelen okuma/yazma isteklerini doğrudan işler ve NameNode’a düzenli olarak kalp atışı (heartbeat) ve blok raporları gönderir.
* Replikasyon: HDFS, verileri birden fazla DataNode’da kopyalayarak (varsayılan olarak 3 kopya) veri kaybını önler ve okuma performansını artırır.

YARN (Yet Another Resource Negotiator)

YARN, Hadoop kümesindeki kaynakları yöneten ve dağıtık uygulamaların yürütülmesini sağlayan bir platformdur.
* ResourceManager: Kümedeki tüm uygulamalar için kaynakları (CPU, bellek) tahsis eden küresel bir yöneticidir. İş planlaması ve kaynak yönetimi yapar.
* NodeManager: Her bir veri düğümünde çalışır ve o düğümdeki kaynakları yönetir. Uygulama kapsayıcılarını (container) başlatır, izler ve ResourceManager’a düğüm durumu hakkında bilgi gönderir.
* ApplicationMaster: Her uygulama için bir ApplicationMaster örneği başlatılır. Bu, uygulamanın yaşam döngüsünü yönetir, ResourceManager’dan kaynak ister ve görevin tamamlanmasını izler.

MapReduce

MapReduce, büyük veri kümelerini paralel ve dağıtık bir şekilde işlemek için bir programlama modelidir.
* Map Aşaması: Giriş verilerini alır, bunları anahtar-değer çiftlerine böler ve her bir çift üzerinde bir işlem (map fonksiyonu) uygular.
* Reduce Aşaması: Map aşamasının çıktısını alır, aynı anahtara sahip değerleri gruplar ve bu gruplar üzerinde bir toplama veya özetleme işlemi (reduce fonksiyonu) uygular.

Bu bileşenler birlikte çalışarak, petabaytlarca veriyi güvenilir ve verimli bir şekilde depolama ve işleme yeteneği sunar.

DigitalOcean Temelleri ve Küme Mimarisi Planlaması

Hadoop kümesi oluşturmaya başlamadan önce DigitalOcean’ın temel kavramlarını anlamak ve kümenizin mimarisini planlamak önemlidir.

DigitalOcean Droplet’leri

Droplet’ler, DigitalOcean’ın sunduğu Linux tabanlı sanal makinelerdir. İhtiyaçlarınıza göre farklı CPU, RAM ve depolama seçenekleriyle oluşturulabilirler. Her Droplet, bir genel IP adresi ve isteğe bağlı olarak bir özel IP adresi ile gelir.

SSH Anahtarları

Droplet’lerinize güvenli ve parolasız erişim sağlamak için SSH anahtarları kullanmak şiddetle tavsiye edilir. Bir SSH anahtar çifti (genel ve özel anahtar) oluşturup genel anahtarınızı Droplet’lere ekleyerek güvenliği artırırsınız.

Ağ Yapılandırması

DigitalOcean, Droplet’ler arasında güvenli ve hızlı iletişim için özel ağ (Private Networking) seçeneği sunar. Bu, Droplet’lerinizin genel internet üzerinden değil, özel, izole bir ağ üzerinden iletişim kurmasını sağlar. Hadoop kümesinde bu özelliği kullanmak hem güvenlik hem de performans açısından kritik öneme sahiptir. Ayrıca, DigitalOcean’ın güvenlik duvarı (Firewall) hizmeti ile Droplet’lerinizin ağ trafiğini kontrol edebilirsiniz.

Bölge Seçimi

Droplet’lerinizi oluştururken, fiziksel konumlarını temsil eden bir veri merkezi bölgesi seçmelisiniz. Kümenizdeki tüm Droplet’lerin aynı bölgede olması, ağ gecikmesini en aza indirerek performansı artırır.

Hadoop Kümesi Mimarisi Planlaması

Bir Hadoop kümesi genellikle bir “master” düğüm ve birden fazla “slave” düğümden oluşur.
* Master Droplet (NameNode, ResourceManager, SecondaryNameNode): Genellikle kümenin yönetim bileşenlerini barındırır. Bu Droplet biraz daha fazla RAM ve CPU gerektirebilir.
* Slave Droplet’ler (DataNode, NodeManager): Veri depolama ve işleme görevlerini üstlenir. Kümenizin ölçeğine bağlı olarak birden fazla slave Droplet’e ihtiyacınız olacaktır. Minimum 2 slave Droplet ile başlamak, HDFS replikasyonunun etkin bir şekilde çalışmasını sağlar.

Önerilen Konfigürasyon (3 Droplet’li Minimal Küme):
* Master Droplet (1 adet):
* İşletim Sistemi: Ubuntu 20.04 LTS veya 22.04 LTS
* Plan: Standard Droplet, 2 vCPU, 4 GB RAM, 80 GB SSD
* Roller: NameNode, ResourceManager, SecondaryNameNode
* Slave Droplet’ler (2 adet):
* İşletim Sistemi: Ubuntu 20.04 LTS veya 22.04 LTS
* Plan: Standard Droplet, 1 vCPU, 2 GB RAM, 50 GB SSD (Her biri)
* Roller: DataNode, NodeManager

Bu konfigürasyon, küçük ölçekli testler ve öğrenme amaçları için yeterli olacaktır. Gerçek dünya iş yükleri için daha güçlü Droplet’ler ve daha fazla slave düğüm gerekebilir.

Adım Adım Kurulum Rehberi

Şimdi DigitalOcean Droplet’leri üzerinde Hadoop kümesini kurma adımlarına geçelim.

Adım 1: DigitalOcean Droplet’lerini Oluşturma

1. DigitalOcean Hesabınıza Giriş Yapın: Eğer bir hesabınız yoksa, oluşturun.
2. Droplet Oluşturma: Kontrol panelinizde “Create” butonuna tıklayın ve “Droplets” seçeneğini seçin.
3. Bölge Seçimi: Kümenizdeki tüm Droplet’ler için aynı veri merkezi bölgesini seçin (örn. Frankfurt 1).
4. İşletim Sistemi Seçimi: “Ubuntu” sekmesinden “22.04 LTS x64” veya “20.04 LTS x64” seçeneğini seçin.
5. Plan Seçimi: Yukarıda belirtilen mimari planına uygun olarak Droplet boyutlarını seçin (Master için 2vCPU/4GB, Slave’ler için 1vCPU/2GB).
6. Kimlik Doğrulama: SSH anahtarı ekleyin veya mevcut bir anahtarınızı seçin. Bu, Droplet’lerinize güvenli bir şekilde erişmenizi sağlar.
7. Ek Seçenekler:
* Private Networking (Özel Ağ): Tüm Droplet’leriniz için bu seçeneği etkinleştirin. Bu, Droplet’ler arasında güvenli ve hızlı iç iletişimi sağlar.
* Monitoring (İzleme): Etkinleştirebilirsiniz.
8. Hostname ve Sayı:
* Master Droplet için: “hadoop-master” gibi bir hostname belirleyin ve 1 adet oluşturun.
* Slave Droplet’ler için: “hadoop-slave1”, “hadoop-slave2” gibi hostname’ler belirleyin ve ihtiyacınız kadar (örneğin 2 adet) oluşturun.
9. Proje Seçimi (İsteğe Bağlı): Droplet’leri bir projeye atayabilirsiniz.
10. Droplet’leri Oluşturun: “Create Droplet” butonuna tıklayın.

Droplet’leriniz hazır olduğunda, her birinin genel ve özel IP adreslerini not alın.

Adım 2: Droplet’leri Hazırlama (Tüm Droplet’lerde)

Bu adımlar, tüm master ve slave Droplet’lerinizde ayrı ayrı uygulanmalıdır.

1. SSH ile Bağlanma:

ssh root@
    ssh root@
    ssh root@

2. Sistem Güncellemesi:

apt update && apt upgrade -y

3. Yeni Bir Hadoop Kullanıcısı Oluşturma:
Güvenlik ve izolasyon için root kullanıcısı yerine özel bir hadoopuser kullanıcısı oluşturalım.

adduser hadoopuser
    usermod -aG sudo hadoopuser # hadoopuser'a sudo yetkisi ver
    su - hadoopuser # hadoopuser'a geçiş yap

Bundan sonraki tüm adımları hadoopuser olarak gerçekleştireceğiz.
4. Java Geliştirme Kiti (JDK) Kurulumu: Hadoop Java ile çalıştığı için JDK’ya ihtiyacımız var. OpenJDK 11 tavsiye edilir.

sudo apt install openjdk-11-jdk -y

Java’nın doğru yüklendiğini kontrol edin:

java -version

5. Ortam Değişkenlerini Ayarlama (JAVA_HOME):
hadoopuser‘ın .bashrc dosyasını düzenleyin:

nano ~/.bashrc

Dosyanın sonuna aşağıdaki satırları ekleyin:

export JAVA_HOME=$(update-java-alternatives -l | grep "java-1.11.0-openjdk-amd64" | awk '{print $3}')
    export PATH=$PATH:$JAVA_HOME/bin

Değişiklikleri uygulayın:

source ~/.bashrc

6. Hostname’leri ve /etc/hosts Dosyasını Yapılandırma:
Bu, Droplet’lerin birbirlerini özel IP adresleri üzerinden hostname’leri ile tanımalarını sağlar.
Önce her Droplet’in hostname’ini ayarlayın (eğer oluştururken ayarlamadıysanız):
* Master Droplet’te: sudo hostnamectl set-hostname hadoop-master
* Slave1 Droplet’te: sudo hostnamectl set-hostname hadoop-slave1
* Slave2 Droplet’te: sudo hostnamectl set-hostname hadoop-slave2

Şimdi tüm Droplet’lerde /etc/hosts dosyasını düzenleyin:

sudo nano /etc/hosts

Dosyanın sonuna Droplet’lerinizin özel IP adresleri ve hostname’lerini ekleyin (örnek IP’ler):

127.0.0.1       localhost
    10.10.0.10      hadoop-master
    10.10.0.11      hadoop-slave1
    10.10.0.12      hadoop-slave2

Kendi Droplet’lerinizin özel IP adreslerini kullanmayı unutmayın.

7. SSH Parolasız Girişini Yapılandırma (Master’dan Slave’lere):
Hadoop, master düğümden slave düğümlere parolasız SSH erişimi gerektirir.
* Sadece Master Droplet’te (hadoopuser olarak):
SSH anahtar çifti oluşturun (parola istemediğinde Enter tuşuna basın):

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

Oluşturulan genel anahtarı kendi authorized_keys dosyasına ekleyin:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

* Master Droplet’ten Slave Droplet’lere (hadoopuser olarak):
Genel anahtarı her bir slave Droplet’e kopyalayın:

ssh-copy-id -i ~/.ssh/id_rsa.pub hadoopuser@hadoop-slave1
        ssh-copy-id -i ~/.ssh/id_rsa.pub hadoopuser@hadoop-slave2

Bu komutlar sırasında slave Droplet’in hadoopuser parolasını girmeniz istenecektir.
* Test Etme: Master’dan slave’lere parolasız bağlanmayı deneyin:

ssh hadoopuser@hadoop-slave1
        exit
        ssh hadoopuser@hadoop-slave2
        exit

Eğer parola sormadan bağlanabiliyorsanız, yapılandırma başarılıdır.

Adım 3: Hadoop Kurulumu (Tüm Droplet’lerde)

Bu adımlar, tüm master ve slave Droplet’lerinizde hadoopuser olarak uygulanmalıdır.

1. Hadoop Arşivini İndirme: Apache Hadoop’un resmi web sitesinden en son kararlı sürümünü indirin. (Örnek: Hadoop 3.3.6)

wget https://downloads.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz

2. Arşivi Çıkarma:

sudo tar -xzf hadoop-3.3.6.tar.gz -C /usr/local/

3. Sembolik Link Oluşturma: Daha kolay yönetim için bir sembolik link oluşturun.

sudo ln -s /usr/local/hadoop-3.3.6 /usr/local/hadoop

4. Hadoop Dizinlerinin Sahipliğini Değiştirme: hadoopuser‘ın Hadoop dizinlerine yazma izni olması gerekir.

sudo chown -R hadoopuser:hadoopuser /usr/local/hadoop

Adım 4: Hadoop Ortam Değişkenlerini Ayarlama (Tüm Droplet’lerde)

hadoopuser‘ın .bashrc dosyasını tekrar düzenleyin:

nano ~/.bashrc

Dosyanın sonuna aşağıdaki satırları ekleyin:

# Hadoop Ortam Değişkenleri
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_OPTS="-Djava.net.preferIPv4Stack=true"
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

Değişiklikleri uygulayın:

source ~/.bashrc

Adım 5: Hadoop Yapılandırma Dosyalarını Düzenleme (Sadece Master Droplet’inde)

Bu adımlar sadece master Droplet’te hadoopuser olarak yapılacaktır. Daha sonra yapılandırma dosyalarını slave’lere kopyalayacağız.
Hadoop yapılandırma dizinine gidin:

cd /usr/local/hadoop/etc/hadoop

1. hadoop-env.sh: Java yolunu belirtin.

nano hadoop-env.sh

export JAVA_HOME= satırını bulun ve yorum satırını kaldırarak aşağıdaki gibi ayarlayın:

export JAVA_HOME=$(update-java-alternatives -l | grep "java-1.11.0-openjdk-amd64" | awk '{print $3}')

2. core-site.xml: HDFS NameNode adresini yapılandırın.

nano core-site.xml

etiketleri arasına aşağıdaki XML’i ekleyin:


        fs.defaultFS
        hdfs://hadoop-master:9000
    

3. hdfs-site.xml: HDFS replikasyon faktörünü ve depolama dizinlerini yapılandırın.

nano hdfs-site.xml

etiketleri arasına aşağıdaki XML’i ekleyin:


        dfs.replication
        2 
    
    
        dfs.namenode.name.dir
        file:///usr/local/hadoop/hdfs/namenode
    
    
        dfs.datanode.data.dir
        file:///usr/local/hadoop/hdfs/datanode
    

Gerekli dizinleri oluşturun:

mkdir -p /usr/local/hadoop/hdfs/namenode
    mkdir -p /usr/local/hadoop/hdfs/datanode

4. mapred-site.xml: MapReduce çerçevesini YARN olarak ayarlayın. (mapred-site.xml.template dosyasını mapred-site.xml olarak kopyalamanız gerekebilir)

cp mapred-site.xml.template mapred-site.xml
    nano mapred-site.xml

etiketleri arasına aşağıdaki XML’i ekleyin:


        mapreduce.framework.name
        yarn
    

5. yarn-site.xml: ResourceManager adresini ve NodeManager ayarlarını yapılandırın.

nano yarn-site.xml

etiketleri arasına aşağıdaki XML’i ekleyin:


        yarn.nodemanager.aux-services
        mapreduce_shuffle
    
    
        yarn.nodemanager.aux-services.mapreduce.shuffle.class
        org.apache.hadoop.mapred.ShuffleHandler
    
    
        yarn.resourcemanager.hostname
        hadoop-master
    
    
        yarn.nodemanager.vmem-check-enabled
        false
    
    
        yarn.nodemanager.pmem-check-enabled
        false
    

6. workers (eski slaves): Slave Droplet’lerin hostname’lerini belirtin.

nano workers

Varsayılan içeriği silin ve her satıra bir slave hostname’i ekleyin:

hadoop-slave1
    hadoop-slave2

Adım 6: Yapılandırmaları Slave’lere Dağıtma

Master Droplet’te yaptığımız tüm Hadoop yapılandırma değişikliklerini slave Droplet’lere kopyalamamız gerekiyor.
Master Droplet’te hadoopuser olarak:

scp /usr/local/hadoop/etc/hadoop/* hadoopuser@hadoop-slave1:/usr/local/hadoop/etc/hadoop/
scp /usr/local/hadoop/etc/hadoop/* hadoopuser@hadoop-slave2:/usr/local/hadoop/etc/hadoop/

Bu komutlar, yapılandırma dosyalarını slave’lere kopyalayacaktır.

Adım 7: HDFS’i Formatlama (Sadece Master Droplet’inde – İlk kez!)

Bu adım, HDFS dosya sistemini başlatır. Bu işlemi sadece küme ilk kurulduğunda bir kez yapın. Mevcut bir kümede çalıştırmak, tüm verileri siler.
Master Droplet’te hadoopuser olarak:

hdfs namenode -format

Başarılı bir formatlama, “successfully formatted” mesajını göstermelidir.

Adım 8: Hadoop Servislerini Başlatma

Master Droplet’te hadoopuser olarak, tüm Hadoop servislerini başlatın:

1. HDFS Servislerini Başlatma:

start-dfs.sh

Bu komut NameNode’u master’da ve DataNode’ları slave’lerde başlatır.
2. YARN Servislerini Başlatma:

start-yarn.sh

Bu komut ResourceManager’ı master’da ve NodeManager’ları slave’lerde başlatır.

3. Servislerin Çalıştığını Kontrol Etme:
Tüm Droplet’lerde jps komutunu çalıştırarak çalışan Java süreçlerini görebilirsiniz:
* Master Droplet’te: NameNode, ResourceManager, SecondaryNameNode süreçlerini görmelisiniz.
* Slave Droplet’lerde: DataNode, NodeManager süreçlerini görmelisiniz.

Eğer herhangi bir süreç eksikse, log dosyalarını kontrol edin (/usr/local/hadoop/logs/).

Adım 9: Küme Durumunu Kontrol Etme

Hadoop kümenizin durumunu web arayüzleri aracılığıyla kontrol edebilirsiniz:
* HDFS NameNode UI: Tarayıcınızdan http://:9870 adresine gidin. Burada küme özetini, DataNode’ları ve dosya sistemi bilgilerini görebilirsiniz.
* YARN ResourceManager UI: Tarayıcınızdan http://:8088 adresine gidin. Burada çalışan uygulamaları, küme kaynaklarını ve NodeManager’ları görebilirsiniz.

Ayrıca, komut satırından HDFS raporunu alabilirsiniz:

hdfs dfsadmin -report

Bu komut, DataNode’ların durumunu ve depolama kapasitelerini gösterecektir.

Hadoop Kümesini Test Etme

Kümenizin düzgün çalıştığından emin olmak için basit HDFS ve MapReduce işlemlerini test edelim.

1. HDFS’te Bir Dizin Oluşturma:

hdfs dfs -mkdir /user
    hdfs dfs -mkdir /user/hadoopuser

2. Bir Dosyayı HDFS’e Yükleme:
Yerel bir dosya oluşturun (örneğin, test.txt):

echo "Merhaba DigitalOcean Hadoop" > test.txt

Bu dosyayı HDFS’e yükleyin:

hdfs dfs -put test.txt /user/hadoopuser/

3. HDFS’deki Dosyaları Listeleme:

hdfs dfs -ls /user/hadoopuser/

Yüklediğiniz test.txt dosyasını görmelisiniz.
4. HDFS’deki Bir Dosyanın İçeriğini Görüntüleme:

hdfs dfs -cat /user/hadoopuser/test.txt

5. Örnek MapReduce İşi Çalıştırma (WordCount):
Hadoop, örnek JAR dosyalarıyla gelir. WordCount örneğini çalıştıralım:
Önce bir giriş dizini oluşturun ve içine örnek bir dosya yükleyin:

hdfs dfs -mkdir /input
    echo "Hadoop DigitalOcean Hadoop Cluster" > sample.txt
    hdfs dfs -put sample.txt /input/

Şimdi WordCount işini çalıştırın:

hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /input /output

İş tamamlandığında, çıktı hdfs dfs -ls /output komutu ile görülebilir. Çıktı dosyasının içeriğini görmek için:

hdfs dfs -cat /output/part-r-00000

Çıktı, kelimelerin frekanslarını göstermelidir:

Cluster	1
    DigitalOcean	1
    Hadoop	2

Bu adımlar başarılı olursa, Hadoop kümenizin temel işlevleri doğru şekilde çalıştığı anlamına gelir.

Sık Karşılaşılan Sorunlar ve Çözümleri

Kurulum sırasında karşılaşabileceğiniz bazı yaygın sorunlar ve çözümleri:

* SSH Bağlantı Sorunları:
* ssh-copy-id komutunun doğru çalıştığından emin olun.
* ~/.ssh/authorized_keys dosyasının doğru izinlere sahip olduğundan emin olun (chmod 600 ~/.ssh/authorized_keys).
* ~/.ssh dizininin doğru izinlere sahip olduğundan emin olun (chmod 700 ~/.ssh).
* /etc/ssh/sshd_config dosyasındaki PermitRootLogin ve PasswordAuthentication ayarlarını kontrol edin (genellikle no olarak ayarlanır).
* Java Versiyonu Uyumsuzluğu: Hadoop’un belirli bir Java sürümüyle çalışması gerekir (OpenJDK 11 veya 8 tavsiye edilir). JAVA_HOME ortam değişkeninin doğru ayarlandığından ve .bashrc dosyasının kaynaklandığından emin olun.
* Güvenlik Duvarı Engellemeleri: DigitalOcean güvenlik duvarı veya işletim sistemi güvenlik duvarı (ufw) portları engelleyebilir. Gerekli Hadoop portlarını açtığınızdan emin olun:
* NameNode: 9870 (Web UI), 9000 (RPC)
* ResourceManager: 8088 (Web UI)
* DataNode: 9866 (Data transfer)
* NodeManager: 8042 (Web UI)
* hdfs namenode -format Hatası: Eğer bu komutu daha önce çalıştırdıysanız ve tekrar çalıştırmaya çalışırsanız, mevcut verilerin üzerine yazmak isteyip istemediğinizi sorabilir veya hata verebilir. Mevcut bir kümeyi formatlamak istemiyorsanız, bu komutu tekrar çalıştırmayın. Eğer test amaçlı sıfırdan başlamak istiyorsanız, NameNode ve DataNode dizinlerini silip tekrar formatlayabilirsiniz:

rm -rf /usr/local/hadoop/hdfs/namenode/*
    rm -rf /usr/local/hadoop/hdfs/datanode/*
    hdfs namenode -format

* Yetersiz Kaynaklar: Özellikle küçük Droplet’lerde bellek veya CPU yetersizliği sorunlara yol açabilir. yarn-site.xml içinde yarn.nodemanager.vmem-check-enabled ve yarn.nodemanager.pmem-check-enabled ayarlarını false yaparak sanal bellek kontrollerini devre dışı bırakmak bu tür sorunları hafifletebilir (ancak üretim ortamlarında dikkatli kullanılmalıdır).
* Log Dosyalarını Kontrol Etme: Herhangi bir sorunla karşılaştığınızda, Hadoop’un log dosyalarını (/usr/local/hadoop/logs/) kontrol etmek, sorunun kök nedenini anlamak için en iyi yoldur.

Güvenlik ve Performans İpuçları

Kurulumu tamamladıktan sonra kümenizin güvenliğini ve performansını artırmak için bazı önemli ipuçları:

* Güvenlik Duvarı Kurallarını Sıkılaştırma: DigitalOcean güvenlik duvarını kullanarak sadece gerekli portlara (SSH için 22, NameNode UI için 9870, ResourceManager UI için 8088) erişime izin verin. Geri kalan tüm portları kapatın. Master’dan slave’lere ve slave’ler arasında iç iletişim için özel ağ IP’lerini kullanın ve bu trafiğe izin verin.
* SSH Anahtar Tabanlı Kimlik Doğrulama: Parola tabanlı SSH erişimini devre dışı bırakarak sadece SSH anahtarlarıyla erişime izin verin.
* Yönetim İçin Ayrı Bir Kullanıcı Kullanma: Root kullanıcısı yerine sudo yetkilerine sahip ayrı bir kullanıcı (bizim durumumuzda hadoopuser) kullanmak en iyi güvenlik uygulamasıdır.
* Yedekleme Stratejileri: NameNode meta verileri (özellikle fsimage ve edits dosyaları) kritik öneme sahiptir. Düzenli olarak yedekleme stratejileri oluşturun. DigitalOcean’ın Snapshot veya Volume Backup özelliklerini kullanabilirsiniz.
* Küme İzleme Araçları: Hadoop’un kendi web UI’ları dışında, Prometheus, Grafana gibi izleme araçlarını entegre ederek kümenizin performansını ve sağlığını daha detaylı takip edebilirsiniz.
* Droplet Boyutlarını Optimize Etme: İş yüklerinize göre Droplet boyutlarını ayarlayın. CPU yoğun işler için daha fazla vCPU, bellek yoğun işler için daha fazla RAM içeren Droplet’ler seçin. Disk I/O performansı da DataNode’lar için önemlidir. DigitalOcean’ın General Purpose Droplet’leri daha yüksek performans sunabilir.
* Hadoop Yapılandırmasını İnce Ayar Yapma: hdfs-site.xml, yarn-site.xml gibi dosyalardaki parametreleri iş yükünüze ve küme boyutunuza göre optimize edin (örn. dfs.blocksize, yarn.scheduler.minimum-allocation-mb, yarn.nodemanager.resource.memory-mb).

Sonuç

Bu makalede, DigitalOcean Droplet’leri üzerinde Apache Hadoop 3.x kümesini adım adım nasıl kuracağınızı detaylı bir şekilde inceledik. DigitalOcean’ın sağladığı esneklik, maliyet etkinliği ve kullanım kolaylığı sayesinde, büyük veri işleme kapasitesine sahip dağıtık bir ortamı hızlıca ayağa kaldırabilirsiniz.

Bir Hadoop kümesi kurmak, büyük veri ekosistemine giriş için önemli bir adımdır. Bu kurulum, HDFS, YARN ve MapReduce gibi temel Hadoop bileşenlerinin nasıl çalıştığını anlamanıza yardımcı olacaktır. DigitalOcean’ın basit arayüzü ve güçlü altyapısı, bu karmaşık dağıtık sistemleri kurma ve yönetme sürecini önemli ölçüde basitleştirmektedir.

Kurulum tamamlandıktan sonra, kümenizi daha da zenginleştirmek için Apache Hive (veri ambarı), Apache Spark (hızlı veri işleme), Apache Pig (veri analizi için üst düzey dil) gibi diğer Hadoop ekosistemi projelerini entegre etmeyi düşünebilirsiniz. Bu araçlar, Hadoop’un temel yeteneklerini genişleterek daha karmaşık veri analizi ve işleme senaryolarına olanak tanır.

Unutmayın ki, bir üretim ortamında Hadoop kümesi yönetmek, izleme, hata toleransı, güvenlik ve performans ayarlamaları gibi ek uzmanlık gerektirir. Ancak bu rehber, kendi DigitalOcean tabanlı Hadoop kümenizi oluşturmanız için sağlam bir temel sunmaktadır. Büyük veri yolculuğunuzda başarılar dileriz!

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

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

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.