吐槽MapReduce
开发起来爽不爽?
运行速度如何?
框架多样性?
Spark特点
spark.apache.org
读懂英文介绍
speed
ease of use
generality
runs everywhere
Spark与Hadoop深入对比
这个对比好好看一下
Spark开发语言及运行模式
学spark就直接从头学习scala
运行模式,建议local模式
Scala,Maven安装
安装scala,scala-2.11.8.tgz
解压到app下面和hadoop一个目录下
将scala配置到环境变量中去
启动scalascala
安装maven,apache-maven-3.3.9-bin.tar.gz
解压到app下
配置到环境变量中去
测试mvn -version
Spark环境搭建及wordcount案例实现
环境部署先去官网下载spark源码包,选择2.1.0版本,source code,具体如何编译看文章http://spark.apache.org/docs/2.1.0/building-spark.html
解压编译好的包到app目录下
在spark的bin目录下去启动
启动一个spark-shell --help
本地启动spark-shell --master local[2],2表示以两个线程的方式,参考http://spark.apache.org/docs/2.1.0/submitting-applications.html#master-urls
如何实现wordcount
进入scalascala
var file = sc.textFile("file:///home/hadoop/data/hello.txt")定义一个文件
输出一下内容file.collect
查看有多少行数据file.count
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))
// 将key相同的两两相加
val c = b.reduceByKey(_ + _)
// c的内容: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
通过浏览器监控地址在启动spark的时候有显示http://ip:4040
spark和mapreduce的易用性?
Flink概述
也是分布式计算框架,流式的处理框架
官网flink.apache.org
使用Flink完成wordcount统计
Flink环境搭建
官网下载http://flink.apache.org/,解压到app目录下
启动本地在flink的bin目录下./start-local.sh
浏览器ui界面http://ip:8081
项目源码https://github.com/apache/flink
如何使用https://ci.apache.org/projects/flink/flink-docs-release-1.4/quickstart/setup_quickstart.html,在github上去看wordcount源码
./bin/flink run ./examples/batch/WordCount.jar \
--input file:///home/hadoop/data/hello.txt --output file:///home/hadoop/tmp/flink_wc_output
Beam概述
google新老三驾马车
老的三驾马车:GFS,MapReduce,BigTable
新的三驾马车:Dremel(交互式分析系统),Pregel(图计算),Caffeine(增量索引)
beam
官网beam.apache.org
将批处理和流处理的作业运行在不同的引擎(Flink、Spark等)之上
将wordcount的Beam程序以多种不同的runner(FlinkRunner,SparkRunner等)运行
如何启动呢?https://beam.apache.org/get-started/quickstart-java/
运行测试
Beam运行:
#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
flink方式运行
Flink运行
./bin/flink run ./examples/batch/WordCount.jar \
--input file:///home/hadoop/data/hello.txt --output file:///home/hadoop/tmp/flink_wc_output