一、引言
Spark内存计算框架
中国Spark技术峰会
十二场演讲
大数据改变世界,Spark改变大数据
大数据:
以Hadoop 2.x为主的生态系统框架(MapReduce并行计算框架)
存储数据、处理数据
分布式
Spark:
类似于MapReduce的另外一种分布式计算框架
核心:
数据结构:RDD,集合List[T]
MapReduce
最大的痛点:
IO性能瓶颈,也是所有分布式计算框架的痛点
(1)磁盘IO,
input(disk) -> map -> DISK(local)->reduce->output(DISK)
(2)网络IO,
shuffle
2015年Spark Submit
阿里巴巴和databricks
全球,每天使用Spark处理数据最大的公司
数据量: 1PB = 1024TB
腾讯:集群规模 8000台
Spark:内存计算框架
为什么要将中间结果存储到磁盘中呢?要进行写呢?我放入内存不行吗?
input(disk) -> flatMap -> memory->map->memory->groupByKey->memory->map->output(DISK)
分析:
(1)将中间处理的数据,存储在内存中
(2)提供很多的Operation,上百种
list.map(_ * 2).filter(_ % 5 == 1).map(_ + 100)
对于迭代计算、机器学习
Scala->Java->JVM
作业:
假期期间,MapReduce Shuffle过程,好好再理解
Spark处理分析数据:
(1)读取输入数据
Core: Rdd
SQL: DataFrame
Streaming:DStream
(2)process data
Core: rdd#xxx
SQL: df#xxx
Streaming:dstream#xxx
里面的方法基本上95%以上都是高阶函数,依据你自己的需求,定义操作
(3)ouputdata
resultRdd.saveAsTextFile("")
resultDF.write.jdbc.(url, tableName, props)
resultDStream.foreach(RedisHBaseRDBMS)
钨丝计划:三阶段
腾讯:技术发展路线
服务器,上百台,产生数据
运维人员
维护上百台集群的产生的日志文件
产品人员提供的需求,需要进行数据分析
(1)MySQL+Python
每台机器都有MySQL数据库
使用Python对数据进行清洗,加载到MySQL表中
各自统计分析->聚合->格子分析统计
(2)HADOOP+Hive
HDFS(分布式存储)
MapReduce
Hive
HiveQL
分区表/year/month/day/number
Hive + Python
如何集成?
(3)HADOOP+SPARK
二、Spark简介
设置Hive为本地模式,进行测试
HiveQL转换为MapReduce的本地模式
set hive.exec.mode.local.auto
set hive.exec.mode.local.auto = true
select session_id, count(1)
from db_hive.page_views
group by session_id
limit 5
使用SparkCore
val rdd = sc.textFile("/path")
val sessionIdRdd = rdd.map(line => line.split(" ")).mpa(x => (x(2), 1)).reduceByKey(_ + _)
sessionIdRdd.take(5)
使用SparkSQL
val df = sqlContext.sql("
select session_id, count(1)
from db_hive.page_views
group by session_id
limit 5
");
sqlContext.cacheTable("db_hive.page_views")
df.show()
DSL语句
val df = sqlContext.sql("select * from db_hive.page_views")
df.groupBy("session_id")
Core/Spark SQL/Streaming/Graphx/MLlib/R/StructStreaming(2.0)
JAR
处理的数据
HDFS/Hive/HBase/ES/JSON/JDBC
Spark程序运行模式
本地模式,
集群模式:YARN、Mesos(分布式资源管理框架)、Standalone集群、EC2
七牛云存储技术总监陈超
Tachyon李浩源
三、Spark学习网站
(1)官方文档
http://spark.apache.org/docs/1.6.2/
(2)源码
https://github.com/apache/spark
导入IDEA
(3)官方博客
http://databricks.com/blog
英文