Spark集群- 连接hadoop、hive集群

目的使spark代码提交到集群运行时,能够操作hdfs、hive等

保证所有spark机器都能解析hadoop集群的机器名称

如果spark和hadoop部署在同样的集群,则可以省略这一步
如果spark和hadoop部署在不同的集群,则需要配置hosts文件

复制hdfs、hive配置文件至$SPAR_HOME/conf/文件夹下

hdfs、hive配置文件为:

  • core-site.xml
  • hdfs-site.xml
  • hive-site.xml

我们hadoop、hive集群都是通过CDH方式安装,这些配置文件在/etc/hive/conf/
所有的spark机器上都要copy这三个文件
我的命令如下:

cd /etc/hive/conf/
scp core-site.xml hive-site.xml hdfs-site.xml hadoop@lfg01:/data/spark/spark-2.4.4-bin-hadoop2.7/conf/
scp core-site.xml hive-site.xml hdfs-site.xml hadoop@lfg02:/data/spark/spark-2.4.4-bin-hadoop2.7/conf/
scp core-site.xml hive-site.xml hdfs-site.xml hadoop@lfg03:/data/spark/spark-2.4.4-bin-hadoop2.7/conf/

spark-submit方式

  1. spark集群standalone client模式
spark-submit \
--class hdfs.GeohashTest \
--master  spark://lfg01:7077 \
--deploy-mode client \
/home/hadoop/sparktest-1.0-SNAPSHOT.jar

这种方式,SparkSubmit 做为Client端和运行driver程序,能在提交的本机上看到程序运行日志信息

  1. spark集群standalone cluster模式
spark-submit \
--class hdfs.GeohashTest \
--master  spark://lfg01:7077 \
--deploy-mode cluster \
/home/hadoop/sparktest-1.0-SNAPSHOT.jar

这种方式客户端的SparkSubmit进程会在应用程序提交给集群之后就退出,Master会在集群中选择一个Worker进程生成一个子进程DriverWrapper来启动driver程序,所以提交的客户端是看不到程序运行日志的。

注意:cluster模式,每一个节点都有可能运行driver程序,所以需要每台节点上都有程序jar文件,否则会报java.nio.file.NoSuchFileException: /home/hadoop/sparktest-1.0-SNAPSHOT.jar这种错误。正确的方式是先把jar包提交到hdfs上,然后把jar路径改为hdfs的路径

hadoop fs -put /home/hadoop/sparktest-1.0-SNAPSHOT.jar /zongbo/jar/
spark-submit \
--class hdfs.GeohashTest \
--master  spark://lfg01:7077 \
--deploy-mode cluster \
hdfs:/zongbo/jar/sparktest-1.0-SNAPSHOT.jar

推荐阅读更多精彩内容