paint-brush
Hadoop'tan Rip ve Değiştirme Olmadan Geçiş Yapmak Mümkün - İşte Nasıl Yapılacağıile@minio
3,817 okumalar
3,817 okumalar

Hadoop'tan Rip ve Değiştirme Olmadan Geçiş Yapmak Mümkün - İşte Nasıl Yapılacağı

ile MinIO7m2024/05/31
Read on Terminal Reader

Çok uzun; Okumak

MinIO, Hadoop'un Spark ve Hive ile entegre olan modern bir versiyonudur. MinIO, tüm verileri nesne başına anahtarlar kullanarak şifreleyerek yetkisiz erişime karşı güçlü koruma sağlar. S3a vazgeçilmezdir. Hado.op'tan geçiş yapmak isteyen uygulamalar için geniş bir uygulama yelpazesiyle uyumluluk sunan uç nokta.
featured image - Hadoop'tan Rip ve Değiştirme Olmadan Geçiş Yapmak Mümkün - İşte Nasıl Yapılacağı
MinIO HackerNoon profile picture
0-item
1-item


HDFS'den MinIO gibi modern nesne depolamaya geçiş yapmak isteyen bize gelen müşterilerin sayısı bizi hâlâ şaşırtıyor. Şu ana kadar herkesin geçiş yaptığını düşünüyorduk, ancak her hafta geçiş yapmaya karar veren büyük, son derece teknik bir kuruluşla görüşüyoruz.


Çoğu zaman bu tartışmalarda, geçişten sonra da altyapılarının korunmasını istedikleri unsurlar vardır. HDFS ekosisteminden çıkan, birçok geliştiricinin katılımına sahip olan ve modern veri yığınında hala yeri olan çerçeveler ve yazılımlar var. Aslında HDFS ekosisteminden pek çok iyi şeyin çıktığını sık sık söylüyoruz. Temel sorun, Büyük Veri çağından gelen araç ve hizmetlerle yakından bağlantılı olan depolama ve bilgi işlemdir.


Bu blog yazısı, değeri olan araç ve hizmetleri söküp değiştirmeden bu geçişi nasıl gerçekleştirebileceğinize odaklanacaktır. Gerçek şu ki, altyapınızı modernleştirmezseniz, kuruluşunuzun ihtiyaç duyduğu AI/ML'deki ilerlemeleri sağlayamazsınız, ancak oraya ulaşmak için her şeyi bir kenara atmanız da gerekmez.

Spark ve Hive ile Depolama ve Bilgi İşlemin Ayrıştırılması

Zaten bazı aşamalardan geçtik tam bir söküp değiştirmeye yönelik stratejiler , bu bazı durumlarda ileriye giden yoldur. Ancak bir HDFS uygulamasını modernleştirmenin başka bir yoluna bakalım.


Bu mimari Kubernetes yönetimini içerir Apache Kıvılcımı ve veri işlemeye yönelik Apache Hive kapsayıcıları; Spark, MinIO ile yerel olarak bütünleşirken Hive, YARN'ı kullanır. MinIO, durum bilgisi olan kaplarda nesne depolamayı yönetir ve bu mimaride veri yalıtımı için çok kiracılı yapılandırmalara dayanır.


Mimari Genel Bakış:

  • İşlem Düğümleri: Kubernetes, işlem düğümlerindeki durum bilgisi olmayan Apache Spark ve Apache Hive kapsayıcılarını verimli bir şekilde yöneterek optimum kaynak kullanımı ve dinamik ölçeklendirme sağlar.


  • Depolama Katmanı: MinIO Silme Kodlaması ve BitRot Koruması, Hadoop'un gerektirdiği her veri bloğunun üç kopyasını saklamanıza gerek kalmadan, sürücü sayısının yarısına kadarını kaybedebileceğiniz ve yine de kurtarabileceğiniz anlamına gelir.


  • Erişim Katmanı: MinIO nesne depolamasına tüm erişim, S3 API aracılığıyla birleştirilir ve depolanan verilerle etkileşim için kusursuz bir arayüz sağlanır.


  • Güvenlik Katmanı: Veri güvenliği çok önemlidir. MinIO, tüm verileri nesne başına anahtarlar kullanarak şifreleyerek yetkisiz erişime karşı güçlü koruma sağlar.


  • Kimlik Yönetimi: MinIO Enterprise, uygulamaların veya kullanıcıların kimlik doğrulamasına izin vermek için WSO2, Keycloak, Okta, Ping Identity gibi kimlik sağlayıcılarla tamamen entegre olur.


Kuruluşunuzun Hive, YARN ve modern veri yığınındaki hemen hemen her şey olan nesne depolamayla entegre olabilen diğer tüm Hadoop ekosistemi veri ürünlerini saklamasına olanak tanıyan, Hadoop'un tamamen modernize edilmiş bir alternatifi.

Erişim Katmanında Birlikte Çalışabilirlik

S3a, Hadoop ekosistemindeki çok çeşitli uygulamalarla uyumluluk sunan, Hadoop'tan uzaklaşmak isteyen uygulamalar için önemli bir uç noktadır. 2006 yılından bu yana, S3 uyumlu nesne depolama arka uçları, varsayılan bir özellik olarak Hadoop ekosistemindeki çok sayıda veri platformuna sorunsuz bir şekilde entegre edilmiştir. Bu entegrasyonun kökeni, S3 istemci uygulamasının gelişen teknolojilere dahil edilmesine kadar uzanıyor.


Hadoop ile ilgili tüm platformlarda hadoop-aws modülünün ve aws-java-sdk-bundle benimsenmesi standart bir uygulamadır ve S3 API için güçlü destek sağlar. Bu standartlaştırılmış yaklaşım, uygulamaların HDFS ve S3 depolama arka uçlarından sorunsuz geçişini kolaylaştırır. Geliştiriciler, yalnızca uygun protokolü belirleyerek uygulamaları Hadoop'tan modern nesne depolamaya zahmetsizce geçirebilirler. S3 için protokol şeması s3a:// ile gösterilirken HDFS için hdfs:// olarak gösterilir.

Göçün Faydaları

Hadoop'tan modern nesne depolamaya geçişin faydalarından uzun uzun bahsetmek mümkün. Bunu okuyorsanız, Hadoop gibi eski platformlardan geçiş yapılmadığı takdirde yapay zeka ve diğer modern veri ürünlerindeki gelişmelerin muhtemelen masadan kalkacağının büyük ölçüde farkındasınızdır. Bunun nedeni performansa ve ölçeğe indirgeniyor.


Modern iş yüklerinin, işlenen veri hacmi ve artık gerekli olan görevlerin karmaşıklığıyla rekabet edebilmek için olağanüstü performans gerektirdiğine kesinlikle şüphe yoktur. Performans sadece gösterişli kıyaslamayla ilgili olmayıp zorlu bir gereklilik olduğunda, Hadoop'un değiştirilmesi için yarışanların alanı ortaya çıkar. dramatik bir şekilde düşüyor .


Geçişleri ileriye taşıyan diğer unsur ise bulutta yerel ölçektir. Bulut kavramı fiziksel bir konumdan ziyade bir işletim modeli tek bir .yaml dosyasından tüm veri yığınını dakikalar içinde dağıtmak gibi şeyleri yapmak mümkün hale geliyor. Her Hadoop mühendisinin sandalyeden düşmesine neden olacak kadar hızlı bir uygulama.


Bu konseptin önemli bir kısmı, bir kuruluşun belirli iş yükleri için sınıfının en iyisi seçenekleri seçmesine olanak tanıyan satıcı bağımlılığının serbest bırakılmasından kaynaklanan ekonomik faydalardır. Ayrıca, verileri korumak için üç ayrı veri kopyasının tutulmasının artık geçmişte kaldığından bahsetmiyorum bile. aktif-aktif çoğaltma ve silme kodlaması. Geleceğe yönelik teknolojiye yatırım yapmak genellikle altyapınız üzerinde çalışacak yetenekli profesyonelleri bulmanın ve işe almanın daha kolay olduğu anlamına da gelir. İnsanlar bir işi ileriye taşıyacak şeyler üzerinde çalışmak isterler ve bunu ondan daha iyi yapan neredeyse hiçbir şey yoktur. veri . Bu faktörler birlikte, yalnızca daha hızlı ve daha ucuz değil, aynı zamanda bugünün ve yarının veriye dayalı ihtiyaçlarına daha uygun bir veri yığınına katkıda bulunur.

Başlarken

Mimarimizin ayrıntılarına dalmadan önce birkaç bileşeni çalışır duruma getirmeniz gerekecek. Hadoop'tan geçiş yapmak için, başlangıçta onu kurmuş olmanız gerekir. Bu deneyimi simüle etmek istiyorsanız Hadoop'un Hortonworks Dağıtımını buradan ayarlayarak bu eğitime başlayabilirsiniz.


Aksi takdirde aşağıdaki kurulum adımlarıyla başlayabilirsiniz:


  1. Ambari'yi Ayarlama: Sonraki, Ambari'yi yükle YARN'ı sizin için otomatik olarak yapılandırarak hizmetlerinizin yönetimini kolaylaştıracak. Ambari, Hadoop ekosistemindeki hizmetleri yönetmek ve her şeyin sorunsuz çalışmasını sağlamak için kullanıcı dostu bir kontrol paneli sağlar.


  2. Apache Spark'ı yükleyin: Spark, büyük ölçekli verilerin işlenmesi için gereklidir. Takip et Standart kurulum Spark'ın çalışır duruma getirilmesi için prosedürler.


  3. MinIO'yu yükleyin : Ortamınıza bağlı olarak iki kurulum yaklaşımı arasında seçim yapabilirsiniz: Kubernet'ler veya Dümen Tablosu .


Bu öğeleri başarıyla yükledikten sonra Spark ve Hive'ı HDFS yerine MinIO kullanacak şekilde yapılandırabilirsiniz. Ambari kullanıcı arayüzüne http://<ambari-server>:8080/ gidin ve varsayılan kimlik bilgilerini kullanarak oturum açın: username: admin, password: admin ,



Ambari'de aşağıdaki ekran görüntüsündeki gibi hizmetlere, ardından HDFS'ye ve ardından Yapılandırmalar paneline gidin. Bu bölümde Ambari'yi HDFS yerine MinIO ile S3a kullanacak şekilde yapılandırıyorsunuz.



Aşağı kaydırın ve Custom core-site gidin. Burası S3a'yı yapılandıracağınız yerdir.



 sudo pip install yq alias kv-pairify='yq ".configuration[]" | jq ".[]" | jq -r ".name + \"=\" + .value"'


Buradan itibaren yapılandırmanız altyapınıza bağlı olacaktır. Ancak aşağıdakiler core-site.xml dosyasının S3a'yı 12 düğümde ve 1.2TiB bellekte çalışan MinIO ile yapılandırmasının bir yolunu temsil edebilir.


 cat ${HADOOP_CONF_DIR}/core-site.xml | kv-pairify | grep "mapred" mapred.maxthreads.generate.mapoutput=2 # Num threads to write map outputs mapred.maxthreads.partition.closer=0 # Asynchronous map flushers mapreduce.fileoutputcommitter.algorithm.version=2 # Use the latest committer version mapreduce.job.reduce.slowstart.completedmaps=0.99 # 99% map, then reduce mapreduce.reduce.shuffle.input.buffer.percent=0.9 # Min % buffer in RAM mapreduce.reduce.shuffle.merge.percent=0.9 # Minimum % merges in RAM mapreduce.reduce.speculative=false # Disable speculation for reducing mapreduce.task.io.sort.factor=999 # Threshold before writing to drive mapreduce.task.sort.spill.percent=0.9 # Minimum % before spilling to drive


Bu geçiş modeliyle ilgili belgelere göz atarak keşfedilebilecek pek çok optimizasyon var Burada ve ayrıca Hadoop'un S3 belgelerinde Burada Ve Burada .


Yapılandırmadan memnun olduğunuzda Tümünü yeniden başlatın.



Ayrıca Spark2 yapılandırma paneline gitmeniz gerekecektir.



Custom spark-defaults ilerleyin ve MinIO ile yapılandırmak için aşağıdaki Özelliği ekleyin:



 spark.hadoop.fs.s3a.access.key minio spark.hadoop.fs.s3a.secret.key minio123 spark.hadoop.fs.s3a.path.style.access true spark.hadoop.fs.s3a.block.size 512M spark.hadoop.fs.s3a.buffer.dir ${hadoop.tmp.dir}/s3a spark.hadoop.fs.s3a.committer.magic.enabled false spark.hadoop.fs.s3a.committer.name directory spark.hadoop.fs.s3a.committer.staging.abort.pending.uploads true spark.hadoop.fs.s3a.committer.staging.conflict-mode append spark.hadoop.fs.s3a.committer.staging.tmp.path /tmp/staging spark.hadoop.fs.s3a.committer.staging.unique-filenames true spark.hadoop.fs.s3a.committer.threads 2048 # number of threads writing to MinIO spark.hadoop.fs.s3a.connection.establish.timeout 5000 spark.hadoop.fs.s3a.connection.maximum 8192 # maximum number of concurrent conns spark.hadoop.fs.s3a.connection.ssl.enabled false spark.hadoop.fs.s3a.connection.timeout 200000 spark.hadoop.fs.s3a.endpoint http://minio:9000 spark.hadoop.fs.s3a.fast.upload.active.blocks 2048 # number of parallel uploads spark.hadoop.fs.s3a.fast.upload.buffer disk # use disk as the buffer for uploads spark.hadoop.fs.s3a.fast.upload true # turn on fast upload mode spark.hadoop.fs.s3a.impl org.apache.hadoop.spark.hadoop.fs.s3a.S3AFileSystem spark.hadoop.fs.s3a.max.total.tasks 2048 # maximum number of parallel tasks spark.hadoop.fs.s3a.multipart.size 512M # size of each multipart chunk spark.hadoop.fs.s3a.multipart.threshold 512M # size before using multipart uploads spark.hadoop.fs.s3a.socket.recv.buffer 65536 # read socket buffer hint spark.hadoop.fs.s3a.socket.send.buffer 65536 # write socket buffer hint spark.hadoop.fs.s3a.threads.max 2048 # maximum number of threads for S3A


Yapılandırma değişiklikleri uygulandıktan sonra hepsini yeniden başlatın.



Yapılandırmayı tamamlamak için Hive paneline gidin.



Custom hive-site ilerleyin ve aşağıdaki Özelliği ekleyin:




 hive.blobstore.use.blobstore.as.scratchdir=true hive.exec.input.listing.max.threads=50 hive.load.dynamic.partitions.thread=25 hive.metastore.fshandler.threads=50 hive.mv.files.threads=40 mapreduce.input.fileinputformat.list-status.num-threads=50


Daha fazla ince ayar yapılandırma bilgisi bulabilirsiniz Burada . Yapılandırma değişiklikleri yapıldıktan sonra Tümünü Yeniden Başlatın.



İşte bu kadar, artık entegrasyonunuzu test edebilirsiniz.

Kendi Başınıza Keşfedin

Bu blog gönderisi, mevcut sistemlerinizi tamamen elden geçirmenize gerek kalmadan Hadoop'tan geçişe yönelik modern bir yaklaşımın ana hatlarını çizdi. Kuruluşlar, Apache Spark ve Apache Hive'ı yönetmek için Kubernetes'ten yararlanarak ve durum bilgisi olan nesne depolama için MinIO'yu entegre ederek, dinamik ölçeklendirmeyi ve verimli kaynak kullanımını destekleyen dengeli bir mimari elde edebilir. Bu kurulum, veri işleme ortamlarınızın yeteneklerini yalnızca korumakla kalmaz, aynı zamanda geliştirerek onları daha sağlam ve geleceğe hazır hale getirir.


MinIO ile, ticari donanımlarda yüksek performans sunan, silme kodlaması yoluyla maliyetleri azaltan (Hadoop'un veri çoğaltmasındaki yedekliliği ortadan kaldıran) ve satıcıya bağlı kalma ve Cassandra tabanlı meta veri depolarına duyulan ihtiyaç gibi sınırlamaları aşan bir depolama çözümünden yararlanırsınız. Bu avantajlar, mevcut veri sistemlerinin temel öğelerini atmadan gelişmiş AI/ML iş yüklerinden yararlanmak isteyen kuruluşlar için çok önemlidir.


Bu geçiş stratejisini kuruluşunuzun benzersiz ihtiyaçlarını karşılayacak şekilde nasıl uyarlayabileceğiniz konusunda daha ayrıntılı tartışmalar veya özel rehberlik için bizimle iletişime geçmekten çekinmeyin. İster [email protected] adresine e-posta yoluyla, ister topluluğumuz üzerinden Gevşek kanalıyla veri altyapısı yatırımlarınızdan en iyi şekilde yararlanmanıza yardımcı olmak için buradayız.