SlideShare uma empresa Scribd logo
1 de 77
Haziran 2014
v1.0l
Büyük Veri
Teknolojilerine Giriş
Hakkımda
● Hakan İlter
○ Software Platform &
Research Manager
○ GittiGidiyor / eBay
○ Marmara Üni. Elektronik
○ 14+ Yazılım 4+ Yöneticilik
○ Java, C, C++, C#
○ Linux!
○ Search, Big Data, NoSQL
hilter@ebay.com
twitter: hailter
http://tr.linkedin.com/in/hakanilter/
http://github.com/hakanilter
http://devveri.com
DevVeri.com
Gündem
● Neden Hadoop?
● HDFS ve MapReduce
● Hadoop Dağıtımları
● Entegrasyonlar
● Pig
● Hive
● Impala
● Her zamankinden daha fazla veri üretiyoruz
○ Satış verileri
○ Kullanıcı bilgileri
○ Web sitesi hareketleri
○ Sosyal medya
○ E-Posta
○ Sunucu logları
○ Sensör verileri
○ Lokasyon bilgisi
Veri Bombardımanı
Veri Bombardımanı
● Her zamankinden daha hızlı veri üretiyoruz
○ Twitter 143,199 TPS. ~500 milyon tweet
○ Google günde 5,922,000,000 arama
○ Facebook her 20dk da 3,000,000 mesaj
○ eBay dakikada 950+ alışveriş, 180+ mobilden
○ Amazon saniyede 426 ürün satışı
○ Apple dakikada 81 iPad, 925 iPhone satışı
Veri Bombardımanı
● Her zamankinden çok çeşitli veri üretiyoruz
○ Binary
○ Text, CSV
○ XML, JSON
○ Resim, Ses, Video
○ Sıkıştırılmış / Sıkıştırılmamış
● Yapılandırılmış / Yapılandırılmamış Veri
○ %90 veri yapılandırılmamış, sabit bir formatı yok
Büyük Veri
● Büyük veri içerisinde çok değerli bilgiler var
○ Pazarlama analizi
○ Talep analizi
○ Müşteri segmentasyonu
○ Sahtecilik önleme
○ Gerçek zamanlı raporlama
○ Sunucu faaliyetlerini izleme
○ Ürün önerme (recommendation)
○ … ve daha fazlası
Neler Yapılabilir?
● Büyük veriyi saklamak
○ Sürekli büyüyen veri
○ Storage maliyetleri
○ Arşivleme zorunluluğu
● Büyük veriyi işlemek
○ Donanım limitlerine takılmamalı
○ 100 GB veriyi sadece okumak ~22 dk!
○ Ağ darboğazı
Nasıl Yapılabilir?
● RDBMS
○ Yapılandırılmamış veriye uygun değil
○ Ölçeklenme problemi
○ Lisans ücretleri
● Donanım Limitleri
○ CPU, RAM, Disk, Network
● Yazılımsal Karmaşıklık
○ Senkronizasyon, bant genişliği, erişilebilirlik, hata
toleransı
Geleneksel Yöntemlerin Problemleri
● Ölçeklenebilir
○ İhtiyaç durumunda sistem genişleyebilmeli
● Tutarlı
○ Veri saklanırken bozulmamalı
● Veri Garantili
○ Veriler yedekli olmalı
● Erişilebilir
○ Sistem her durumda çalışabilir olmalı
Yeni Bir Yaklaşım
● Veri işleme amaçlı dağıtık uygulamalar
yazılmasını sağlayan bir platform ve açık
kaynaklı bir Apache projesidir
Hadoop
Kimler Kullanıyor?
● Neden Hadoop?
● HDFS ve MapReduce
● Hadoop Dağıtımları
● Entegrasyonlar
● Pig
● Hive
● Impala
Gündem
● İki temel bileşenden oluşur
○ Hadoop Distributed File System (HDFS)
○ MapReduce
Hadoop
● Google File System temel alınmıştır
● Verinin saklanmasından sorumludur
● Dağıtık bir dosya sistemidir
● Birden çok düğümün disklerini birleştirir
● Pahalı donanım gerektirmez
● Veriyi bloklar halinde saklar
● Bloklar varsayılan 64MB veya 128MB
● Her blok varsayılan 3 kopya olarak tutulur
HDFS
● Blokların yapısına örnek
HDFS
DataNode 1
blok 1 blok 2
blok 3
DataNode 2
blok 3
blok 2
blok 4
DataNode 3
blok 3
blok 1
blok 4
DataNode 4
blok 4
blok 2
blok 1
● Normal dosya sistemleri üzerinde çalışır
○ ext3, ext4, xfs, ntfs?
● Büyük dosyalarla çalışmak için uygundur
○ Küçük dosyalar sistemin kaynaklarını tüketir
○ Büyük ve az sayıda dosya olmalıdır
○ 100 MB veya daha büyük dosyalar uygundur
● Dosyalara bir sefer yazılabilir (write-once)
○ Dosya kapatıldıktan sonra tekrar yazılamaz
● Rastlantısal erişim yoktur
○ Büyük duraksız (streaming) veri erişimi
HDFS
● Komut satırı üzerinden erişilebilir
HDFS Komutları
hadoop fs -ls -r <path> Dosyaları listeler (-r recursive)
hadoop fs -mkdir <path> Klasör oluşturur
hadoop fs -put <local> <target> Lokalden HDFS'e dosya kopyalar
hadoop fs -get <source> <local> HDFS'den lokale dosya kopyalar
hadoop fs -cat <filename> Dosya içeriğini konsola basar
hadoop fs -rm -r <filename> Dosyayı siler (-r recursive)
hadoop fs -mv <source> <target> Dosyayı taşır
hadoop fs -cp <source> <target> Dosyayı kopyalar
● MapReduce bir programlama modelidir
○ Platform ve dil bağımsızdır
○ Kayıt tabanlı veri işleme yöntemidir
○ Anahtar-değer ikilisi üzerinden çalışır
○ Görevlerin düğümler üzerine dağıtılmasını sağlar
● İki temel aşamadan oluşur
○ Map
○ Reduce
● Map ve Reduce birer fonksiyondur
○ Geliştirici sadece bu fonksiyonları yazar
MapReduce
MapReduce
● Map metodu
public 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));
}
}
MapReduce
● Reducer metodu
public 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));
}
MapReduce
● Tool sınıfı
public class WordCount extends Configured implements Tool {
public static void main(String[] args) throws Exception {
int exitCode = ToolRunner.run(new WordCount(), args);
System.exit(exitCode);
}
public int run(String[] args) throws Exception {
// …
}
}
MapReduce
● Tool sınıfı (devam)
public int run(String[] args) throws Exception {
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;
}
MapReduce
$ hadoop jar <jarfile> <classname> <args...>
$ hadoop jar devveri-mapreduce-0.0.1-SNAPSHOT.jar com.devveri.hadoop.mapreduce.WordCount test.txt
devveri
12/07/09 23:44:41 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments.
Applications should implement Tool for the same.
12/07/09 23:44:41 INFO input.FileInputFormat: Total input paths to process : 1
12/07/09 23:44:41 INFO mapred.JobClient: Running job: job_201204231254_5522
12/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_5522
12/07/09 23:45:13 INFO mapred.JobClient: Counters: 29
12/07/09 23:45:13 INFO mapred.JobClient: Job Counters
12/07/09 23:45:13 INFO mapred.JobClient: Launched reduce tasks=1
12/07/09 23:45:13 INFO mapred.JobClient: SLOTS_MILLIS_MAPS=11984
12/07/09 23:45:13 INFO mapred.JobClient: Total time spent by all reduces waiting after
reserving slots (ms)=0
12/07/09 23:45:13 INFO mapred.JobClient: Total time spent by all maps waiting after reserving
slots (ms)=0
12/07/09 23:45:13 INFO mapred.JobClient: Launched map tasks=1
...
Uygulama Çalıştırma
● Avantajları
○ Her dilde yazılabilir
○ Daha kolay geliştirme yapılabilir
○ Yeniden kullanılabilir kodlar yazılabilir
● Dezavantajları
○ Performans düşüktür
○ Daha ziyade Text dosyaları işlemek için kullanılır
○ Çok fazla RAM veya CPU tüketebilir
○ Bazı özellikler sadece Java ile mümkün
Hadoop Streaming
● Yet Another Resource Negotiator
○ MRv1 mimarisindeki problemlerin çözümü
○ Kaynak ve işlem süreçlerini ayırır
○ YARN sadece MR değil çok daha genel
■ Daha ölçeklenebilir
■ Mevcut MR uygulamaları desteklenir
■ Sadece MR değil, Storm, Spark, Hive vs.
YARN
YARN
Gündem
● Neden Hadoop?
● HDFS ve MapReduce
● Hadoop Dağıtımları
● Entegrasyonlar
● Pig
● Hive
● Impala
Hadoop Dağıtımları
● Apache
○ Topluluk tarafından geliştiriliyor
○ En güncel sürüm 2.4.0
○ Kurulumu, yönetimi zor
● Hortonworks
○ Hortonworks Data Platform 2.1
○ Açık kaynağa, topluluğa daha yakın
● Cloudera
○ Cloudera Distribution Hadoop 5
○ Kurumsal yaklaşım, 50 sunucuya kadar ücretsiz
Hortonworks Data Platform
Cloudera Distribution Hadoop
Cloudera Distribution Hadoop
● Cloudera Manager
○ Web tabanlı küme yönetim aracı
○ Sunucu ekleme/çıkartma
○ Servis ekleme/çıkartma/durdurma/başlatma
○ Monitörleme, Raporlama, Denetim
● Hue
○ Hadoop User Experience
○ Uygulamalar için web arayüzü
○ Açık kaynaklı
○ Konsol bağımlılığını kaldırır
Cloudera Manager
Hue
Gündem
● Neden Hadoop?
● HDFS ve MapReduce
● Hadoop Dağıtımları
● Entegrasyonlar
● Pig
● Hive
● Impala
Entegrasyonlar
● Flume : Gerçek zamanlı veri aktarımı
○ Agent'lar aracılığı ile veri toplama
● Sqoop : SQL to Hadoop
○ Veritabanından Hadoop'a
○ Hadoop'tan veritabanına aktarım
● Apache Flume sunucular üzerinde çalışan
agent uygulamaları aracılığı ile topladığı
verileri Hadoop üzerine aktarmayı sağlayan
bir araçtır.
Flume
Flume
● Agent yapısı
Örnek Ayarlar
# Define a memory channel called ch1 on agent1
agent1.channels.ch1.type = memory
# Define an Avro source called avro-source1 on agent1 and tell it
# to bind to 0.0.0.0:41414. Connect it to channel ch1.
agent1.sources.avro-source1.channels = ch1
agent1.sources.avro-source1.type = avro
agent1.sources.avro-source1.bind = 0.0.0.0
agent1.sources.avro-source1.port = 41414
# Define a logger sink that simply logs all events it receives
# and connect it to the other end of the same channel.
agent1.sinks.log-sink1.channel = ch1
agent1.sinks.log-sink1.type = logger
# Finally, now that we've defined all of our components, tell
# agent1 which ones we want to activate.
agent1.channels = ch1
agent1.sources = avro-source1
agent1.sinks = log-sink1
Sqoop
● Apache Sqoop (SQL to Hadoop) veritabanı
ile Hadoop arasında veri transferi amacıyla
geliştirilmiş bir araçtır.
Sqoop
● Import, export işlemleri için kullanılır
● JDBC destekleyen her veritabanıyla çalışır
● Direkt aktarım kanallarını kullanabilir
○ MySQL (mysqldump)
○ PostgreSQL (sadece import)
○ Oracle (Quest Software yazılımı ile)
Sqoop
● MR kullanarak paralel çalışır
○ Varsayılan 4 mapper kullanır
○ Aktarım işlemi veritabanına yük getirebilir
● Tablo ya da DB aktarır
○ Tek bir tablo
○ Tüm tablolar
○ Tablonun bir kısmı (where, query)
○ Yeni gelen verilerin aktarımı (incremental)
Sqoop Import
● Text dosyası olarak import
$ sqoop import 
--driver com.mysql.jdbc.Driver 
--connect jdbc:mysql://$DB_HOST/$DB_NAME 
--username $DB_USER 
--password $DB_PASS 
--table $TABLE_NAME 
--target-dir $TARGET_DIR 
--as-textfile
Sqoop Import
● Avro formatında import
$ sqoop import 
--driver com.mysql.jdbc.Driver 
--connect jdbc:mysql://$DB_HOST/$DB_NAME 
--username $DB_USER 
--password $DB_PASS 
--as-textfile 
--table $TABLE_NAME 
--target-dir $TARGET_DIR 
--as-avrodatafile
● SequenceFile formatında import
--as-sequencefile
Sqoop Import
● Hive tablosu olarak aktarmak
$ sqoop import 
--driver com.mysql.jdbc.Driver 
--connect jdbc:mysql://$DB_HOST/$DB_NAME 
--username $DB_USER 
--password $DB_PASS 
--table $TABLE_NAME 
--target-dir $TARGET_DIR 
--hive-import 
--hive-table $TABLE_NAME 
--hive-overwrite
Gündem
● Neden Hadoop?
● HDFS ve MapReduce
● Hadoop Dağıtımları
● Entegrasyonlar
● Pig
● Hive
● Impala
Pig
● Apache Pig, Hadoop üzerindeki büyük
verileri işlemek için geliştirilmiş, Pig Latin
olarak isimlendirilen yüksek seviyeli bir dile
sahip veri işleme aracıdır.
WordCount.pig
-- hdfs://host/users/user/data.txt dosyasini yukle
input = load 'data.txt' as (line);
-- TOKENIZE ile her satirdaki verileri kelimelerine ayir
-- flatten ile her bir kelimeyi bir satira donustur
words = foreach input generate flatten(TOKENIZE(line)) as word;
-- kelimeleri grupla ve say
grpd = group words by word;
cntd = foreach grpd generate group, COUNT(words);
-- ekrana bas
dump cntd;
Pig Özellikleri
● Map Reduce yazımını kolaylaştırır
● Basit dil, yeniden kullanılabilirlik
● Standart dosya formatlarını destekler
○ text, json, sequence, binary, avro…
● Esnek veri modeli
○ Basit tipler: int, long, float, double …
○ Kompleks tipler: Map, Tuple, Bag
● SQL benzeri ifadeler kullanılır
○ Filtreleme, Gruplama, Sıralama ...
Formatlar
● Her türlü format işlenebilir
-- tab ile ayrilmis dosya
tsv = load 'data.tsv' as (id, name, email);
-- virgul ile ayrilmis dosya
csv = load 'data.csv'
using PigStorage(',') as (id, name, email);
-- hcatalog uzerindeki tablo
table = load 'tablename'
using org.apache.hcatalog.pig.HCatLoader();
-- hbase uzerindeki tablo
col = load 'hbase://SomeTableName' using
org.apache.pig.backend.hadoop.hbase.HBaseStorage(...)
Şema Kullanımı
● Şema zorunlu değildir
A = load 'data';
B = filter A by $1 > 100;
● Mevcut şemayı destekler
○ Tip kontrolü ve optimizasyonda kullanılır
A = load 'data' as (customer:int, purchase:double);
B = filter A by purchase > 100;
İfadeler
● load
● store
● dump
● foreach
● filter
● group/cogroup
● join
● cross
● order
● distinct
● union
● split
● limit
● stream
İfadelere Örnek
● Group
A = load 'student' as (name:chararray, age:int, gpa:float);
B = group A by age;
C = foreach B generate age, COUNT($0);
● Join
A1 = load 'products.csv' as (productId, productName);
A2 = load 'companies.csv' as (productId, companyName);
J = join A1 by productId, A2 BY productId;
R = foreach J generate $0, $1, $3;
Pig Avantajları
● Pig kodları MapReduce kodlarına çevrilir
● Güçlü dil, ifadeler, fonksiyonlar, UDF
● Ölçeklenebilirlik ve Performans
● SQL benzeri, SQL'den daha anlaşılır
● Şema zorunlu değildir
● Yapılandırılmamış veriye çok uygundur
● ETL işleri için kullanılabilir
Gündem
● Neden Hadoop?
● HDFS ve MapReduce
● Hadoop Dağıtımları
● Entegrasyonlar
● Pig
● Hive
● Impala
Hive
Apache Hive, SQL yardımıyla Hadoop üzerinde
sorgulama ve Veri Ambarı uygulamaları
geliştirmeyi sağlayan bir araçtır.
WordCount.sql
/* docs tablosunu yarat */
CREATE TABLE docs (line STRING);
/* docs dosyasini docs tablosu icerisine aktar */
LOAD DATA INPATH 'docs' OVERWRITE INTO TABLE docs;
/* kelimeleri sayarak yeni bir tablo olustur */
CREATE TABLE word_counts AS
SELECT word, count(1) AS count FROM
(SELECT explode(split(line, 's')) AS word FROM docs) w
GROUP BY word
ORDER BY word;
Hive Özellikleri
● SQL ile MapReduce yazılmasını sağlar
○ SQL-92 standartlarına yakındır
○ Sorgular MapReduce'e dönüştürülür
● UPDATE ve DELETE desteklemez!
○ HIVE-5317 - Implement insert, update, and delete
in Hive with full ACID support
● Veriler HDFS üzerinde saklanır
○ Dosyalar tablo gibi gösterilir
○ /user/hive/warehouse dizini varsayılandır
● Veri hakkındaki meta veriyi yönetir
Tablo Tanımlama
CREATE TABLE employees (
name STRING,
salary FLOAT,
subordinates ARRAY<STRING>,
deductions MAP<STRING, FLOAT>,
address STRUCT<street:STRING, city:STRING,
state:STRING, zip:INT>
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '001'
COLLECTION ITEMS TERMINATED BY '002'
MAP KEYS TERMINATED BY '003'
LINES TERMINATED BY 'n'
STORED AS TEXTFILE;
● LOAD DATA komutu
○ HDFS üzerindeki dosyalar içeri aktarılır
LOAD DATA INPATH 'data.csv'
INTO TABLE employees
PARTITION(field='value')
○ Lokal diskteki veriler de aktarılabilir
LOAD DATA LOCAL INPATH '/path/data.csv'
OVERWRITE INTO TABLE employees;
○ Dosya kopyalama ile aynı işlemi yapar
$ hadoop fs -mv /path/data.csv /user/hive/warehouse/test
Veri Girişi
● External tablo kullanımı
○ Dosyalar taşınmak zorunda değildirdir
○ İstenilen dizin external tablo olarak kullanılabilir
CREATE EXTERNAL TABLE customers (
id INT,
email STRING
)
ROW FORMAT DELIMITED
STORED AS TEXTFILE
LOCATION '/user/admin/userdata';
Veri Girişi
Sorgular
● Standart sorgular
SELECT [ALL | DISTINCT] expr, expr, ...
FROM table_reference
[WHERE where_condition]
[GROUP BY col_list]
[LIMIT number]
● Karmaşık sorgular
SELECT table3.col
FROM (
SELECT a+b AS col FROM table1
UNION ALL
SELECT c+d AS col FROM table2
) table3
Sorgular
● JOIN örneği
○ Sadece eşitlik üzerinden bağ kurulabilir
■ a.id = b.id
○ INNER | LEFT | RIGHT | FULL OUTER JOIN
○ LEFT SEMI JOIN
○ Birden fazla tablo birbirine bağlanabilir
SELECT a.val, b.val, c.val FROM a
JOIN b ON (a.key = b.key1)
JOIN c ON (c.key = b.key1)
Fonksiyonlar
● Birçok fonksiyonu destekler
○ Matematiksel
■ round, floor, sqrt, abs, sin, exp, log, …
○ Tarih
■ year, month, date_add, datediff, unix_timestamp, …
○ String
■ length, concat, substr, upper, lower, trim, …
○ Kümeleme
■ sum, avg, min, max, percentile, stddev_pop, ...
Metastore
● Metadata'yı yönetir
○ Tablolar ile ilgili kolonların tipleri
○ HDFS üzerinde dosyaların konumu
○ Partitioning bilgisi
○ SerDe ayarları
○ İstatistik
● Datanucleus ORM kullanır
○ Derby, MySQL ve benzeri RDBMS kullanılabilir
Hive Avantajları
● SQL kolaylığı
○ Herkes SQL biliyor
● Ölçeklenebilirlik ve Performans
○ Küme üzerinde çalışır
● Anlık sorgular değil büyük sorgular
○ DWH sorguları
● Entegrasyon kolaylığı
○ Mevcut araçlarla olan entegrasyon
Gündem
● Neden Hadoop?
● HDFS ve MapReduce
● Hadoop Dağıtımları
● Entegrasyonlar
● Pig
● Hive
● Impala
Impala
● Cloudera Impala büyük veri analizi amacıyla
geliştirilmiş devasa paralel işlem (MPP) SQL
sorgu motorudur.
Impala
● MapReduce
○ Batch işlemler için tasarlanmış
○ Hive işleri uzun sürebilir
○ İhtiyacımız hız!
● Impala
○ Hive ile kıyaslanınca 4-35x daha hızlı
○ Dakikalar değil saniyeler
Impala
● Performans
○ MapReduce kullanmaz
○ Veriye direkt erişir
○ Yoğun biçimde RAM kullanır
■ Ara işlem verileri
■ Join işlemleri
○ C++ ile geliştirilmiştir
○ Çalışma anı kod oluşturma (LLVM)
● Entegrasyon Kolaylığı
○ HDFS üzerindeki verilere erişir
○ Hive meta verisini kullanır
○ Hive ile aynı dili kullanır: HiveQL
○ Bilinen formatları (Text, Avro, vs) destekler
● Limitasyonlar
○ SerDe desteği henüz yok
○ Tüm sıkıştırma formatlarını desteklemez
○ RAM limitasyonu
Impala
Impala
Hadoop Ekosistemi
● HCatalog (Metastore)
● HBase, Hypertable, Accumulo (NoSQL)
● Hama, Corona (~MapReduce)
● Chukwa, Kafka, Scribe (~Flume)
● Mahout (Machine Learning)
● Oozie, Azkaban (Scheduler)
● Zookeeper (Cluster Management)
● Stinger, Drill, Shark, Presto, Tajo, Phoenix (~Impala)
● Spark, Storm (~Hadoop)
● Mesos, Whirr (Cluster Manager)
● Tachyon (~HDFS)
● Nutch (Crawler)
Teşekkürler!

Mais conteúdo relacionado

Mais procurados

Big Data (Büyük Veri) Nedir?
Big Data (Büyük Veri) Nedir?Big Data (Büyük Veri) Nedir?
Big Data (Büyük Veri) Nedir?Renerald
 
Big data 24 mart 2015
Big data 24 mart 2015Big data 24 mart 2015
Big data 24 mart 2015Bilge Narin
 
Bigdata Nedir? Hadoop Nedir? MapReduce Nedir? Big Data.
Bigdata Nedir? Hadoop Nedir? MapReduce Nedir? Big Data.Bigdata Nedir? Hadoop Nedir? MapReduce Nedir? Big Data.
Bigdata Nedir? Hadoop Nedir? MapReduce Nedir? Big Data.Zekeriya Besiroglu
 
Sqoop on Spark for Data Ingestion
Sqoop on Spark for Data IngestionSqoop on Spark for Data Ingestion
Sqoop on Spark for Data IngestionDataWorks Summit
 
Big data Presentation
Big data PresentationBig data Presentation
Big data PresentationAswadmehar
 
Pipelines and Data Flows: Introduction to Data Integration in Azure Synapse A...
Pipelines and Data Flows: Introduction to Data Integration in Azure Synapse A...Pipelines and Data Flows: Introduction to Data Integration in Azure Synapse A...
Pipelines and Data Flows: Introduction to Data Integration in Azure Synapse A...Cathrine Wilhelmsen
 
Analysing of big data using map reduce
Analysing of big data using map reduceAnalysing of big data using map reduce
Analysing of big data using map reducePaladion Networks
 
Big Data PPT by Rohit Dubey
Big Data PPT by Rohit DubeyBig Data PPT by Rohit Dubey
Big Data PPT by Rohit DubeyRohit Dubey
 
Hadoop Overview & Architecture
Hadoop Overview & Architecture  Hadoop Overview & Architecture
Hadoop Overview & Architecture EMC
 
Big Data Technology Stack : Nutshell
Big Data Technology Stack : NutshellBig Data Technology Stack : Nutshell
Big Data Technology Stack : NutshellKhalid Imran
 
Data Lake Overview
Data Lake OverviewData Lake Overview
Data Lake OverviewJames Serra
 
Is the traditional data warehouse dead?
Is the traditional data warehouse dead?Is the traditional data warehouse dead?
Is the traditional data warehouse dead?James Serra
 
Big data by Mithlesh sadh
Big data by Mithlesh sadhBig data by Mithlesh sadh
Big data by Mithlesh sadhMithlesh Sadh
 
Hw09 Hadoop Development At Facebook Hive And Hdfs
Hw09   Hadoop Development At Facebook  Hive And HdfsHw09   Hadoop Development At Facebook  Hive And Hdfs
Hw09 Hadoop Development At Facebook Hive And HdfsCloudera, Inc.
 

Mais procurados (20)

Big Data (Büyük Veri) Nedir?
Big Data (Büyük Veri) Nedir?Big Data (Büyük Veri) Nedir?
Big Data (Büyük Veri) Nedir?
 
Big Data Sunum
Big Data SunumBig Data Sunum
Big Data Sunum
 
Big data 24 mart 2015
Big data 24 mart 2015Big data 24 mart 2015
Big data 24 mart 2015
 
Bigdata Nedir? Hadoop Nedir? MapReduce Nedir? Big Data.
Bigdata Nedir? Hadoop Nedir? MapReduce Nedir? Big Data.Bigdata Nedir? Hadoop Nedir? MapReduce Nedir? Big Data.
Bigdata Nedir? Hadoop Nedir? MapReduce Nedir? Big Data.
 
Sqoop on Spark for Data Ingestion
Sqoop on Spark for Data IngestionSqoop on Spark for Data Ingestion
Sqoop on Spark for Data Ingestion
 
Hadoop Tutorial For Beginners
Hadoop Tutorial For BeginnersHadoop Tutorial For Beginners
Hadoop Tutorial For Beginners
 
Big data Presentation
Big data PresentationBig data Presentation
Big data Presentation
 
Pipelines and Data Flows: Introduction to Data Integration in Azure Synapse A...
Pipelines and Data Flows: Introduction to Data Integration in Azure Synapse A...Pipelines and Data Flows: Introduction to Data Integration in Azure Synapse A...
Pipelines and Data Flows: Introduction to Data Integration in Azure Synapse A...
 
Big data
Big dataBig data
Big data
 
Analysing of big data using map reduce
Analysing of big data using map reduceAnalysing of big data using map reduce
Analysing of big data using map reduce
 
Big Data
Big DataBig Data
Big Data
 
Big data
Big dataBig data
Big data
 
Big Data PPT by Rohit Dubey
Big Data PPT by Rohit DubeyBig Data PPT by Rohit Dubey
Big Data PPT by Rohit Dubey
 
Hadoop Overview & Architecture
Hadoop Overview & Architecture  Hadoop Overview & Architecture
Hadoop Overview & Architecture
 
Big Data Technology Stack : Nutshell
Big Data Technology Stack : NutshellBig Data Technology Stack : Nutshell
Big Data Technology Stack : Nutshell
 
Big Data ppt
Big Data pptBig Data ppt
Big Data ppt
 
Data Lake Overview
Data Lake OverviewData Lake Overview
Data Lake Overview
 
Is the traditional data warehouse dead?
Is the traditional data warehouse dead?Is the traditional data warehouse dead?
Is the traditional data warehouse dead?
 
Big data by Mithlesh sadh
Big data by Mithlesh sadhBig data by Mithlesh sadh
Big data by Mithlesh sadh
 
Hw09 Hadoop Development At Facebook Hive And Hdfs
Hw09   Hadoop Development At Facebook  Hive And HdfsHw09   Hadoop Development At Facebook  Hive And Hdfs
Hw09 Hadoop Development At Facebook Hive And Hdfs
 

Destaque

Hadoop @ devveri.com
Hadoop @ devveri.comHadoop @ devveri.com
Hadoop @ devveri.comHakan Ilter
 
TRHUG 2015 - Veloxity Big Data Migration Use Case
TRHUG 2015 - Veloxity Big Data Migration Use CaseTRHUG 2015 - Veloxity Big Data Migration Use Case
TRHUG 2015 - Veloxity Big Data Migration Use CaseHakan Ilter
 
August 2016 HUG: Open Source Big Data Ingest with StreamSets Data Collector
August 2016 HUG: Open Source Big Data Ingest with StreamSets Data Collector August 2016 HUG: Open Source Big Data Ingest with StreamSets Data Collector
August 2016 HUG: Open Source Big Data Ingest with StreamSets Data Collector Yahoo Developer Network
 
Apache Hadoop YARN: Understanding the Data Operating System of Hadoop
Apache Hadoop YARN: Understanding the Data Operating System of HadoopApache Hadoop YARN: Understanding the Data Operating System of Hadoop
Apache Hadoop YARN: Understanding the Data Operating System of HadoopHortonworks
 
August 2016 HUG: Better together: Fast Data with Apache Spark™ and Apache Ign...
August 2016 HUG: Better together: Fast Data with Apache Spark™ and Apache Ign...August 2016 HUG: Better together: Fast Data with Apache Spark™ and Apache Ign...
August 2016 HUG: Better together: Fast Data with Apache Spark™ and Apache Ign...Yahoo Developer Network
 
August 2016 HUG: Recent development in Apache Oozie
August 2016 HUG: Recent development in Apache OozieAugust 2016 HUG: Recent development in Apache Oozie
August 2016 HUG: Recent development in Apache OozieYahoo Developer Network
 

Destaque (6)

Hadoop @ devveri.com
Hadoop @ devveri.comHadoop @ devveri.com
Hadoop @ devveri.com
 
TRHUG 2015 - Veloxity Big Data Migration Use Case
TRHUG 2015 - Veloxity Big Data Migration Use CaseTRHUG 2015 - Veloxity Big Data Migration Use Case
TRHUG 2015 - Veloxity Big Data Migration Use Case
 
August 2016 HUG: Open Source Big Data Ingest with StreamSets Data Collector
August 2016 HUG: Open Source Big Data Ingest with StreamSets Data Collector August 2016 HUG: Open Source Big Data Ingest with StreamSets Data Collector
August 2016 HUG: Open Source Big Data Ingest with StreamSets Data Collector
 
Apache Hadoop YARN: Understanding the Data Operating System of Hadoop
Apache Hadoop YARN: Understanding the Data Operating System of HadoopApache Hadoop YARN: Understanding the Data Operating System of Hadoop
Apache Hadoop YARN: Understanding the Data Operating System of Hadoop
 
August 2016 HUG: Better together: Fast Data with Apache Spark™ and Apache Ign...
August 2016 HUG: Better together: Fast Data with Apache Spark™ and Apache Ign...August 2016 HUG: Better together: Fast Data with Apache Spark™ and Apache Ign...
August 2016 HUG: Better together: Fast Data with Apache Spark™ and Apache Ign...
 
August 2016 HUG: Recent development in Apache Oozie
August 2016 HUG: Recent development in Apache OozieAugust 2016 HUG: Recent development in Apache Oozie
August 2016 HUG: Recent development in Apache Oozie
 

Semelhante a Büyük veri teknolojilerine giriş v1l

Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari Oluşturma
Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari OluşturmaSymfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari Oluşturma
Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari OluşturmaHüseyin Mert
 
Sunucularımızı Gözleyelim
Sunucularımızı GözleyelimSunucularımızı Gözleyelim
Sunucularımızı GözleyelimOguz Yarimtepe
 
Veri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkVeri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkHakan Sarıbıyık
 
Ankara JUG Big Data Presentation
Ankara JUG Big Data PresentationAnkara JUG Big Data Presentation
Ankara JUG Big Data PresentationSerkan Özal
 
Big Data Analytics
Big Data AnalyticsBig Data Analytics
Big Data AnalyticsMudur Alkan
 
Hepsistream real time click-stream data analytics platform
Hepsistream real time click-stream  data analytics platformHepsistream real time click-stream  data analytics platform
Hepsistream real time click-stream data analytics platformHepsiburada
 
Istanbul Datascience Academy Talks
Istanbul Datascience Academy TalksIstanbul Datascience Academy Talks
Istanbul Datascience Academy TalksMetin Uslu
 
Dspace Migration and Dspace Piwik Integration
Dspace Migration and Dspace Piwik IntegrationDspace Migration and Dspace Piwik Integration
Dspace Migration and Dspace Piwik IntegrationMesut Güngör
 
Hadoop,Pig,Hive ve Oozie ile Büyük Veri Analizi
Hadoop,Pig,Hive ve Oozie ile Büyük Veri AnaliziHadoop,Pig,Hive ve Oozie ile Büyük Veri Analizi
Hadoop,Pig,Hive ve Oozie ile Büyük Veri AnaliziSerkan Sakınmaz
 
Blockchain : Decentralized Application Development (Turkish)
Blockchain : Decentralized Application Development (Turkish)Blockchain : Decentralized Application Development (Turkish)
Blockchain : Decentralized Application Development (Turkish)Cihan Özhan
 
Ceph Türkiye 2.meetup İstanbul
Ceph Türkiye 2.meetup İstanbulCeph Türkiye 2.meetup İstanbul
Ceph Türkiye 2.meetup İstanbulHuseyin Cotuk
 
Coğrafik Veri Ambarlarının Modellenmesi ve Sorgulanması
Coğrafik Veri Ambarlarının Modellenmesi ve SorgulanmasıCoğrafik Veri Ambarlarının Modellenmesi ve Sorgulanması
Coğrafik Veri Ambarlarının Modellenmesi ve SorgulanmasıFerhat Kurt
 
Python programlama
Python programlamaPython programlama
Python programlamaMurat KARA
 
Vhdl dokumani
Vhdl dokumaniVhdl dokumani
Vhdl dokumanisersld80
 

Semelhante a Büyük veri teknolojilerine giriş v1l (20)

Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari Oluşturma
Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari OluşturmaSymfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari Oluşturma
Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari Oluşturma
 
Sunucularımızı Gözleyelim
Sunucularımızı GözleyelimSunucularımızı Gözleyelim
Sunucularımızı Gözleyelim
 
Veri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkVeri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan Sarıbıyık
 
1 hafta_dersi
1  hafta_dersi1  hafta_dersi
1 hafta_dersi
 
Ankara JUG Big Data Presentation
Ankara JUG Big Data PresentationAnkara JUG Big Data Presentation
Ankara JUG Big Data Presentation
 
Big Data Analytics
Big Data AnalyticsBig Data Analytics
Big Data Analytics
 
Hepsistream real time click-stream data analytics platform
Hepsistream real time click-stream  data analytics platformHepsistream real time click-stream  data analytics platform
Hepsistream real time click-stream data analytics platform
 
Hadoop nedir
Hadoop nedirHadoop nedir
Hadoop nedir
 
Istanbul Datascience Academy Talks
Istanbul Datascience Academy TalksIstanbul Datascience Academy Talks
Istanbul Datascience Academy Talks
 
Dspace Migration and Dspace Piwik Integration
Dspace Migration and Dspace Piwik IntegrationDspace Migration and Dspace Piwik Integration
Dspace Migration and Dspace Piwik Integration
 
Hadoop,Pig,Hive ve Oozie ile Büyük Veri Analizi
Hadoop,Pig,Hive ve Oozie ile Büyük Veri AnaliziHadoop,Pig,Hive ve Oozie ile Büyük Veri Analizi
Hadoop,Pig,Hive ve Oozie ile Büyük Veri Analizi
 
Blockchain : Decentralized Application Development (Turkish)
Blockchain : Decentralized Application Development (Turkish)Blockchain : Decentralized Application Development (Turkish)
Blockchain : Decentralized Application Development (Turkish)
 
12factor apps
12factor apps12factor apps
12factor apps
 
Ceph Türkiye 2.meetup İstanbul
Ceph Türkiye 2.meetup İstanbulCeph Türkiye 2.meetup İstanbul
Ceph Türkiye 2.meetup İstanbul
 
Coğrafik Veri Ambarlarının Modellenmesi ve Sorgulanması
Coğrafik Veri Ambarlarının Modellenmesi ve SorgulanmasıCoğrafik Veri Ambarlarının Modellenmesi ve Sorgulanması
Coğrafik Veri Ambarlarının Modellenmesi ve Sorgulanması
 
Python programlama
Python programlamaPython programlama
Python programlama
 
Pratik caffe
Pratik caffePratik caffe
Pratik caffe
 
Web development
Web developmentWeb development
Web development
 
Linkle mimari
Linkle mimariLinkle mimari
Linkle mimari
 
Vhdl dokumani
Vhdl dokumaniVhdl dokumani
Vhdl dokumani
 

Büyük veri teknolojilerine giriş v1l

  • 2. Hakkımda ● Hakan İlter ○ Software Platform & Research Manager ○ GittiGidiyor / eBay ○ Marmara Üni. Elektronik ○ 14+ Yazılım 4+ Yöneticilik ○ Java, C, C++, C# ○ Linux! ○ Search, Big Data, NoSQL hilter@ebay.com twitter: hailter http://tr.linkedin.com/in/hakanilter/ http://github.com/hakanilter http://devveri.com
  • 4. Gündem ● Neden Hadoop? ● HDFS ve MapReduce ● Hadoop Dağıtımları ● Entegrasyonlar ● Pig ● Hive ● Impala
  • 5. ● Her zamankinden daha fazla veri üretiyoruz ○ Satış verileri ○ Kullanıcı bilgileri ○ Web sitesi hareketleri ○ Sosyal medya ○ E-Posta ○ Sunucu logları ○ Sensör verileri ○ Lokasyon bilgisi Veri Bombardımanı
  • 6. Veri Bombardımanı ● Her zamankinden daha hızlı veri üretiyoruz ○ Twitter 143,199 TPS. ~500 milyon tweet ○ Google günde 5,922,000,000 arama ○ Facebook her 20dk da 3,000,000 mesaj ○ eBay dakikada 950+ alışveriş, 180+ mobilden ○ Amazon saniyede 426 ürün satışı ○ Apple dakikada 81 iPad, 925 iPhone satışı
  • 7. Veri Bombardımanı ● Her zamankinden çok çeşitli veri üretiyoruz ○ Binary ○ Text, CSV ○ XML, JSON ○ Resim, Ses, Video ○ Sıkıştırılmış / Sıkıştırılmamış ● Yapılandırılmış / Yapılandırılmamış Veri ○ %90 veri yapılandırılmamış, sabit bir formatı yok
  • 9. ● Büyük veri içerisinde çok değerli bilgiler var ○ Pazarlama analizi ○ Talep analizi ○ Müşteri segmentasyonu ○ Sahtecilik önleme ○ Gerçek zamanlı raporlama ○ Sunucu faaliyetlerini izleme ○ Ürün önerme (recommendation) ○ … ve daha fazlası Neler Yapılabilir?
  • 10. ● Büyük veriyi saklamak ○ Sürekli büyüyen veri ○ Storage maliyetleri ○ Arşivleme zorunluluğu ● Büyük veriyi işlemek ○ Donanım limitlerine takılmamalı ○ 100 GB veriyi sadece okumak ~22 dk! ○ Ağ darboğazı Nasıl Yapılabilir?
  • 11. ● RDBMS ○ Yapılandırılmamış veriye uygun değil ○ Ölçeklenme problemi ○ Lisans ücretleri ● Donanım Limitleri ○ CPU, RAM, Disk, Network ● Yazılımsal Karmaşıklık ○ Senkronizasyon, bant genişliği, erişilebilirlik, hata toleransı Geleneksel Yöntemlerin Problemleri
  • 12. ● Ölçeklenebilir ○ İhtiyaç durumunda sistem genişleyebilmeli ● Tutarlı ○ Veri saklanırken bozulmamalı ● Veri Garantili ○ Veriler yedekli olmalı ● Erişilebilir ○ Sistem her durumda çalışabilir olmalı Yeni Bir Yaklaşım
  • 13. ● Veri işleme amaçlı dağıtık uygulamalar yazılmasını sağlayan bir platform ve açık kaynaklı bir Apache projesidir Hadoop
  • 15. ● Neden Hadoop? ● HDFS ve MapReduce ● Hadoop Dağıtımları ● Entegrasyonlar ● Pig ● Hive ● Impala Gündem
  • 16. ● İki temel bileşenden oluşur ○ Hadoop Distributed File System (HDFS) ○ MapReduce Hadoop
  • 17. ● Google File System temel alınmıştır ● Verinin saklanmasından sorumludur ● Dağıtık bir dosya sistemidir ● Birden çok düğümün disklerini birleştirir ● Pahalı donanım gerektirmez ● Veriyi bloklar halinde saklar ● Bloklar varsayılan 64MB veya 128MB ● Her blok varsayılan 3 kopya olarak tutulur HDFS
  • 18. ● Blokların yapısına örnek HDFS DataNode 1 blok 1 blok 2 blok 3 DataNode 2 blok 3 blok 2 blok 4 DataNode 3 blok 3 blok 1 blok 4 DataNode 4 blok 4 blok 2 blok 1
  • 19. ● Normal dosya sistemleri üzerinde çalışır ○ ext3, ext4, xfs, ntfs? ● Büyük dosyalarla çalışmak için uygundur ○ Küçük dosyalar sistemin kaynaklarını tüketir ○ Büyük ve az sayıda dosya olmalıdır ○ 100 MB veya daha büyük dosyalar uygundur ● Dosyalara bir sefer yazılabilir (write-once) ○ Dosya kapatıldıktan sonra tekrar yazılamaz ● Rastlantısal erişim yoktur ○ Büyük duraksız (streaming) veri erişimi HDFS
  • 20. ● Komut satırı üzerinden erişilebilir HDFS Komutları hadoop fs -ls -r <path> Dosyaları listeler (-r recursive) hadoop fs -mkdir <path> Klasör oluşturur hadoop fs -put <local> <target> Lokalden HDFS'e dosya kopyalar hadoop fs -get <source> <local> HDFS'den lokale dosya kopyalar hadoop fs -cat <filename> Dosya içeriğini konsola basar hadoop fs -rm -r <filename> Dosyayı siler (-r recursive) hadoop fs -mv <source> <target> Dosyayı taşır hadoop fs -cp <source> <target> Dosyayı kopyalar
  • 21. ● MapReduce bir programlama modelidir ○ Platform ve dil bağımsızdır ○ Kayıt tabanlı veri işleme yöntemidir ○ Anahtar-değer ikilisi üzerinden çalışır ○ Görevlerin düğümler üzerine dağıtılmasını sağlar ● İki temel aşamadan oluşur ○ Map ○ Reduce ● Map ve Reduce birer fonksiyondur ○ Geliştirici sadece bu fonksiyonları yazar MapReduce
  • 23. ● Map metodu public 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)); } } MapReduce
  • 24. ● Reducer metodu public 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)); } MapReduce
  • 25. ● Tool sınıfı public class WordCount extends Configured implements Tool { public static void main(String[] args) throws Exception { int exitCode = ToolRunner.run(new WordCount(), args); System.exit(exitCode); } public int run(String[] args) throws Exception { // … } } MapReduce
  • 26. ● Tool sınıfı (devam) public int run(String[] args) throws Exception { 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; } MapReduce
  • 27. $ hadoop jar <jarfile> <classname> <args...> $ hadoop jar devveri-mapreduce-0.0.1-SNAPSHOT.jar com.devveri.hadoop.mapreduce.WordCount test.txt devveri 12/07/09 23:44:41 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same. 12/07/09 23:44:41 INFO input.FileInputFormat: Total input paths to process : 1 12/07/09 23:44:41 INFO mapred.JobClient: Running job: job_201204231254_5522 12/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_5522 12/07/09 23:45:13 INFO mapred.JobClient: Counters: 29 12/07/09 23:45:13 INFO mapred.JobClient: Job Counters 12/07/09 23:45:13 INFO mapred.JobClient: Launched reduce tasks=1 12/07/09 23:45:13 INFO mapred.JobClient: SLOTS_MILLIS_MAPS=11984 12/07/09 23:45:13 INFO mapred.JobClient: Total time spent by all reduces waiting after reserving slots (ms)=0 12/07/09 23:45:13 INFO mapred.JobClient: Total time spent by all maps waiting after reserving slots (ms)=0 12/07/09 23:45:13 INFO mapred.JobClient: Launched map tasks=1 ... Uygulama Çalıştırma
  • 28. ● Avantajları ○ Her dilde yazılabilir ○ Daha kolay geliştirme yapılabilir ○ Yeniden kullanılabilir kodlar yazılabilir ● Dezavantajları ○ Performans düşüktür ○ Daha ziyade Text dosyaları işlemek için kullanılır ○ Çok fazla RAM veya CPU tüketebilir ○ Bazı özellikler sadece Java ile mümkün Hadoop Streaming
  • 29. ● Yet Another Resource Negotiator ○ MRv1 mimarisindeki problemlerin çözümü ○ Kaynak ve işlem süreçlerini ayırır ○ YARN sadece MR değil çok daha genel ■ Daha ölçeklenebilir ■ Mevcut MR uygulamaları desteklenir ■ Sadece MR değil, Storm, Spark, Hive vs. YARN
  • 30. YARN
  • 31. Gündem ● Neden Hadoop? ● HDFS ve MapReduce ● Hadoop Dağıtımları ● Entegrasyonlar ● Pig ● Hive ● Impala
  • 32. Hadoop Dağıtımları ● Apache ○ Topluluk tarafından geliştiriliyor ○ En güncel sürüm 2.4.0 ○ Kurulumu, yönetimi zor ● Hortonworks ○ Hortonworks Data Platform 2.1 ○ Açık kaynağa, topluluğa daha yakın ● Cloudera ○ Cloudera Distribution Hadoop 5 ○ Kurumsal yaklaşım, 50 sunucuya kadar ücretsiz
  • 35. Cloudera Distribution Hadoop ● Cloudera Manager ○ Web tabanlı küme yönetim aracı ○ Sunucu ekleme/çıkartma ○ Servis ekleme/çıkartma/durdurma/başlatma ○ Monitörleme, Raporlama, Denetim ● Hue ○ Hadoop User Experience ○ Uygulamalar için web arayüzü ○ Açık kaynaklı ○ Konsol bağımlılığını kaldırır
  • 37. Hue
  • 38. Gündem ● Neden Hadoop? ● HDFS ve MapReduce ● Hadoop Dağıtımları ● Entegrasyonlar ● Pig ● Hive ● Impala
  • 39. Entegrasyonlar ● Flume : Gerçek zamanlı veri aktarımı ○ Agent'lar aracılığı ile veri toplama ● Sqoop : SQL to Hadoop ○ Veritabanından Hadoop'a ○ Hadoop'tan veritabanına aktarım
  • 40. ● Apache Flume sunucular üzerinde çalışan agent uygulamaları aracılığı ile topladığı verileri Hadoop üzerine aktarmayı sağlayan bir araçtır. Flume
  • 42. Örnek Ayarlar # Define a memory channel called ch1 on agent1 agent1.channels.ch1.type = memory # Define an Avro source called avro-source1 on agent1 and tell it # to bind to 0.0.0.0:41414. Connect it to channel ch1. agent1.sources.avro-source1.channels = ch1 agent1.sources.avro-source1.type = avro agent1.sources.avro-source1.bind = 0.0.0.0 agent1.sources.avro-source1.port = 41414 # Define a logger sink that simply logs all events it receives # and connect it to the other end of the same channel. agent1.sinks.log-sink1.channel = ch1 agent1.sinks.log-sink1.type = logger # Finally, now that we've defined all of our components, tell # agent1 which ones we want to activate. agent1.channels = ch1 agent1.sources = avro-source1 agent1.sinks = log-sink1
  • 43. Sqoop ● Apache Sqoop (SQL to Hadoop) veritabanı ile Hadoop arasında veri transferi amacıyla geliştirilmiş bir araçtır.
  • 44. Sqoop ● Import, export işlemleri için kullanılır ● JDBC destekleyen her veritabanıyla çalışır ● Direkt aktarım kanallarını kullanabilir ○ MySQL (mysqldump) ○ PostgreSQL (sadece import) ○ Oracle (Quest Software yazılımı ile)
  • 45. Sqoop ● MR kullanarak paralel çalışır ○ Varsayılan 4 mapper kullanır ○ Aktarım işlemi veritabanına yük getirebilir ● Tablo ya da DB aktarır ○ Tek bir tablo ○ Tüm tablolar ○ Tablonun bir kısmı (where, query) ○ Yeni gelen verilerin aktarımı (incremental)
  • 46. Sqoop Import ● Text dosyası olarak import $ sqoop import --driver com.mysql.jdbc.Driver --connect jdbc:mysql://$DB_HOST/$DB_NAME --username $DB_USER --password $DB_PASS --table $TABLE_NAME --target-dir $TARGET_DIR --as-textfile
  • 47. Sqoop Import ● Avro formatında import $ sqoop import --driver com.mysql.jdbc.Driver --connect jdbc:mysql://$DB_HOST/$DB_NAME --username $DB_USER --password $DB_PASS --as-textfile --table $TABLE_NAME --target-dir $TARGET_DIR --as-avrodatafile ● SequenceFile formatında import --as-sequencefile
  • 48. Sqoop Import ● Hive tablosu olarak aktarmak $ sqoop import --driver com.mysql.jdbc.Driver --connect jdbc:mysql://$DB_HOST/$DB_NAME --username $DB_USER --password $DB_PASS --table $TABLE_NAME --target-dir $TARGET_DIR --hive-import --hive-table $TABLE_NAME --hive-overwrite
  • 49. Gündem ● Neden Hadoop? ● HDFS ve MapReduce ● Hadoop Dağıtımları ● Entegrasyonlar ● Pig ● Hive ● Impala
  • 50. Pig ● Apache Pig, Hadoop üzerindeki büyük verileri işlemek için geliştirilmiş, Pig Latin olarak isimlendirilen yüksek seviyeli bir dile sahip veri işleme aracıdır.
  • 51. WordCount.pig -- hdfs://host/users/user/data.txt dosyasini yukle input = load 'data.txt' as (line); -- TOKENIZE ile her satirdaki verileri kelimelerine ayir -- flatten ile her bir kelimeyi bir satira donustur words = foreach input generate flatten(TOKENIZE(line)) as word; -- kelimeleri grupla ve say grpd = group words by word; cntd = foreach grpd generate group, COUNT(words); -- ekrana bas dump cntd;
  • 52. Pig Özellikleri ● Map Reduce yazımını kolaylaştırır ● Basit dil, yeniden kullanılabilirlik ● Standart dosya formatlarını destekler ○ text, json, sequence, binary, avro… ● Esnek veri modeli ○ Basit tipler: int, long, float, double … ○ Kompleks tipler: Map, Tuple, Bag ● SQL benzeri ifadeler kullanılır ○ Filtreleme, Gruplama, Sıralama ...
  • 53. Formatlar ● Her türlü format işlenebilir -- tab ile ayrilmis dosya tsv = load 'data.tsv' as (id, name, email); -- virgul ile ayrilmis dosya csv = load 'data.csv' using PigStorage(',') as (id, name, email); -- hcatalog uzerindeki tablo table = load 'tablename' using org.apache.hcatalog.pig.HCatLoader(); -- hbase uzerindeki tablo col = load 'hbase://SomeTableName' using org.apache.pig.backend.hadoop.hbase.HBaseStorage(...)
  • 54. Şema Kullanımı ● Şema zorunlu değildir A = load 'data'; B = filter A by $1 > 100; ● Mevcut şemayı destekler ○ Tip kontrolü ve optimizasyonda kullanılır A = load 'data' as (customer:int, purchase:double); B = filter A by purchase > 100;
  • 55. İfadeler ● load ● store ● dump ● foreach ● filter ● group/cogroup ● join ● cross ● order ● distinct ● union ● split ● limit ● stream
  • 56. İfadelere Örnek ● Group A = load 'student' as (name:chararray, age:int, gpa:float); B = group A by age; C = foreach B generate age, COUNT($0); ● Join A1 = load 'products.csv' as (productId, productName); A2 = load 'companies.csv' as (productId, companyName); J = join A1 by productId, A2 BY productId; R = foreach J generate $0, $1, $3;
  • 57. Pig Avantajları ● Pig kodları MapReduce kodlarına çevrilir ● Güçlü dil, ifadeler, fonksiyonlar, UDF ● Ölçeklenebilirlik ve Performans ● SQL benzeri, SQL'den daha anlaşılır ● Şema zorunlu değildir ● Yapılandırılmamış veriye çok uygundur ● ETL işleri için kullanılabilir
  • 58. Gündem ● Neden Hadoop? ● HDFS ve MapReduce ● Hadoop Dağıtımları ● Entegrasyonlar ● Pig ● Hive ● Impala
  • 59. Hive Apache Hive, SQL yardımıyla Hadoop üzerinde sorgulama ve Veri Ambarı uygulamaları geliştirmeyi sağlayan bir araçtır.
  • 60. WordCount.sql /* docs tablosunu yarat */ CREATE TABLE docs (line STRING); /* docs dosyasini docs tablosu icerisine aktar */ LOAD DATA INPATH 'docs' OVERWRITE INTO TABLE docs; /* kelimeleri sayarak yeni bir tablo olustur */ CREATE TABLE word_counts AS SELECT word, count(1) AS count FROM (SELECT explode(split(line, 's')) AS word FROM docs) w GROUP BY word ORDER BY word;
  • 61. Hive Özellikleri ● SQL ile MapReduce yazılmasını sağlar ○ SQL-92 standartlarına yakındır ○ Sorgular MapReduce'e dönüştürülür ● UPDATE ve DELETE desteklemez! ○ HIVE-5317 - Implement insert, update, and delete in Hive with full ACID support ● Veriler HDFS üzerinde saklanır ○ Dosyalar tablo gibi gösterilir ○ /user/hive/warehouse dizini varsayılandır ● Veri hakkındaki meta veriyi yönetir
  • 62. Tablo Tanımlama CREATE TABLE employees ( name STRING, salary FLOAT, subordinates ARRAY<STRING>, deductions MAP<STRING, FLOAT>, address STRUCT<street:STRING, city:STRING, state:STRING, zip:INT> ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '001' COLLECTION ITEMS TERMINATED BY '002' MAP KEYS TERMINATED BY '003' LINES TERMINATED BY 'n' STORED AS TEXTFILE;
  • 63. ● LOAD DATA komutu ○ HDFS üzerindeki dosyalar içeri aktarılır LOAD DATA INPATH 'data.csv' INTO TABLE employees PARTITION(field='value') ○ Lokal diskteki veriler de aktarılabilir LOAD DATA LOCAL INPATH '/path/data.csv' OVERWRITE INTO TABLE employees; ○ Dosya kopyalama ile aynı işlemi yapar $ hadoop fs -mv /path/data.csv /user/hive/warehouse/test Veri Girişi
  • 64. ● External tablo kullanımı ○ Dosyalar taşınmak zorunda değildirdir ○ İstenilen dizin external tablo olarak kullanılabilir CREATE EXTERNAL TABLE customers ( id INT, email STRING ) ROW FORMAT DELIMITED STORED AS TEXTFILE LOCATION '/user/admin/userdata'; Veri Girişi
  • 65. Sorgular ● Standart sorgular SELECT [ALL | DISTINCT] expr, expr, ... FROM table_reference [WHERE where_condition] [GROUP BY col_list] [LIMIT number] ● Karmaşık sorgular SELECT table3.col FROM ( SELECT a+b AS col FROM table1 UNION ALL SELECT c+d AS col FROM table2 ) table3
  • 66. Sorgular ● JOIN örneği ○ Sadece eşitlik üzerinden bağ kurulabilir ■ a.id = b.id ○ INNER | LEFT | RIGHT | FULL OUTER JOIN ○ LEFT SEMI JOIN ○ Birden fazla tablo birbirine bağlanabilir SELECT a.val, b.val, c.val FROM a JOIN b ON (a.key = b.key1) JOIN c ON (c.key = b.key1)
  • 67. Fonksiyonlar ● Birçok fonksiyonu destekler ○ Matematiksel ■ round, floor, sqrt, abs, sin, exp, log, … ○ Tarih ■ year, month, date_add, datediff, unix_timestamp, … ○ String ■ length, concat, substr, upper, lower, trim, … ○ Kümeleme ■ sum, avg, min, max, percentile, stddev_pop, ...
  • 68. Metastore ● Metadata'yı yönetir ○ Tablolar ile ilgili kolonların tipleri ○ HDFS üzerinde dosyaların konumu ○ Partitioning bilgisi ○ SerDe ayarları ○ İstatistik ● Datanucleus ORM kullanır ○ Derby, MySQL ve benzeri RDBMS kullanılabilir
  • 69. Hive Avantajları ● SQL kolaylığı ○ Herkes SQL biliyor ● Ölçeklenebilirlik ve Performans ○ Küme üzerinde çalışır ● Anlık sorgular değil büyük sorgular ○ DWH sorguları ● Entegrasyon kolaylığı ○ Mevcut araçlarla olan entegrasyon
  • 70. Gündem ● Neden Hadoop? ● HDFS ve MapReduce ● Hadoop Dağıtımları ● Entegrasyonlar ● Pig ● Hive ● Impala
  • 71. Impala ● Cloudera Impala büyük veri analizi amacıyla geliştirilmiş devasa paralel işlem (MPP) SQL sorgu motorudur.
  • 72. Impala ● MapReduce ○ Batch işlemler için tasarlanmış ○ Hive işleri uzun sürebilir ○ İhtiyacımız hız! ● Impala ○ Hive ile kıyaslanınca 4-35x daha hızlı ○ Dakikalar değil saniyeler
  • 73. Impala ● Performans ○ MapReduce kullanmaz ○ Veriye direkt erişir ○ Yoğun biçimde RAM kullanır ■ Ara işlem verileri ■ Join işlemleri ○ C++ ile geliştirilmiştir ○ Çalışma anı kod oluşturma (LLVM)
  • 74. ● Entegrasyon Kolaylığı ○ HDFS üzerindeki verilere erişir ○ Hive meta verisini kullanır ○ Hive ile aynı dili kullanır: HiveQL ○ Bilinen formatları (Text, Avro, vs) destekler ● Limitasyonlar ○ SerDe desteği henüz yok ○ Tüm sıkıştırma formatlarını desteklemez ○ RAM limitasyonu Impala
  • 76. Hadoop Ekosistemi ● HCatalog (Metastore) ● HBase, Hypertable, Accumulo (NoSQL) ● Hama, Corona (~MapReduce) ● Chukwa, Kafka, Scribe (~Flume) ● Mahout (Machine Learning) ● Oozie, Azkaban (Scheduler) ● Zookeeper (Cluster Management) ● Stinger, Drill, Shark, Presto, Tajo, Phoenix (~Impala) ● Spark, Storm (~Hadoop) ● Mesos, Whirr (Cluster Manager) ● Tachyon (~HDFS) ● Nutch (Crawler)