bu yazımda sizlere yine bir hadoop kurulumu paylaşacağım. Hadoop'u dağıtık(multi node) olarak kuracağım. Bildiğiniz üzere daha önceden hadoop kurulumunu analatan bir yazı paylaşmıştım. Ancak bu yazımda hadoop'u docker kullanarak kurup her bir node'u docker container'ı olarak çalıştıracağım. Dolayısıyla multi node hadoop kurulumu yaptığınızda tek tek sanal makine kopyalamak durumunda kalmayacaksınız. Bu sayede hem zaman hem de yer(disk) kazanımında bulunmuş olacağız.
Yeri gelmişken bir not düşerek tekrar bir hatırlatma yapayım; hadoop'u single node ve multi node olarak kurabiliyorsunuz. Single node da task tracker, data node, job tracker ve name node ların tamamı tek bir bilgisayar üzerindedir. Ancak multi node yapısında ise bu birimleri farklı bilgisayarlar üzerinde çalıştırmak amaçlanmıştır. Bu sayede çok büyük verilerin analizi daha da kolaylaşmıştır.
Yazının devamında yapılacak işlemleri özetlemek gerekirse;
- içinde docker ve java kurulmuş olan bir docker image'ı oluşturacağız.
- Bu image dan 1 adet master docker container'ı oluşturacağız.
- Yine aynı docker image'ından N tane slave container oluşturacağız.
1 adet master ve N tane slave node oluşturacak yapıyı kurmak için aşağıdaki adımları takip ederek uygulayın.
Oluşturacağımız docker container ların birbirleriyle haberleşebilmesi için tüm bu containerlar aynı ağda olmalıdır. Dolayısıyla ilk olarak terminali açarak docker ile bir ağ(network) oluşturun.
FROM ubuntu:16.04 MAINTAINER Levent YILDIZ <dev.levent.yildiz@gmail.com> RUN apt-get update RUN apt-get install openjdk-8-jdk -y RUN apt-get install -y wget RUN apt-get install -y openssh-server RUN wget https://archive.apache.org/dist/hadoop/core/hadoop-2.7.5/hadoop-2.7.5.tar.gz -P ~/Downloads RUN tar zxvf ~/Downloads/hadoop-2.7.5.tar.gz -C /usr/local RUN mv /usr/local/hadoop-* /usr/local/hadoop RUN mkdir /var/hadoop ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/jre/ ENV PATH $PATH:$JAVA_HOME/bin ENV HADOOP_HOME /usr/local/hadoop ENV PATH $PATH:$HADOOP_HOME/bin ENV HADOOP_CONF_DIR /usr/local/hadoop/etc/hadoop RUN ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' && \ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys COPY conf/* /tmp/ RUN mv /tmp/ssh_config ~/.ssh/config RUN mv /tmp/core-site.xml /usr/local/hadoop/etc/hadoop/core-site.xml RUN mv /tmp/mapred-site.xml /usr/local/hadoop/etc/hadoop/mapred-site.xml RUN mv /tmp/hdfs-site.xml /usr/local/hadoop/etc/hadoop/hdfs-site.xml RUN mv /tmp/masters /usr/local/hadoop/etc/hadoop/masters RUN mv /tmp/slaves /usr/local/hadoop/etc/hadoop/slaves RUN /tmp/env.sh CMD [ "sh", "-c", "service ssh start; bash"] |
Üstte oluşturduğumuz Dockerfile ile bir hadoop image'ı oluşturun.
ilk olarak base-hadoop image'ındadan master container oluşturun
ikinci olarak ta bir for-loop ile istenilen sayı kadar slave container oluşturun. Aşağıda ( c=1; c<=3; c++ ) ifadesiyle 3 tane slave container oluşturulacak.
for (( c=1; c<=3; c++ )) do tmpName="slave$c" docker run -itd --network="hadoopNetwork" --ip "172.25.0.10$c" --name $tmpName --hostname $tmpName base-hadoop:1.0 done |
172.25.0.101 : slave1
172.25.0.102 : slave2
172.25.0.103 : slave3
şeklinde olacaktır.
172.25.0.100 adresi ise master container'ın IP adresi olacaktır.
Master container da hadoop'u ayağa kaldırmak için aşağıdaki komutları çalıştırın
http://localhost:50070/dfshealth.html#tab-datanode
Üsteki adımları daha hızlı uygulamak için github tan belirttiğim repo'yu indirin.
Hiç yorum yok:
Yorum Gönder