Spack学习2


https://blog.csdn.net/qq_32023541/article/details/79127882
让我们对kafka有个一初步的了解。其实吧,我们知道,数据可以从某个角度分成两类,第一类是批量数据,也就是已经放好的数据,打个比方,就像池塘的水,不会流动,你想怎么计算就怎么计算,你可以统计一下水量,也可以将它们做别的用途,但水就那么多放在那里,你可以把它放在任何一个水库慢慢用。另一类就是流式数据,就是会实时变动的数据,也打个比方,就像河流的水,它不是静止不动的,它是一直在流动的,每时每刻水都在发生改变,也就是你无法像之前一样,把它放在任何水库慢慢用,你只能取出一部分用,当你用完,新的水又流进来了。
kafka就是其中的一条河流,当然不只kafka而已,就像世界上存在很多河流,kafka只是其中之一。kafka是根据topic 来存储数据的,每个topic里面根据不同的偏移量来定位数据。比如下面的代码就是scala语言编写的往topic中发送数据,我们称之为制造者


一。
spark 是一个快速且通用的集群计算平台

基于内存的运算

通用性;降低维护成本
Spack的设计容纳了其它分布式系统拥有的功能
批处理,迭代式计算,交互查询和流处理等

spark是高度开放的;Python Java scala haddoop
二。
spark core:

    包含spark的基本功能,任务调度,内存管理,容错机制

    内部定义了RDDs,弹性分布式数据集

spark sql:

    是spark处理结构化数据的库

spark streaming:

    实时数据流处理组件,类似Storm
    Spaek Streaming提供了API来提供操作实时流数据。
    应用场景,企业中用来从Kafka接收数据做实时统计。

milb:

    包含通用机器学习功能的包,分类,聚类,回归

    支持起集群上的横向扩展
    机器学习

graphx:

    处理图的库,并进行图的并行计算

cluster managers:  

    集群管理,Spark自带一个集群管理是单独调度器。
    常见的集群管理包括Hadoop YARN,Apache Mesos


紧密集成的优点

1.spark底层优化了,基于spark的底层组件也会得到相应的优化。

2.紧密继承节省了各个组价组合使用时的部署,测试等时间

3.向spark增加新的组件时,其他组件,可立刻享用新组建的功能。
三。
spark与Hadoop的比较

    Hadoop的应用场景:离线处理,对时效性要求不高(数据储存在硬盘中,执行时间一般在几分钟,几个小时)

    spark的应用场景:对时效性要求高,机器学习领域(spark中间的数据尽量储存在内存中大大加快了Spark任务的计算速度一般几秒钟或者几分钟,在迭代方面很适合)

Doug Cutting的观点
这是生态系统,每个组件都有其作用,各善其职即可
Spark不具有HDFS的存储能力,要借助HDFS等持久化数据
大数据将会孕育更多的新技术

四。Spark的安装
spark的运行环境:

    基于Scala ,运行在JVM,运行环境Java7+

spark下载:

    搭建spark不需要Hadoop,下载后解压

    虚拟机(Linux)联网状态下,通过  wget+下载链接

    Linux解压命令  tar -zxvf spark.....

spark目录

    bin目录-可执行文件

    core,streaming主要包含组件源代码

    examples 包含单机例子

spark的shell:

    梳理分布在集群上的数据

    可以将数据加载到节点的内存中,因此分布式处理可在秒级完成。

    快速迭代计算,实时查询、分析

    spark提供了Python shell和Scala shell

Scala shell

    /bin/spark-shell

 3-2开发第一个Spark程序
    创建一个Spark Context
    加载程序
    把每一行分割成单词
    转换成pairs 并且计数

打包:
  配置jar包
  build
开发完spark程序后,启动集群:
启动master  ./sbin/start-master.sh
启动worker  ./bin/spark-class
提交作业    ./bin/spark-submit


RDDs介绍
Driver program:(程序入口的地方)
包含程序的main()方法,RDDs的定义和操作
它管理很多节点,我们称为executors
SparkContext:
Driver programs 通过SparkContext 对象访问 Spark。
SparkContext对象代表和一个集群的连接。
在Shell中SparkContext 自动创建好了,就是sc
RDDs:
Resilient distributed datasets(单性分布式数据集,简写RDDs)。
这些RDDs,并行的分布在整个集群中。
RDDs是Spark分发数据和计算的基础抽象类。
一个RDD是一个不可改变的分布式集合对象。
Spark中,所有的计算都是通过RDDs的创建,转换,操作完成的。
一个RDD内部由许多partitions(分片)组成。
分片计算完之后在进行汇总
RDDs的创建方法:
把一个存在的集合传给SparkContext的parallelize)方法,测试用
val rdd =sc.parallelize(Array(1,2,2,4),4)
第1个参数:待并行化处理的集合,第2个参数:分区个数
RDDs的创建方法:
加载外部数据集。
val rddText=sc.textFile("helloSpark.txt")

Scala的匿名函数和类型推断:
lines.filter(line=>line.contains("world"))
定义一个匿名函数,接收一个参数line,
使用line这个String类型变量上的contains()方法
line的类型不需指定,能够推断出来


Map()
Filter()
Flatmap()
集合运算
reduce():
接收一个函数,作用在RDD两个类型相同的元素上,返回新元素。
可以实现,RDD中元素的累加,计数,和其它类型的聚集操作。
reduce():
接收一个函数,作用在RDD两个类型相同的元素上,返回新元素。
可以实现,RDD中元素的累加,计数,和其它类型的聚集操作。
val sum=rdd.reduce(x,y)=>x+y)
take(n):
返回RDD的n个元素(同时尝试访问最少的partitions)。
返回结果是无序的,测试使用。
Collect():
遍历整个RDD,向driver program返回RDD的内容
需要单机内存能够容纳下(因为数据要拷贝给driver,测试使用)
大数据的时候,使用saveAs TextFile() action等。
foreach():
计算RDD中的每个元素,但不返回到本地。
可以配合println()友好的打印出数据。

RDDs的特性

延迟计算(Lazy Evaluation):
Spark对RDDs的计算是,他们第一次使用action操作的时候
这种方式在处理大数据的时候特别有用,可以减少数据的传输
Spark 内部记录metadata 表名transformations操作已经被响应了
加载数据也是延迟计算,数据只有在必要的时候,才会被加载进去

RDD.persist0:
默认每次在RDDs上面进行action操作时,Spark都重新计算RDDs
如果想重复利用一个RDD,可以使用RDD.persist)
unpersist()方法从缓存中移除

combineByKey0:
(createCombiner,merge Value,mergeCombiners,partitioner)
最常用的基于key的聚合函数,返回的类型可以与输入类型不一样
许多基于key的聚合函数都用到了它,像groupByKey0
 combineByKey0:
遍历partition中的元素,元素的key,要么之前见过的,要么不是。
如果是新元素,使用我们提供的createCombiner)函数
如果是这个partition中已经存在的key,就会使用mergeValue()函数
合计每个partition的结果的时候,使用mergeCombiners0函数

kafka(流处理平台)
生活中无时无刻都在生产着数据,数据产生到存档会产生日志(存储模式)
有了数据,就有了数据的生产者,同时只有数据流动起来才能产生真正的价值
于是就有了数据流,既然有了数据流就有了数据的消费者。(消费模式)

特性:
1它是可以发布,订阅,记录数据的流 类似一个消息队列
2它是一个数据流存储的一个平台 并且有错误容忍的
3数据产生的时候就进行消息处理
应用场景
1.构建实时数据流管道  处理的数据有很强的数据依赖关系的时候(数据的传输上)
2.构建一个实时的数据处理应用程序 它能转换或者响应这个数据流 (数据的处理上)
Kafka基本概念
◆Producer:消息和数据的生产者,向Kafka的一个topic发布消
息的进程/代码/服务
·Consumer:消息和数据的消费者,订阅数据(Topic)并且处
理其发布的消息的进程/代码/服务
◆Consumer Group:逻辑概念,对于同一个topic,会广播给不
同的group,一个group中,只有一个consumer可以消费该
消息
Kafka基本概念
◆Broker:物理概念,Kafka集群中的每个Kafka节点
◆Topic:逻辑概念,Kafka消息的类别,对数据进行区分、隔离
·Partition:物理概念,Kafka下数据存储的基本单元。一个Topic
数据,会被分散存储到多个Partition,每一个Partition是有序

Kafka基本概念
Replication:同一个Partition可能会有多个Replica,多个
Replica之间数据是一样的
Replication Leader:一个Partition的多个Replica上,需要一
个Leader负责该Partition上与Producer和Consumer交互
ReplicaManager:负责管理当前broker所有分区和副本的信
息,处理KafkaController发起的一些请求,副本状态的切换
、添加/读取消息等

Kafka的基本结构

producer Api

Consumer Api

Steams Api

Connectors Api 

Kafka特点

1多分区

2多副本

3多订阅者

4基于ZooKeeper 

高性能

1高吞吐量

2低延迟

3高并发

4时间复杂度为O(1) 

持久化与持久性

1数据可持久化

2容错性

3支持在线水平扩展

4消息自动平衡 

Kafka的应用场景;

1消息队列

2行为跟踪

3元信息监控

4日志处理

5 流处理

6事件源

7持久性文件

原文地址:https://www.cnblogs.com/songlin123/p/10946845.html