spark on k8s 鏡像構(gòu)建

spark on k8s 基礎(chǔ)鏡像的構(gòu)建

背景

這是跑spark on k8s任務(wù)的基礎(chǔ)鏡像酌心,用來(lái)指明executor pod的基礎(chǔ)鏡像

構(gòu)建步驟

  • git clone spark特定的版本(加入是3.0.1版本)凌停,克隆完后杂伟,執(zhí)行一下命令進(jìn)行構(gòu)建,構(gòu)建出包含kubernetes模塊的可運(yùn)行包:

spark 3.x兼容hadoop cdh版本,處理沖突

git cherry-pick 8e8afb3a3468aa743d13e23e10e77e94b772b2ed
./dev/make-distribution.sh --name 2.6.0-cdh5.13.1 --pip --tgz -Phive -Phive-thriftserver -Pmesos -Pyarn -Pkubernetes -Dhadoop.version=2.6.0-cdh5.13.1 -DskipTests


  
- 安裝并加入必要的jar包
按照[lzoCodec](https://stackoverflow.com/questions/23441142/class-com-hadoop-compression-lzo-lzocodec-not-found-for-spark-on-cdh-5),安裝native-lzo library(用來(lái)支持lzo),     
把包含libhadoop.so的目錄下的文件復(fù)制到assembly/target/scala-2.12/jars/hadoop_native    
把包含libgplcompression.so的目錄下的文件復(fù)制到assembly/target/scala-2.12/jars/native    
配置環(huán)境變量

```bash
ENV SPARK_DIST_CLASSPATH=$SPARK_HOME/jars/native:$SPARK_HOME/jars/hadoop_native
ENV LD_LIBRARY_PATH=$SPARK_HOME/jars/native:$SPARK_HOME/jars/hadoop_native
ENV JAVA_LIBRARY_PATH=$SPARK_HOME/jars/native:$SPARK_HOME/jars/hadoop_native

  • 修改鏡像代碼為

    # distribution, the docker build command should be invoked from the top level directory
    # of the Spark distribution. E.g.:
    # docker build -t spark:latest -f kubernetes/dockerfiles/spark/Dockerfile .
    
    RUN set -ex && \
        sed -i 's/http:\/\/deb.\(.*\)/https:\/\/deb.\1/g' /etc/apt/sources.list && \
        apt-get update && \
        ln -s /lib /lib64 && \
        apt install -y bash tini libc6 libpam-modules krb5-user libnss3 && \
        apt-get install liblzo2-dev -y && \
        mkdir -p /opt/spark && \
        mkdir -p /opt/spark/examples && \
        mkdir -p /opt/spark/work-dir && \
        touch /opt/spark/RELEASE && \
        rm /bin/sh && \
        ln -sv /bin/bash /bin/sh && \
        echo "auth required pam_wheel.so use_uid" >> /etc/pam.d/su && \
        chgrp root /etc/passwd && chmod ug+rw /etc/passwd && \
        rm -rf /var/cache/apt/*
    
    COPY jars /opt/spark/jars
    COPY bin /opt/spark/bin
    COPY sbin /opt/spark/sbin
    COPY kubernetes/dockerfiles/spark/entrypoint.sh /opt/
    COPY examples /opt/spark/examples
    COPY kubernetes/tests /opt/spark/tests
    COPY data /opt/spark/data
    
    ENV SPARK_HOME /opt/spark
    
    ENV SPARK_DIST_CLASSPATH=$SPARK_HOME/jars/native:$SPARK_HOME/jars/hadoop_native
    
    ENV LD_LIBRARY_PATH=$SPARK_HOME/jars/native:$SPARK_HOME/jars/hadoop_native
    
    ENV JAVA_LIBRARY_PATH=$SPARK_HOME/jars/native:$SPARK_HOME/jars/hadoop_native
    
    RUN ln -s $SPARK_HOME/jars/hadoop-lzo-0.4.15-cdh5.13.1.jar $SPARK_HOME/jars/hadoop-lzo.jar
    WORKDIR /opt/spark/work-dir
    RUN chmod g+w /opt/spark/work-dir
    
    ENTRYPOINT [ "/opt/entrypoint.sh" ]
    
  • 構(gòu)建包含k8s的鏡像,執(zhí)行如下命令:

    ./bin/docker-image-tool.sh -t spark-on-k8s-v3.0.1-cdh-2.6.0-5.13.1 build
    ## 按需進(jìn)行修改鏡像標(biāo)簽
    docker tag spark:spark-on-k8s-v3.0.1-cdh-2.6.0-5.13.1 xxx.xxx.xxx/xxx/spark-on-k8s:v3.0.1-cdh-2.6.0-5.13.1
    

任務(wù)鏡像的構(gòu)建

背景

這是用來(lái)跑spark on k8s任務(wù)的driver端的鏡像

構(gòu)建步驟

  • 按照任務(wù)要求進(jìn)行鏡像增加
    注意對(duì)于spark on k8s client 在dockerfile中需配置

    ENV HADOOP_CONF_DIR=/opt/hadoop/conf
    
    RUN echo '\nexport SPARK_LOCAL_HOSTNAME=${POD_IP}' >> /path/to/spark/conf/spark-env.sh
    

    這樣在driver通行的過(guò)程中就不會(huì)出現(xiàn)executor連接不上driver端的情況,原因是因?yàn)閐river端以pod的名字作為host,而exeuctor直接訪問(wèn)該host是訪問(wèn)不了的,具體參考spark on k8s 與spark on k8s operator的對(duì)比

  • 配置spark-default.conf
    在/path/to/spark/conf/spark-default.conf配置:

    spark.kubernetes.namespace                              dev
    spark.kubernetes.authenticate.driver.serviceAccountName lijiahong
    spark.kubernetes.authenticate.serviceAccountName        lijiahong
    ## 注意這里是之前構(gòu)建的spark-on-k8s的基礎(chǔ)鏡像,如果是以cluster形式運(yùn)行,則driver和executor的鏡像分開(kāi)配置
    ## spark.kubernetes.driver.container.image 
    ## spark.kubernetes.executor.container.image  
    spark.kubernetes.container.image                        xxx.xxx.xxx./xxx/spark-on-k8s:v3.0.1-cdh-2.6.0-5.13.1
    spark.kubernetes.container.image.pullSecrets            regsecret
    spark.kubernetes.file.upload.path                       hdfs://tmp
    spark.kubernetes.container.image.pullPolicy             Always
    
  • 構(gòu)建鏡像

    docker build -f Dockerfile --pull -t "xxx/xxx/spark-on-k8s:xxx" .
    
  • 提交任務(wù)的時(shí)候設(shè)置POD_IP
    如以下yaml文件:

    apiVersion: v1
    kind: Pod
    metadata:
    name: spark-on-k8s-demo
    labels:
      name: spark-on-k8s-demo
    spec:
     containers:
      - name: spark-on-k8s-demo
        image: xxx/xxx/spark-on-k8s:xxx
        imagePullPolicy: Always
        env:
        - name: POD_IP
          valueFrom:
            fieldRef:
                fieldPath: status.podIP
        - name: NODE_IP
          valueFrom:
            fieldRef:
                fieldPath: status.hostIP
     imagePullSecrets:
      - name: regsecret
     restartPolicy: Never
    

至此,spark on k8s構(gòu)建完畢

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末干签,一起剝皮案震驚了整個(gè)濱河市津辩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌容劳,老刑警劉巖喘沿,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異竭贩,居然都是意外死亡蚜印,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)留量,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)窄赋,“玉大人,你說(shuō)我怎么就攤上這事楼熄∫浯拢” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵可岂,是天一觀的道長(zhǎng)错敢。 經(jīng)常有香客問(wèn)我,道長(zhǎng)缕粹,這世上最難降的妖魔是什么稚茅? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮平斩,結(jié)果婚禮上亚享,老公的妹妹穿的比我還像新娘。我一直安慰自己绘面,他們只是感情好虹蒋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著飒货,像睡著了一般魄衅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上塘辅,一...
    開(kāi)封第一講書(shū)人閱讀 51,155評(píng)論 1 299
  • 那天晃虫,我揣著相機(jī)與錄音,去河邊找鬼扣墩。 笑死哲银,一個(gè)胖子當(dāng)著我的面吹牛扛吞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播荆责,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼滥比,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了做院?” 一聲冷哼從身側(cè)響起盲泛,我...
    開(kāi)封第一講書(shū)人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎键耕,沒(méi)想到半個(gè)月后寺滚,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡屈雄,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年村视,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酒奶。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蚁孔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出惋嚎,到底是詐尸還是另有隱情勒虾,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布瘸彤,位于F島的核電站修然,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏质况。R本人自食惡果不足惜愕宋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望结榄。 院中可真熱鬧中贝,春花似錦、人聲如沸臼朗。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)视哑。三九已至绣否,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間挡毅,已是汗流浹背蒜撮。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人段磨。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓取逾,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親苹支。 傳聞我的和親對(duì)象是個(gè)殘疾皇子砾隅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容