spark集群配置以及java操作spark小demo
spark
安装
tar -zxvf spark-2.4.0-bin-hadoop2.7.tgz
rm spark-2.4.0-bin-hadoop2.7.tgz
mv spark-2.4.0-bin-hadoop2.7 spark
sudo vim /etc/profile
export SPARK_HOME=/usr/local/storm
export PATH=$PATH:$SPARK_HOME/bin
source /etc/profile
准备 master worker1 worker2 worker3 这四台机器
首先确保你的Hadoop集群能够正常运行worker1 worker2 worker3为DataNode, master为NameNode
具体配置参照我的博客https://www.cnblogs.com/ye-hcj/p/10192857.html
配置
spark-env.sh
进入spark的conf目录下,cp spark-env.sh.template spark-env.sh sudo vim spark-env.sh
输入如下配置
export JAVA_HOME=/usr/local/jdk/jdk-11.0.1
export SCALA_HOME=/usr/local/scala/scala
export HADOOP_HOME=/usr/local/hadoop/hadoop-3.1.1
export SPARK_HOME=/usr/local/spark/spark
export HADOOP_CONF_DIR=/usr/local/hadoop/hadoop-3.1.1/etc/hadoop
export SPARK_MASTER_HOST=master
export SPARK_WORKER_MEMORY=1g
export SPARK_WORKER_CORES=1
slaves
进入spark的conf目录下,cp slaves.template slaves sudo vim slaves
输入如下配置
master
worker1
worker2
worker3
启动
在master中运行 sbin/start-all.sh 即可 访问http://master:8080/即可看到spark的ui
使用java来操作spark
写个小demo,用来分析10万个数据中男女人数
模拟数据的java代码
// 模拟数据
// 10万个人当中,统计青年男性和青年女性的比例,看看男女比例是否均衡
FileOutputStream f = null;
ThreadLocalRandom random = ThreadLocalRandom.current();
String str = "";
int count = 0;
try {
f = new FileOutputStream("C:\\Users\\26401\\Desktop\\data.txt", true);
for(;count<100000;count++) {
str = count + " " + random.nextInt(18, 28) + " " + (random.nextBoolean()?'M':'F');
f.write((str + "\r\n").getBytes());
} } catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(f != null) f.close();
} catch (IOException e) {
e.printStackTrace();
}
}
依赖
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>test</groupId>
<artifactId>test</artifactId>
<version>1.0.0</version>
<name>test</name>
<description>Test project for spring boot mybatis</description>
<packaging>jar</packaging> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<java.version>1.8</java.version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties> <dependencies> <dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.12</artifactId>
<version>2.4.0</version>
</dependency> <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency> <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
</dependency> </dependencies> <build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<useUniqueVersions>false</useUniqueVersions>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>
java代码
package test; import java.io.Serializable; import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.Function;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; public class App implements Serializable
{ private static final long serialVersionUID = -7114915627898482737L; public static void main(String[] args) throws Exception {
Logger logger=LoggerFactory.getLogger(App.class); SparkConf sparkConf = new SparkConf(); sparkConf.setMaster("spark://master:7077");
sparkConf.set("spark.submit.deployMode", "cluster");
sparkConf.setAppName("FirstTest"); JavaSparkContext sc = new JavaSparkContext(sparkConf);
JavaRDD<String> file = sc.textFile("hdfs://master:9000/data.txt"); JavaRDD<String> male = file.filter(new Function<String, Boolean>() {
private static final long serialVersionUID = 1L; @Override
public Boolean call(String s) throws Exception {
logger.info(s);
return s.contains("M");
}
});
logger.info("**************************************");
logger.info(male.count()+""); // 49991
logger.info("**************************************");
sc.close(); // 其他的api请自行查阅,很简单,不想看,可以自己瞎点
}
}
运行
1. 将生成的测试数据data.txt上传至hdfs
2. 将打包的jar上传到master机器
3. 运行 bin/spark-submit --master spark://master:7077 --class test.App test-1.0.0.jar
4. 进入spark的ui界面可以清楚的看到打印的消息
spark集群配置以及java操作spark小demo的更多相关文章
- spark集群配置细则总结
修改目录与目录组: sudo chown -R hadoop:hadoop spark-1.6.1-bin-hadoop2.6 sudo chown -R hadoop:hadoop jdk1.8.0 ...
- 大数据学习day18----第三阶段spark01--------0.前言(分布式运算框架的核心思想,MR与Spark的比较,spark可以怎么运行,spark提交到spark集群的方式)1. spark(standalone模式)的安装 2. Spark各个角色的功能 3.SparkShell的使用,spark编程入门(wordcount案例)
0.前言 0.1 分布式运算框架的核心思想(此处以MR运行在yarn上为例) 提交job时,resourcemanager(图中写成了master)会根据数据的量以及工作的复杂度,解析工作量,从而 ...
- storm集群配置以及java编写拓扑例子
storm集群配置 安装 修改配置文件 使用java编写拓扑 storm集群配置 storm配置相当简单 安装 tar -zxvf apache-storm-1.2.2.tar.gz rm apach ...
- redis集群配置及python操作
之前我们分析过喜马拉雅的爬取信息,使用分布式爬取,而且需要修改scrapy-redis的过滤算法为布隆过滤来减少redis内存占用,最后考虑这样还是不一定够,那么redis集群就是更好的一种选择方式了 ...
- HA分布式集群配置三 spark集群配置
(一)HA下配置spark 1,spark版本型号:spark-2.1.0-bin-hadoop2.7 2,解压,修改配置环境变量 tar -zxvf spark-2.1.0-bin-hadoop2. ...
- kafka集群配置和java编写生产者消费者操作例子
kafka 安装 修改配置文件 java操作kafka kafka kafka的操作相对来说简单很多 安装 下载kafka http://kafka.apache.org/downloads tar ...
- Redis 3.2 Linux 环境集群搭建与java操作
redis 采用 redis-3.2.4 版本. 安装过程 1. 下载并解压 cd /usr/local wget http://download.redis.io/releases/redis-3. ...
- Zookeeper的集群配置和Java测试程序
Zookeeper是Apache下的项目之一,倾向于对大型应用的协同维护管理工作.IBM则给出了IBM对ZooKeeper的认知: Zookeeper 分布式服务框架是 Apache Hadoop 的 ...
- Zookeeper的集群配置和Java测试程序 (一)
概述 Zookeeper是Apache下的项目之一,倾向于对大型应用的协同维护管理工作.IBM则给出了IBM对ZooKeeper的认知: Zookeeper 分布式服务框架是 Apache Hadoo ...
随机推荐
- request.setAttribute("username", username);//一定要保存,OGNL才能获取${username}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, ...
- 嵌入式中 ARM的几种工作模式 以及异常模式的优先级
一.Arm工作模式: Arm微处理器支持7种工作模式,分别为: 1. 用户模式(Usr) 用于正常执行程序 2. 快速中断模式(FIQ) 用于高速数据传输 3. 外部中断模 ...
- 5.linux目录结构介绍
目录: 1.linux系统的目录结构特点?为何会形成这样的目录结构? 2.基本目录内容详解! 3.重要目录详解! 1.linux系统的目录结构特点? A.Linux系统的目录结构是一棵倒挂的大树,”/ ...
- Windows Phone 8 Programming Considerations
OpenGL ES 2.0 Support Marmalade supports the Open GL ES 2.0 Graphics API on Windows Phone 8 using a ...
- socket编程再分析(-)——基础
linux 网络编程-基础篇 0.Socket简介 socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序.要学Inter ...
- 记录最近工作使用javascript对select[option]的操作
1: 数据库取值赋予select选项 $(function(){ $("input[name='state'][value='{$store.state}']").attr(&qu ...
- 不同apk的activity互相调用
目标:CHFSAsk.apk调用CHFSAdviser.apk中的AppStart和MainActivity两种activity. CHFSAsk.apk:去调用的apk, 包名为com.chfs.a ...
- PS基础教程[3]如何去除照片上的水印
网络上的照片大部分都有很多的水印,要嘛就是网站的地址,要嘛就是一些煽情的文字,我们看图片想要的可不是这些东西,那么我们怎样去掉图片上的水印呢?本次我们就来分享一下仿制图章工具的使用. 方法 1.打开P ...
- kali视频(16-20)学习
第五周 kali视频(16-20)学习 16.漏洞分析之数据库评估(一) 17.漏洞分析之数据库评估(二) 18.漏洞分析之WEB应用代理 19.漏洞分析之burpsuite 20.漏洞分析之fuzz ...
- 处理get中文乱码
package com.servlet; import java.io.IOException; import java.io.PrintWriter; ...