WekaServer Kurulum ve Kullanımı
Weka ile Dağıtık İşlem: Master-Slave Kurulumu ve Kullanımı
Bu rehber, Weka’nın dağıtık işlem (WekaServer) özelliğini kullanarak büyük veri kümeleri üzerinde analiz görevlerini birden fazla makineye (slave) dağıtarak nasıl çalıştırılacağını adım adım açıklar. Bu mimari, bir “master” sunucu ve ona bağlı bir veya daha fazla “slave” sunucudan oluşur.
1. Önkoşullar
Tüm master ve slave makinelerde aşağıdaki gereksinimlerin karşılandığından emin olun:
a. Java Runtime Environment (JRE)
Weka, Java tabanlıdır. Genellikle Java 8 (1.8) sürümü önerilir.
Ubuntu/Debian için Java 1.8 JRE Kurulumu:
sudo apt update
sudo apt install openjdk-8-jre-headless
Java Sürümünü Doğrulama:
java -version
Çıktı şuna benzer olmalıdır:
java version "1.8.0_XYZ"
Java(TM) SE Runtime Environment (build 1.8.0_XYZ-bAA)
Java HotSpot(TM) 64-Bit Server VM (build DD.XYZ-bAA, mixed mode)
Windows için Java:
Oracle veya AdoptOpenJDK (Temurin) gibi resmi kaynaklardan Java 8 JRE veya JDK’yı indirip kurun. Windows’ta birden fazla Java sürümünü yönetmek için şu adımları izleyin:
-
Java 1.8’i yükleyin.
-
Daha yüksek Java sürümlerine ihtiyaç duyan yazılımlarınız varsa, bu sürümleri kaldırmayın.
-
Java 1.8’i öncelikli yapmak için:
- Windows ortam değişkenlerini açın.
JAVA_HOME değişkeni açarak değerini “C:\Program Files\Java\jre-1.8” yapın. Ortamda örneğin Java 21 de yüklüyse bu durumda System Variables başlığı altında (Ortam değişkenleri penceresinin altındaki bölümde) bulunan Path değişkeninin içeriğini açarak Java 1.8’in yolunu diğer sürümlerin üstüne taşıyın. Alternatif olarak, birden fazla Java sürümünü yönetmek için
jenvgibi bir Java sürüm yöneticisi kullanabilirsiniz. Bu araç, farklı projeler için kolayca Java sürümleri arasında geçiş yapmanıza olanak tanır.
Değişikliklerden sonra aktif Java sürümünü doğrulamak için aşağıdaki komutu çalıştırın:
java -versionBu komut, sistemde etkin olan Java sürümünü gösterecektir.
JAVA_HOMEdeğişkenini “C:\Program Files\Java\jre-1.8” olarak ayarlayın.
- Windows ortam değişkenlerini açın.
JAVA_HOME değişkeni açarak değerini “C:\Program Files\Java\jre-1.8” yapın. Ortamda örneğin Java 21 de yüklüyse bu durumda System Variables başlığı altında (Ortam değişkenleri penceresinin altındaki bölümde) bulunan Path değişkeninin içeriğini açarak Java 1.8’in yolunu diğer sürümlerin üstüne taşıyın. Alternatif olarak, birden fazla Java sürümünü yönetmek için
-
Eğer sistemde birden fazla Java sürümü yüklüyse:
Pathdeğişkenini düzenleyin ve “C:\Program Files\Common Files\Oracle\Java\javapath” yolunun sonuna bir rakam ekleyerek (örneğin, “2”) Java 21’in devreye girmesini engelleyin.
-
Java 21’e tekrar ihtiyaç duyarsanız:
- “2” rakamını kaldırın veya
JAVA_HOMEdeğerini istediğiniz Java sürümüne ayarlayın.
- “2” rakamını kaldırın veya
Örnek:
JAVA_HOME: “C:\Program Files\Java\jre-1.8”Path: “C:\Program Files\Common Files\Oracle\Java\javapath2” 2. PATH değişkeninde Java 1.8’in yolunu bulun ve diğer sürümlerin üstüne taşıyın.
b. Weka JAR Dosyası
Weka’nın ana .jar dosyasına (örneğin, weka.jar veya weka-3-8-6.jar) ihtiyacınız olacak. Bu dosya, hem master hem de tüm slave makinelerde bulunmalı ve komutlar çalıştırılırken erişilebilir olmalıdır.
Bulunması Gereken Klasör (Örnek):
Windows’ta Weka kurulumu genellikle:
C:\Program Files\Weka-3-8-6\
Altında olur ve weka.jar bu dizinde bulunur.
c. Ağ Yapılandırması ve Güvenlik Duvarı (Firewall)
Master ve slave makinelerin birbirleriyle belirtilen portlar üzerinden iletişim kurabilmesi gerekir.
Windows Güvenlik Duvarı:
- Windows Defender Güvenlik Duvarı ayarlarında, Java’nın (
javaw.exeveyajava.exe) ağ erişimine izin verildiğinden emin olun. - Ayarlar:
Denetim Masası→Sistem ve Güvenlik→Windows Defender Güvenlik Duvarı→Bildirim ayarlarını değiştir. Windows Defender Güvenlik Duvarı yeni bir uygulamayı engellediğinde bana bildirseçeneğini işaretleyin.- Gerekirse, WekaServer’ın kullanacağı port (örneğin 8080 veya 8085) için manuel olarak gelen/giden kurallar ekleyin.
Linux Güvenlik Duvarı (örneğin ufw):
sudo ufw allow 8085/tcp
sudo ufw reload
2. Master Server’ı Başlatma
Master server, Weka görevlerini kabul eder ve uygun slave’lere dağıtır. Master makinenin IP adresini öğrenmek için:
- Windows: Komut istemcisini (cmd) açın ve
ipconfigkomutunu çalıştırın. Çıktıda “IPv4 Address” satırını bulun. - Linux: Terminalde
ifconfigveyaip addrkomutlarından birini çalıştırın. Çıktıda “inet” ile başlayan satırda IP adresini görebilirsiniz.
Genel Komut Yapısı:
java -cp <WEKA_JAR_YOLU> -Xmx<MAKS_BELLEK> -Djava.awt.headless=true weka.Run WekaServer \
-host <MASTER_IP_ADRESİ_VEYA_LOCALHOST> -port <PORT_NUMARASI> \
-load-adjust <YÜK_AYARI> -slots <SLOT_SAYISI> -staleTime -1
Parametre Açıklamaları:
-cp <WEKA_JAR_YOLU>: Weka’nın .jar dosyasının yolu.-Xmx<MAKS_BELLEK>: Master server’a ayrılacak maksimum Java heap belleği.-Djava.awt.headless=true: GUI olmayan ortamlarda çalışmayı sağlar.-host: Master sunucunun IP adresi veyalocalhost.-port: Dinlenecek port.-load-adjust: Genelde4olarak ayarlanır.-slots: Slave ve Master’ın kaç görevi eş zamanlı işleyebileceği.-staleTime -1: Görev zaman aşımı yoktur. Buraya dakika cinsinden maksiumum server’ın çalışacağı süreyi girebilirsiniz. Ancak bazı hesaplamaların slave’ler tarafından ne zaman bitirileceğini kestiremezsiniz. Dolayısı ile buraya bir süre koymak Örneğin 20 (dakika) slave’lerden biri 45 dak. sonunda hesaplamayı tamamladığında server kapandığı için hesaplama sonucunu gönderemeyecektir. Bir slave’den bile hesaplama sonucu gelmezse tüm hesaplama boşa çıkar ve sonuç alınamaz.
Örnek Master Başlatma Komutu (localhost, 5GB RAM):
java -cp weka.jar -Xmx5000m -Djava.awt.headless=true weka.Run WekaServer -host localhost -port 8085 -load-adjust 4 -slots 1 -staleTime -1
Bu komutu başlattıktan sonra, Windows ortamlarında güvenlik duvarı uyarı ekranı çıkabilir. Bu durum diğer işletim sistemlerinde görülmeyebilir. Eğer bir uyarı alırsanız, “İzin Ver” seçeneğini tıklayarak ilgili portun WekaServer tarafından kullanılmasına izin vermelisiniz. Localhost yerine bilgisayarınızın-server IP sini yazmak DNS probmleri yaşamamak adına tavsiye edilir.
Linux için, ilgili portun izinli olduğundan emin olmak için aşağıdaki adımları izleyin:
- Güvenlik duvarı durumunu kontrol edin:
sudo ufw status - Eğer port izinli değilse, aşağıdaki komutla izin verin:
sudo ufw allow <PORT_NUMARASI>/tcp - Değişiklikleri doğrulamak için güvenlik duvarı durumunu tekrar kontrol edin:
sudo ufw status - Gerekirse güvenlik duvarını yeniden başlatın:
sudo ufw reload
Örnek Komut (IP üzerinden, Windows):
java -classpath "C:\Program Files\Weka-3-8-6\weka.jar" -Xmx8G -Djava.awt.headless=true weka.Run WekaServer -host 10.222.18.190 -port 8085 -load-adjust 4 -slots 1 -staleTime -1
3. Slave Makineleri Master’a Bağlama
Slave makineler, master’dan aldıkları görevleri işleyen makinelerdir. Her bir slave, kendi komut ekranına (cmd) komut girilerek işlem olarak başlatılır. Slave’lerin doğru şekilde çalışabilmesi için, her birinin master server ile iletişim kurabilmesi adına doğru IP adresi ve port ayarlarıyla yapılandırıldığından emin olunmalıdır. Bu, bağlantı sorunlarını önlemek ve sistemin düzgün çalışmasını sağlamak için kritik bir adımdır.
Genel Komut Yapısı:
java -cp <WEKA_JAR_YOLU> -Xmx<MAKS_BELLEK> -Djava.awt.headless=true weka.Run WekaServer \
-host <SLAVE_IP_ADRESİ> -port <SLAVE_PORTU> \
-master <MASTER_IP>:<MASTER_PORTU> -slots <SLOT_SAYISI> -staleTime -1
Parametre Açıklamaları:
-host <SLAVE_IP_ADRESİ>: Bu slave’in IP adresi.-port <SLAVE_PORTU>: Bu slave’in dinleyeceği port.-master <MASTER_IP>:<MASTER_PORTU>: Master adresi ve portu.-slots <SLOT_SAYISI>: Bu makinenin eş zamanlı çalıştırabileceği görev sayısı.
Örnek Komut (Windows, 6GB RAM, 4 slot):
java -Djava.awt.headless=true -classpath "C:\Program Files\Weka-3-8-6\weka.jar" -Xmx6G weka.Run WekaServer -host 10.202.17.35 -port 8085 -master 10.202.16.171:8085 -slots 4 -staleTime -1
Bu kurulum sayesinde, Weka’nın dağıtık işlem altyapısını kullanarak büyük ölçekli veri işlemlerini birden fazla makineye dağıtabilir ve işlem süresini önemli ölçüde kısaltabilirsiniz. Denemeler yapalım arkadaşlar.