Hadoop @ devveri.com
Upcoming SlideShare
Loading in...5
×
 

Hadoop @ devveri.com

on

  • 5,021 views

devveri.com Hadoop sunumu

devveri.com Hadoop sunumu

Statistics

Views

Total Views
5,021
Views on SlideShare
2,862
Embed Views
2,159

Actions

Likes
10
Downloads
108
Comments
0

8 Embeds 2,159

http://devveri.com 2016
http://www.sukruuzel.com 66
http://www.linkedin.com 50
https://twitter.com 19
http://enginkara.net 5
https://si0.twimg.com 1
https://twimg0-a.akamaihd.net 1
http://4269665500722759427_77395f21dc2f75abb735733bd737414588dbe77d.blogspot.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

Hadoop @ devveri.com Hadoop @ devveri.com Presentation Transcript

  • Hadoop devveri.com Aralık 2012 v1.3
  • Hakkımda● Marmara Üni. Elektronik● Software Development Supervisor @ Gitti Gidiyor / eBay● 12+ yıl yazılım tecrübesi● Java, C, C++, C#● Big Data, Search, NoSQL Hakan İlter hilter@ebay.com twitter: devvericom http://tr.linkedin.com/in/hakanilter/
  • Gündem● Big Data (Dev veri)● Hadoop● HDFS● MapReduce● Hadoop Kurulum● Küme Yapısı● Hadoop Ekosistemi
  • Dev Veri
  • Dev Veri
  • Dev Veri NedirTeknoloji > Internet > Sosyal Medya > Mobil > ...Dünyadaki verilerin %90lık kısmı son iki yılda toplandıYapılandırılmış (structured) ve Yapılandırılmamış(unstructured) verilerden meydana gelir● Yapılandırılmış veriler: ürün, kategori, müşteri, fatura, ödeme...● Yapılandırılmamış veriler: tweet, paylaşım, beğeni (like), e-posta, video, tıklama...%10 Yapılandırılmış, %90 Yapılandırılmamış
  • Dev Verinin 3 BoyutuBüyüklük (Volume) ● Facebook 70+PB, eBay 5+PBHız (Velocity) ● Twitterda hergün 12TB twit atılıyorÇeşitlilik (Variety) ● Metin, sensör verileri, ses, görüntü, log dosyaları
  • Dev Veri
  • Dev Verinin Önemi ● Bu kadar veri tek başına bir anlam ifade etmiyor ● Önemli olan Dev Veri içerisinde saklanmış olan bilgiyi ortaya çıkartıp yaptığımız işi daha iyi anlamak, belki de geleceği tahmin etmeye çalışmak ● Bu gerçekleştirildiğinde; ○ Mutlu müşteriler ○ Daha fazla kazanç ○ Dolandırıcılıkta azalma ○ Daha sağlıklı insanlar ○ ...
  • Geleneksel Sistemlerin Problemleri ● RDBMS Göreceli olarak küçük boyutta veri, yapılandırılmamış verilere uygun değil ● Donanım limitleri Daha fazla CPU, daha fazla RAM, daha fazla Disk = Daha fazla Maliyet ● Yazılımsal karmaşıklık Senkronizasyon, bant genişliği, erişilebilirlik, hata toleransı
  • Peki ya gerçek problem? Gerçek problem: Veriyi işlemciye ulaştırabilmek! 100GB boyutundaki bir veriyi tipik bir disk ile (~75 MB/sn) aktarmak yaklaşık 22 dakika!
  • Yeni bir yaklaşım ● Ölçeklenebilir ● Tutarlı ● Veri Garantili ● Erişilebilir
  • Kim çözdü? ● Google File System (2003) ● MapReduce (2004) ● Big Table (2006)
  • ve Hadoop! Veri işleme amaçlı dağıtık uygulamalar yazılmasını sağlayan bir platform ve açık kaynaklı bir Apache projesidir.
  • Gündem● Big Data (Dev veri)● Hadoop● HDFS● MapReduce● Hadoop Kurulum● Küme Yapısı● Hadoop Ekosistemi
  • Neden Hadoop● Esnek Her türlü veriyi saklayıp analizini yapabilir● Ölçeklenebilir Binlerce düğüm bir araya getirilebilir● Ekonomik Açık kaynaklı, "commodity" donanımda çalışabilir
  • Nerede?
  • Nerede?
  • Gitti Gidiyorda Hadoop İlgili diğer aramalar Nokkia aratılmış ama Nokia olarak düzeltilmişNokiakelimesiyledaha ilgiliolduğu için Ceptelefonukategorisi dahaüstte yer alıyor
  • Gitti Gidiyorda Hadoop "Metallica" ile ilgili diğer aramalar Mobil uygulama ana sayfada kişiselleştirilmiş ürün gösterimi Autocomplete verisi
  • Kimler kullanıyor?
  • Hadoopİki ana bileşenden oluşur ● Hadoop Distributed File System (HDFS) ● MapReduce
  • Gündem● Big Data (Dev veri)● Hadoop● HDFS● MapReduce● Hadoop Kurulum● Küme Yapısı● Hadoop Ekosistemi
  • HDFSVerinin saklanmasından sorumludur ● Dağıtık bir dosya sistemidir ● Veriyi 64MB ya da 128MBlık bloklar halinde saklar ● Her blok küme içerisinde farklı düğümlere dağıtılır ● Her bloğun varsayılan 3 kopyası tutulur ● Bu sayede verinin erişilebilirliği ve güvenilirliği sağlanmış olur ● Aynı dosyaya ait bloklar farklı düğümlerde olabilir
  • HDFS● Normal dosya sistemi üzerinde çalışır: ext3, ext4, xfs● Büyük miktarda veri için yedekli depolama sağlar● Düşük maliyetli sunucular üzerinde çalışmaya uygundur● Küçük çok dosya yerine büyük daha az dosya tutulmalıdır● Ortalama bir dosya 100MB civarı olmalıdır● Rastlantısal erişim yoktur (write once)● Büyük ve duraksız (streaming) veri erişimine göre optimize edilmiştir
  • HDFSBlokların düğümler üzerine dağılım örneği blok 1 blok 2 blok 3 blok 4 blok 3 blok 2 Data Node 1 Data Node 2 blok 3 blok 4 blok 4 blok 1 blok 1 blok 2 Data Node 3 Data Node 4
  • HDFS ErişimiHDFS üzerindeki verilere konsol üzerinden hadoop fskomutu ile erişilebilir: hadoop fs -ls Dosyaları listeler hadoop fs -mkdir <path> Klasör oluşturur hadoop fs -put <local> <target> Lokalden HDFSe dosya kopyalar hadoop fs -get <source> <local> HDFSden lokale dosya kopyalar hadoop fs -cat <filename> Dosya içeriğini konsola basar hadoop fs -rmr <filename> Dosyayı siler
  • Gündem● Big Data (Dev veri)● Hadoop● HDFS● MapReduce● Hadoop Kurulum● Küme Yapısı● Hadoop Ekosistemi
  • MapReduceVeriyi işleme yöntemidir ● Fonksiyonel programlamadan esinlenilmiştir ● Map ve Reduce birer fonksiyondur ● Map fonksiyonu ile veri içerisinden istenilen veriler anahtar-değer formatında seçilir ● Reduce fonksiyonu ile de seçilen bu veriler üzerinde işlem yapılır, sonuç yine anahtar-değer olarak iletilir ● Map ve Reduce arasında Shuffle ve Sort aşamaları vardır
  • MapReduceDaha kolay anlaşılabilir olması için SQLe benzetmekgerekirse;● WHERE ile yapılan filtreleme gibi Map aşamasında sadece ihtiyacımız olan veriler seçilir● Reduce aşamasında ise SUM, COUNT, AVG gibi birleştirme işlemleri yapılır
  • MapReduce● Map aşamasındaki işlemler küme üzerinde paralel olarak çalışır● Bu sayede kümenin büyüklüğüne göre veriler hızlı bir şekilde işlenebilir hale gelmiş olur● Her iş parçacığı verinin belirli bir parçasını işler● İş parçacıkları mümkünse üzerinde çalıştığı düğümdeki verileri işler. Buna Data Localization denir
  • MapReduceMapReduce ile akış örneği
  • MapReduce● Uygulama geliştirilirken sadece Map ve Reduce metodları yazılır, geri kalan işleyiş otomatik gerçekleşir● Hadoop tamamen Java ile geliştirildiği için MapReduce uygulamaları Java ile yazılır, jar olarak paketlenir● Streaming özelliği sayesinde Python, C++, Php gibi farklı dillerde de kullanılabilir
  • Word CountMap Metodupublic void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException{ String line = value.toString().toLowerCase(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreTokens()) { Text word = new Text(tokenizer.nextToken()); context.write(word, new IntWritable(1)); }}
  • Word CountReduce Metodupublic void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException{ int sum = 0; for (IntWritable value : values) { sum += value.get(); } context.write(key, new IntWritable(sum));}
  • Word CountTool sınıfı metodlarıpublic int run(String[] args) throws Exception{ if (args.length != 2) { System.err.printf("Usage: %s [generic options] <input> <output>n", getClass().getSimpleName()); ToolRunner.printGenericCommandUsage(System.err); return -1; } Job job = new Job(); job.setJarByClass(WordCount.class); FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); job.setMapperClass(WordCountMapper.class); job.setReducerClass(WordCountReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); return job.waitForCompletion(true) ? 0 : 1;}public static void main(String[] args) throws Exception { int exitCode = ToolRunner.run(new WordCount(), args); System.exit(exitCode);}
  • Word CountMapReduce programını çalıştırma$ hadoop jar <jarfile> <classname> <args...>$ hadoop jar devveri-mapreduce-0.0.1-SNAPSHOT.jar com.devveri.hadoop.mapreduce.WordCount test.txt devveri12/07/09 23:44:41 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications shouldimplement Tool for the same.12/07/09 23:44:41 INFO input.FileInputFormat: Total input paths to process : 112/07/09 23:44:41 INFO mapred.JobClient: Running job: job_201204231254_552212/07/09 23:44:42 INFO mapred.JobClient: map 0% reduce 0%12/07/09 23:44:56 INFO mapred.JobClient: map 100% reduce 0%12/07/09 23:45:08 INFO mapred.JobClient: map 100% reduce 100%12/07/09 23:45:13 INFO mapred.JobClient: Job complete: job_201204231254_552212/07/09 23:45:13 INFO mapred.JobClient: Counters: 2912/07/09 23:45:13 INFO mapred.JobClient: Job Counters12/07/09 23:45:13 INFO mapred.JobClient: Launched reduce tasks=112/07/09 23:45:13 INFO mapred.JobClient: SLOTS_MILLIS_MAPS=1198412/07/09 23:45:13 INFO mapred.JobClient: Total time spent by all reduces waiting after reserving slots (ms)=012/07/09 23:45:13 INFO mapred.JobClient: Total time spent by all maps waiting after reserving slots (ms)=012/07/09 23:45:13 INFO mapred.JobClient: Launched map tasks=112/07/09 23:45:13 INFO mapred.JobClient: Data-local map tasks=112/07/09 23:45:13 INFO mapred.JobClient: SLOTS_MILLIS_REDUCES=1003312/07/09 23:45:13 INFO mapred.JobClient: File Output Format Counters12/07/09 23:45:13 INFO mapred.JobClient: Bytes Written=3112/07/09 23:45:13 INFO mapred.JobClient: FileSystemCounters12/07/09 23:45:13 INFO mapred.JobClient: FILE_BYTES_READ=61...
  • Gündem● Big Data (Dev veri)● Hadoop● HDFS● MapReduce● Hadoop Kurulum● Küme Yapısı● Hadoop Ekosistemi
  • Hadoop Kurulumu ● Apache sürümü dışında Cloudera, Hortonworks gibi firmaların dağıtımları da kullanılabilir ● Farklı sürümleri bulunuyor 1.0.X - current stable version, 1.0 release 1.1.X - current beta version, 1.1 release 2.X.X - current alpha version 0.23.X - simmilar to 2.X.X but missing NN HA. 0.22.X - does not include security 0.20.203.X - old legacy stable version 0.20.X - old legacy version ● Küme olarak (full cluster) ya da tek sunucuya (pseudo- distributed) kurulabilir ● deb, rpm veya tarball olarak indirilip kurulabilir
  • Örnek kurulum adım 1 ● JDK 1.6, openssh-server ve rsync sistemde olmalı $ sudo apt-get install ssh $ sudo apt-get install rsync
  • Örnek kurulum adım 2 ● Sunucular arası şifresiz bağlantı gerekir $ ssh localhost The authenticity of host localhost (127.0.0.1) cant be established. ECDSA key fingerprint is 00:ab:cd:ef:12:23:56:ab:ba:c4:89: 11:d8:22:33:1b. Are you sure you want to continue connecting (yes/no)? yes ssh-keygen -t dsa -P -f ~/.ssh/id_dsa cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
  • Örnek kurulum adım 3 ● Kurulumun yapılacağı klasörler ayarlanır $ sudo mkdir /usr/java $ sudo chown -R devveri:devveri /usr/java $ mkdir /usr/java/hadoop-data
  • Örnek kurulum adım 4 ● Apache sunucusundan son sürüm indirilir $ cd /usr/java/ $ wget "http://www.eu.apache.org/dist/hadoop/ common/hadoop-1.0.4/hadoop-1.0.4.tar.gz" $ gzip -dc hadoop-1.0.4.tar.gz | tar xf - $ ln -s /usr/java/hadoop-1.0.4 /usr/java/hadoop
  • Örnek kurulum adım 5 ● Küme ile ilgili genel ayarlar conf/core-site.xml dosyasında bulunur <configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/java/hadoop-data</value> </property> </configuration>
  • Örnek kurulum adım 6 ● HDFS ile ilgili ayarlar conf/hdfs-site.xml dosyası içerisinde bulunur <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
  • Örnek kurulum adım 7 ● MapReduce ile ilgili ayarlar conf/mapred-site.xml dosyası içerisinde bulunur <configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> </configuration>
  • Örnek kurulum adım 8 ● Hadoop ile ilgili ortam değişkenleri conf/hadoop-env. sh dosyasında bulunur export JAVA_HOME=/usr/java/jdk export HADOOP_HEAPSIZE=512 export HADOOP_HOME_WARN_SUPPRESS="TRUE"
  • Örnek kurulum adım 9 ● .bash_profile ya da .bash_rc dosyalarında $PATH değişkeni ayarlanmalıdır JAVA_HOME=/usr/java/jdk PATH=$PATH:$JAVA_HOME/bin HADOOP_HOME=/usr/java/hadoop PATH=$PATH:$HADOOP_HOME/bin
  • Örnek kurulum adım 10 ● NameNode formatlanmalıdır $ hadoop namenode -format 12/09/05 00:07:06 INFO namenode.NameNode: STARTUP_MSG: /************************************************************ STARTUP_MSG: Starting NameNode STARTUP_MSG: host = devveri-HP-ProBook-6540b/127.0.1.1 STARTUP_MSG: args = [-format] STARTUP_MSG: version = 1.0.3 STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.0 -r 1335192; compiled by hortonfo on Tue May 8 20:31:25 UTC 2012 ************************************************************/ 12/09/05 00:07:06 INFO util.GSet: VM type = 32-bit 12/09/05 00:07:06 INFO util.GSet: 2% max memory = 9.1025 MB 12/09/05 00:07:06 INFO util.GSet: capacity = 2^21 = 2097152 entries 12/09/05 00:07:06 INFO util.GSet: recommended=2097152, actual=2097152 12/09/05 00:07:07 INFO namenode.FSNamesystem: fsOwner=devveri 12/09/05 00:07:07 INFO namenode.FSNamesystem: supergroup=supergroup 12/09/05 00:07:07 INFO namenode.FSNamesystem: isPermissionEnabled=true 12/09/05 00:07:07 INFO namenode.FSNamesystem: dfs.block.invalidate.limit=100 12/09/05 00:07:07 INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s) 12/09/05 00:07:07 INFO namenode.NameNode: Caching file names occuring more than 10 times 12/09/05 00:07:07 INFO common.Storage: Image file of size 111 saved in 0 seconds. 12/09/05 00:07:07 INFO common.Storage: Storage directory /usr/java/hadoop-data/dfs/name has been successfully formatted. 12/09/05 00:07:07 INFO namenode.NameNode: SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at devveri-HP-ProBook-6540b/127.0.1.1 ************************************************************/
  • Gündem● Big Data (Dev veri)● Hadoop● HDFS● MapReduce● Hadoop Kurulum● Küme Yapısı● Hadoop Ekosistemi
  • Küme Yapısı ● Hadoop kümesini durdurup başlatmak için bin klasörü altındaki scriptler kullanılır start-all.sh Kümeyi çalıştırır stop-all.sh Kümeyi durdurur start-dfs.sh Sadece HDFS süreçlerini çalıştırır stop-dfs.sh HDFS süreçlerini durdurur start-mapred.sh Sadece MapReduce süreçlerini çalıştırır stop-mapred.sh MapReduce süreçlerini durdurur
  • Hadoop Süreçleri Hadoop kümesi içerisinde birlikte çalışan birkaç farklı süreç vardır ● NameNode ● SecondaryNameNode ● DataNode ● JobTracker ● TaskTracker
  • NameNodeAna (master) düğümdür ● Hangi blok, hangi dosya nerededir takip eder ● Her türlü dosya işleminden sorumludur ● Veri değil sadece metadata saklar ● Her zaman ayakta olmak zorundadırNameNode çalışmaz ise tüm küme çalışmaz hale gelir ● Hızlı erişim açısından verileri hafızada tutar ● Çökmeye karşı diske bilgileri senkronize eder ● Bu verileri mutlaka yedeklenmelidir
  • SecondaryNameNodeNameNode yedeği değildir! ● Sadece NameNode tarafından yapılmayan bazı görevleri yerine getirir
  • DataNodeVerilerin bulunduğu düğümdür ● Blok halinde dosyaları saklar ● Yedekli olduğu için kapanması halinde veri kaybı yaşanmaz ● Veriler bu düğümlerde olduğu için analiz işlemleri de bu düğümler üzerinde çalışır ● Küme içerisinde birden fazla olabilir (olmalıdır) ● 4000+ düğüme kadar büyüyebilir ● Sayısı arttıkça performansı lineer olarak artar!
  • JobTracker MapReduce işlerini takip eder ● NameNode gibi tektir ● İstemciler MapReduce işlerini JobTrackera gönderir ● İşleri diğer düğümlere dağıtır ● İş parçacıklarının durumunu takip eder ● Bir iş parçacığında sorun olursa bunu sonlandırarak yeni bir tekrar çalıştırır ● Bazı durumlarda aynı işi yapan birden fazla iş parçacığı çalıştırabilir
  • TaskTracker MapReduce işlemlerini çalıştırır ● DataNode ile aynı düğümde bulunur ● JobTracker tarafından gönderilen iş parçacıklarından sorumludur ● Map ve Reduce görevlerini çalıştırıp sonuçlarını JobTrackera iletir
  • Kümeye bakış NameNode JobTracker SNNode Node 1 DataNode TaskTracker DataNode TaskTracker Node 2 Node 3 DataNode TaskTracker DataNode TaskTracker Node 4 Node 5
  • NameNode Arayüzü
  • JobTracker Arayüzü
  • Gündem● Big Data (Dev veri)● Hadoop● HDFS● MapReduce● Hadoop Kurulum● Küme Yapısı● Hadoop Ekosistemi
  • Hadoop EcosystemHadoop çatısı altında birçok proje barınır● Hive● Pig● HBase● Mahout● Impala● Diğerleri: Sqoop, Flume, Avro, Zookeeper, Oozie, Cascading...
  • Hive● Facebook tarafından geliştirilmiştir● SQL benzeri HiveQL dili ile Java kullanmadan MapReduce uygulamaları yazılmasını sağlar● Öncelikle HDFS üzerindeki dosyalar tablo olarak tanıtılır ○ create table member_visits (member_id string, visit_count int) row format delimited fields terminated by t stored as textfile; ○ load data inpath /usr/hadoop/anyfile into table members;● Daha sonra bu sanal tablolar sorgulanabilir ○ select avg(visit_count) from member_visits where visit_count > 0;
  • Pig ● Yahoo tarafından geliştirilmiştir ● MapReduce yazmak için "DataFlow" dili olarak adlandırılan, SQLden farklı kendine özgü PigLatin dili kullanılır ● Join destekler, daha kolay ve performanslı MapReduce programaları yazmayı sağlar ○ A = LOAD companies.csv USING PigStorage() AS (productId:int, productName:chararray); B = FILTER A BY productId > 3; C = FOREACH B GENERATE *; DUMP C;
  • HBase● Hadoop üzerinde çalışan NoSQL veritabanıdır● Google Big Table örnek alınarak geliştirilmiştir● Esnek şema yapısı ile binlerce kolon, petabytelarca satırdan oluşan veriyi saklayabilir● HDFS üzerinde çalıştığından MapReduce destekler● Veriye erişiminde bazı kısıtlar vardır● Verilere anahtar üzerinden ya da partial table scan ile erişilebilir● İkincil indeks, karmaşık sorgu çalıştırma desteği yoktur
  • Mahout● Hadoop üzerinde çalışabilen Machine Learning algoritmalarını içeren bir kütüphanedir● Recommendation● Clustering● Classification
  • Impala ● Google Dremel (2010) projesinden esinlenmiştir ● Cloudera tarafından geliştirilmiştir ● MapReduce yapmadan verilere direkt erişir ● HiveQL destekler, 7-45 kat daha hızlı çalışır
  • Sorular ?
  • DevVeri.com Hakkında Big Data, Search, NoSQL her türlü yazılarınızı bekliyoruz!
  • Kaynaklarhttp://hadoop.apache.orghttp://www.cloudera.comhttp://www-01.ibm.com/software/data/bigdata/http://en.wikipedia.org/wiki/Google_File_Systemhttp://en.wikipedia.org/wiki/MapReducehttp://en.wikipedia.org/wiki/BigTablehttp://www.evolven.com/images/stories/blog/blog_infographic_big_data_autonomy-big-data.jpghttp://architects.dzone.com/articles/big-data-rich-compendium-bighttp://devveri.com
  • Teşekkürler!