首页
Search
1
Linux免密登陆-ubuntu
962 阅读
2
Redis集群部署方案
945 阅读
3
Hadoop各版本汇总
904 阅读
4
数据同步工具DataX、Sqoop和Canal
886 阅读
5
Spark学习笔记
844 阅读
大数据
Flink
后端
Java
笔记
运维
游客
Search
标签搜索
大数据
Flink
离线
实时
Redis
OpenJDK
Java
笔记
JVM
Elasticsearch
GC
Hadoop
Hudi
Flink CDC
K8S
数据湖
WD1016
累计撰写
56
篇文章
累计阅读
12.4万
次
首页
栏目
大数据
Flink
后端
Java
笔记
运维
页面
搜索到
29
篇与
WD1016
的结果
返回首页
2018-09-08
Hadoop各版本汇总
Hadoop1.0 NameNode节点有且只有一个,虽然可以通过SecondaryNameNode进行主节点数据备份,但是存在延时情况,假如主节点挂掉,这时部分数据还未同步到SecondaryNameNode节点上,就会存在资源数据的缺失。因为NameNode是存储着DataNode节点等元数据信息。对于MapReduce,也是一个简单的主从结构,是有一个主JobTracker和多个从的TaskTracker组成,而且在hadoop1.0中JobTracker任务繁重。{lamp/}Hadoop2.0 增加了HDFS Federation(联邦)水平扩展,支持多个namenode同时运行,每一个namenode分管一批目录,然后共享所有datanode的存储资源,从而解决1.0当中单个namenode节点内存受限问题。HDFS的Federation,多个namenode(多个namespace),互相独立,互相协调,各自分工管理自己的区域,并不能解决单点故障问题,配合HA,每个namenode部署一个备机。增加了HDFS HA机制,解决了1.0中的单点故障问题,只支持两个节点,3.0实现了一主多从。增加了YARN框架,针对1.0中主JobTracker压力太大的不足,把JobTracker资源分配和作业控制分开,利用Resource Manager在namenode上进行资源管理调度,利用ApplicationMaster进行任务管理和任务监控。由NodeManager替代TaskTracker进行具体任务的执行,因此MapReduce2.0只是一个计算框架。对比1.0中相关资源的调用全部给Yarn框架管理。{lamp/}Hadoop3.0 Javaj运行环境升级为1.8,对之前低版本的Java不在支持。HDFS3.0支持数据的擦除编码,调高存储空间的使用率。一些默认端口的改变。增加一些MapReduce的调优。支持 2 个以上的 NameNode,例如,通过配置三个 NameNode 和五个 JournalNode,集群能够容忍两个节点而不是一个节点的故障。https://hadoop.apache.org/docs/r3.0.0
2018年09月08日
904 阅读
5 点赞
2018-08-11
Spark学习笔记
Spark Streaming KafkaUtils.createStream:PUSH,Kafka高级API,数据漏处理或者多处理状况,主题分区与RDD的分区不相关,可开启WAL(数据复制两次)。KafkaUtils.createDirectStream:PULL,Kafka低级API,Kafka和RDD分区之间有一对一的映射关系,不会更新Zookeeper中的偏移量。{lamp/}内存管理 spark on yarn (yarn-cluster)Resource Manager接收到申请后在集群中选择一个Node Manager分配Container,并在Container中启动ApplicationMaster进程,在ApplicationMaster中初始化SparkContext,生成一系列task,ApplicationMaster向Resource Manager申请资源后通知Node Manager在获得的Container中启动Excutor进程,SparkContext分配task给Excutor,Excutor发送运行状态给Driver。一个Container对应一个JVM进程,也就是一个executor,所以JVM的Heap Size取决于spark.executor.memory。堆内存90%以上作为安全空间,如果内存大,可以调高95%。缓存空间是60%(Heep 90%60%)(safetyFraction 和 memoryFraction) ,会负责存储 Persist、Unroll 以及 Broadcast 的数据。Unroll序列化空间是20%(Heep 90%60%*20%)。shuffle空间的安全比例是80%,spark.shuffle.memeoryFraction 0.2(Heep 80% 20%)。Spark1.6之后 联合内存 加入Heap 4G预留内存(Reserved Memory):系统预留内存,会用来存储Spark内部对象。默认是300M,Java Heap大小至少为*1.5=450M。用户内存(User Memory):主要用于存储 RDD 转换操作所需要的数据,例如 RDD 依赖等信息。(Heap-300M)*25%=949M,每个 Executor 分配 1G 的数据就会OOM。Spark Memory, (Heap-300M)*75%,各50%,动态占用机制。Execution 内存:主要用于存放 Shuffle、Join、Sort、Aggregation 等计算过程中的临时数据。Storage 内存:主要用于存储 spark 的 cache 数据,例如RDD的缓存、unroll数据。Storage占用对方内存可能被淘汰,如果没有再磁盘存储会丢失(storage_level ),Execution占用对方内存只能等释放。先借用,再溢写到磁盘,内存优先。启用静态内存管理的方式是:spark.memory.useLegacyMode true{lamp/}RDD有多少分区就有多少task,因为一个task只能处理一个partition上的数据。Spark算子分为transform、action,只有action算子才触发计算(延迟计算)如:countbykey、reduce、count、take(n)、foreach、collect。一个action算子提交一个job、一个job包含一个或者多个stage、stage是根据RDD宽依赖(一个RDD分到两个不同的子RDD)、窄依赖(一个子RDD可以依赖多个父RDD)划分的。Excuotor(包含一个或者多个task,每个task一个虚拟core),Excuotor、task数量可以在submit中设置。总task数量一般设置成总core数的2-3倍,因为有的task可能先执行完。map一条记录变一条记录,function函数返回Object;faltmap一条记录变多条记录,function函数返回Iterable<Object>迭代器。join操作时,可以将reduce join转换成map join,并广播大变量。{lamp/}SHUFFLE 有hashshuffle、sortshuffle、钨丝shuffle,后者会进行排序,一个task一个文件,钨丝shuffle效果跟sort差不多, 使用了自己实现的一套内存管理机制,性能上有很大的提升。hashshuffle,map端写文件时每个task都会创建下一个stage总task数量的文件,可以设置合并,这样,每个excutor中的task就会公用一批文件,先往内存缓存写,再溢出到磁盘,调整大一些可以减少io次数,reduce端拉取文件时有buffer缓冲区,每次都只能拉取与buffer缓冲相同大小的数据。{lamp/}调优 Spark优化还包括,设置kyro序列化方式 ,性能更高、调整RDD持久化内存比例、调整shuffle时reduce端拉取数据重试次数,等待时长(因为在JVM full gc时是stop the world,多尝试几次)、数据本地化等待时长。
2018年08月11日
844 阅读
32 点赞
2018-07-07
数据同步工具DataX、Sqoop和Canal
DataX无法分布式部署,需要依赖调度系统实现多客户端,可以在传输过程中进行过滤,并且可以统计传输数据的信息,因此在业务场景复杂(表结构变更)更适用,同时对于不同的数据源支持更好,同时不支持自动创建表和分区。支持流量控制,支持运行信息收集,及时跟踪数据同步情况。
2018年07月07日
886 阅读
80 点赞
2018-06-16
Kafka、RocketMQ消息队列总结
Kafka 同一个partition内的消息只能被同一个组中的一个consumer消费,当消费者数量多于partition的数量时,多余的消费者空闲。每个partition为一个目录,partiton命名规则为topic名称+有序序号,每个partion(目录)相当于一个巨型文件被平均分配到多个大小相等segment(段)数据文件中,默认保留7天的数据。Kafka支持以Partition为单位对Message进行冗余备份,每个Replication集合中的Partition都会选出一个唯一的Leader,所有的读写请求都由Leader处理,其他Replicas从Leader处把数据更新同步到本地。Offset:消息在Partition中的编号,编号顺序不跨Partition。消费失败不支持重试,组与组之间的消息是否被消费是相互隔离互不影响的。kafka可以横向扩展,堆积能力强,当你需要进行大量数据的持久化。kafka的ack机制:在kafka发送数据的时候,每次发送消息都会有一个确认反馈机制,确保消息正常的能够被收到。重复消费(已经消费了数据,但是offset没提交),每次消费时更新每个topic+partition位置的offset在内存中,多台服务器集群,offset要做去重处理。消息丢失,producer同步模式(ack)、异步模式(buffer满了不清理),consumer自己手动维护偏移量。{lamp/}RocketMQ Topic分片再切分为若干等分,其中的一份就是一个Queue。一个broker对应一组消息文件commitLog,所有topic的消息都存在commitLog中,consumerqueue保存的是消息在commitLog中的地址 。broker主从(单Master、多Master、Master-Slave(异步复制)、Master-Slave(同步双写))。consumer第一次默认从master节点拉取消息,未消费的数据量占物理内存的比例,当超过40%时,会返回建议的拉取节点id。RocketMQ不保证消息不重复。消息丢失(在各个层都可能发生),producer同步(send不报错)异步(重写回调方法),生产者返回消息状态,开启重试消费。顺序消息,必须Producer单线程顺序发送,且发送到同一个队列,一个queue对应一个consumer,Broker重启,由于队列总数发生变化,哈希取模后定位的队列会变化,产生短暂的消息顺序不一致。RocketMQ可以严格的保证消息有序。但这个顺序,不是全局顺序,只是分区(queue)顺序。要全局顺序只能一个分区,kafka是放同一个topic。一个Queue最多只能分配给一个Consumer。Queue是Topic在一个Broker上的分片等分为指定份数后的其中一份,是负载均衡过程中资源分配的基本单元。{lamp/}消费并行度 Kafka消费并行度和分区数一致;RocketMQ消费并行度分两种情况,顺序消费方式并行度同Kafka完全一致,乱序方式并行度取决于Consumer的线程数,如Topic配置10个队列,10台机器消费,每台机器100个线程,那么并行度为1000。
2018年06月16日
1,028 阅读
20 点赞
2018-03-17
金融资产管理项目-银企直连
银企直连主要是与银行系统、其它子系统交互和为其它子系统提供接口的系统。主要功能 银行机构管理:维护全国各个银行网点的基本信息,可从Excel导入由财务公司提供的模板,支持页面变更,同时对外提供接口,由其它子系统增量更新。财银关系管理:维护财务公司和成员单位银行账户上下级的关系,只有维护过的账户才能通过银企直连正常连接银行做交易。归集策略设置:按设定的策略将成员单位的资金归集到财务公司基础策略:绑定相关类型的定时任务、金额、归集类型(指定金额、按比例、保留余额),每个策略都可以绑定多个成员单位,绑定后即为归集策略。临时策略:和归集策略为多对一的关系,有生效日期、失效日期,如果生效日期是当天,冻结相应的归集策略。生效归集策略时临时策略会失效,删除和失效临时策略时归集策略会生效。除此之外,还包含下拨策略设置、手动归集、支付状态修改、支付失败处理、归集业务入账、归集资金抹账,手工解冻、查余额、查状态、刷明细、查明细、查账户信息等功能。该系统提供和各大银行前置机交互的能力,如中国银行、工商银行、交通银行、建设银行、农业银行,交互接口文档分别由各银行研发中心提供。后台常驻线程 交易状态刷新轮询任务:归集状态刷新、支付状态刷新,循环刷新各个银行。判断银行客户端是否存在,按银行将库中状态为交易待查的交易向银行查询,因为各银行系统对外部系统请求时间间隔都有限制,所以需要注意刷新时间间隔,根据银行编号、重发类型计算重发时间间隔,若在间隔范围内,则发送银行。每个银行每种交易都需要配置相应的报文模板,以bankCode+transCode命名,采用模板引擎,例如FreeMarker;同样,每个银行系统返回的报文解析都不相同的。除此之外,还有交易重发轮询任务(将库中待发送银行的交易发送银行),银行接口状态刷新任务(检查各个银行的前置机是否联通),入账管理任务(轮询待入账的数据重发记账)。定时任务 银行当日明细刷新:循环去银行获取该账号的当日交易明细,解析后进行分类入库,代理收款的需要冻结金额,银行端归集的需要记账,指令归集和支付的需要对比是否有已抹账的数据分别入库或更新状态。还有账户当日余额刷新、银行历史明细刷新、归集策略切换定时任务,这些都需要在数据库添加基础数据。对外提供的接口 信息服务接口:外部系统从银企获取银企维护的基础数据或交易数据刷新服务接口:由管理端手动出发触发调银行交易服务交口:提供线上支付渠道,调银行接口来进行交易调用银行接口 信息查询:主要获取账户的基本信息、余额等流水刷新:获取指定账号的当日或历史交易流水支付交易:支付转账、归集等交易接口银企与银行系统的通讯都需要通过前置机加密,每个银行都需要部署前置机,交易日志详情都可在前置机下查看,农行的前置机从银行刷回数据不会返回给请求的系统,会以文件的形式保存到前置机指定目录下,由于应用环境和前置机不在同一台机器,可以通过部署ftp的形式共享文件。
2018年03月17日
492 阅读
4 点赞
1
...
3
4
5
6