【快速入门大数据】前沿技术拓展Spark,Flink,Beam

2021-12-06 14:03:13 浏览数 (1)

文章目录

  • 概览
  • 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方式运行

0 人点赞