滴滴沙龙

第一位:王静静 滴滴的任务调度系统 Capricornus
1、数据的依关系:在HDFS上进行标记,同时在关键节点上配置监控指标,以保证任务可回溯执行
2、再调度服务(抛弃传统的每个woker线程一个任务队列):
1、采用一个中控进程:
1、产生一个任务后,由该进程根据任务所需的资源,来匹配资源处理能力最适合的woker来处理
2、监控woker的运行情况,动态扩容

2、离线基于Hive

今日头条:徐鹏 《Hadoop 2.x HDFS源码剖析》 作者,与云计算也有一些关系
相关知识点:
1、namenode:
相当于mater节点,保存文件目录信息、文件与block块的对应关系
2、HDFS:
一个HDFS块有三份副本,一般保存在不同的机器节点上
3、HDFS Client:
客户端在写数据之前,会往namenode节点添加数据节点信息,然后只再写第一个节点的数据,然后第一个节点会自动地将数据同步到第
二个节点,第二节点也自动地同步到第三个节点。
每个节点写好后,会发送消息给该集群的namenode节点。
4、HA: namenode节点是单实例,HA用于namenode节点的备份 高可用性(High Avalability)
问题:namenode节点保存在内存中,数据量很大,可能有几百G,如何高效的将主节点的数据同步到备份节点
解决:主节点与备份节点共享一块内存,在往namenode节点写数据时,会直接写到该共享内存,这样主备节点就不用再另外进行同步了
java虚拟机的内存最大限制
5、federation:
问题,集群节点非常多时,会导致一个namenode节点数据过多,所以federation将namenode进行分区
每一个namenode只负责目录树的一部分

开发中面临的挑战:
1、namenode的内存压力:
1、namenode的一次mixed gc,长达30秒。一般一周一次
2、namenode重启长达1个小时。在对集群进行升级时,需要重启namenode。重启时,会将内存中的数据先保存到HDFS,再从
HDFS加载到内存中
3、堆大小
2、集群上的应用过多,应用类型多样:MR、Spark、Hbase、Hive
1、应用要求高:高吞吐、低延迟
2、应用进行IO活动时,会相互影响
3、RPC请求过多:
1、Hive服务重启
2、资源管理服务重启
3、大的应用重启
4、IO隔离

做的工作:
1、NNProxy–github.com/bytedance/nnproxy namenode代理
异步 client Namenode Protocol
2、数据压缩管道:
namenode 内存映像–>Hive–>MR–>HDFS
3、Fast decommission: 将namenode全部锁住,单锁
stale DataNode (每个DataNode会定时向nameNode发送心跳包,有一段时间内没有发送心跳包的数据节点,会被标记为过时的)
Replication Blocks(块的复制,备份冗余)
Remove DataNode(数据节点的删除)
4、快速重启:
将块映射保存在磁盘
不发送全部块到report

今日头条的namenode:
1、支持Hadoop 协议的 C++ RPC 服务端/客户端
2、文件域名系统的rocks db(db抖动)
3、节点数的分离锁,不在是整个namenode锁住

今日头条的EC:3份副本压缩

YARN:
挑战:
1、SLA:数据仓库
2、isolation隔离:任务的网卡很重
3、非常重要的任务:不能出问题的任务,分配最好的资源,容错,容灾
4、简便管理
5、审计:资源的权限、资源优先级分配
6、node更新的平衡:防止雪崩
7、本地资源请求:本地调度的问题
8、nodeBalance

做的工作:
1、调度:
1、公平调度 + DRF 策略 (Hadoop Fair scheduler)
2、标签化调度 (Hadoop Yarn标签调度)
3、多线程版本的公平调度
4、内存/cpu 片段
2、IO隔离:
1、支持内存的cgroup
2、cpu-set
3、集群管理:
1、中心节点管理
4、Dtop viewer:
1、程序的实际资源利用率查询
5、抢占 refactoring:Yarn抢占的重构
1、抢占是为了Yarn,而不是Hadoop
6、安全节点
7、Yarn Proxy
1、多个Yarn集群的代理

=============================================
第四位:艾毅 滴滴实时计算之道
1、canal server:Mysql同步工具,阿里开源的工具(基于数据库的日志解析,获取增量变更进行同步)
2、数据安全性:
1、多副本冗余
2、数据权限管理、数据资产等级认证
3、SQL审计、代码扫描
3、计算资源隔离:
1、Yarn (Node Label)物理隔离:独占计算队列
2、Doker
4、灵活性:
1、利用kafka解耦整个数据的处理流程(kafka与MQ的区别及应用场景)
2、计算引擎、存储引擎可插拔
3、注重可组合性–可构建一个数据处理流程的逻辑执行图
1、一切组件化:一个kafka 主题是一个组件,一个streaming Job是一个组件、一个Jupyter
2、计算隔离
5、易用性:
1、云端实时计算端到端解决方案:
1、整合云端数据资源、计算、存储资源
2、统一开发环境、部署流程
3、丰富的监控、调优工具
6、可用性:
1、系统可用
2、数据可用
7、开放性:
1、数据开放
2、计算能力开放:
1、Web IDE + spark streaming/Flink streaming

滴滴沙龙_第1张图片

滴滴沙龙_第2张图片

你可能感兴趣的:(技术沙龙)