zoukankan      html  css  js  c++  java
  • 《OD学spark》20160925 Spark Core

    一、引言

    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

    英文

     

  • 相关阅读:
    Java网络编程
    loj#6517. 「雅礼集训 2018 Day11」字符串(回滚莫队)
    bzoj4241: 历史研究(回滚莫队)
    洛谷P5050 【模板】多项式多点求值
    loj#6053. 简单的函数(Min_25筛)
    【BZOJ4144】[AMPPZ2014]Petrol(最短路+最小生成树+并查集)
    51nod 1781 Pinball(线段树)
    CF1110D Jongmah
    CF1106F Lunar New Year and a Recursive Sequence(矩阵快速幂+bsgs+exgcd)
    20. Valid Parentheses
  • 原文地址:https://www.cnblogs.com/yeahwell/p/5905976.html
Copyright © 2011-2022 走看看