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 ...
随机推荐
- iframe框架
在一个页面里做一个区域引入另一个页面的方法: <a href="http://www.baidu.com" target="in">百度</a ...
- [eShopOnContainers 学习系列] - 00 - 开发环境需求
开发环境需求 https://github.com/dotnet-architecture/eShopOnContainers/wiki/00.-Dev-machine-requirements 我的 ...
- Spring属性注入、构造方法注入、工厂注入以及注入参数(转)
Spring 是一个开源框架. Spring 为简化企业级应用开发而生(对比EJB2.0来说). 使用 Spring 可以使简单的 JavaBean 实现以前只有 EJB 才能实现的功能.Spring ...
- 【tensorflow:Google】二、Tensorflow环境搭建
2.1 Tensorflow 主要依赖包 2.1.1 Protocol Buffer 结构化数据序列化的过程,另外的工具:XML, JSON, 区别:二进制(不可读):先定义数据格式,还原的时候将需要 ...
- switch遇到0的问题
你是否经常有switch来代替if else?是否因为使用了switch,提高代码的执行效率而庆幸?好吧,你和我一样,但也许你没有遇到下面的问题. 这个小程序,会输出什么呢?会是'00'么? 结果 ...
- 微信小程序如何在使用wx.request使用cookie
我主要是做asp.net mvc后端开发的,经常使用Jquery的ajax与后台的Web API进行数据交互. 最近公司要做一个小程序,要实现小程序与Web前端的通信,当然小程序是可以实现socket ...
- Python判断unicode是汉字,数字,英文,或者其他字符
功能: 判断unicode是否是汉字,数字,英文,或者是否是(汉字,数字和英文字符之外的)其他字符. 全角.半角符号相互转换. 全角.半角? 全角--指一个字符占用两个标准字符位置. 汉字字符和规定了 ...
- HTTP 方法:GET与 POST
什么是 HTTP? 超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信. HTTP 的工作方式是客户机与服务器之间的请求-应答协议. web 浏览器可能是客户端,而计算机上的网络应用程 ...
- Linux下Apache配置局域网访问出现的问题
在网站安装好之后,本机可以访问,但是局域网内无法访问,我查看了 /etc/httpd/conf/httpd.conf 看到我的配置如下 <Directory ......> Allow A ...
- 【spring源码学习】spring的事件发布监听机制源码解析
[一]相关源代码类 (1)spring的事件发布监听机制的核心管理类:org.springframework.context.event.SimpleApplicationEventMulticast ...