spark敲门砖之WordCount
首先要确定好scala和spark的版本,可以去看一下maven中的对应关系(我原本用的是scala2.13版本的,由于spark没有与之对应的版本,降回到2.12了)
maven依赖
1 | <!-- 添加scala的依赖 --> |
首先要确定好scala和spark的版本,可以去看一下maven中的对应关系(我原本用的是scala2.13版本的,由于spark没有与之对应的版本,降回到2.12了)
maven依赖
1 | <!-- 添加scala的依赖 --> |
spark就相当于是Hadoop的升级版本,对于MapReduce进行了再一次的优化
Hadoop
Spark
根本区别在于:Spark多个作业之间数据通信是基于内存,而Hadoop是基于磁盘,由于Spark是基于内存的,有时候会由于内存资源不足导致Job执行失败,所以Spark并不能完全的替代MapReduce
Eureka是springCloud在一开始的时候推荐使用的注册中心,是Netflix开源的服务发现组件
Eureka包含两个组件:Eureka Server和Eureka Client
Eureka Server提供服务注册服务,各个节点启动后,会在EurekaServer中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到
EurekaClient是一个Java客户端,用于简化Eureka Server的交互,客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒)。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,EurekaServer将会从服务注册表中把这个服务节点移除(默认90秒)。Eureka Client会缓存服务注册表中的信息,这种方式可以使得微服务不需要每次请求都查询Eureka Server,从而降低了Eureka Server的压力,如果Eureka Server所有节点都宕掉,服务消费者依然可以使用缓存中的信息找到服务提供者完成调用
eureka的高可用性,不需要等注册信息replicate到其他节点,也不保证注册信息是否replicate成功,当数据出现不一致时,虽然A,B上的注册信息不完全相同,但每个Eureka节点依然能够正常对外提供服务,这会出现查询服务信息如果请求A查不到,但请求B就能查到
多个Eureka Server实例之间,互相之间通过复制的方式,来实现服务注册表中数据的同步
服务提供者是作为EurekaClient存在的,其主要工作是
服务调用者也是作为客户端存在的,其主要职责就是发现与调用服务
1 | <!--eureka-server服务端 --> |
如果是F版及以上的话,需要使用该依赖
1 | <!--新版本的eureka-server服务端 --> |
Spring既然可以创建并管理Bean,那Spring也要知道它需要创建的bean是什么,所以就需要程序员来告诉它需要创建的bean有哪些,所以就需要使用xml配置文件或者注解的方式来告诉Spring,Spring通过BeanDefinationReader将配置元信息加载到内存生成相应的BeanDefination之后,就将其注册到BeanDefinationRegistry中,BeanDefinationRegistry就是一个存放BeanDefination的大篮子,也是一种键值对的形式,通过特定的Bean定义的id,映射到相应的BeanDefination。
然后使用BeanFactoryPostProcessor来完成对bean的增强,BeanFactoryPostProcessor是一个接口,有很多的实现类
如PropertySourcesPlaceholderConfigurer来完成配置中的${…}的替换