目的使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方式
- 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程序,能在提交的本机上看到程序运行日志信息
- 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
网友评论