• cdh6.x 集成spark-sql


    写在前面

    CDH系列默认阉割掉了Spark的spark-sql工具,但是很多公司还是有这个使用的需要,因为线上就有这块的需求,所以结合cdh6.x版本,做了具体的对spark-sql工具支持的集成。

    版本说明

    组件名称组件版本
    CDHCDH 6.2.1
    sparkspark-2.4.8

    第一步:下载原生apache spark

    # cd /opt/cloudera/parcels/CDH/lib

    # wget http://archive.apache.org/dist/spark/spark-2.4.8/spark-2.4.8-bin-hadoop2.7.tgz  

    # tar zxvf spark-2.4.8-bin-hadoop2.7.tgz 

    # ln -s spark2 spark-2.4.8-bin-hadoop2.7  

    第二步:修改spark配置文件 

    2.1 配置spark-env.sh

    #!/usr/bin/env bash

    ##JAVA_HOME 需要结合实际路径配置

    export JAVA_HOME=/usr/java/jdk1.8.0_144

    export HADOOP_HOME=/opt/cloudera/parcels/CDH/lib/hadoop

    export HIVE_HOME=/opt/cloudera/parcels/CDH/lib/hive

    export HADOOP_COMMON_HOME="$HADOOP_HOME"

    export HADOOP_CONF_DIR=/etc/hadoop/conf

    export YARN_CONF_DIR=/etc/hadoop/conf

    export SPARK_HOME=/opt/cloudera/parcels/CDH/lib/spark2

    export SPARK_CONF_DIR=${SPARK_HOME}/conf

    2.2 配置spark-defaults.conf

    小提示建议直接cp 现有spark的配置文件,在此基础上修改。

    # cd /opt/cloudera/parcels/CDH/lib/spark2/conf

    #cp -r /etc/spark/conf/spark-defaults.conf  ./

    ### 将hive的配置文件一并cp过来

    #cp /etc/hive/conf/hive-site.xml ./

    Vim /opt/cloudera/parcels/CDH/lib/spark2/conf/spark-defaults.conf

    小提示:修改配置文件时,只需要修改文件中标红部分即可,其他可以保持默认。

    spark.authenticate=false

    spark.driver.log.dfsDir=/user/spark/driverLogs

    spark.driver.log.persistToDfs.enabled=true

    spark.dynamicAllocation.enabled=true

    spark.dynamicAllocation.executorIdleTimeout=60

    spark.dynamicAllocation.minExecutors=0

    spark.dynamicAllocation.schedulerBacklogTimeout=1

    spark.eventLog.enabled=true

    spark.io.encryption.enabled=false

    spark.network.crypto.enabled=false

    spark.serializer=org.apache.spark.serializer.KryoSerializer

    spark.shuffle.service.enabled=true

    spark.shuffle.service.port=7337

    spark.ui.enabled=true

    spark.ui.killEnabled=true

    spark.lineage.log.dir=/var/log/spark/lineage

    spark.lineage.enabled=true

    spark.master=yarn

    spark.submit.deployMode=client

    spark.eventLog.dir=hdfs://ds-nameservice1/user/spark/applicationHistory

    spark.yarn.historyServer.address=http://ds-bigdata-001:18088

    ## 我这里将spark的依赖包都放在hdfs上

    spark.yarn.jars=hdfs://ds-nameservice1/user/spark2/jars/* 

    spark.driver.extraLibraryPath=/opt/cloudera/parcels/CDH-6.2.1-1.cdh6.2.1.p0.1580995/lib/hadoop/lib/native:/opt/cloudera/parcels/GPLEXTRAS-6.2.0-1.gplextras6.2.0.p0.967373/lib/hadoop/lib/native

    spark.executor.extraLibraryPath=/opt/cloudera/parcels/CDH-6.2.1-1.cdh6.2.1.p0.1580995/lib/hadoop/lib/native:/opt/cloudera/parcels/GPLEXTRAS-6.2.0-1.gplextras6.2.0.p0.967373/lib/hadoop/lib/native

    spark.yarn.am.extraLibraryPath=/opt/cloudera/parcels/CDH-6.2.1-1.cdh6.2.1.p0.1580995/lib/hadoop/lib/native:/opt/cloudera/parcels/GPLEXTRAS-6.2.0-1.gplextras6.2.0.p0.967373/lib/hadoop/lib/native

    spark.yarn.config.replacementPath={{HADOOP_COMMON_HOME}}/../../..

    spark.yarn.historyServer.allowTracking=true

    spark.yarn.appMasterEnv.MKL_NUM_THREADS=1

    spark.executorEnv.MKL_NUM_THREADS=1

    spark.yarn.appMasterEnv.OPENBLAS_NUM_THREADS=1

    spark.executorEnv.OPENBLAS_NUM_THREADS=1

    #spark.extraListeners=com.cloudera.spark.lineage.NavigatorAppListener

    #spark.sql.queryExecutionListeners=com.cloudera.spark.lineage.NavigatorQueryListener

    2.3 配置日志级别

    # vim /opt/cloudera/parcels/CDH/lib/spark2/conf/log4j.properties

    在配置文件中追加以下配置项,其他保持默认

    log4j.logger.org.apache.spark=WARN

    第三步:配置依赖包

    3.1 上传spark 依赖jar包

    ##将spark的依赖jar包放到hdfs指定路径(说明:这个和配置文件中spark.yarn.jars的配置项相对应,如果使用的是local路径,可以不上传。

    #  hdfs  dfs -mkdir -p  hdfs://ds-nameservice1/user/spark2/jars/

    # hdfs  dfs  -put /opt/cloudera/parcels/CDH/lib/spark2/jars/* hdfs://ds-nameservice1/user/spark2/jars/

    3.2 配置lzo jar包

    #cp /opt/cloudera/parcels/GPLEXTRAS/jars/hadoop-lzo-0.4.15-cdh6.2.0.jar /opt/cloudera/parcels/CDH/lib/spark2/jars/

    第四步:配置spark-sql 的全局变量

    vim /etc/profile.d/spark.sh

    #!/bin/bash

    export SPARK_HOME=/opt/cloudera/parcels/CDH/lib/spark2

    export PATH=$SPARK_HOME/bin:$PATH

    #生效

    # source /etc/profile

    第五步:测试使用

    全局的任意位置执行 spark-sql指令(注意:执行的linux用户需要有提交任务到yarn的权限

    如果都没有问题,执行show databases ;会看到集群中的所有库。

    补充说明:其他客户端如果需要此环境,将上述配置全部scp过去即可。

     

  • 相关阅读:
    明星录制祝福视频:传递温情与关怀的独特方式
    Java之HashMap和TreeMap
    入门篇-其之六-Java运算符(中)
    微信机器人开发
    JVM第十六讲:调试排错 - Java 线程分析之线程Dump分析
    NFA转换成DFA的方法——子集法
    【Python】pdf转ppt
    企业该如何选择数字化转型工具?
    关于我学前端一年的体验(心得)
    Greek Alphabet Letters & Symbols
  • 原文地址:https://blog.csdn.net/qq_26442553/article/details/126028533