docker本地搭建spark yarn hive环境

这篇具有很好参考价值的文章主要介绍了docker本地搭建spark yarn hive环境。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言


为了学习大数据处理相关技术,需要相关软件环境作为支撑实践的工具。而这些组件的部署相对繁琐,对于初学者来说不够友好。本人因为工作中涉及到该部分内容,通过参考网上的资料,经过几天摸索,实现了既简单又快捷的本地环境搭建方法。特写下该文章,加以记录,以期能够给初学者一些参考和帮助。

本文主要介绍基于docker在本地搭建spark on yarn以及hive(采用derby服务模式)。为什么没有使用mysql作为hive的metastore呢?因为既然是作为学习和测试用的环境,尽量让其保持简单,derby数据库不需要单独配置,直接启动即可使用,足够轻量和简便。

完整的代码已经提交到gitee spark-on-yarn-hive-derby

软件版本

组件 版本
spark镜像 bitnami/spark:3.1.2
hadoop 3.2.0
hive 3.1.2
derby 10.14.2.0

准备工作

  1. 下载gitee代码 https://gitee.com/crazypandariy/spark-on-yarn-hive-derby
  2. 下载derby(https://archive.apache.org/dist/db/derby/db-derby-10.14.2.0/db-derby-10.14.2.0-bin.tar.gz) ,移动到spark-on-yarn-hive-derby-master目录(和start-hadoop.sh处于同级目录中)
  3. 下载hadoop(https://archive.apache.org/dist/hadoop/common/hadoop-3.2.0/hadoop-3.2.0.tar.gz),移动到spark-on-yarn-hive-derby-master目录

使用说明

config/workers中配置的是作为工作节点的hostname,这个必须要和docker-compose-.yml中定义的hostname;保持一致
config/ssh_config用于免密登录
config中涉及到hostname的配置文件有core-site.xml、hive-site.xml、spark-hive-site.xml、yarn-site.xml,一定要和docker-compose-
.yml中定义的hostname保持一致;

  1. 构建基础镜像
  2. 构建on-yarn 镜像
  3. 构建on-yarn-hive镜像

构建基础镜像

采用spark成熟镜像方案 bitnami/spark:3.1.2 作为原始镜像,在此基础上安装openssh,制作免密登录的基础镜像。由于master和worker节点均基于该基础镜像,其中的ssh密钥均相同,可以简化安装部署。

docker build -t my/spark-base:3.1.2 base/Dockerfile .

spark on yarn模式

构建on-yarn镜像

docker build -t my/spark-hadoop:3.1.2 -f on-yarn/Dockerfile .

启动on-yarn集群

手动方式

# 创建集群
docker-compose -f on-yarn/docker-compose-manul.yml -p spark up -d
# 启动hadoop
docker exec -it spark-master-1 sh /opt/start-hadoop.sh

# 停止集群
docker-compose -f on-yarn/docker-compose-manul.yml -p spark stop
# 删除集群
docker-compose -f on-yarn/docker-compose-manul.yml -p spark down

# 启动集群
docker-compose -f on-yarn/docker-compose-manul.yml -p spark start
# 启动hadoop
docker exec -it spark-master-1 sh /opt/start-hadoop.sh

自动方式

# 创建集群
docker-compose -f on-yarn/docker-compose-auto.yml -p spark up -d
# 停止集群
docker-compose -f on-yarn/docker-compose-auto.yml -p spark stop
# 启动集群
docker-compose -f on-yarn/docker-compose-auto.yml -p spark start
# 删除集群
docker-compose -f on-yarn/docker-compose-auto.yml -p spark down

spark on yarn with hive(derby server)模式

构建on-yarn-hive镜像

docker build -t my/spark-hadoop-hive:3.1.2 -f on-yarn-hive/Dockerfile .

启动on-yarn-hive集群

手动方式

# 创建集群
docker-compose -f on-yarn-hive/docker-compose-manul.yml -p spark up -d
# 启动hadoop
docker exec -it spark-master-1 sh /opt/start-hadoop.sh
# 启动hive
docker exec -it spark-master-1 sh /opt/start-hive.sh

# 停止集群
docker-compose -f on-yarn-hive/docker-compose-manul.yml -p spark stop
# 删除集群
docker-compose -f on-yarn-hive/docker-compose-manul.yml -p spark down

# 启动集群
docker-compose -f on-yarn-hive/docker-compose-manul.yml -p spark start
# 启动hadoop
docker exec -it spark-master-1 sh /opt/start-hadoop.sh
# 启动hive
docker exec -it spark-master-1 sh /opt/start-hive.sh

自动方式

# 创建集群
docker-compose -f on-yarn-hive/docker-compose-auto.yml -p spark up -d
# 停止集群
docker-compose -f on-yarn-hive/docker-compose-auto.yml -p spark stop
# 启动集群
docker-compose -f on-yarn-hive/docker-compose-auto.yml -p spark start
# 删除集群
docker-compose -f on-yarn-hive/docker-compose-auto.yml -p spark down

常用示例

spark执行sh脚本

spark-shell --master yarn << EOF
// 脚本内容
// 示例
val data = Array(1,2,3,4,5)
val distData = sc.parallelize(data)
val sum = distData.reduce((a,b)=>a+b)
println("Sum: "+sum)
EOF

Java远程提交Yarn任务

  • 进入master容器,创建demo表,命令 hive -e "create table demo(name string)"
  • 创建maven项目,将core-site.xml yarn-site.xml hdfs-site.xml hive-site.xml等文件拷贝到src/main/resources
  • 将 local-spark-worker1 和 local-spark-master 指向本地虚拟网络适配器的IP地址

例如,我用的是windows系统,则使用SwitchHosts软件,修改上述hostname指向的IP地址,其中192.168.138.1是虚拟网络适配器的IP

192.168.138.1 local-spark-worker1
192.168.138.1 local-spark-master

上传spark依赖jar包

hdfs dfs -mkdir -p /spark/jars
hdfs dfs -put -f /opt/bitnami/spark/jars/* /spark/jars

maven部分依赖

		<dependency>
			<groupId>org.apache.spark</groupId>
			<artifactId>spark-core_2.12</artifactId>
			<version>3.1.2</version>
		</dependency>
                <dependency>
			<groupId>org.apache.spark</groupId>
			<artifactId>spark-yarn_2.12</artifactId>
			<version>3.1.2</version>
		</dependency>
		<dependency>
			<groupId>org.junit.jupiter</groupId>
			<artifactId>junit-jupiter</artifactId>
			<version>5.9.1</version>
			<scope>test</scope>
		</dependency>

java代码

以cluster模式提交spark-sql;浏览器输入http://localhost:9870打开hdfs管理界面,创建目录/user/my,进入该目录并上传spark-sql-cluster.jar

package org.demo.spark;

import org.apache.spark.SparkConf;
import org.apache.spark.deploy.yarn.Client;
import org.apache.spark.deploy.yarn.ClientArguments;
import org.junit.jupiter.api.Test;

public class SparkOnYarnTest {

	@Test
    public void yarnApiSubmit() {
        // prepare arguments to be passed to 
        // org.apache.spark.deploy.yarn.Client object
        String[] args = new String[] {
        		"--jar","hdfs:///user/my/spark-sql-cluster.jar",
                "--class", "org.apache.spark.sql.hive.cluster.SparkSqlCliClusterDriver",
                "--arg", "spark-internal",
                "--arg", "-e",
                "--arg", "\\\"insert into demo(name) values('zhangsan')\\\""
                };
        // identify that you will be using Spark as YARN mode
//        System.setProperty("SPARK_YARN_MODE", "true");

        // create an instance of SparkConf object
        String appName = "Yarn Client Remote App";
        SparkConf sparkConf = new SparkConf();
        sparkConf.setMaster("yarn");
        sparkConf.setAppName(appName);
        sparkConf.set("spark.submit.deployMode", "cluster");
        sparkConf.set("spark.yarn.jars", "hdfs:///spark/jars/*.jar");
        sparkConf.set("spark.hadoop.yarn.resourcemanager.hostname", "local-spark-master");
        sparkConf.set("spark.hadoop.yarn.resourcemanager.address", "local-spark-master:8032");
        sparkConf.set("spark.hadoop.yarn.resourcemanager.scheduler.address", "local-spark-master:8030");

        // create ClientArguments, which will be passed to Client
        ClientArguments cArgs = new ClientArguments(args);
        
		// create an instance of yarn Client client
        Client client = new Client(cArgs, sparkConf, null);

        // submit Spark job to YARN
        client.run();
    }
}

参考资料

使用 Docker 快速部署 Spark + Hadoop 大数据集群
SparkSQL 与 Hive 整合关键步骤解析
spark-sql-for-cluster文章来源地址https://www.toymoban.com/news/detail-838058.html

到了这里,关于docker本地搭建spark yarn hive环境的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hive on Spark环境搭建

    Hive 引擎包括:默认 MR、tez、spark 最底层的引擎就是MR (Mapreduce)无需配置,Hive运行自带 Hive on Spark:Hive 既作为存储元数据又负责 SQL 的解析优化,语法是 HQL 语法,执行引擎变成了 Spark,Spark 负责采用 RDD 执行。 Spark on Hive : Hive 只作为存储元数据,Spark 负责 SQL 解析优化,语

    2024年02月13日
    浏览(48)
  • Win10 环境下 spark 本地环境的搭建

    链接:https://pan.baidu.com/s/1OYoeMVHOtcu05jR1mL7LeA  提取码:yyds 下载 jdk1.8.0_66_windows-x64_bin.exe(或其他版本) 此电脑(右击)==属性==高级系统设置==环境变量==系统变量==新建 CLASSPATH:.;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar; JAVA_HOME:C:Program FilesJavajdk1.8.0_66(jdk安装路径)    此电脑(右

    2024年02月04日
    浏览(40)
  • 使用docker快速搭建hive环境

    写在前面 想练练Hive SQL,但是没有hive shell环境。现在只有一台空的CentOS 7机子,一想要弄jdk、hadoop、mysql、hive就头疼。 于是在网上找了找,发现用docker部署hive会快很多,在此记录一下部署过程。 以下过程每一步在文末都附有参考文档,出错的朋友可以去看对应的参考文档。

    2024年01月22日
    浏览(38)
  • hive on spark 时,executor和driver的内存设置,yarn的资源设置

    hive on spark 时,executor和driver的内存设置,yarn的资源设置。 在使用Hive on Spark时,需要进行以下三个方面的内存和资源设置: Executor的内存设置 在使用Hive on Spark时,需要根据数据量和任务复杂度等因素,合理地设置每个Executor的内存大小。通常情况下,每个Executor需要留一部分

    2024年02月16日
    浏览(39)
  • Docker 搭建本地 https 环境

    环境: 安装 Docker 安装 docker-compose 1. 生成自签名的SSL证书和私钥 首先,生成自签名的 SSL 证书和私钥。可以使用 OpenSSL 命令来生成 这个命令将会生成一个私钥文件 key.pem 和一个证书文件 certificate.pem 。 解释一下命令的参数: req :执行证书请求相关操作。 -newkey rsa:2048 :生成

    2024年03月20日
    浏览(38)
  • docker本地PHP开发环境搭建

    本文简单介绍通过启动一个nginx和fpm容器来搭建一个php web运行环境,以文档命令为例,H:/home/code/docker/web 目录下可以放多个子项目,只需针对不同的项目配置不同的nginx站点文件,在站点中指定下级项目目录即可,以后台项目admin为例, 则具体的子路径为H:/home/code/docker/we

    2024年02月07日
    浏览(50)
  • Hive/Spark/Yarn: User Not Found 错误和 Kerberos / AD / OpenLDAP 之间的关系与解释

    《大数据平台架构与原型实现:数据中台建设实战》一书由博主历时三年精心创作,现已通过知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,京东购书链接:https://item.jd.com/12677623.html,扫描

    2024年02月14日
    浏览(57)
  • Spark on Yarn集群模式搭建及测试

    🥇🥇【大数据学习记录篇】-持续更新中~🥇🥇 点击传送:大数据学习专栏 持续更新中,感谢各位前辈朋友们支持学习~ Apache Spark是一个快速的、通用的大数据处理框架,它支持在各种环境中进行分布式数据处理和分析。在Yarn集群模式下搭建Spark环境可以充分利用Hadoop的资源

    2024年02月11日
    浏览(45)
  • Spark on YARN 部署搭建详细图文教程

    目录 一、引言  二、SparkOnYarn 本质 2.1 Spark On Yarn 的本质? 2.2 Spark On Yarn 需要啥? 三、配置 spark on yarn 环境 3.1 spark-env.sh  3.2 连接到 YARN 中 3.2.1 bin/pyspark 3.2.2 bin/spark-shell 3.2.3 bin/spark-submit (PI) 四、部署模式 DeployMode  4.1 Cluster 模式 4.2 Client 模式 4.3 两种模式的区别  4.4 测试

    2024年02月06日
    浏览(39)
  • 使用 Docker 高效搭建本地开发环境(详细教程)

    试错 对开发者而言,每天会催生出的各式各样的新技术都需要尝试,然而开发者却不太可能为他们一一搭建好环境并进行测试。时间非常宝贵,正是得益于  Docker ,让我们有可能在一条或者几条命令内就搭建完环境,而且这个环境大到一个特定版本的操作系统,小到一个软

    2024年02月08日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包