導航:首頁 > 編程語言 > 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相關的資料

熱點內容
壓縮因子定義 瀏覽:966
cd命令進不了c盤怎麼辦 瀏覽:212
葯業公司招程序員嗎 瀏覽:972
毛選pdf 瀏覽:657
linuxexecl函數 瀏覽:725
程序員異地戀結果 瀏覽:372
剖切的命令 瀏覽:226
干什麼可以賺錢開我的世界伺服器 瀏覽:288
php備案號 瀏覽:989
php視頻水印 瀏覽:166
怎麼追程序員的女生 瀏覽:487
空調外壓縮機電容 瀏覽:79
怎麼將安卓變成win 瀏覽:459
手機文件管理在哪兒新建文件夾 瀏覽:724
加密ts視頻怎麼合並 瀏覽:775
php如何寫app介面 瀏覽:804
宇宙的琴弦pdf 瀏覽:396
js項目提成計算器程序員 瀏覽:944
pdf光子 瀏覽:834
自拍軟體文件夾名稱大全 瀏覽:328