Presto Nedir? Facebook , Netflix neden Prestoyu tercih ediyor

presto-screenshot

 

Arkadaşlar Merhaba

Bugün size Big data Teknolojileri üzerinde Processing tarafındaki çok önemli bir teknolojiden bahsedeceğim. Daha önceki yazılarımda Hive ve Spark tan bu alanda bahsetmiştim.

Hive Analytics tarafında , Pig ETL tarafında , Spark Real Time Analytics , Machine Learning , streaming tarafında çok önemli oyuncular.

Presto is Interactive Data&Ad/hoc anlamında ön plana çıkıyor.  Prestoda %100 open source , Facebook tarafından geliştirilmiş bir distributed sql  query engine diyebiliriz. Prestonun gigabyte tan petabytelarca seviyeye kadar inanılmaz başarılı çalıştığını görüyoruz. Prestonun bir önemli özelliğide cross platform query yapabilmesi bu özelliği sayesinde sadece Hadoop ortamı değil örneğin mysql ,teradata,cassandra , oracle , kafka ve mongodb gibi. Tek Presto Query si ile bu farklı sourceları process edebiliyorsunuz. Data exploration tarafında da çok güçlü bir ürün.

Hive metastore u ile entegre  Ansi SQL sayesinde çok kolay ve özellikle group by gibi , join+group by gibi querylerde hive a göre daha iyi kaldığını görüyoruz. Dim fact joinlerde yine Prestonun çok başarılı olduğunu görüyoruz. Vertica ya çok ciddi alternatif olarakda düşünebiliriz. Yanılmıyorsam Uber , interactive query tarafında verticadan migrate etti ve inanılmaz memnun kaldığını dile getiriyor. Netflix kendi use case inde günde 3500 queryin yaklaşık %90 dan fazlasında 1 dakikanın altında sonuç aldığını görüyoruz.

Prestoyu facebook nasıl kullanıyor derseniz , facebook prestoyu warehouse tarafındaki ad-hoc/interactive querylerde yine warehouse tarafındaki batch processlerde kullanıyorlar. Tabi birde concurrent querylerde yarattığı büyük avantajdan bahsetmek lazım.

Prestonun production tarafındaki çıktılarına baktığımızda Facebooktaki 100 den fazla nodes 300 PB data 1000 üzerinde internal active users ve 10 ile 100 arası concurrent queryler görüyoruz.

Prestonun dünyadaki başlıca kullanıcıları arasında Facebook , Netflix,airbnb ,dropbox , uber , linkedin , twitter olduğunu söylemek lazım. Bu kullanıcılar aynı zamanda contributer.

Hive connectoru  Text, SequenceFile, RCFile, ORC ve Parquet formatları desteklemesi bizim açımızdan büyük avantaj oluşturuyor.

 

Tek Prosto querysi ile hive ile Mysql database nasil join edebilirim?

MYSQL database Users tablomuz olsun

Hive da Stream isminde tablomuz olsun.

prestoya bağlanalım.

$ ./presto –server localhost:8080

presto:default> SELECT u.country, COUNT(*) AS cnt
-> FROM hive.stream s
-> JOIN mysql.user u
-> ON s.userid = u.userid
-> GROUP BY u.country
-> ORDER BY cnt DESC
-> LIMIT 3;
country | cnt
—————-+———
United States | 7321348
Germany | 4986544
Turkey| 2233434

Selamlar

Zekeriya

 

 

 

Leave a comment