文章目录
- 概览
- Spark
- mr问题
- Spark特征
- Spark生态系统对比Hadoop生态系统
- 开发语言及运行环境
- Scala&Maven安装
- 配置Spark
- 总结
- Flink分布式计算框架(流处理)
- 概述
- 配置环境
- Flink运行
- 检验
- Beam
- quickstart-java
概览
Spark、Flink、Beam Beam编写完适用于Spark、Flink使用
Spark
mr问题
mr->spark?
开发不爽 mr两个过程 速度不快 m存硬盘r存hdfs 框架多样性 批处理 流式处理
Spark特征
http://spark.apache.org/
速度快 内存和磁盘 都比mr快 易用 支持多语言 命令行直接运行 通用性 同一个应用程序同时引用库
运行 可运行在hdfs之上计算
Spark生态系统对比Hadoop生态系统
Tachyon 正式更名为 Alluxio,新的版本新增支持任意存储系统如阿里云对象存储 OSS、Amazon S3……
MPI是一个跨语言的通讯协议,,用于编写并行计算机。MPI的目标是高性能,大规模性,和可移植性。
生态对比hadoop、spark
对比hadoop、spark
对比mr和spark
开发语言及运行环境
开发Spark
运行模式 代码是一样的提交参数不同 导致运行模式不同
Scala&Maven安装
解压文件
代码语言:javascript复制tar -zxf apache-maven-3.6.1-bin.tar.gz -C ./
环境变量配置
代码语言:javascript复制export SCALA_HOME=/root/software/scala-2.10.6
export PATH=$SCALA_HOME/bin:$PATH
export MAVEN_HOME=/root/software/apache-maven-3.6.1
export PATH=$MAVEN_HOME/bin:$PATH
//刷新配置
source /etc/profile
验证
代码语言:javascript复制scala
mvn -version
配置Spark
手动编译适合cdh的压缩包(注意1.7的jdk可能会过时了) spark-2.4.3-bin-2.6.0-cdh5.15.1.tgz
进入bin目录启动模式(本地测试local好) /root/software/spark-2.4.3-bin-2.6.0-cdh5.15.1/bin
master URL []两个线程
代码语言:javascript复制//启动spark两个线程
./spark-shell --master local[2]
快速指南 简单helloworld
注意本地读取
代码语言:javascript复制[root@hadoop01 data]# cat hello.txt
hello world
hello hadoop
hello hdfs
scala
scala> val textFile = spark.read.textFile("/root/data/hello.txt")
scala> textFile.collect
res1: Array[String] = Array(hello world, hello hadoop, hello hdfs, "")
scala> textFile.count
res2: Long = 4
检验 http://hadoop01:4040/jobs/
总结
代码语言:javascript复制spark启动:spark-shell --master local[2]
spark实现wc:
val file = sc.textFile("file:///home/hadoop/data/hello.txt")
val a = file.flatMap(line => line.split(" "))
val b = a.map(word => (word,1))
Array((hadoop,1), (welcome,1), (hadoop,1), (hdfs,1), (mapreduce,1), (hadoop,1), (hdfs,1))
val c = b.reduceByKey(_ _)
Array((mapreduce,1), (welcome,1), (hadoop,3), (hdfs,2))
sc.textFile("file:///home/hadoop/data/hello.txt").flatMap(line => line.split(" ")).map(word => (word,1)).reduceByKey(_ _).collect
Flink分布式计算框架(流处理)
概述
配合使用的框架,流入流出
注意hadoop版本和scala版本,新版flink并未细分下载选项
配置环境
flink解压
代码语言:javascript复制tar -zxf flink-1.12.1-bin-scala_2.11.tgz -C ./
wordcount
Flink运行
代码语言:javascript复制./bin/flink run ./examples/batch/WordCount.jar
--input file:///root/data/hello.txt --output file:///root/data/tmp/flink_wc_output
检验
代码语言:javascript复制[root@hadoop01 tmp]# cat flink_wc_output
hadoop 1
hdfs 1
hello 3
world 1
Beam
javapython编写应用于批处理、流处理
https://beam.apache.org/
quickstart-java
jdk1.7之后 和 maven 前置环节
代码语言:javascript复制tree
Beam运行:
mvn archetype:generate
-DarchetypeGroupId=org.apache.beam
-DarchetypeArtifactId=beam-sdks-java-maven-archetypes-examples
-DarchetypeVersion=2.27.0
-DgroupId=org.example
-DartifactId=word-count-beam
-Dversion="0.1"
-Dpackage=org.apache.beam.examples
-DinteractiveMode=false
#direct方式运行
mvn compile exec:java -Dexec.mainClass=org.apache.beam.examples.WordCount
-Dexec.args="--inputFile=/home/hadoop/data/hello.txt --output=counts"
-Pdirect-runner
#spark方式运行
mvn compile exec:java -Dexec.mainClass=org.apache.beam.examples.WordCount
-Dexec.args="--runner=SparkRunner --inputFile=/home/hadoop/data/hello.txt --output=counts" -Pspark-runner
#flink方式运行