1. 程式人生 > >使用docker安裝Hadoop和Spark

使用docker安裝Hadoop和Spark

使用docker配置安裝hadoop和spark

分別安裝hadoop和spark映象

安裝hadoop映象

選擇的docker映象地址,這個映象提供的hadoop版本比較新,且安裝的是jdk8,可以支援安裝最新版本的spark。

docker pull uhopper/hadoop:2.8.1

安裝spark映象

如果對spark版本要求不是很高,可以直接拉取別人的映象,若要求新版本,則需要對dockerfile進行配置。

環境準備

  1. 下載sequenceiq/spark映象構建原始碼

    git clone https://github.com/sequenceiq/docker-spark
    
  2. 將下載的檔案需要放到docker-spark目錄下

  3. 檢視本地image,確保已經安裝了hadoop

  4. 進入docker-spark目錄,確認所有用於映象構建的檔案已經準備好

    • image-20181030125353071

修改配置檔案

  • 修改Dockerfile為以下內容

    • FROM sequenceiq/hadoop-docker:2.7.0
      MAINTAINER scottdyt
      
      #support for Hadoop 2.7.0
      #RUN curl -s http://d3kbcqa49mib13.cloudfront.net/spark-1.6.1-bin-hadoop2.6.tgz | tar -xz -C /usr/local/
      ADD spark-2.3.2-bin-hadoop2.7.tgz /usr/local/
      RUN cd /usr/local && ln -s spark-2.3.2-bin-hadoop2.7 spark
      ENV SPARK_HOME /usr/local/spark
      RUN mkdir $SPARK_HOME/yarn-remote-client
      ADD yarn-remote-client $SPARK_HOME/yarn-remote-client
      
      RUN $BOOTSTRAP && $HADOOP_PREFIX/bin/hadoop dfsadmin -safemode leave && $HADOOP_PREFIX/bin/hdfs dfs -put $SPARK_HOME-2.3.2-bin-hadoop2.7/jars /spark && $HADOOP_PREFIX/bin/hdfs dfs -put $SPARK_HOME-2.3.2-bin-hadoop2.7/examples/jars /spark 
      
      
      ENV YARN_CONF_DIR $HADOOP_PREFIX/etc/hadoop
      ENV PATH $PATH:$SPARK_HOME/bin:$HADOOP_PREFIX/bin
      # update boot script
      COPY bootstrap.sh /etc/bootstrap.sh
      RUN chown root.root /etc/bootstrap.sh
      RUN chmod 700 /etc/bootstrap.sh
      
      #install R 
      RUN rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
      RUN yum -y install R
      
      ENTRYPOINT ["/etc/bootstrap.sh"]
      
  • 修改bootstrap.sh為以下內容

    #!/bin/bash
    
    : ${HADOOP_PREFIX:=/usr/local/hadoop}
    
    $HADOOP_PREFIX/etc/hadoop/hadoop-env.sh
    
    rm /tmp/*.pid
    
    # installing libraries if any - (resource urls added comma separated to the ACP system variable)
    cd $HADOOP_PREFIX/share/hadoop/common ; for cp in ${ACP//,/ }; do  echo == $cp; curl -LO $cp
    ; done; cd - # altering the core-site configuration sed s/HOSTNAME/$HOSTNAME/ /usr/local/hadoop/etc/hadoop/core-site.xml.template > /usr/local/hadoop/etc/hadoop/core-site.xml # setting spark defaults echo spark.yarn.jar hdfs:///spark/* > $SPARK_HOME/conf/spark-defaults.conf cp $SPARK_HOME/conf/metrics.properties.template $SPARK_HOME/conf/metrics.properties service sshd start $HADOOP_PREFIX/sbin/start-dfs.sh $HADOOP_PREFIX/sbin/start-yarn.sh CMD=${1:-"exit 0"} if [[ "$CMD" == "-d" ]]; then service sshd stop /usr/sbin/sshd -D -d else /bin/bash -c "$*" fi

    構建映象

    docker build --rm -t scottdyt/spark:2.3.2 .
    

    Screen Shot 2018-10-30 at 10.58.21 AM

    檢視映象

    Screen Shot 2018-10-30 at 12.06.19 PM

啟動一個spark2.3.1容器

docker run -it -p 8088:8088 -p 8042:8042 -p 4040:4040 -h sandbox scottdyt/spark:2.3.2 bash

啟動成功:

Screen Shot 2018-10-30 at 12.10.59 PM

安裝spark-hadoop映象

如果想偷懶一點,直接安裝裝好spark和hadoop的映象,映象地址在這裡

或者直接在終端輸入:

docker pull uhopper/hadoop-spark:2.1.2_2.8.1

安裝完成:

image-20181030124727908

參考