37
DÜZCE ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜH. BÖLÜMÜ BM 399 - Staj Raporu Teslim eden: İsim Soy isim : Oğuz ÖZKARACA Numara : 110101003038 Kuruluşun İsmi ve Yeri: : Türkiye Vagon Sanayi A.Ş Sakarya, Türkiye Staj Tarihleri : 07.07.2014-13.08.2014 Temmuz 2014 0

oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

  • Upload
    vuthuy

  • View
    254

  • Download
    2

Embed Size (px)

Citation preview

Page 1: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

DÜZCE ÜNİVERSİTESİ

MÜHENDİSLİK FAKÜLTESİ

BİLGİSAYAR MÜH. BÖLÜMÜ

BM 399 - Staj Raporu

Teslim eden:

İsim Soy isim : Oğuz ÖZKARACA

Numara : 110101003038

Kuruluşun İsmi ve Yeri: : Türkiye Vagon Sanayi A.Ş

Sakarya, Türkiye

Staj Tarihleri : 07.07.2014-13.08.2014

Temmuz 2014

0

Page 2: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

İçindekiler Tablosu1.Giriş 2

2.Şirket Hakkında Bilgi 22.1 Şirket Profili 22.2 Kuruluşun Bilgisayar Bölümünün görev yapısı 3

3. PROJENİN VE YAPILACAK OLAN İŞİN TANIMI4

3.1 Amaç 43.2 Tanım 4 3.2.1 Big Data nedir 4

3.2.2 Linux Nedir 6

3.2.3 Süreç ve İşleyiş 7

4. Proje ve Yapılacak İş 8

4.1 Amaç 84.2 Tanım 8

4.2.1 Hadoop nedir 9

4.3 Gereksinim ve ihtiyaçlar 12

4.4 Analiz 12

4.5. Gelişim Süreci 13

4.6. Test ve Uygulama 19

4.7 Proje sonucu 20

5.Sonuç 21

6.Kaynak 22

7.Ekler 29

1

Page 3: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

1.Giriş

Staj TÜVASAŞ Bilgi İşlem Dairesinde 25 iş günü olarak yaptım. Tüvasaş’ta yaklaşık 1000 personel bulanmaktadır. Bu sayı ve şirketin yaptığı işler göz önüne alındığında birçok kayıt bulunmakta ve bunların 10 yıl kadar saklanması gerekmektedir. Şirkette her geçen gün artan verilerin işlenmesi, depolanması giderek zorlaşmaktaydı. İstenilen veriye ulaşmak çok zaman alıyordu. Bunlara çözüm getirmek amacıyla bir yazılım projesine başladım.

Projemiz; Hadoop yazılımını kullanarak büyük veriler üzerinde işlem yapmayı amaçlar. Apache Hadoop açık kaynak kodlu bir frameworktür. Hadoop birkaç modülden oluşmaktadır. Bizim projemizde Hadoop Distributed File system (HDFS) ve MapReduce modülleri kullanılacaktır.

Projemizin planı Hadoop’un 3 bilgisayara yüklenmesini ve bunlar üzerinde çalıştırılmasıdır. İlk önce Hadoop projemizin gereksinimi olarak 3 farklı bilgisayara Linux işletim sistemi yüklenmesi gereklidir. Linux işletim sistemlerinden Ubuntu 12.04 projemize en uygun olanıdır. Bunun için 3 bilgisayara Ubuntu işletim sistemi yüklenecektir.

Daha sonra bilgisayarlarımıza gerekli programlar kurulacaktır. Bu gerekli programlardan bazıları Java jdk ve Hadoop dosyalarıdır. 3 bilgisayara Hadoop 1.2.1 sürümü yüklendikten sonra IP ayarları ve Hadoop konfigürasyonu yapılıp ana (master) makinadan diğer bilgisayarlara ulaşılması sağlanacaktır. HDFS ve MapReduce sayesinde NameNode, DataNode, JobTracker, TaskTracker a ulaşılması istenmektedir. Son olarak Büyük veriler üzerinde işlem yapma, analiz etme ve hız test etme hedeflenmektedir.

2. Şirket Hakkında Bilgi

2.1 Şirket Profili

Kuruluşun ismi: Türkiye Vagon Sanayi Anonim Şirketi

Kuruluşun adresi: Milli Egemenlik Caddesi No:123 Adapazarı / Sakarya

Faaliyet alanları: Vagon Üretimi, Tamiratı, Modernizasyonu, Bakım ve Onarımı

Kuruluşun Kısa Tarihçesi;

Kurucusu: Devlet

Kuruluş Yeri: Sakarya – Adapazarı

Kuruluş tarihi:

25 Ekim 1951 tarihinde “Vagon Tamir Atölyesi”

1986 yılında “Türkiye Vagon Sanayi Anonim Şirketi”

Kuruluşta çalışanların toplam sayısı:1076

2

Page 4: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

Kuruluşun Bilgisayar Bölümünde çalışanların sayıları;

Bilgisayar Mühendisi:1

Bilgisayar teknisyeni:2

İdari Personel: 6

Kuruluşun Bilgisayar Bölümünün görev yapısı

Bilgi İşlem Dairesi Başkanlığı

Yazılım Ağ ve Sistem Donanım I Donanım II

Şirketin Bilgisayar Bölümünün Son Çıkan Ürünleri:

ERP(Süreç Takibi) : Elektronik belge yönetim sistemi (iç dış yazışmalar)

ARPY(AR-GE proje takip ve süreç programı), demirbaş programları, Personel takip sistemi.

Şirkette Bulunan Bilgisayar ve Diğer Donanım Miktarları:

i. 400 Bilgisayarii. 15 Özel Bilgisayar

iii. 150 Yazıcı iv. 50 Tarayıcıv. 10 Barkod okuyucu ve Yazıcı

Kuruluş bir yaz döneminde kabul Ettiği Stajyer sayısı: 400

Kuruluş ile iletişime geçilmek istendiğinde Bağlantı Kurulacak Kişinin;

Adı: Hüseyin

Soyadı: ŞARKIŞLA

Şirketteki Pozisyonu: Bilgisayar Mühendisi

Telefon numarası: 0264 275 1660/3266

E-Posta adresi: [email protected]

Kuruluşun web sitesi: http://www.tuvasas.com.tr/

3

Page 5: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

3. PROJENİN VE YAPILACAK OLAN İŞİN TANIMI

3.1 Amaç

Bilgi İşlem dairesinde şirketin ihtiyaçları ve çıkarları doğrultusunda proje geliştirmek

amaçlanmaktadır. Teknoloji yakından takip edilmekte en güncel sürümler kullanılmaktadır.

Sorunları en kısa sürede gidermek çok önemlidir. Çözüm üretmek ve sürekli iyileştirmek temel

amaçları arasındadır.

Şirkette birçok veri tutulmaktadır. Bu veriler şirketin kendi sunucuları tarafından

saklanmakta. Her geçen gün artan bu veri yığınlarının depolanması giderek zorlaşmaktadır. Bu

verilerin depolanması yanında; verilerin işlenebilir biçime dönüştürülmesi ve daha hızlı

sonuçlara ulaşılması istenmektedir. Bu Veri analizi ilişkisel veri yapıları bizi big data’ya

götürdü. Big data alanında ki yazılımlardan Apache Hadoop kullanılacaktı.

Projemizin amacı Apache Hadoop’u yükleme, çalıştırma, analiz ve test etme

aşamalarından oluşuyor. Ülkemizde ve dünyada Hadoop için kaynak çok az olduğundan ilk

önce kapsamlı bir araştırma amaçlanmaktadır. Proje için 3 bilgisayar temin edilmektedir. Bu 3

bilgisayara Hadoop için en uygun işletim sistemi kurmak amaçlanmaktadır. 3 bilgisayarı

birleştirip bir küme(cluster) oluşturmak ve verileri bunlar üzerinde işlemek projemizin

hedefidir.

Hadoop ilk önce Single Node cluster üzerinde çalıştırılacaktır(yani tek makinada). Daha

sonra sürekli olarak Multi Node Cluster üzerinde (3 makinada) çalıştırılacak test edilecektir.

Projemizin büyük bir kısmı; Java ile yazılmış WordCount fonksiyonunun Hadoop Multi Node

Cluster üzerinde çalıştırılması ile geçecektir. WourdCount fonksiyonu kelime sayacı olarak

çevrilebilir. Wourcount fonksiyonu metin dosyalarımızda ki kelimeleri saymayı sağlar. Her

kelimeden kaç tane var bize bu çıktıyı verir. Biz projemizde 3 metin belgesi kullandık. Her bir

metin dosyası içinde binlerce cümle var. Bu metin dosyalarını WourdCount.jar sayesinde

Hadoop Multi Cluster ‘da çalıştırmak ve metin belgelerimizi analiz etmek istedik.

3.2 Tanım

3.2.1 Big Data nedir

Geçmişten günümüze kadar gelen süre içerisinde bilgi günden güne artmıştır hatta son yıllarda katlanarak günümüze gelmiştir[1]. Bunun sonucunda "Bilgi Çöplüğü" diye tabir ettiğimiz olgu gün yüzüne çıkmıştır[1].Birçok yazılım şirketleri bu konuyla ilgili Ar-Ge

4

Page 6: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

çalışmaları yaptıktan sonra Big Data(Büyük Veri) olgusu karşımıza çıkmıştır[1]. Büyük veri; toplumsal medya paylaşımları, ağ günlükleri, bloglar, fotoğraf, video, log dosyaları v.b. gibi değişik kaynaklardan toparlanan tüm verinin, anlamlı ve işlenebilir biçime dönüştürülmüş biçimine denir[1]. Artık gereksiz ve çöp bilgi diye bir şey yoktu. Her bilgi değerliydi.

Büyük veri, doğru analiz metotları ile yorumlandığında şirketlerin stratejik kararlarını doğru bir biçimde almalarına, risklerini daha iyi yönetmelerine ve innovasyon yapmalarına imkân sağlayabiliyor[1].

“Büyük veri, geleneksel veritabanı araçları ve algoritmaları ile işlemsi zor olan bu büyük verinin oluşturulması, saklanması, akışı, analiz edilmesi gibi birçok konuyu içeren bir terim olarak karşımıza çıkmaktadır. Veriler klasik veritabanlarının kaldıramayacağı büyüklükte olduğu gibi verinin büyüme hızı da bir bilgisayar veya bir veri depolama ünitesini aşmaktadır. 2012 rakamları ile dünyada günlük 2.5 Kentirilyon byte veri üretilmektedir. Bu çapta büyük veriyi işleme, transfer etme gibi işlerin tümüne Büyük veri (Big Data) adı verilmektedir[1].”

2000 yılında tüm dünyada 800,000 petabyte büyüklüğünde veri saklandı. 2020 yılında bu verinin 35 zetabyte olacağı tahmin ediliyor. Facebook, Twitter, Yahoo ve Google uzun süredir Big data kavramıyla uğraşmaktadır. Örneğin Twitter her gün 7 TB, Facebook 10 TB ve bazı kurumlar her gün her saat TB’larca veri saklıyor[2]. Big datayı en çok kullanan şirketlerden biride Google. Google her saat başı yaklaşık 1 perabyte veri işliyor.

Şekil 3.2.1.1 Google sunucularından bir kare. Big Datayı geliştiren ve en çok kullanan şirketlerin başında Google geliyor.

5

Page 7: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

Büyük Verinin Uygulandığı Örnekler

İnternet kullanımının yaygınlaşması ve herkesçe kullanılabilir olması yaşantımızı giderek değiştirdi.[1]. Artık ödemelerimizi internetten, alışverişimizi bir e –ticaret sitesinden, yapabiliyoruz.[1]. Dosyalarımızı, resimlerimizi bir bulut servisinde depolarken, akıllı telefonlarımızda tüm sosyal platformlarda gezinebiliyoruz.[1].

Böyle Değişen ve Globalleşen dünyada kişilerin bilgileri çok kıymetlendi. İnsanların internette yaptığı her bir şeyin değeri artıyordu.[1]. Bu verilerin önemini fark eden şirketler her türlü bilginin alınıp saklanması ve onları anlamlı hale getirmeye çalıştı.

İşletmeler; müşterilerini daha iyi tanıyıp, onlara "bireyselleştirilmiş - kişiye özel" hizmetleri sunabilmek için onlarla ilgili çok sayıda bireysel bilgiyi saklamak durumunda kalmaktadır.[1]

Hükümetler; yurttaşlarına yönelik bilgi ve hizmetleri işleyip, saklama konusunda oluşan çok büyük ölçekli veri ile çalışmak zorundadırlar.[1]. Örneğin, RTÜK kararları gereği, ülkemizdeki televizyon kanallarının son bir yıllık yayınlarını saklama zorunluluğu var. Saklanacak bilgiler, "Büyük Veri" olarak tanımladığımız türden.[1]

Bankalar, müşterileriyle ilgili olarak toplayıp sakladıkları bilgiler yoluyla, kullanıcısını tanıyan, internet şubesine o gün ne için girdiğini bilen ve buna göre ana sayfayı, menüyü en etkin hale getiren, müşterisine hatırlatmalar yapan, özelleştirilebilir arayüzler sunan, zengin içerikli, hızlı ve kullanışlı bir 7/24 şube haline geldi.[1]

Enerji firmaları, akıllı şebeke ve sayaçlar kullanarak, abonelerinin bireysel kullanımlarıyla ilgili oluşan verileri, saklayıp, işlemek durumundalar.[1].İlaç sanayisinde; örneğin "kanser araştırmaları" için oluşturulan büyük genomik veritabanları, araştırmacıların sürekli erişimine açık olmak durumundadır.[1]

Sosyal Medya Araçları: Facebook, Twitter, Google, Yahoo gibi toplumsal medya ortamları tam bir veri deposuna dönüştü. Buradaki veriler çok büyük boyutlardaydı. Şirket müşterilerine en iyi hizmeti verebilmek için ve daha çok müşteriye hitap edebilmek için bu verileri anlamlı hale getirmeye çalıştı. Bu sosyal platformların büyük verinin öncüleriydi

Ek olarak; Uydu/Harita Dizgeleri (GPS), Akıllı Gezgin Telefonlar (GSM), çok yüksek çözünürlüklü fotoğraflar çekebilen yeni nesil kameralarla üretilen, ses ve görüntü bilgileri big data kullanılarak saklanmaktadır[1].

3.2.2 Linux Nedir

Projemizde Apache Hadoop geliştirilirken Linux işletim sisteminide çok iyi bilmemiz gerekir. Linux işletim sisteminin birçok özelliği vardır. Onlara şöyle bir bakar isek

Linux ;

6

Page 8: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

 “Unix’e fikirsel ve teknik anlamda atıfta bulunarak geliştirilmiş; açık kaynak kodlu, özgür ve ücretsiz bir işletim sistemi çekirdeğidir[2]. Çekirdeğin kaynak kodları GNU Genel Kamu Lisansı çerçevesinde özgürce dağıtılabilir, değiştirilebilir ve kullanılabilir[2]. Linux ismi ilk olarak Linus Torvalds tarafından yazılan ve 5 Ekim 1991 Linux 0.02 etiketiyle duyurusu yapılan, Linux çekirdeğinden gelmektedir[2]. Linux'un Unix ile herhangi bir kod ortaklığı bulunmamaktadır yani Linux'un kodları sıfırdan başlanılarak yazılmıştır.” [2]

“Çok geniş bir donanım desteğine sahip olan  Linux çekirdeği Sunucu bilgisayarlar, masaüstü-dizüstü bilgisayarlar, iş istasyonları, akıllı telefonlar, yeni nesil TV'ler ve tabletler gibi hemen her platformda tam bir uyum içerisinde çalışabilmektedir[2]. Linux sunucu işletim sistemlerinde kullanım oranı bakımından ilk sırada tercih edilmekte ve dünyanın 10 hızlı süper bilgisayarında da kullanılmaktadır.” [2]

3.3 SÜREÇ ve İŞLEYİŞ

Proje süreci ilk başta 3 bilgisayarın temin edilmesi ile başladı. Daha sonra 3 bilgisayara Linux işletim sistemleri yüklenmeli idi. Projemiz için en uygun işletim sitemi Ubuntu 12.04 olduğundan o tercih edildi. Linux terminal üzerinden gerekli programlar ve yazılımlar yüklendi. Güncellemeler, dosya izinleri vb. ayarlar terminalden yapıldı.

Kapsamlı bir araştırma sonucu Hadoop hakkında yeterince bilgiye ulaşıldı. Gerekli donanıma sahip olduğumuzu anladıktan sonra Hadoop yazılımının 3 bilgisayara kurulma süreci başladı. Daha sonra ki süreç Hadoop konfigürasyonlarının yapılması ve ana makine (master) da Single node oluşturulmasıydı.

Master da single node oluşturulduktan sonra 2. Makine (slave1 ) ve 3. Makine (slave 2) yardımı ile multi node cluster oluşturulma adımları izlenecektir.

7

Page 9: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

Şekil 3.3.1 Projenin yürütüldüğü 3 bilgisayarı göstermektedir. Bilgisayar isimleri Hadoop projesine özel olarak verilmiştir.(makine isimleri : master, slave1 ve slave2)

4. Proje ve Yapılan İş

4.1 Amaç

Apache Hadoop ile büyük veriler üzerinde işlem yapmak projenin temel amacıdır. Verileri daha hızlı işlemek, anlamsız verilerden anlamlı parçalar oluşturmak istenmektedir. Gerektiğinde bir kelimeden bir web sitesinde kaç tane olduğu hesaplanacak. Gerektiğinde belirli bir İP yi kullanan kullanıcıların sayısı hesaplanacaktır. Netbeans ide’si yardımı ile

8

Page 10: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

ihtiyaca göre kodlar yazılıp Hadoop sistemi üzerinde çalıştırılacaktır. Bizde Wordcount fonksiyonu ile kelime sayacı programımızı çalıştırıp test edeceğiz.

4.2 Tanım

4.2.1 Hadoop nedir

Apache Hadoop Java ile yazılmış bir açık kaynak kodlu bir frameworktür. Sıradan sunuculardan (commodity hardware) oluşan küme (cluster) üzerinde  büyük verileri işlemeye yarar.

“Hadoop nasıl başladı?” sorusunun cevabı bizi Nutch isimli Apache projesine götürür[3]. Nutch’ın temelleri ise Google arama motoru yapmak için işe başlandığında bunun en hızlı şekilde yapabilmesi için GFS ve MapReduce teknolojilerinin yayınlaması ile atıldı”[3]

 Hadoop Projesi 4 modülden oluşmaktadır

• Hadoop Common: Bütün Hadoop modüllerini destekleyen ortak modüldür.

• Hadoop Distributed File System (HDFS) : Dağıtık yani birden çok bilgisayar üzerinde çalışan bir dosya sistemidir ve uygulama verilerinin kaydedilmesi için kullanılır.

Birçok makinedeki dosya sistemlerini birbiriyle bağlayarak tek bir dosya sistemi gibi gözükmesini sağlar. HDFS, düğüm noktalarının (node’ların) her zaman yüzde 100 çalışamayacağını, kesintiler olabileceğini baştan kabul eder. Bu yüzden veri güvenliğini, verinin birden fazla düğüm noktasına kopyalayarak sağlar.

Şekil 4.2.1.1 HDFS mantığını açıklamaktadır. 10 makine birleşerek tek bir makine gibi görünür ve zamandan büyük bir kazanç sağlar.

9

Page 11: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

• Hadoop YARN: İş zamanlayıcı (job scheduler) ve kaynak yönetimini yapan bir dizi kütüphanedir.

• Hadoop MapReduce: İşlem frameworküdür. Büyük veri setlerinin paralel işlenmesi için gereklidir.

“Hadoop  son zamanlarda büyük verileri analiz etmek için şirketlerin tercih ettiği bir araç haline geldi[4].Birçok şirket günlük terabaytlarca veriyi yönetmek zorundadır ve bu tahmin edeceğiniz gibi çok zor bir iştir [4]. Geleneksel altyapı bu tür verilerin üzerinde işlemler gerçekleştirmek bunların analitik verilerini oluşturmak için eksik kalmaktadır bu nedenle şirketler açık kaynak kodlu hadoop teknolojisine yönelerek bu sorunlarını çözmeye çalışmaktadırlar[4]. Şirketler teknik riskleri azaltmak ve hızdan kazanmak amacıyla Cloudera gibi Hadoop dağıtımlarına da yönelebilirler[4].”

Hadoop yazılımını destekleyen ve gelişmesine yardımcı olan şirketler arasında; Cloudera, Google, Amazon, Ebay, Yahoo, Facebook, Microsoft gibi devler vardır.

Şekil 4.2.1.2 Hadoop sunucuların normal sunucularından farkı

HDFS Özellikleri

HDFS sayesinde sıradan sunucuların diskleri bir araya gelerek büyük, tek bir sanal disk oluştururlar[3]. Bu sayede çok büyük boyutta bir çok dosya bu dosya sisteminde saklanabilir[3]. Bu dosyalar bloklar halinde (varsayılan 64MB) birden fazla ve farklı sunucu üzerine (varsayılan 3 kopya) dağıtılarak RAID benzeri bir yapıyla yedeklenir. Bu sayede veri kaybı önlenmiş olur[3]. Ayrıca HDFS çok büyük boyutlu dosyalar üzerinde okuma işlemi (streaming) imkanı sağlar, ancak rastlantısal erişim (random access) özelliği bulunmaz. HDFS, NameNode ve DataNode süreçlerinden (process) oluşmaktadır.[3]

NameNode ana (master) süreç olarak blokların sunucular üzerindeki dağılımından, yaratılmasından, silinmesinden, herhangi bir blokta sorun meydana geldiğinde yeniden oluşturulmasından ve her türlü dosya erişiminden sorumludur[3]. Kısacası HDFS üzerindeki tüm dosyalar hakkındaki bilgiler (metadata) NameNode tarafından saklanır ve yönetilir[3]. Her kümede yalnızca bir adet NameNode olabilir.

10

Page 12: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

DataNode ise işlevi blokları saklamak olan işçi (slave) süreçtir[3]. Her DataNode kendi yerel diskindeki veriden sorumludur[3]. Ayrıca diğer DataNode’lardaki verilerin yedeklerini de barındırır. DataNode’lar küme içerisinde birden fazla olabilir[3].

Hadoop MapReduce ise HDFS üzerindeki büyük dosyaları verileri işleyebilmek amacıyla kullanılan bir yöntemdir[3]. İstediğiniz verileri filtrelemek için kullanılan Map fonksiyonu ve bu verilerden sonuç elde etmenizi sağlayan Reduce fonksiyonlarından oluşan program yazıldıktan sonra Hadoop üzerinde çalıştırılır[3]. Hadoop Map ve Reduce’lerden oluşan iş parçacıklarını küme üzerinde dağıtarak aynı anda işlenmesini ve bu işler sonucunda oluşan verilerin tekrar bir araya getirilmesinden sorumludur[3]. Hadoop’un gücü işlenen dosyaların her zaman ilgili düğümün (node) yerel diskinden okunması ile ağ trafiğini meşkul etmemesinden ve birden fazla işi aynı anda işleyerek doğrusal olarak ölçeklenmesinden geliyor diyebiliriz[3]. Yani aşağıdaki grafikte olduğu gibi Hadoop kümesindeki düğüm sayısı arttıkça performansı da doğrusal olarak artmaktadır[3].

MapReduce, JobTracker ve TaskTracker süreçlerinden oluşur. JobTracker yazılan MapReduce programının küme üzerinde dağıtılarak çalıştırılmasından sorumludur[3]. Ayrıca dağıtılan iş parçacıklarının çalışması sırasında oluşabilecek herhangi bir problemde o iş parçacığının sonlandırılması ya da yeniden başlatılması da JobTracker’ın sorumluluğundadır[3]. TaskTracker, DataNode’ların bulunduğu sunucularda çalışır ve JobTracker’dan tamamlanmak üzere iş parçacığı talep eder[3]. JobTracker, NameNode’un yardımıyla DataNode’un lokal diskindeki veriye göre en uygun Map işini TaskTracker’a verir[3]. Bu şekilde verilen iş parçacıkları tamamlanır ve sonuç çıktısı yine HDFS üzerinde bir dosya olarak yazılarak program sonlanır. [3]

Şekil 4.2.1.3 HDFS mimarisini göstermektedir. Namenode, Datanode ve istemci arasındaki bağlantıyı gösterir.

11

Page 13: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

Bunlar dışında Hadoop projesi büyük verileri işleme konusundaki diğer projelere bir çatı görevi görüyor[3]. Hadoop projesinin altında Avro (veri dizileştirme sistemi), Cassandra (yüksek erişilebilir, ölçeklenebilir NoSQL veritabanı), HBase (Hadoop üzerinde çalışan, büyük veriler için ölçeklenebilir, dağıtık NoSQL veritabanı), Hive (büyük veriler üzerinde iş zekası sistemi),Mahout (ölçeklenebilir yapay öğrenme (machine learning) ve veri madenciliği kütüphanesi), Pig (paralel hesaplamalar için yüksek düzeyli bir veri akışı dil ve yürütme kütüphanesi), ZooKeeper(dağıtık uygulamalar için yüksek ölçekli koordinasyon uygulaması) projeleri geliştiriliyor[3].

4.3 Gereksinim ve ihtiyaçlar

Projemizin en büyük ihtiyacı 3 bilgisayar idi. 3 bilgisayarda Linux işletim sistemi kullanılacaktı. Linux işletim sistemine Ubuntu 12.04 kurulması gerekmekteydi. Hadoop 1.2.1 sürümü diğer ihtiyaçlarımız arasında. Hadoopun bu sürümü bize en çok uyduğundan bunu seçtik. Java jdk 6 her bilgisayarımız için gereklidir. 3 bilgisayarı birbirine bağlamak için bir modeme ihtiyacımız vardır. Aynı modeme bağlanan 3 bilgisayar belirli İP lere sahiptir. Böylelikle bilgisayarlar arsı iletişim kurulmaktadır.

4.4. Analiz

Multinode cluster, single node ile oluştuğunda ben projemde single node clusteri anlatacağım. Single node sadece bir makinede hadoopun kurulması ve çalıştırılmasıdır. İki veya daha çok makinenin birleştirilmesi ile Hadoop Multinode cluster oluşur. Sonuç olarak ikisini de projemde anlatmış olacağım. Aşağıdaki resim single-node ve multi node modellemesidir.

12

Page 14: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

Şekil 4.4.1 Single nodelardan multinode un nasıl oluşturulduğunu göstermektedir.

4.5. Gelişim Süreci

Her şey hazır olduktan sonra projemiz geliştirilmeye başlandı. Ana (master) üzerinde ilerleyen projede ilk başta single nodumuzu oluşturulacaktır.  Kurulumun öncesinde sisteminizde yüklü Java olması gerekiyordu. Terminal ekranından java 1.6 indirildi ve kuruldu.

Daha sonra hadoop için özel bir grup ve kullanıcı oluşturuyoruz. Buradaki kullanıcı adını 3 makinede de aynı tutacağız. hduser adlı makinemize Hadoop gurubunu ekliyoruz.

Ana makinadan onun düğümlerine ve uzak makinalara bağlanmak(yönetmek) için SSH erişimi gereklidir. Öncelikle, biz hduser kullanıcı için bir SSH anahtarı oluşturmak zorundayız. Terminal ekranımızdan ssh-keygen komutu ile özel bir key oluşturuyoruz.

Ubuntu ve Hadoop bağlantısı için ip ayarı yapmamız gerekiyor. İP v6 0.0.0.0 ı kullanmalı. Bunun için /etc/sysctl.conf dosyamızı açıp ipv6 ları 1 e eşitliyoruz.

Daha sonra Hadoop u yükleme adımına geçiyoruz Hadoopun yüklenmesi için Apache Hadoop adresinde bize en yakın sunucuya bağlanıyoruz. Hadoopu indirip açtıktan sonra gerekli terminal komutlarıyla sistemimize yüklüyoruz. Biz Hadoop dosyaları içi /usr/local/Hadoop klasörünü seçtik. Yüklediğimiz java ve Hadoopun yüklendiği dizinleri test ediyoruz.

13

Page 15: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

Şekil 4.5.1 Javanın ve Hadoopun başarılı bir şekilde yüklendiğini gösteriyor.

Daha sonra Hadoop üzerinde kapsamlı bir konfigürasyon ayarı yapıyoruz. HDFS üzerinde olacak bu ayarlamalar şu dosyalar üzerinde.

Hadoop-env.sh /usr/local/hadoop/conf/hadoop-env.sh bu dizindeki dosyada javanın yüklü olduğu kodu pasiften aktife çevirdik.

Gerekli dosya izinleri için önce terminalde root olup ve sonra chmod+rwx kodu ile gerekli dosya izinlerini verdik. Şimdi conf klasörü altında xml dosya ayarlarını yapacağız.

conf/core-site.xml: [5]

14

Page 16: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

conf/mapred-site.xml [5]

conf/hdfs-site.xml [5]

Gerekli ayarlamaları yaptıktan sonra Hadoop sistemini usr/local/hadoop/bin/ dizini altında çalıştıracağımız komutlara bakıyoruz.

Şekil 4.5.2 Hadoop sisteminde çalıştıracağımız komutlar listelenmiştir.

İlk önce sisteme format atarak başladık; hduser@ubuntu:~$ /usr/local/hadoop/ bin/ hadoop namenode –format. Bu komut ile Hadoop sistemini formatlamış oluyoruz. Daha sonra single node clusteri çalıştırmak için start-all.sh komutunu kullandık. Bu komut ile makine üzerinde Namenode, Datanode, Jobtracker ve Tasktracker devrede olacaktır.

Son durumun ne olduğu görmek için Hadoop dizini altında jps komutu ile test ettik ve nodeları gördük. İlk önce ana master makinamızda jps komutunu çaluştırdık. Hadoop -jps komutu ile SecondarNameNode, NameNode, Jps ve Datanodeların aktif olduğunu gördük.

15

Page 17: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

Şekil 4.5.3 Ana makide jps çalıştırılması sonucunu gösteriyor.

Daha sonra 2. Makineye bağlanıyoruz. Ubuntu2 üzerinde jps çalıştırdığımızda; Datanode, Jps, Tasktracker ın aktik oluyor. Yani ana (master) makinadan farklı olarak NameNode ve SecondarNameNode ın olmadığını gördük.

Şekil 4.5.4 2. Makinada (slave) jps sonucu

Şuan başlatılmış aktif olan nodeları durdurabiliyoruz. Makineler üzerindeki tüm nodelari durdurmak için (stopp-all.sh) yada stop.dfs.sh komutları kullanılıyor.

16

Page 18: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

Şekil 4.5.6 Hadoopta tüm nodeların durdurulması.

Şimdi Hadoop Mapreduce Fonksiyonumuzu ilk kez çalıştıracağız. Burada, daha öncede bahsettiğim Wordcount fonksiyonunu kullandık. WordCount bize metin dosyalarındaki her bir kelimeyi sayıyordu. Projemiz için 3 txt dosyası bulundu. Bu metin belgelerinin her biri e-kitap ve içlerinde binlerce cümle vardır. Bu txt dosyaları Hadoop sistemine taşındı ve gerekli komutlar girildi. Son olarak WordCountın Hadoop sistemi üzerinde çalıştırılması gerçekleşti.

Şekil 4.5.7 txt dosyalarının ve dizinlerini gösteriyor. Txt dosya isimleri pg20417.txt, pg4300.txt, pg5000.txt

17

Page 19: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

Şekil 4.5.8 dosyalarını wordcount ile taranmasını için gerekli adımları gösteriyor.

Şekil 4.5.9 MapReduce un çalışması ve ilerleyişi

18

Page 20: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

4.5.10 mapreduce %100 tamamlanıyor.

4.5.11 Mapreduce için girdi ve çıktılarını göstermektedir.

4.6. Test ve Uygulama

Wordcout, Mapreduce üzerinde çalıştırıldıktan sonra localhost üzerinde nodeları ve çıktıları görmemiz gerekiyor. Taranan txt dosyalarındaki kelimelerin sayısına bakmak için kullanadığımız localhostlar ;http://localhost:50070 –NameNode arayüzü

http://localhost:50030  – JobTracker arayüzü

http://localhost:50060  – TaskTracker arayüzü

19

Page 21: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

Şekil 4.6.1 Localhost:50070 adresi ile namenodalara bakabiliyoruz. Sonuç olarak 1 Live node var.

4.7 Proje sonucu

Proje sonucu olarak Hadoop hakkında geniş bir bilgiye sahip oldum. Hadoopun yüklenmesi ve çalıştırılmasını öğrendim. HDFS in ve Mapreducun Hadooptaki görevlerini özelliklerini inceledim ve öğrenmiş oldum

Projemde Hadoop 3 bilgisayara yüklendi ve çalıştırıldı. Hadoop sistemine 3 metin dosyası yüklendi. Bu metin dosyalarında binlerce kelime vardı. Bu kelimeler 10 saniye gibi kısa bir sürede tarandı ve her kelimeden kaç adet olduğu yazdırıldı. Bu kadar çok verinin içinden Hadoop kısa sürede çıkması hadopun en büyük artılarından.

20

Page 22: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

Map reduce üzerinde wordcout fonksiyonu çalıştılması sonucu

Şekil 4.7.1 Wordcout uygulanması sonucu sayılan kelimelerden bazılarının çıktısı.

5.Sonuç

Staj süresi boyunca birçok konuda bilgim ve tecrübem arttı. Hiç bilmediğim konular hakkında çok şey öğrenmiştim. Bunların başında Linux İşletim sistemi gelebilir. Eskiden sadece Ubuntu kullanırken artık Linux terminal üzerinde daha önemli işler yapabiliyorum. Açık kaynak kodlu yazılım geliştirmemde Linux bilmem çok faydalı olacaktır.

Big data üzerine ilk çalışmamı yapmış oldum. Big data nın kullanım alanlarını inceledim. Büyük şirketlerce kullanılan big data nın önemi artacaktır. Big data hakkında geniş bilgi sahibi oldum. Bundan sonraki çalışmalarımda da big data kavramı ile öğrenmiş olduğum

Hadoop teknoloji üzerine büyük bir yol kat ettim. Apache Hadoop Türkiye’de daha yeni yeni duyulmasından dolayı kaynak bakımından staj süresince sıkıntılar çektim. Bunları yabancı kaynaklar ile aştık. Hadoop sisteminin mantığını ve özelliği anladım. Hadoop modülleri HDFS ve MapReduce nelerden oluştuğunu ve ne işe yaradıklarını öğrendim. Bunların üzerine kendimi geliştirdim. Hadoop

21

Page 23: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

nodelarını rahatlıkla başlatıp sonlandırabiliyorum. Gerektiğinde format atıp farklı yapılandırma ayarları yapabiliyorum. Hadoop üzerine testler yaptım. Tek makine ve 2 makinede aynı işlemleri test ettim. Zaman bakımından farklılığı gördüm.

Java da Worcount uygulamasını inceledim ve aynısını en baştan kendim yazdım. Bu fonksiyonda mapreduce nasıl kullanılmış onu inceledim. Netbeans ortamında incelediğim bu uygulamada maven eklenditisi kullandım. Böylece maven in ne işe yaradığını ve kullanmasını da öğrenmiş oldum.

Staj süresince projemden faklı olarak birçok konuda bilgi sahibi oldum. Staj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim için çok faydalı oldu. Daha sonra Bilgi işlem dairesinde proje dışı etkinlikler kendi gelişimim için çok iyiydi. Bunlardan bazıları;

Cross ve düz kablo yapmak, Modem ağı, yazıcı ve faks kurmak Bilgisayarın imajını almak Bilgisayarın içini incelemek Şirket yazılımları hakkında bilgiler almak

Sonuç olarak ilk stajımın benim için faydalı oldu. İş hayatı ve okul hayatı arasında bağlantı kurmamda yardımcı oldu. Yazılım tecrübe kendi gelişimim için stajım gayet güzeldi.

6.Ekler

Wordcount fanksiyonu kodları

//WordCount Foksiyonu başlangıcı

22

Page 24: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

package net.tuvasas.helloworld;

/** * * @author stajer1 */import java.io.IOException;import java.util.*;import org.apache.hadoop.fs.Path;import org.apache.hadoop.conf.*;import org.apache.hadoop.io.*;import org.apache.hadoop.mapred.*;import org.apache.hadoop.util.*;

public class WordCount {

public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text();

public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { String line = value.toString();

StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreTokens()) { word.set(tokenizer.nextToken()); output.collect(word, one); } } }

public static class Reduce extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> { public void reduce(Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { int sum = 0; while (values.hasNext()) { sum += values.next().get(); } output.collect(key, new IntWritable(sum)); }}

public static void main(String[] args) throws Exception { JobConf conf = new JobConf(WordCount.class); conf.setJobName("wordcount");

conf.setOutputKeyClass(Text.class); conf.setOutputValueClass(IntWritable.class);

conf.setMapperClass(Map.class);

23

Page 25: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

conf.setCombinerClass(Reduce.class); conf.setReducerClass(Reduce.class);

conf.setInputFormat(TextInputFormat.class); conf.setOutputFormat(TextOutputFormat.class);

FileInputFormat.setInputPaths(conf, new Path(args[0])); FileOutputFormat.setOutputPath(conf, new Path(args[1]));

JobClient.runJob(conf); } }

//wordcount fonksiyonu bitişi.

WordCount fonksiyonundan bir kare:

24

Page 26: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

Localhostta adımların teker teker işlenmesi:Hadoop üzerinde Wordcount uygulaması çalıştırıldıktan sonra Localhost çıktıları:

25

Page 27: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

26

Page 28: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

27

Page 29: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

28

Page 30: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

Yukarıdaki şekil Mapreduce üzerinde wordcountun nasıl işlediğini gösteriyor.

KAYNAKLAR

[1] http://tr.wikipedia.org/wiki/B%C3%BCy%C3%BCk_veri

[2] http://tr.wikipedia.org/wiki/Linux

[3]http://devveri.com/hadoop-nedir

[4] http://developersland.net/index.php/hadoop/46-hadoop-kullanarak-analitik-verilerin-olusturulmasi.html

[5]http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/

29

Page 31: oguzozkaraca.comoguzozkaraca.com/.../2015/01/oguz_ozkaraca_rapor1.docx  · Web viewStaj süresince 1 günlük İş sağlığı ve güvenliği & Ergonomi üzerine konferans benim

30