<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 關于Spark集群的容器封裝與部署 定稿人 | 定稿日期 | 系統環境 | :--------: | :-----: | :----: | 黃鎮游 | 2017.11.28 | centos7 + docker1.13 + docker-compose1.16 平時我們搭建hadoop集群的時候都是部署在物理機上,然而我們通過大量實驗發現使用容器搭建hadoop集群不僅啟動速度更快,而且資源利用率更高,本節主要講述如何使用dockerfile封裝hadoop,然后使用docker-compose編排集群。 ### 封裝Spark鏡像 ``` FROM openjdk:8u131-jre-alpine # openjdk:8u131-jre-alpine作為基礎鏡像,體積小,自帶jvm環境。 MAINTAINER <eway> # 切換root用戶避免權限問題,utf8字符集,bash解釋器。安裝一個同步為上海時區的時間 USER root ENV LANG=C.UTF-8 RUN apk add --no-cache --update-cache bash ENV TZ=Asia/Shanghai RUN apk --update add wget bash tzdata \ && cp /usr/share/zoneinfo/$TZ /etc/localtime \ && echo $TZ > /etc/timezone # 下載解壓spark WORKDIR /usr/local RUN wget "http://www.apache.org/dist/spark/spark-2.0.2/spark-2.0.2-bin-hadoop2.7.tgz" \ && tar -zxvf spark-* \ && mv spark-2.0.2-bin-hadoop2.7 spark \ && rm -rf spark-2.0.2-bin-hadoop2.7.tgz # 配置環境變量、暴露端口 ENV SPARK_HOME=/usr/local/spark ENV JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk ENV PATH=${PATH}:${JAVA_HOME}/bin:${SPARK_HOME}/bin EXPOSE 6066 7077 8080 8081 4044 WORKDIR $SPARK_HOME CMD ["/bin/bash"] ``` dockerfile 編寫完后我們就可以基于此構建鏡像了 ```powershell # 構建Dockerfile構建鏡像 $ docker build -f Dockerfile -t spark:v1 . ``` ### DockerFile代碼注意事項 #### 源鏡像選擇 通常我們封裝鏡像時,一般都采用Centos或Ubuntu的源鏡像,但是這樣做有一個很大的缺點就是封裝后的鏡像體積太大,所以為了減少鏡像體積,我們使用了體積小巧的alpine作為源鏡像,同時考慮到HDFS和YARN都需要JAVA環境,所以最終我們使用了自帶JDK的openjdk:8u131-jre-alpine。 > 注:最終鏡像大小只有500M左右 #### 時區同步 源鏡像默認是CTS時區,所以需要添加tzdata包獲取各時區的相關數據,以更改為中國上海的時區。 > 注: tzdata安裝更改時區后不可卸載,否則時區會變回CTS。 ### 在本地啟動服務 ```powershell # 啟動 master 容器 $ docker run -itd --name spark-master -p 6066:6066 -p 7077:7077 -p 8080:8080 spark:v1 spark-class org.apache.spark.deploy.master.Master # 啟動 worker 容器 $ docker run -itd -P --link spark-master:worker01 spark:v1 spark-class org.apache.spark.deploy.worker.Worker spark://spark-master:7077 # 啟動 historyserver 容器 $ docker run -itd --name spark-history -p 18080:18080 \ -e SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 \ -Dspark.history.retainedApplications=10 \ -Dspark.history.fs.logDirectory=hdfs://namenode:9000/user/spark/history" \ spark:v1 spark-class org.apache.spark.deploy.history.HistoryServer # 運行spark程序 $ spark-submit --conf spark.eventLog.enabled=true \ --conf spark.eventLog.dir=hdfs://namenode:9000/user/spark/history \ --master spark://namenode:7077 --class org.apache.spark.examples.SparkPi ./examples/jars/spark-examples_2.11-2.0.2.jar ``` ### 使用docker-compose部署服務 ``` version: "2" master: image: spark:v1 command: bin/spark-class org.apache.spark.deploy.master.Master -h master hostname: master environment: MASTER: spark://master:7077 SPARK_MASTER_OPTS: "-Dspark.eventLog.dir=hdfs://namenode:9000/user/spark/history" SPARK_PUBLIC_DNS: master ports: - 4040:4040 - 6066:6066 - 7077:7077 - 8080:8080 worker: image: spark:v1 command: bin/spark-class org.apache.spark.deploy.worker.Worker spark://master:7077 hostname: worker environment: SPARK_WORKER_CORES: 1 SPARK_WORKER_MEMORY: 1g SPARK_WORKER_PORT: 8881 SPARK_WORKER_WEBUI_PORT: 8081 SPARK_PUBLIC_DNS: master links: - master ports: - 8081:8081 historyServer: image: spark:v1 command: spark-class org.apache.spark.deploy.history.HistoryServer hostname: historyServer environment: MASTER: spark://master:7077 SPARK_PUBLIC_DNS: master SPARK_HISTORY_OPTS: "-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://namenode:9000/spark/history" links: - master expose: - 18080 ports: - 18080:18080 ``` > 注:--link <目標容器名> 該參數的主要意思是本容器需要使用目標容器的服務,所以指定了容器的啟動順序,并且在該容器的hosts文件中添加目標容器名的DNS。 ``` # 通過docker-compose一鍵啟動spark集群 $ docker-compose -f docker-compose.yml up -d # 一鍵擴展worker服務到5個 $ docker-compose scale worker=5 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看