hive on spark 安装配置 详解

hive on spark spark 安装配置

安装对应版本scala
spark和scala的版本需要匹配,不然安装后启动会报错
官网下载源码包
http://spark.apache.org/downloads.html

其他版本可以去https://archive.apache.org/dist/spark/下载
解压后修改pom.xml中对应的scala、Hadoop版本
去dev/make-distribution.sh修改对应版本号,编译时会快一点

改为:

下载之后在pom.xml目录点击git bash here使用git编译 编译过程会有点久
./dev/make-distribution.sh --name “hadoop321-without-hive” --tgz “-Pyarn,hadoop-provided,hadoop-3.2.1”
指定hadoop版本,不带hive编译
编译成功后会生成一个安装包

解压安装包后修改配置文件
cd $SPARK_HOME/conf
mv spark-env.sh.template spark-env.sh
mv spark-defaults.conf.template spark-defaults.conf
vim spark-env.sh

加上配置:
export JAVA_HOME=/opt/jdk1.8.0_181
export SCALA_HOME=/opt/scala-2.11.12
export HADOOP_HOME=/opt/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_LAUNCH_WITH_SCALA=0
export SPARK_MASTER_IP=10.241.19.7
export SPARK_LIBRARY_PATH=/opt/spark-2.4.4-bin-hadoop321-without-hive/lib

export SPARK_MASTER_WEBUI_PORT=8082
export SPARK_WORKER_DIR=/opt/spark-2.4.4-bin-hadoop321-without-hive/work

export SPARK_MASTER_PORT=7077
export SPARK_WORKER_PORT=7078
export SPARK_LOG_DIR=/opt/spark-2.4.4-bin-hadoop321-without-hive/log
export SPARK_PID_DIR=/opt/spark-2.4.4-bin-hadoop321-without-hive/run
export SPARK_DIST_CLASSPATH=$(/opt/hadoop/bin/hadoop classpath)

vim spark-defaults.conf
加上配置:
spark.master yarn-cluster
spark.home /opt/spark-2.4.4-bin-hadoop321-without-hive
spark.eventLog.enabled true
spark.eventLog.dir hdfs://10.××.××.7:9000/spark-log
spark.serializer org.apache.spark.serializer.KryoSerializer
spark.executor.memory 2g
spark.driver.memory 2g
spark.executor.cores 2
spark.cores.max 2
spark.default.parallelism 36
spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers=“one two three”
spark.executor.extraClassPath /opt/spark-2.4.4-bin-hadoop321-without-hive/jars/*
spark.dirver.extraClassPath /opt/spark-2.4.4-bin-hadoop321-without-hive/jars/*

cd $SPARK_HOME/sbin
启动/停止 spark命令:
start-all.sh/stop.all.sh
访问 spark-env.sh配置的ui地址可以查看spark运行情况

然后再hive-site.xml 配置spark作为引擎
cd $HIVE_HOME/conf
vim hive-site.xml


  hive.execution.engine
  spark


   spark.master
  spark://10.××.××.7:7077


   spark.enentLog.enabled
   true


   spark.enentLog.dir
   hdfs://10.××.××.7:9000/spark-log


   spark.executor.memeory
   2g


   spark.executor.cores
   2


   spark.cores.max
   2
```

重启hive
netstat -nltp | grep 10000 
netstat -nltp | grep 9083
kill -9 ********
hive --service metastore &
hiveserver2 &

**默认没有参数直接指定使用多少个executor数。而是按照如下方式计算而来executor 数量 = spark.cores.max/spark.executor.cores**

**spark.cores.max 默认没有设置,这时它使用的是 spark.deploy.defaultCores,而这个的默认值是Int.max,也就是不限制,这样应用就会获取所有可用的CPU资源,**

**spark.executor.cores (适用于ON YARN和standalone模式) 可以指定每个executor的cup
这个配置在hive-site.xml中配置**

**如果spark.cores.max不配置,spark.executor.cores配置为1,机器cup总数16,连接一个hive使用spark时就会占用所有资源,其他连接会等待直至失败。**

spark-env.sh的export SPARK_DIST_CLASSPATH=$(/opt/hadoop/bin/hadoop classpath)指定后 需要hadoop jar包时会去hadoop目录获取

使用spark-submit的命令格式:
spark-submit --conf "spark.eventLog.enabled=true" --conf "spark.eventLog.dir=hdfs://10.××.××.7:9000/spark-log" --master spark://10.××.××.7:7077 /opt/spark-2.4.4-bin-hadoop321-without-hive/examples/src/main/python/pi.py


开启spark的history-server
以standalone运行模式为例,在运行Spark Application的时候,Spark会提供一个WEBUI列出应用程序的运行时信息;但该WEBUI随着Application的完成(成功/失败)而关闭,也就是说,Spark Application运行完(成功/失败)后,将无法查看Application的历史记录;
Spark运行在yarn或者mesos之上,通过spark的history server仍然可以重构出一个已经完成的Application的运行时参数信息(假如Application运行的事件日志信息已经记录下来)

在spark-env.sh加上配置:
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.fs.logDirectory=hdfs://10.××.××.7:9000/spark-log"


spark-defaults.conf加上配置:
spark.yarn.historyServer.address 10.××.××.7:18080	
spark.history.ui.port		 	18080
spark.history.fs.logDirector	 hdfs://10.××.××.7:9000/spark-log 注:该目录需要事先在hdfs上创建好,否则history-server启动报错
spark.yarn.preserve.staging.files true	
spark.eventLog.enabled		true
spark.eventLog.dir			hdfs://10.××.××.7:9000/spark-log 

启动命令:
${SPARK_HOME}/sbin/start-history-server.sh
停止命令:
${SPARK_HOME}/sbin/stop-history-server.sh
启动成功后就可以访问webui

在spark history-server里面查看日志是会跳转到hadoop 的jobHistoryServer服务的,因此需要开启hadoop的jobHistoryServer服务才能查看日志。

你可能感兴趣的:(spark,hive,hadoop)