微软OneNote客户预览版学习工具下载(暂未上线):教学好帮手
582
2022-05-28
Hadoop几个主要产品的架构都是一主多从。HDFS,一个NameNode,多个DataNode;MapReduce 1,一个JobTracker,多个TaskTracker;Yarn,一个ResourceManager,多个NodeManager。Storm,一个Nimbus,多个Supervisor;Spark,一个Master,多个Slave。
大数据因为要对数据和计算任务进行统一管理,所以和互联网在线应用不同,需要一个全局管理者。而在线应用因为每个用户请求都是独立的,而且为了高性能和便于集群伸缩,会尽量避免有全局管理者。
所以我们从Hadoop中可以学到大数据领域的一个架构模式,也就是集中管理,分布存储与计算。
学习方法
学习新知识遵循5-20-2法则:
5分钟的时间了解这个新知识的特点、应用场景、要解决的问题
如果5分钟不能搞懂它要解决的问题,我就会放弃
20分钟理解它的主要设计原理、核心思想和思路
20分钟没有理解它的设计思路,我也会放弃
2个小时看关键的设计细节,尝试使用或者做一个demo
2个小时还上不了手,我也会放一放
你相信我,一种真正有价值的好技术,你这次放弃了,它过一阵子还会换一种方式继续出现在你面前。这时,再尝试用5-20-2法则学习,也许就理解了。
实时计算的结果,一般都存储在什么库上?便于实时展示
实时计算的结果一般通过两种方式输出:
写入到数据库里,和离线计算的结果组成全量数据供业务使用
通过Kafka之类的实时队列给业务,比如你提到的监控展示
HDFS水平伸缩的文件读写速度比起垂直伸缩的速度理论上会慢很多,如何保证速度?
并不会慢,影响文件读写速度的是磁盘的速度。同样的数据量、同样类型的磁盘,HDFS能将数据分布在更多的服务器和磁盘,肯定比单机的几块磁盘速度更快。
HDFS常用的使用方式是结合MapReduce或Spark大数据计算框架进行计算,这些计算框架会在集群中启动很多的分布式计算进程同时对HDFS上的数据进行读写操作,数据读写的速度非常快,甚至能支撑起Impala这样的准实时计算引擎。
互联网应用中,用户从手机或者PC上发起一个请求,请问这个请求数据经历了怎样的旅程?完成了哪些计算处理后响应给用户?
一个请求从Web或者移动App上发起,请求的URL是用域名标识的,如taobao.com,而HTTP网络通信需要得到IP地址才能建立连接,所以先要进行域名解析,访问域名解析服务器DNS,得到域名的IP地址。
得到的这个IP地址其实也不是淘宝的服务器的IP地址,而是CDN服务器的IP地址,CDN服务器提供距离用户最近的静态资源缓存服务,如图片、JS、CSS。若CDN:
有请求需要的资源就直接返回
若无,再把请求转发给真正的淘宝数据中心服务器。
请求到达数据中心后,首先处理请求的是负载均衡服务器,它会把这个请求分发给下面的某台具体服务器处理。这台服具体的服务器通常是反向代理服务器,也缓存着大量静态资源,淘宝也会把一些通常是动态资源的数据,比如我们购物时经常访问的商品详情页,把整个页面缓存在这里:
若请求的数据在反向代理服务器,就返回
若无,请求将发给下一级的负载均衡服务器
这一级的负载均衡服务器负责应用服务器的负载均衡,将请求分发给某Java Web容器处理。在Java Web容器之前,还前置了一台Nginx服务器,做一些前置处理。
应用服务器根据请求,调用后面的微服务进行逻辑处理。若为写请求,如下单,应用服务器和微服务之间通过MQ进行异步操作,避免对DB造成太大压力。
微服务若在处理过程中需读取数据,会去缓存服务器查找,若没找到,就去查DB或NoSQL,甚至搜索引擎,得到数据后,计算,将结果返给应用服务器。
应用服务器将结果包装成前端需要格式后返回,经过前面的访问通道,最后到达用户发起请求的地方,完成一次互联网请求的旅程。
架构图表示的流程:
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。