Aşağıda o dönem konular üzerine yaptığım çizimleri paylaşıyorum.
Showing posts with label Tutorial. Show all posts
Showing posts with label Tutorial. Show all posts
Ders Konuları - Öğrenme Ağları || Beyin Haritaları
Üniversite sınavlarına hazırladığım günlerde çalıştığım fizik, kimya, biyoloji, türkçe konularını tek bir bakışla tekrar edebilmek ve önemli noktaları unutmamak için kullandığım bir yöntem vardı. O dönemler ülkemizde de yeni yeni söylenen beyin haritaları ya da ışınsal öğrenme ağları.
Aşağıda o dönem konular üzerine yaptığım çizimleri paylaşıyorum.
Aşağıda o dönem konular üzerine yaptığım çizimleri paylaşıyorum.
Binary (Ikili) Sayıları Ezberleme Yöntemi
Dünya Hafıza Şampiyonası'ndaki etaplardan birisi de binary(ikili) haldeki sayıları ezberlemektir. Bu konuda çeşitli teknikler olmakla birlikte en çok kullanılan
olabildiğince çok fazla sayıyı bir harfle ilişkilendirmektir.
Bu ilişkilendirmeden sonra, bu harflerle anlamlı kelimeler üretip, bunları hayali ilişkilendirme (hikaye yaratma) yöntemi ile ezberlemek kalıyor geriye.
Benim lise yıllarımda geliştiridiğim sayı harf ilişkisi aşağıdaki gibidir. Herkes farklı bir ilişkilendirme izleyebilir. Kişinin kolayına nasıl geliyorsa.
Benim fonetiğe çevirme yöntemimde maksimum 4 sayıya bir harf verildi. 4 veri için toplamda 2'li sistemde 16 grup oluşuyor. Bunları mantıklı ve akılda kalacak şekilde aşağıda açıklamaları ile yazıyorum.
0000 -> S : Tüm sayıların (s)ıfır olmasından kaynaklı
0001 -> Ş : Ş harfinin altındaki kuyruk ve sayının ilk harfinin 1 olması
0010 -> N : Sayının O(N)'u temsil etmesi
0100 -> Y : Sayının (Y)üz'ü temsil etmesi
1000 -> B : Saysının (B)in'i temsil etmesi
0011 -> H : H harfinin iki çubuğunun 11'e benzemesi
1100 -> F : F harfinin iki çubuğunun sayının başındaki 11'i temsil etmesi
1111 -> T : (T)amamının 1 olması
1001 -> M : M harfinin iki yanındaki çubukların sayının şeklinde benzetilmesi
0110 -> V : V harfinin ortadan uzanan iki çubuğunun sayının şekline benzetilmesi
1101 -> K : K ve L harfleri alfabede art arda gelir.
1011 -> L : Bu iki sayı birbirinin yer değiştirilmiş halidir.
1010 -> P : P ve R hatfleri alfabede art arda gelir.
0101 -> R : Bu iki sayı birbirinin yer değiştirilmiş halidir
1110 -> D : Tam 1 (d)eğil'den çıkıyor bu benzetme.
0111 -> Z : (Sıfır) (Zero) ile başlaması.
Not: Bu sayı ve harflerin ezberlenmesi için 1000 tane 0-1'li sayı yazılıp dörder grup haline okunursa çok kısa sürede öğrenilmektedir.
Sonraki kısım ise şöyle çalışıyor.
Dünya şampiyonalarındaki fark genelde hazırlanan büyük kelime listelerinden ve olabildiğince çok fazla sayıyı gruplamaktan geçiyor.
olabildiğince çok fazla sayıyı bir harfle ilişkilendirmektir.
Bu ilişkilendirmeden sonra, bu harflerle anlamlı kelimeler üretip, bunları hayali ilişkilendirme (hikaye yaratma) yöntemi ile ezberlemek kalıyor geriye.
Benim lise yıllarımda geliştiridiğim sayı harf ilişkisi aşağıdaki gibidir. Herkes farklı bir ilişkilendirme izleyebilir. Kişinin kolayına nasıl geliyorsa.
Benim fonetiğe çevirme yöntemimde maksimum 4 sayıya bir harf verildi. 4 veri için toplamda 2'li sistemde 16 grup oluşuyor. Bunları mantıklı ve akılda kalacak şekilde aşağıda açıklamaları ile yazıyorum.
0000 -> S : Tüm sayıların (s)ıfır olmasından kaynaklı
0001 -> Ş : Ş harfinin altındaki kuyruk ve sayının ilk harfinin 1 olması
0010 -> N : Sayının O(N)'u temsil etmesi
0100 -> Y : Sayının (Y)üz'ü temsil etmesi
1000 -> B : Saysının (B)in'i temsil etmesi
0011 -> H : H harfinin iki çubuğunun 11'e benzemesi
1100 -> F : F harfinin iki çubuğunun sayının başındaki 11'i temsil etmesi
1001 -> M : M harfinin iki yanındaki çubukların sayının şeklinde benzetilmesi
0110 -> V : V harfinin ortadan uzanan iki çubuğunun sayının şekline benzetilmesi
1101 -> K : K ve L harfleri alfabede art arda gelir.
1011 -> L : Bu iki sayı birbirinin yer değiştirilmiş halidir.
1010 -> P : P ve R hatfleri alfabede art arda gelir.
0101 -> R : Bu iki sayı birbirinin yer değiştirilmiş halidir
1110 -> D : Tam 1 (d)eğil'den çıkıyor bu benzetme.
0111 -> Z : (Sıfır) (Zero) ile başlaması.
Not: Bu sayı ve harflerin ezberlenmesi için 1000 tane 0-1'li sayı yazılıp dörder grup haline okunursa çok kısa sürede öğrenilmektedir.
Sonraki kısım ise şöyle çalışıyor.
- 101001010100001010101010 rakamını ezberlemek için öncelikle dörtlü gruplar haline inceliyoruz.1010-0101-0100-0010-1010-1010
- Her grubun harfini yerleştiriyoruz. P R Y N L P
- Kelime üretiyoruz. Burada tamamen özgürsünüz. İster iki harfi kullanır bir kelime üretirsiniz, ister üç, ister dört ... PARA, YÜN, LAPA. Tabi burada önemi bir nokta daha bu ezberleme ve çözme işleminde hızlanmak için önceden bir kelime listesi oluşturmanız ve bunları kullanmanız önemli.
- Hikaye: Paralar yünlerin içine karışmıştı. Herkes yünü ayıklayıp paraları Lapa haline getiriyordu.
- Bu hikayeyi kafamızda canlandırtıktan sonra ezberleme işlemi bitmiş oluyor.
- Söylerken tek yapmanız gereken geriye doğru gitmek. Hikayedeki kelimelerden harfleri, harflerden rakamlara dönüşüm yapmak.
Dünya şampiyonalarındaki fark genelde hazırlanan büyük kelime listelerinden ve olabildiğince çok fazla sayıyı gruplamaktan geçiyor.
ElasticSearch Jest Client kullanımı ve LogSearch Web Projesi
ElasticSearch'de JSF uygulamalarımızda nasıl sorgu yapıp sonuçları bir DataTable'da göstereceğimiz bir uygulama yaptım.
ES'den sorgu yapabilmek için RestApi'i kullanan JEST kütüphanesini kullandım. Kodun en önemli kısmının görüntüsünüde paylaştım. Ekran görüntüsünde görüleceği üzere ES query'isini direk bu string'e verdiğimizde bize sonucu dönecektir. Gerisi Model Class'ınız için datayı toparlamakta.
Hatırlatamakta fayda var JEST getHits() metodu geri direk ModelClass'ınızın dönüşünü de yapabilmekte. Yani Map alıp get'lere girmek zorunda değilsiniz. Fakat ben her yaptığımda Null data geldi o sebeple henüz beceremedim o kısmını.
Depo: https://github.com/egcodes/logSearchOnElasticSeach
ES'den sorgu yapabilmek için RestApi'i kullanan JEST kütüphanesini kullandım. Kodun en önemli kısmının görüntüsünüde paylaştım. Ekran görüntüsünde görüleceği üzere ES query'isini direk bu string'e verdiğimizde bize sonucu dönecektir. Gerisi Model Class'ınız için datayı toparlamakta.
Hatırlatamakta fayda var JEST getHits() metodu geri direk ModelClass'ınızın dönüşünü de yapabilmekte. Yani Map alıp get'lere girmek zorunda değilsiniz. Fakat ben her yaptığımda Null data geldi o sebeple henüz beceremedim o kısmını.
Depo: https://github.com/egcodes/logSearchOnElasticSeach
Labels:
ElasticSearch,
Java,
Jsf,
Primefaces,
Tutorial
ElasticSearch - Kibana ile Data Visualization
Bir önceki blog yazısında bir Oracle tablonusu ES makinanıza nasıl indexleyeceğinizi açıklamıştım. Bu yazıda da Kibana kullanarak bu datayı nasıl görselleştirip raporlama ve analiz yapacağınızı anlatacağım.Kurulum
- https://www.elastic.co/downloads/kibana
- Kurulumu aslında yine bir kurulumun olmaması sadece paketi indirip çalıştırdığınızda eğer ES'nin default port'unu değiştirmediyseniz aşağıdaki adresden çalışmaya başlayacaktır. Komut satırında da yazdığı gibi localinizde şu adrese bağlandığınızda karşınıza kibana'nın arayüzü gelecektir.
- http://localhost:5601
Kibana ES Index Table Ayarı
Arayüzde sağ taraftaki resimde görüldüğü gibi Management'a girdiğinizde index'lediğiniz tablolar gelmektedir. Şu ana kadar bir şey indexlemediğinizden burası boş olacaktır. Öncelikle Add New'e basarak index'lediğiniz indexName'i buraya girin. Böylece Kibana DataSet'ini kullanabilecektir. (IndexName ES'de tablo index'lerken kullandığınız ismin aynısı)
Discover sekmesine bastığınızda yukarıdaki görüntüdeki gibi datanın görünmesi gerekiyor. Sağ üst köşeden tarih aralığını genişleterek datasının bir kısmını yada tamamını görebilirsiniz. Burası önemli bir nokta çünkü Date column'una göre datayı göstermektedir. Eğer datanızda bir ay öncesinin date'leri mevcutsa sadece burayı da Last 30 day seçmelisiniz ki datasını gözüksün.
Kibana ile Görselleştirme
Sol tafafta Y-Axis ve hemen altında X-Axis bölümleri bulunmakta.
- Y-Axis için default Count geldiği için buraya karışmıyorum. Bunun dışında Average, Sum, Min, Max.. gibi 10'a yakın daha aggregate fonksiyonları da bulunamakta.
- X-Axis için date aralığı oluşturmamız gerekiyor. Benim index tablolm için günlük olarak Date column'u olan InsertDate'i seçtim.
Ve üst tarafta ok işaretine bastığınızda ekrandaki gibi grafiğim oluştu. Bu oluşturduğunuz grafikleri sonradan Dashboard oluşturuken kulllanacaksınız o yüzden yukarı sağ köşeden Save ile bir isim vererek kaydedin.
Kibana Dashboard
Dashboard oluşturduğunuz tüm grafikleri yerleştirip kullanacabileceğiniz bir arayüz. Sol taraftaki sekmelerden Dashboard'u seçtikten sonra sağ üst köşeden Add butonuna tıkladığnızda daha önce Save ettiğiniz chart'ların isimlerini göreceksiniz bunlara tıkladığınızda otomatikman Dashboard'a
eklenecektir. Daha sonra büyüklük küçüklük ve yerleştirme işlemleri için ayarlamalar kalmaktadır. Sonradan bu Dashboard'u da yine yukarıdan Save ile kaydedip başka bir Dashboard'da yapabilrsiniz.
Netice olarak benim CleanDuplicateLogs index tablom için Dashboard'um şu şekilde gözüküyor.
ElasticSearch 101
Linux sistemleri ve ElasticSearch-5.0.1 version'una göre anlatılmıştır. Bu kılavuz dökümanda hızlıca ElasticSearch kurulumu, WebGui ayarlama ve LogStash ile bir Oracle tablosunu indexleyip sürekli senkronize tutulması anlatılmıştır.
Tar.gz açıldıktan sonra elasticsearch/config/elasticsearch.yml içinde
ElasticSearch indirme, config ayarlama ve çalıştırma
Aşağıdaki adresden .tar.gz uzantılı olan indirilir.- https://www.elastic.co/downloads/elasticsearch
Tar.gz açıldıktan sonra elasticsearch/config/elasticsearch.yml içinde
- cluster.name ve node.name kısımlarının yorumları kaldırılıp cluster ve node'nuza bir isim verilir. Ek olarak ElasticSearch için yazılmış web uygulamalarının da çalışmasını istiyorsanız aşağıdaki config'lerde eklenir
- http.cors.allow-origin: "*"
- http.cors.enabled: true
$ /elasticsearch/bin/elasticsearch altındaki çalıştırılabilir program tetiklenir ve aşağıdaki gibi bir çıktı ile karşılaşmanız gerekir eğer tüm ayarlarınız doğruysa
ElasticSearch Web Gui
Şu adresden plugin indirilip bir yere açılır ve index.html açılır. Tıklandığında aşağıdaki sayfa gelecek ve connect'e bastığımızda yukarıda başlattığımız Elasticsearch'ün default port'una bağlanmış olacak.
- https://mobz.github.io/elasticsearch-head/
LogStash ile OracleDB'den Data Aktarma
ElasticSearch'ün sitesinden logstash indirilip bir yere açılır.
- logstash/bin/logstash -f my.conf komutu ile aşağıdaki config verilir ve elastiscsearch'e index'leme başlar. Bu conf, OracleDB'den data indexlemek için kullanılır. Farklı yerlerden data toplamak için ilgili conf örneklerini internetten bulabilirsiniz.
- Bu conf'un özelliği verilen date için en son timestamp /tmp/logstash-oradb.lastrun altında verilen file'da tutulur böylece tablo sürekli senkron olur ve yeni gelen date'ler sürekli index'lenir.
my.conf içeriği
input {
jdbc {
jdbc_validate_connection => true
jdbc_connection_string => "jdbc:oracle:thin:@10.x.x.80:1522/DB"
jdbc_user => "username"
jdbc_password => "password"
jdbc_driver_library => "/home/x/x/x/ojdbc7.jar"
jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
statement => "SELECT * FROM TABLE WHERE DATA_DATE >= :sql_last_value"
last_run_metadata_path => "/tmp/logstash-oradb.lastrun"
record_last_run => true
schedule => "* * * * *"
}
}
filter {
}
output {
elasticsearch {
index => "myIndexName"
}
}
input {
jdbc {
jdbc_validate_connection => true
jdbc_connection_string => "jdbc:oracle:thin:@10.x.x.80:1522/DB"
jdbc_user => "username"
jdbc_password => "password"
jdbc_driver_library => "/home/x/x/x/ojdbc7.jar"
jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
statement => "SELECT * FROM TABLE WHERE DATA_DATE >= :sql_last_value"
last_run_metadata_path => "/tmp/logstash-oradb.lastrun"
record_last_run => true
schedule => "* * * * *"
}
}
filter {
}
output {
elasticsearch {
index => "myIndexName"
}
}
Slurm Ayrıntılı Kurulumu Ve Konfigürasyonu
İçerik
|
Nedir
Slurm süper bilgisayar merkezlerinin kullandığı bir kaynak yönetim yazılımıdır. Çalıştırılacak paralel çalışan programların uygun şekilde bilgisayarlar arasında dağımıtımını, kontrolünü ve izlenmesini sağlar.Slurmctld isimli bir adet ControlMachine üzerinde çalışan Slurm Controller, Compute Node'lar üzerinde çalışan Slurmd Daemon'ı ve bunların iletişiminin şifrelenmesini ve yetkilendirilmesini sağlayan munge isimli servisten oluşmaktadır.
İş teslimi için makina üzerinde munge servisi olmalıdır. Srun, sbatch komutları ile iş teslimi yapılır. İş SlurmController'a gider ve burdan Slurm Daemon'lara dağıtılır. Slurm'da iş yönetimi kısaca bu şekilde yapılır. Aşağıdaki şablon Slurm çalışma sistemini kısaca özetler.
Kurulum
Not 1: Kurulum CentOs sistemler için anlatılmıştırNot 2: Kurulum yaparken sabit bir dizin belirlenmiştir
- Munge: Slurm için lazım olan Authentication Plugin'i indirilir ve kaynaktan aşağıdaki şekilde kurulur. Slurm'la iş gönderilecek makinada mutlaka munge aynı anahtara sahip olacak şekilde kurulmalıdır.
- http://munge.googlecode.com/ adresinden indirilir.
- Munge için şu paketlerin sistemde kurulu olması gerekir.
yum install gcc make perl openssl-devel.x86_64 ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/varmakemake install- munge.key oluştumak için aşağıdaki komuttan yararlanılır.
echo -n "slurm" | sha1sum | cut -d' ' -f1 > /etc/munge/munge.key- Ayrıca munge.key için izinler ayarlanır.
chown daemon /etc/munge/munge.keychmod 700 /etc/munge/munge.key
- Ayrıca munge.key için izinler ayarlanır.
- Son olarak aşağıdaki komutu verip lib dosyalarını cacheliyoruz.
ldconfig
- Slurm https://computing.llnl.gov/linux/slurm/download.html adresinden aşağıdaki şekilde kurulur.
- (Database isteniyorsa)Şu paketler sistemde kurulu olmalı mysql-server ve mysql-devel
- (Sview arayüz isteniyorsa) Şu paket sistemde kurulu olmalı gtk2-devel.x86_64
./configure --prefix=/opt/slurm/ --with-mysql_config=/usr/bin/makemake install
Konfigürasyon ve Çalıştırma
Slurm Konfigürasyonu için şu adresden otomatik olarak oluşturulup /opt/slurm/etc/slurm.conf içine yazılır ya da aşağıdaki örnekten yararlanılabilir. :http://www.schedmd.com/slurmdocs/configurator.html# slurm.conf file generated by configurator.html.
# Put this file on all nodes of your cluster.
# See the slurm.conf man page for more information.
#
ControlMachine=
BackupController=
#ControlAddr=
#BackupAddr=
#
AuthType=auth/munge
CacheGroups=0
#CheckpointType=checkpoint/none
CryptoType=crypto/munge
#DisableRootJobs=NO
#EnforcePartLimits=NO
#Epilog=
#EpilogSlurmctld=
#FirstJobId=1
#MaxJobId=999999
#GresTypes=
#GroupUpdateForce=0
#GroupUpdateTime=600
#JobCheckpointDir=/var/slurm/checkpoint
#JobCredentialPrivateKey=
#JobCredentialPublicCertificate=
#JobFileAppend=0
#JobRequeue=1
#JobSubmitPlugins=1
#KillOnBadExit=0
#LaunchType=launch/slurm
#Licenses=foo*4,bar
#MailProg=/bin/mail
#MaxJobCount=5000
#MaxStepCount=40000
#MaxTasksPerNode=128
#MpiDefault=none
MpiParams=ports=12000-12999
#PluginDir=
#PlugStackConfig=
#PrivateData=jobs
ProctrackType=proctrack/linuxproc
#Prolog=
#PrologSlurmctld=
#PropagatePrioProcess=0
#PropagateResourceLimits=
#PropagateResourceLimitsExcept=
#RebootProgram=
ReturnToService=2
#SallocDefaultCommand=
SlurmctldPidFile=/var/run/slurmctld.pid
SlurmctldPort=6817
SlurmdPidFile=/var/run/slurmd.pid
SlurmdPort=6818
SlurmdSpoolDir=/var/spool/slurmd
SlurmUser=root
#SlurmdUser=root
#SrunEpilog=
#SrunProlog=
StateSaveLocation=/var/spool
SwitchType=switch/none
#TaskEpilog=
TaskPlugin=task/none
#TaskPluginParam=
#TaskProlog=
TopologyPlugin=topology/tree
#TmpFs=/tmp
#TrackWCKey=no
TreeWidth=250
#UnkillableStepProgram=
#UsePAM=0
#
#
# TIMERS
#BatchStartTimeout=10
#CompleteWait=0
#EpilogMsgTime=2000
#GetEnvTimeout=2
#HealthCheckInterval=0
#HealthCheckProgram=
InactiveLimit=0
KillWait=30
MessageTimeout=10
#ResvOverRun=0
MinJobAge=300
#OverTimeLimit=0
SlurmctldTimeout=120
SlurmdTimeout=300
UnkillableStepTimeout=60
#VSizeFactor=0
Waittime=0
#
#
# SCHEDULING
#DefMemPerCPU=0
FastSchedule=0
#MaxMemPerCPU=0
#SchedulerRootFilter=1
#SchedulerTimeSlice=30
SchedulerType=sched/builtin
SchedulerPort=7321
SelectType=select/cons_res
#SelectTypeParameters=CR_CPU
#
#
# JOB PRIORITY
#PriorityType=priority/basic
#PriorityDecayHalfLife=
#PriorityCalcPeriod=
#PriorityFavorSmall=
#PriorityMaxAge=
#PriorityUsageResetPeriod=
#PriorityWeightAge=
#PriorityWeightFairshare=
#PriorityWeightJobSize=
#PriorityWeightPartition=
#PriorityWeightQOS=
#
#
# LOGGING AND ACCOUNTING
#AccountingStorageEnforce=0
AccountingStorageHost=
AccountingStorageLoc=slurmAcctDb
AccountingStorageUser=root
AccountingStoragePass=/var/run/munge/munge.socket.2
AccountingStorageType=accounting_storage/slurmdbd
AccountingStoreJobComment=YES
#
JobCompHost=
JobCompLoc=slurmAcctDb
JobCompUser=root
JobCompPass=/var/run/munge/munge.socket.2
JobCompType=jobcomp/filetxt
#
JobAcctGatherFrequency=30
JobAcctGatherType=jobacct_gather/linux
#
#
SlurmctldDebug=3
SlurmctldLogFile=/var/log/slurmctld
SlurmdDebug=3
SlurmdLogFile=/var/log/slurmd
#SlurmSchedLogFile=
#SlurmSchedLogLevel=
#
#
# POWER SAVE SUPPORT FOR IDLE NODES (optional)
#SuspendProgram=
#ResumeProgram=
#SuspendTimeout=
#ResumeTimeout=
#ResumeRate=
#SuspendExcNodes=
#SuspendExcParts=
#SuspendRate=
#SuspendTime=
#
ClusterName=orion
#
# COMPUTE NODES
NodeName=a1-a10 CPUs=2 State=UNKNOWN
NodeName=a11-a20 CPUs=4 State=UNKNOWN
#shortMaxTime 3 saat, longMaxTime 1 hafta
PartitionName=short Nodes=a[1-10] MaxTime=180 State=UP Default=Yes AllowGroups=slurm
PartitionName=mid Nodes=a[11-20] MaxTime=3-0:0:0 State=UP AllowGroups=slurm
Slurm database için /opt/slurm/etc/slurmdbd.conf içine şu dosyadaki konfigürasyon yazılır.
# Sample /etc/slurmdbd.conf
#
ArchiveEvents=yes
ArchiveJobs=yes
ArchiveSteps=no
ArchiveSuspend=no
#ArchiveScript=/usr/sbin/slurm.dbd.archive
AuthInfo=/var/run/munge/munge.socket.2
AuthType=auth/munge
DbdHost=
DbdBackupHost=
DebugLevel=4
PurgeEventAfter=1month
PurgeJobAfter=12month
PurgeStepAfter=1month
PurgeSuspendAfter=1month
LogFile=/var/log/slurmdbd.log
PidFile=/var/run/slurmdbd.pid
SlurmUser=root
StoragePass=
StorageType=accounting_storage/mysql
StorageUser=root
StorageLoc=slurmAcctDb
Çalıştırma
- Öncelikle authentication programı aşağıdaki komut ile çalıştırılmalıdır.
- service munge start
- Slurm controller ve daemon aşağıdaki şekilde yapılandırılmalıdır. Slurm'un init.d betiği Slurm'un kaynak dosyası içersindeki etc dizininde mevcuttur. Buradan alınıp /etc/init.d/slurm ismi ile kopyalanır ve aşağıdaki değişiklikler yapılarak slurm servisi hazır hale getirilir.
- cp slurm/etc/init.d.slurm /etc/init.d/slurm
- cp slurm/etc/init.d.slurmdbd /etc/init.d/slurmdbd
- /etc/init.d/slurm ve slurmdbd dosyalarını açıp aşağıdaki değişkenleri(exec_prefix ve prefix) tanımlayalım. Eğer BINDIR,CONFDIR.. bir yanlışlık var ise aşağıdaki gibi yapalım.
- exec_prefix=/opt/slurm
- prefix=/opt/slurm
- Servis başlatılır ve bilgisayar her açıldığında çalışacak şekilde ayarlanır.
- service slurm start
- service slurmdbd start
- Ve servisler başlangıçta açılacak şekilde ayarlanır
- chkconfig --level 345 slurm on
- chkconfig --level 345 slurmdbd on
- chkconfig --level 345 munge on
İş Gönderme
- İnteraktif olarak iş göndermek için basit bir helloWorld mpi işi internetten bulunup derlenip aşağıdaki şekillerde gönderilir.
- srun -N 10
mpijob sbatch job.slurm
İş gönderme ve Slurm kullanımı ile ilgili ayrıntıları bir dahaki yazımda açıklamak üzere
Semantic-MediaWiki Eklentisi
Dünyanın bilgi birikiminin bulunduğu dev ansiklopedi wikipedia.org, arka planda bu web sitesini yönetmek için MediaWiki özgür yazılımını kullanır. (Ayrıntılı bilgi: mediawiki.org.)
MediaWiki bilgiyi kullanıcılarla paylaşmada son derece yeteneklidir. Fakat iş bu dev bilgi ağının içerisinden bazı detay bilgileri çekmeye geldiğinde MediaWiki eksik kalmaktadır.
Bu sebeple, geleceğin web standartı denilen semantic web eklentisi yardımımıza koşmaktadır. SemanticMediaWiki (semantic-mediawiki.org) ile sonradan hızlıca çekmemiz gereken bu detay bilgiler için özel yapılar (property) tanımlanır. Ve daha sonra bunları aynı sql sorgusu yapar gibi istediğimiz wikipedia sayfasından çekebiliriz.
Bu anlattıklarım ile ilgili aşağıda hızlıca göz atabileceğiniz örnek template, form ve property'ler var. Ve semantic sorgu ile bunları nasıl alıp gösterebileceğimiz.
Sonuç olarak ortaya çıkacak semantic-mediawiki destekli kategori sayfası

Örnek Template (Rapor tutulması için kullanılacak template)
Örnek Form (Rapor girilebilmesi için oluşturulan form)
Örnek Kategori Sayfası (Raporları zaman çizgisinde ve tablolar halinde görmek için)
MediaWiki bilgiyi kullanıcılarla paylaşmada son derece yeteneklidir. Fakat iş bu dev bilgi ağının içerisinden bazı detay bilgileri çekmeye geldiğinde MediaWiki eksik kalmaktadır.
Bu sebeple, geleceğin web standartı denilen semantic web eklentisi yardımımıza koşmaktadır. SemanticMediaWiki (semantic-mediawiki.org) ile sonradan hızlıca çekmemiz gereken bu detay bilgiler için özel yapılar (property) tanımlanır. Ve daha sonra bunları aynı sql sorgusu yapar gibi istediğimiz wikipedia sayfasından çekebiliriz.
Bu anlattıklarım ile ilgili aşağıda hızlıca göz atabileceğiniz örnek template, form ve property'ler var. Ve semantic sorgu ile bunları nasıl alıp gösterebileceğimiz.
Sonuç olarak ortaya çıkacak semantic-mediawiki destekli kategori sayfası

Örnek Template (Rapor tutulması için kullanılacak template)
This is the "Report" template.
It should be called in the following format:
{{Report
|Date=
|Personnel=
|Keywords=
}}
Edit the page to see the template text.
{| class="wikitable"
|-
! Date
| [[Has date::{{{Date|}}}]]
|-
! Personel
| {{#arraymap:{{{Personnel|}}}|,|x|[[Is assigned to::x]] }}
|-
! Keywords
| [[Has keywords::{{{Keywords|}}}]]
|}
[[Category:Report]]
Örnek Form (Rapor girilebilmesi için oluşturulan form)
;Başlangıç
* Rapor ismini, aşağıdaki "Rapor id"yi bir arttırarak giriniz.
'''En son olusturulan Rapor id:'''
{{#ask:[[Category:Report]]
| order=desc
| limit=1
}}
{{#forminput:form=Report}}
{{{for template|Report}}}
{| class="formtable"
! Date:
| {{{field|Date}}}
|-
! Personnel:
| {{{field|Personnel}}}
|-
! Keywords:
| {{{field|Keywords}}}
|}
{{{end template}}}
'''Free text:'''
{{{standard input|summary}}}
{{{standard input|minor edit}}} {{{standard input|watch}}}
{{{standard input|save}}} {{{standard input|preview}}} {{{standard input|changes}}} {{{standard input|cancel}}}
Örnek Kategori Sayfası (Raporları zaman çizgisinde ve tablolar halinde görmek için)
This category uses the form [[Has default form::Report]].
''' Zaman Çizgisi '''
{{ #ask: [[Category:Report]]
| ?Has date#Has date=Rapor Tarihi
| ?Is assigned to#Is assigned to=Sahibi
| ?Has keywords#Has keywords=Anahtar Kelimeler
| format=timeline
| timelinebands=WEEK,MONTH
| limit=100
}}
''' Raporlar '''
{{#ask: [[Category:Report]]
| ?Has date#Has date=Rapor Tarihi
| ?Has keywords#Has keywords=Anahtar Kelimeler
| ?Is assigned to#Is assigned to=Sahibi
| format=broadtable
| sort=Has date
| order=desc
| limit=20
}}
PXE Boot ve Pardus
Ağustos ayında staja başladığım Pardus'da projem PXE Boot ile Pardus kurulumu. Kısaca nedir diye soracak olursanız, PXE Boot, linux sistemlerinin ağ üzerinden kurulumunu sağlayan bir sistem.
Bu olayı yapabilmek için bir server bilgisayarımız ve bir de kurulumun yapılacağı client bilgisayarı lazım.
Server tarafı
Öncelikle server ile client arasındaki bağlantıyı sağlayabilmek için Pardus programcılarının geliştirdiği PTSP(Pardus Terminal Server Project) kurulumu ve ayarları yaparak server'i başlangıç için hazır hale getiriyoruz. Gerekli dökümantasyon bu adresde bulunuyor. (http://tr.pardus-wiki.org/NASIL:PTSP). Burda yazılanlara ek olarak benim başıma gelen olaydan çıkarak şu uyarıyıda yapayım. Bağlantı kurarken Firewall'ınızı kapatmayı unutmayın ya da UDP 63. porttaki alışverişe izin verin.Sonraki adım olarak PTSP kurulumdan sonra root dizini altında /tftpsptp/pts isimli bir klasör ve onun içindede kernel, initramfs ve diğer ayar dosyaları oluşacaktır. Eğer bunlar var ise kurulum başarılı olmuştur. PTSP dökümanında söylenen dhcp, tftp, nfs-server, rpcbind servisleri çalıştırılırsa bağlantı için herşey hazır demektir.
Client tarafı
Client tarafındaki makinamazın PXE Boot özelliğini barındıran bir bilgisayar olması yeterlidir. Ayrıca sanal makine ile de bu olayı deniyebilirsiniz. Ben VirtualBox ile denemelerimi yaptım. Ayarlar kısmından network ayarlarında ağ arayüzü olarak bridge kısmı ve ağ kartı olarak pci III seçilmeli, boot seçeneği olarak network seçilmesi yeterlidir.
PXE Boot'un çalışma mantığına kısaca değinecek olursak.
- Client çalıştığında dhcp istemcisi ağ'a ip adresi isteyen paketler gönderir.
- Server bu paketi alır ve kendi üzerinde çalışan dhcp servisi ile belirtiğimiz aralıktaki bir ip adresini client'a yolar.
- Client ip adresine ve server kısmında PTSP ayarlarını yaparken dhcp.conf dosyası içinde tanımladığımız filename = /pts/latest-ptsp/pxelinux.0 tanımınada sahip olur.
- Client filename tanımında ki adresden üzerindeki tftp uygulaması ile bu dosyayı çeker ve pxelinux.0 içindeki ayarlar doğrultusunda kernel ve initramfs'i server'dan çekip RAM'e yazar ve boot işlemini başlatır.
Kernel çalıştığında kendi içerisindeki olayları tamamladıktan sonra RAM'e yüklenen initramfs'i kök dosya sistemi olarak bağlar. Initramfs küçük bir linux dağıtımı gibi içinde /bin, /etc ... ve init betiğini bulunduran bir dosya sistemi.
Daha sonra İnitramfs kendi içinde bulunan init betiğini çalıştırarak gerekli donanımları yükler
İşte bundan sonrası init betiğinin içinde olacaklar ve projenin bir özelliği olan istediğimiz iso'yu seçip kurma bölümü burda başlıyor. Projede şu an yaptığımız client tarafında pxebootselect isimli C ile yazılmış bir uygulama ile serverdan aldığımız xml'i parse edip menü ile kullanıcıya göstermek ve seçilen iso doğrultusunda serverdan iso'yu mount etmek.
Gerisi normal Pardus kurulumu. İleriki yazılarımda server tarafında yazdığım program ve konfigurasyon üzerine daha çok bilgi verecem ama önce benim de öğrenmem gerekiyor :)
Subscribe to:
Posts (Atom)

































