本地环境下运行Spark程序

1. 前言

终于又有实际的大数据计算业务功能开发了,是对一个以前用SpringBoot来处理Elasticsearch集群上的日志数据的计算程序,这个程序的最大问题就是单进程内存会达到几十G,直到最后运行在中途出现OutOfMemoryError而崩溃掉,毕竟用SpringBoot来实现分布式计算是有难度的,而且Spark框架已经帮我们实现了一切,非常稳定高效,何必自己再去造轮子呢。

2. 环境配置

2.1 解决找不到winutils.exe

在本地eclipse环境里运行Spark程序,需要Hadoop windows环境,不然会报错:

java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.

这是因为我们确实没有本地的winutils.exe,那么就配置一个,直接访问GitHub - steveloughran/winutils: Windows binaries for Hadoop versions (built from the git commit ID used for the ASF relase) 按github常规copy它的url,在命令行窗口执行:

git clone https://github.com/steveloughran/winutils.git

成功则得到一个winutils目录,cd ./winutils/, 里面有很多hadoop版本目录,由于我采用hadoop-2.10.0,而这里2.x最大版本是hadoop-2.8.3,故选择它,我的最终目录是:

D:\app\hadoop\winutils\hadoop-2.8.3

在代码入口main()方法下加一行:

java 复制代码
	public static void main(String[] args) {
    	logger.info("spark execute begin...........");
    	System.setProperty("hadoop.home.dir", "D:\\app\\hadoop\\winutils\\hadoop-2.8.3");
 

2.2 解决master URL设置问题

上面问题处理好之后,我们再次执行,还是会报错:

复制代码
A master URL must be set in your configuration

我们在入口main()所在类文件上单击右键:

Run As --> Run Configurations --> Arguments --> VM arguments下输入:

-Dspark.master=local[*]

点"Apply"保存,然后点"Run"执行,终于程序跑起来,从Elasticsearch读取日志数据,最后把计算结果再次写入Elasticsearch里另外一个索引。

3. 后记

Spark程序还是比较好调测的,在面对亿级以上的数据分析时,不建议用SpringBoot框架来写schduler模式的后台处理程序解决问题,那不是SpringBoot擅长的,建议用Spark框架来批处理这种数据分析问题,你会发现代码行少得多,分布式多进程多线程问题不用我们去手工解决。

相关推荐
DolphinScheduler社区12 分钟前
大数据调度组件之Apache DolphinScheduler
大数据
SelectDB技术团队12 分钟前
兼顾高性能与低成本,浅析 Apache Doris 异步物化视图原理及典型场景
大数据·数据库·数据仓库·数据分析·doris
我一直在流浪20 分钟前
Kafka - 消费者程序仅消费一半分区消息的问题
分布式·kafka
panpantt3211 小时前
【参会邀请】第二届大数据与数据挖掘国际会议(BDDM 2024)邀您相聚江城!
大数据·人工智能·数据挖掘
青云交1 小时前
大数据新视界 -- 大数据大厂之 Impala 性能优化:跨数据中心环境下的挑战与对策(上)(27 / 30)
大数据·性能优化·impala·案例分析·代码示例·跨数据中心·挑战对策
张彦峰ZYF2 小时前
投资策略规划最优决策分析
分布式·算法·金融
soso19682 小时前
DataWorks快速入门
大数据·数据仓库·信息可视化
The_Ticker2 小时前
CFD平台如何接入实时行情源
java·大数据·数据库·人工智能·算法·区块链·软件工程
java1234_小锋2 小时前
Elasticsearch中的节点(比如共20个),其中的10个选了一个master,另外10个选了另一个master,怎么办?
大数据·elasticsearch·jenkins
Elastic 中国社区官方博客2 小时前
Elasticsearch 开放推理 API 增加了对 IBM watsonx.ai Slate 嵌入模型的支持
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索