Bu nedenle, 28 Kasım da Istanbul Spark Meetup etkinlikleri kapsamında yapılan ve IBM Spark Tech Center dan Principle Data Solutions Engineer Chris Fregly nin Spark 1.6 daki yenilikler ve sonrası ile ilgili yaptığı sunum, ayrı dünyaların geri dönülemez bir biçimde birleştiğini bir kere daha gösterdi.
Gelen kişi tam bir "developer" du. Sunumun içinde yer alan demo ortamı katılımcılarla Docker container olarak paylaşıldı. İçerik; Kafka, Spark, Cassandra, Redis, Parquet, ElasticSearch, Zeppelin gibi birçok bileşenden oluşuyordu.
Pratik
Docker container da oluşturulan demo ortamı kolayca çalıştırılabilsin diye oluşturulmasına rağmen, umulan olmadı ve benim görebildiğim kadarı ile kendi lokalinde demoyu çalıştırabilen olmadı yada azdı. Bu konuyu meetup sonrası düşündüğümde, daha önceki "veri analizinde yeni alışkanlıklar" başlıklı yazımda konu ettiğim docker container kullanarak bir veri notebook u yardımı ile polyglot diller kullanarak veri analizlerin nasıl kolayca yapılabildiğini anlatmam ile bu durumun uyuşmadığını gördüm. Bunun üzerine olası sebepler için biraz araştırma yaptığımda sıkıntının kaynağını anladım. Bunu burada sizlerle paylaşıyorum.LXC
Öncelikle LXC (Linux Containers) dünyasının Docker container lardan oluşmadığını, farklı container ların da olduğunu hatırlamak gerekiyor. Farklı container ların olması sadece bir marka, pazar payı farklılığı değil, problem çözme için aynı noktadan çıkıp farklı yolları takip etmelerinden kaynaklanıyor. Esases hepsi Linux tabanlı namespace ve chroot olarak adlandırılan iki tekniğin kullanılması ile ortaya çıkıyor. Fakat bu ortak çıkış noktası sonrası, çözümdeki bazı temel farklar kendini gösteriyor.Container dünyası CPU, disk, bellek ve ağ kaynaklarının kullanımını sınırlandırma imkanı veren namespaces ile işletim sisteminin dosyalama yapısı üzerinde ayrı bir dosyalama yapısı ve yetkilendirme imkanı veren chroot özelliğinin kullanımına dayanıyor. Sanal makina kurmak için kullanılan bu özellikler container oluşturmak için de kullanılıyor.
Tek process
Docker ın ölçeklenebilir mimarilerde hızla yaygınlaşmasını sağlayan minimalist yaklaşım "bir container, bir process ilkesi" nedeni ile Docker container larda init mekanizması yok ve birden fazla process in aynı anda çalışmasını sağlayacak bir deamon (yani process) yönetimi yapısı da taşımıyor. Bu ölçeklenebilir mimari açısından arzu edilebilir bir özellik olmakla birlikte, basit senaryoların oluşturulmasında karmaşık bir yapı ile kullanıcıyı başbaşa bırakıyor. Bu karmaşıklığa güzel bir örnek için bakınız.Çok process
Bu durumda bir Docker container da birçok programın birlikte çalışması nasıl sağlanıyor? Bunun için yapıyı daha da karmaşıklaştıran bir şey yapılıyor ve docker sitesindeki örnekte verildiği üzere supervisor isimli process kontrol sistemi kullanılıyor. Kısaca, supervisord docker ın yapısına uygun şekilde tek çalışan process oluyor ve kendisi diğer processleri yönetiyor.Basitlikten çıkış
Bu durum yapının daha da karmaşık olmasına yol açıyor. Bu nedenle detayları bu linkte verilen; mysql db, nginx web server, php-fpm ve wordpress uygulamasından oluşan basit bir blog uygulamasını ayrı ayrı containerlarda çalıştırmak yerine, hepsini tek bir Docker container da çalıştırmak yoluna gidiliyor. Tabii bu Docker ın temel dizayn ilkesine aykırı bir durum oluşturuyor ve zorluklar o yüzden ortaya çıkıyor.Yazının başında belirttiğim Spark demo Docker container ının, çok daha karmaşık bir yapının tek bir container a konması anlamına geldiğini artık anlamış bulunuyoruz.Peki, bu durumda doğru olan nedir?
Yorumlar
CASINO 네이버룰렛돌리기 GAMES and bet BONUS · BONUS 원 엑스 벳 REVIEW · CASINO GAMES 바카라 필승법 · CASINO GAMES · CASINO GAMES · CASINO GAMES · CASINO GAMES · CASINO av 보는 곳 GAMES.