导航:首页 > 编程语言 > sparkhdfsjava

sparkhdfsjava

发布时间:2022-09-19 12:15:57

① spark和hadoop的区别

hadoop:是分布式存储系统,同时提供分布式计算环境,存储称为hdfs,计算称为maprece 简称MR。
spark:是一个分布式计算框架,类似于hadoop的运算环境,但是比maprece提供了更多支持,与其他系统的对接,一些高级算法等,可以独立运行,也可以使用hdfs上的数据,调度任务也可以基于hadoop的yarn来管理。由于整个计算都可以在内存中完成,所以速度自然比传统的MR计算的快。除此之外spark运行时占用的系统资源也比MR小得多,相比较属于轻量级运行。最核心的也是它提供的分析学习算法,这个大部分分布式架构不具有的。
一般spark下的编程多数基于scala来完成,而非java,所以想学习spark一定要学习scala语言

② spark与hadoop相比,存在哪些缺陷

稳定性方面,由于代码质量问题,Spark长时间运行会经常出错,在架构方面,由于大量数据被缓存在RAM中,Java回收垃圾缓慢的情况严重,导致Spark性能不稳定,在复杂场景中SQL的性能甚至不如现有的Map/Rece。
不能处理大数据,单独机器处理数据过大,或者由于数据出现问题导致中间结果超过RAM的大小时,常常出现RAM空间不足或无法得出结果。然而,Map/Rece运算框架可以处理大数据,在这方面,Spark不如Map/Rece运算框架有效。
不能支持复杂的SQL统计;目前Spark支持的SQL语法完整程度还不能应用在复杂数据分析中。在可管理性方面,SparkYARN的结合不完善,这就为使用过程中埋下隐忧,容易出现各种难题。

③ java spark获取gz文件时怎样分区

spark 读取HDFS文件,首先会判断文件是否可分,可切分即可分成多个partition,不可切分则整个文件为一个partition ,gz等压缩文件属于不可切分文件,所以设置分区无效,如果想要可变分区,需要对文件加索引支持可切分

④ 怎样使用java开发spark程序

1、Spark 是基于内存的分布式计算框架,因为无需利用 HDFS 作为中间结果保存的介质,性能杠杠的。Spark 是由 Scala 实现的,所以最好学习一下 Scala(当然用 Python 和 Java 也是可以的)。(http://wdxtub.com/2016/04/11/spark-guide/)

为啥要用 Spark?
快!基于内存
易用!Scala, Java, Python 都支持,还有交互式的 Python 和 Scala 的 shell,可以快速进行原型开发
通用!批处理、交互查询、流处理、机器学习、图计算,样样精通
兼容!可以使用各种现有的技术作为底层,也可以自己独立运行
Spark 生态系统有哪些组件?
Spark SQL: 类似 Hive,支持在不同 RDD 上进行类似 SQL 的操作
Spark Streaming: 对于流数据进行处理
MLlib: 机器学习库
GraphX: 图并行框架

RDD 是什么?
在 Spark 框架中,最重要的是一类新的数据抽象,叫做 Resilient Distributed Dataset - RDD。RDD 是分布式存储在集群中的内存对象,按照值的范围或者哈希结果进行划分。与此同时 RDD 会记录关于数据进行的各种操作(每次操作都会生成新的 RDD),这样即使节点挂掉,也能够根据之前的操作日志重新得到损失的 RDD
RDD 支持2种操作:
转换(transformation):从现有的数据集创建一个新的数据集
动作(actions):在数据集上运行计算后,返回一个值给驱动程序
2、实战java开发spark程序
https://my.oschina.net/csmw00/blog/672869

3、spark集群环境搭建
http://nekomiao.me/2016/12/05/spark-install-distributed/

⑤ 刚学习spark,想上传文件给hdfs,是不是需要hadoop然后java编程这样是用eclip

spark会把hdfs当做一个数据源来处理, 所以数据存储都要做, 之后编程是从Hadoop改成spark就可以了. 是否用eclipse无所谓, 只要能编译运行就可以

⑥ 如何将java代码在spark运行

我们首先提出这样一个简单的需求:
现在要分析某网站的访问日志信息,统计来自不同IP的用户访问的次数,从而通过Geo信息来获得来访用户所在国家地区分布状况。这里我拿我网站的日志记录行示例,如下所示:

1

121.205.198.92
- - [21/Feb/2014:00:00:07 +0800] "GET /archives/417.html HTTP/1.1" 200 11465 "http://shiyanjun.cn/archives/417.html/" "Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20100101 Firefox/11.0"

2

121.205.198.92
- - [21/Feb/2014:00:00:11 +0800] "POST /wp-comments-post.php HTTP/1.1" 302 26 "http://shiyanjun.cn/archives/417.html/" "Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0"

3

121.205.198.92
- - [21/Feb/2014:00:00:12 +0800] "GET /archives/417.html/ HTTP/1.1" 301 26 "http://shiyanjun.cn/archives/417.html/" "Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20100101 Firefox/11.0"

4

121.205.198.92
- - [21/Feb/2014:00:00:12 +0800] "GET /archives/417.html HTTP/1.1" 200 11465 "http://shiyanjun.cn/archives/417.html" "Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20100101 Firefox/11.0"

5

121.205.241.229
- - [21/Feb/2014:00:00:13 +0800] "GET /archives/526.html HTTP/1.1" 200 12080 "http://shiyanjun.cn/archives/526.html/" "Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20100101 Firefox/11.0"

6

121.205.241.229
- - [21/Feb/2014:00:00:15 +0800] "POST /wp-comments-post.php HTTP/1.1" 302 26 "http://shiyanjun.cn/archives/526.html/" "Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0"

Java实现Spark应用程序(Application)

我们实现的统计分析程序,有如下几个功能点:

从HDFS读取日志数据文件
将每行的第一个字段(IP地址)抽取出来
统计每个IP地址出现的次数
根据每个IP地址出现的次数进行一个降序排序
根据IP地址,调用GeoIP库获取IP所属国家
打印输出结果,每行的格式:[国家代码] IP地址 频率

下面,看我们使用Java实现的统计分析应用程序代码,如下所示:

001

package org.shirdrn.spark.job;

002

003

import java.io.File;

004

import java.io.IOException;

005

import java.util.Arrays;

006

import java.util.Collections;

007

import java.util.Comparator;

008

import java.util.List;

009

import java.util.regex.Pattern;

010

011

import org.apache.commons.logging.Log;

012

import org.apache.commons.logging.LogFactory;

013

import org.apache.spark.api.java.JavaPairRDD;

014

import org.apache.spark.api.java.JavaRDD;

015

import org.apache.spark.api.java.JavaSparkContext;

016

import org.apache.spark.api.java.function.FlatMapFunction;

017

import org.apache.spark.api.java.function.Function2;

018

import org.apache.spark.api.java.function.PairFunction;

019

import org.shirdrn.spark.job.maxmind.Country;

020

import org.shirdrn.spark.job.maxmind.LookupService;

021

022

import scala.Serializable;

023

import scala.Tuple2;

024

025

public class IPAddressStats implements Serializable
{

026

027

private static final long serialVersionUID
= 8533489548835413763L;

028

private static final Log
LOG = LogFactory.getLog(IPAddressStats.class);

029

private static final Pattern
SPACE = Pattern.compile("
");

030

private transient LookupService
lookupService;

031

private transient final String
geoIPFile;

032

033

public IPAddressStats(String
geoIPFile) {

034

this.geoIPFile
= geoIPFile;

035

try {

036

//
lookupService: get country code from a IP address

037

File
file = new File(this.geoIPFile);

038

LOG.info("GeoIP
file: " +
file.getAbsolutePath());

039

lookupService
= new AdvancedLookupService(file,
LookupService.GEOIP_MEMORY_CACHE);

040

} catch (IOException
e) {

041

throw new RuntimeException(e);

042

}

043

}

044

045

@SuppressWarnings("serial")

046

public void stat(String[]
args) {

047

JavaSparkContext
ctx = new JavaSparkContext(args[0], "IPAddressStats",

048

System.getenv("SPARK_HOME"),
JavaSparkContext.jarOfClass(IPAddressStats.class));

049

JavaRDD<String>
lines = ctx.textFile(args[1], 1);

050

051

//
splits and extracts ip address filed

052

JavaRDD<String>
words = lines.flatMap(new FlatMapFunction<String,
String>() {

053

@Override

054

public Iterable<String>
call(String s) {

055

//
121.205.198.92 - - [21/Feb/2014:00:00:07 +0800] "GET /archives/417.html HTTP/1.1" 200 11465 "http://shiyanjun.cn/archives/417.html/" "Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20100101
Firefox/11.0"

056

//
ip address

057

return Arrays.asList(SPACE.split(s)[0]);

058

}

059

});

060

061

//
map

062

JavaPairRDD<String,
Integer> ones = words.map(new PairFunction<String,
String, Integer>() {

063

@Override

064

public Tuple2<String,
Integer> call(String s) {

065

return new Tuple2<String,
Integer>(s, 1);

066

}

067

});

068

069

//
rece

070

JavaPairRDD<String,
Integer> counts = ones.receByKey(new Function2<Integer,
Integer, Integer>() {

071

@Override

072

public Integer
call(Integer i1, Integer i2) {

073

return i1
+ i2;

074

}

075

});

076

077

List<Tuple2<String,
Integer>> output = counts.collect();

078

079

//
sort statistics result by value

080

Collections.sort(output, new Comparator<Tuple2<String,
Integer>>() {

081

@Override

082

public int compare(Tuple2<String,
Integer> t1, Tuple2<String, Integer> t2) {

083

if(t1._2
< t2._2) {

084

return 1;

085

} else if(t1._2
> t2._2) {

086

return -1;

087

}

088

return 0;

089

}

090

});

091

092

writeTo(args,
output);

093

094

}

095

096

private void writeTo(String[]
args, List<Tuple2<String, Integer>> output) {

097

for (Tuple2<?,
?> tuple : output) {

098

Country
country = lookupService.getCountry((String) tuple._1);

099

LOG.info("[" +
country.getCode() + "]
" +
tuple._1 + "\t" +
tuple._2);

100

}

101

}

102

103

public static void main(String[]
args) {

104

//
./bin/run-my-java-example org.shirdrn.spark.job.IPAddressStatsspark://m1:7077 hdfs://m1:9000/user/shirdrn/wwwlog20140222.log/home/shirdrn/cloud/programs/spark-0.9.0-incubating-bin-hadoop1/java-examples/GeoIP_DATABASE.dat

105

if (args.length
< 3)
{

106

System.err.println("Usage:
IPAddressStats <master> <inFile> <GeoIPFile>");

107

System.err.println("
Example: org.shirdrn.spark.job.IPAddressStatsspark://m1:7077 hdfs://m1:9000/user/shirdrn/wwwlog20140222.log/home/shirdrn/cloud/programs/spark-0.9.0-incubating-bin-hadoop1/java-examples/GeoIP_DATABASE.dat");

108

System.exit(1);

109

}

110

111

String
geoIPFile = args[2];

112

IPAddressStats
stats = new IPAddressStats(geoIPFile);

113

stats.stat(args);

114

115

System.exit(0);

116

117

}

118

119

}

⑦ 科普Spark,Spark是什么,如何使用Spark

科普Spark,Spark是什么,如何使用Spark


1.Spark基于什么算法的分布式计算(很简单)

2.Spark与MapRece不同在什么地方

3.Spark为什么比Hadoop灵活

4.Spark局限是什么

5.什么情况下适合使用Spark

Spark与Hadoop的对比

Spark的中间数据放到内存中,对于迭代运算效率更高。

Spark更适合于迭代运算比较多的ML和DM运算。因为在Spark里面,有RDD的抽象概念。

Spark比Hadoop更通用

Spark提供的数据集操作类型有很多种,不像Hadoop只提供了Map和Rece两种操作。比如map, filter, flatMap, sample, groupByKey, receByKey, union, join, cogroup, mapValues, sort,partionBy等多种操作类型,Spark把这些操作称为Transformations。同时还提供Count, collect, rece, lookup, save等多种actions操作。

这些多种多样的数据集操作类型,给给开发上层应用的用户提供了方便。各个处理节点之间的通信模型不再像Hadoop那样就是唯一的Data Shuffle一种模式。用户可以命名,物化,控制中间结果的存储、分区等。可以说编程模型比Hadoop更灵活。

不过由于RDD的特性,Spark不适用那种异步细粒度更新状态的应用,例如web服务的存储或者是增量的web爬虫和索引。就是对于那种增量修改的应用模型不适合。

容错性

在分布式数据集计算时通过checkpoint来实现容错,而checkpoint有两种方式,一个是checkpoint data,一个是logging the updates。用户可以控制采用哪种方式来实现容错。

可用性

Spark通过提供丰富的Scala, Java,Python API及交互式Shell来提高可用性。

Spark与Hadoop的结合

Spark可以直接对HDFS进行数据的读写,同样支持Spark on YARN。Spark可以与MapRece运行于同集群中,共享存储资源与计算,数据仓库Shark实现上借用Hive,几乎与Hive完全兼容。

Spark的适用场景

Spark是基于内存的迭代计算框架,适用于需要多次操作特定数据集的应用场合。需要反复操作的次数越多,所需读取的数据量越大,受益越大,数据量小但是计算密集度较大的场合,受益就相对较小(大数据库架构中这是是否考虑使用Spark的重要因素)

由于RDD的特性,Spark不适用那种异步细粒度更新状态的应用,例如web服务的存储或者是增量的web爬虫和索引。就是对于那种增量修改的应用模型不适合。总的来说Spark的适用面比较广泛且比较通用。

运行模式

本地模式

Standalone模式

Mesoes模式

yarn模式

Spark生态系统

Shark ( Hive on Spark): Shark基本上就是在Spark的框架基础上提供和Hive一样的H iveQL命令接口,为了最大程度的保持和Hive的兼容性,Shark使用了Hive的API来实现query Parsing和 Logic Plan generation,最后的PhysicalPlan execution阶段用Spark代替Hadoop MapRece。通过配置Shark参数,Shark可以自动在内存中缓存特定的RDD,实现数据重用,进而加快特定数据集的检索。同时,Shark通过UDF用户自定义函数实现特定的数据分析学习算法,使得SQL数据查询和运算分析能结合在一起,最大化RDD的重复使用。

Spark streaming: 构建在Spark上处理Stream数据的框架,基本的原理是将Stream数据分成小的时间片断(几秒),以类似batch批量处理的方式来处理这小部分数据。Spark Streaming构建在Spark上,一方面是因为Spark的低延迟执行引擎(100ms+)可以用于实时计算,另一方面相比基于Record的其它处理框架(如Storm),RDD数据集更容易做高效的容错处理。此外小批量处理的方式使得它可以同时兼容批量和实时数据处理的逻辑和算法。方便了一些需要历史数据和实时数据联合分析的特定应用场合。

Bagel: Pregel on Spark,可以用Spark进行图计算,这是个非常有用的小项目。Bagel自带了一个例子,实现了Google的PageRank算法。

End.

⑧ Java大数据需要学习哪些内容

首先明确,java大数据通常指的是采用Java语言来完成一些大数据领域的开发任务,整体的学习内容涉及到三大块,其一是Java语言基础,其二是大数据平台基础,其三是场景开发基础。
Java开发包括了Java基础,JavaWeb和JavaEE三大块。java可以说是大数据最基础的编程语言,一是因为大数据的本质无非就是海量数据的计算,查询与存储,后台开发很容易接触到大数据量存取的应用场景。java语言基础部分的学习内容相对比较明确,由于Java语言本身的技术体系已经比较成熟了,所以学习过程也会相对比较顺利。JavaWeb开发不仅涉及到后端开发知识,还涉及到前端开发知识,整体的知识量还是比较大的,而且在学习的过程中,需要完成大量的实验。
大数据开发包括Java基础,MySQL基础,Hadoop(HDFS,MapRece,Yarn,Hive,Hbase,Zookeeper,Flume,Sqoop等),Scala语言(类似于Java,Spark阶段使用),Spark(SparkSQL,SparkStreaming,SparkCore等)。
学习Java大数据一定离不开具体的场景,这里面的场景不仅指硬件场景(数据中心),还需要有行业场景支持,所以学习Java大数据通常都会选择一个行业作为切入点,比如金融行业、医疗行业、教育行业等等。初学者可以考虑在实习岗位上来完成这个阶段的学习任务
总体上来说,Java大数据的学习内容是比较多的,而且也具有一定的难度。

阅读全文

与sparkhdfsjava相关的资料

热点内容
php备案号 浏览:984
php视频水印 浏览:163
怎么追程序员的女生 浏览:483
空调外压缩机电容 浏览:77
怎么将安卓变成win 浏览:457
手机文件管理在哪儿新建文件夹 浏览:722
加密ts视频怎么合并 浏览:774
php如何写app接口 浏览:802
宇宙的琴弦pdf 浏览:395
js项目提成计算器程序员 浏览:944
pdf光子 浏览:834
自拍软件文件夹名称大全 浏览:328
程序员留学移民 浏览:52
梁中间部位箍筋加密区 浏览:119
频谱分析pdf 浏览:752
乐2怎么升级安卓70 浏览:174
java中获取日期 浏览:508
单片机74hc245 浏览:274
美国历史上的总统pdf 浏览:753
程序员脱单实验室靠不靠谱 浏览:460