BigData
文章平均质量分 71
ImproveJin
大龄失业程序员
展开
-
Flink源码之Checkpoint执行流程
以下对整个流程具体说明。原创 2023-08-22 16:59:45 · 833 阅读 · 0 评论 -
Flink源码之State创建流程
Flink内置状态管理是相比其他分布式流式处理系统最大的优势之一,不用借助外部存储组件,就可实现高效可靠的分布式状态管理,极大降低了学习和使用成本。原创 2023-08-15 15:24:40 · 1252 阅读 · 0 评论 -
Flink源码之StreamTask启动流程
submitTask 方法核心就是构造org.apache.flink.runtime.taskmanager.Task实例,该实例继承自Runnable接口,有个Thread成员变量,构造完成后就启动线程执行Task逻辑。每个ExecutionVertex分配Slot后,JobMaster就会向Slot所在的TaskExecutor提交RPC请求执行Task,接口为TaskExecutorGateway::submitTask。原创 2023-08-14 14:25:39 · 809 阅读 · 0 评论 -
Flink源码之JobMaster启动流程
在整个提交过程中,首先获取JobMasterService的Leader权限,然后对一个JobGraph生成一个JobMaster,JobMaster先将JobGraph转换为ExecutionGraph,转换核心逻辑在DefaultExecutionGraph::attachJobGraph方法中,最后为每个Execution申请Slot资源,对每个Execution向TM提交TaskDeploymentDescriptor调度执行。原创 2023-08-11 16:36:30 · 1215 阅读 · 0 评论 -
Flink源码之TaskManager启动流程
从启动命令flink-daemon.sh可以看出TaskManger入口类为org.apache.flink.runtime.taskexecutor.TaskManagerRunner这些服务在构造TaskExecutor时作为构造函数参数传入构造TaskExecutor前会先构造TaskManagerServices辅助TaskExecutor实现其核心功能TaskManager中管理Slot的实现类TaskSlotTableImpl,该实例记录了Slot的分配信息。原创 2023-08-10 11:49:35 · 998 阅读 · 0 评论 -
Flink源码之JobManager启动流程
JobManager的启动过程就是创建三大组件RestServer/RM/Dispacher实例初始化的过程,RestSever通过Netty启动HTTP服务,RM/Dispacher被AkkaRpcService包装成AkkaActor提供本地或远程RPC服务,RestServer仅仅是接受请求解析消息后由具体Handler处理,JobGrap提交执行会转发给Dispatcher处理。原创 2023-08-09 17:35:48 · 1012 阅读 · 0 评论 -
Flink源码之RPC
因此实现一个具体的Component只要同时继承RpcGateway和RpcEndPoint就能实现将RpcGateway的业务接口暴露出去提供远程服务,在JobManager/TaskManger启动过程中,都是先创建一个RpcService实例,然后new出各个业务组件实例,这样各个组件完成初始化后就能各司其职,协调配合完成具体业务功能。组件间通信基于Actor, 负责RPC通信功能则被抽象成一个RPCEndPoint。这些接口的具体实现就是组件提供的核心功能。原创 2023-08-08 16:00:28 · 773 阅读 · 0 评论 -
Spark中Join实现原理
spark中join实现方式翻译 2022-11-21 21:53:33 · 2395 阅读 · 1 评论 -
字节面试题求累计UV
字节面试题求累计UV原创 2022-11-19 18:07:52 · 459 阅读 · 1 评论 -
Redis笔记
Redids笔记原创 2022-11-19 16:54:27 · 549 阅读 · 0 评论 -
Roaring Bitmap原理
最近面试字节,被问roaring bitmap原理,虽然说之前看过,时间久了细节忘了,再次mark下,这边文章讲的很透彻。原创 2022-11-18 22:15:41 · 141 阅读 · 0 评论 -
ETL优化之道
天下武功,唯快不破。ETL Job优化的目标是执行快,耗费时间更短,总结起来有以下方式:增加硬件资源,比如增大内存、CPU等,但优化往往是在资源不足的情况下数据缓存,空间换时间服务常驻,减少初始化化时间减少输入数据量,常用以下技术数据压缩,缓存中能存放更多数据索引+BloomFilter,也是空间换时间,加快数据查找速度列裁剪,原理也是提高了缓存利用率谓词下推,减少扫描数据,一般要借助预分区或索引相关技术数据分区分桶避免重启读取相同数据,比如对同一张表多次查询UNIO原创 2021-12-18 16:43:39 · 642 阅读 · 0 评论 -
数据倾斜产生原因及应对之道
产生数据倾斜的根本原因是某个task处理数据过多,执行时间较长,导致整个Job执行时间长,因此解决数据倾斜的根本之道就是避免过多的数据进入同一个task,总结起来主要有以下方式:Group By产生数据倾斜直接增加task并行度,简单粗暴,但并不一定能正在解决问题。倾斜是由多个key组合输入一个task导致数据过多, 这种方式有效,但如果存在单个hot key数据量大则无效。预聚合,类似于Map Combine, 相当与把聚合运算提前分散到多个task, 减少最终聚合task的输入数据量hi原创 2021-12-17 16:09:30 · 1233 阅读 · 0 评论 -
理解LSM树:频繁写的数据库基石
log-structured merge-tree(LSM tree)是可支持大量写的一种数据结构,写操作被优化成顺序写,LSM树是许多数据库背后的核心数据结构,包括BigTable, Cassandra, Scylla, 和 RocksDB.SSTablesLSM树在磁盘上以有序表(Sorted String Table)的形式存在。下图所示,SSTable存储了以key排序的key-value键值对,其中name为key。一个SSTable是由多个排序的文件组成,每个文件是一个Segment, 这些翻译 2021-12-15 20:03:13 · 217 阅读 · 0 评论 -
最详细的HyperLogLog介绍
不仅有原理,还有空间复杂度分析转载 2020-08-06 16:43:45 · 1750 阅读 · 0 评论 -
Hive中找出分组第一的记录
使用group by进行分组查询只能获取分组列以及聚合函数列,如果想要获取表中非分组列则获取不到,此时可以使用row_number()对分组进行排序,同时也可以获取非分组列。表结构学生课程分数表,三列create table student_score( student_id int, --学生id subject string, -- 课程 score int -- 分数);...原创 2019-12-24 14:23:01 · 1006 阅读 · 0 评论 -
面向对象的Flink SQL
任何程序都可以抽象成输入、处理、输出三部分,flink中将输入抽象成source,输出抽象成sink,中间处理则对应SQL/API,SQL对用户友好,抽象层次更高,同时也导致缺乏灵活性,表达力更弱。使用Flink中DataStream转换相关的Operater Function比如map,filter等函数编写流式应用,是一种过程式思维,大部分时候使用SQL申明式语言也能实现业务需求。下面的D...原创 2019-12-20 18:45:13 · 229 阅读 · 0 评论 -
Kafka介绍
kafka物理结构一个kafka集群由多个broker组成每个topic由多个partition组成,partition均匀分布在broker中,partition中存储了具体的数据,在broker的{log.dirs}下每个物理文件夹对应一个topic的某个partition,partition数据文件又被分成多个segment,每个segment对应一个数据文件和一个索引文件,part...原创 2018-11-15 16:10:23 · 165 阅读 · 0 评论 -
高效使用hive
高效使用hive原创 2014-07-01 20:26:06 · 2667 阅读 · 0 评论 -
Hive权限介绍
一、开启权限 目前hive支持简单的权限管理,默认情况下是不开启,这样所有的用户都具有相同的权限,同时也是超级管理员,也就对hive中的所有表都有查看和改动的权利,这样是不符合一般数据仓库的安全原则的。Hive可以是基于元数据的权限管理,也可以基于文件存储级别的权限管理,此次以介绍MetaData权限管理为主。通过以下配置开启Hive身份认证功能进行权限检查: hive.se原创 2014-07-06 15:53:10 · 6388 阅读 · 0 评论 -
Hive权限之改进
不足即使开启hive权限认证的情况下,任何用户仍然是超级用户,可以通过grant给任何人赋予任何权限,这样权限认证基本没有意义,因此必须在开启权限认证的同时,对执行grant/revoke的实体进行限制,比如只有admin才能 grant privilege on database,只有table owner才能grant privilege on table。BIP中hive目前是没有开原创 2014-07-06 17:05:30 · 1913 阅读 · 0 评论 -
Kerberos协议的介绍
因为要研究单点登录(Single Sign-On SSO)的原理,Kerberos是必然会涉及的一项技术。在研究这个问题时,发现网上一致推荐麻省理工学院的一篇文章,这是用四幕话剧形式来解释Kerberos的一篇有趣轻松的文章。我尝试着把中英文对照都放在这里,我个人倾向于直接看英文。Designing an Authentication System:a Dialogue in Fo转载 2014-06-16 00:01:08 · 1731 阅读 · 0 评论 -
Hive权限之审计
由于在生产环境中大量使用hive,而hive的权限又较弱,如果可以记录所有hive操作,在增强安全性的同时,还能够统计hive表的使用频率;同时如果能够记录hql的开始和结束时间,则能够找出系统中花费时间较多的job,针对性的进行优化,因此跟踪hive的使用轨迹,增强安全的同时也能方便问题定位。如何记录用户操作了?Hive Hook为我们提供的方便的开放接口。我们对hive的使用主要有两种使用原创 2014-07-08 20:38:31 · 3535 阅读 · 0 评论 -
Hadoop Job 按组分资源池执行
hive在生产环境中由于用户数量和身份的不同,难免会对用户按组进行划分,根据不同组的优先级划分hadoop资源,hadoop fairscheduler支持按用户组划分资源池,每个group对应一个组pool,然后根据pool优先级划分mapreduce资源,在map-site.xml中添加以下配置即可实现按组划分: mapred.jobtracker.taskScheduler原创 2014-09-16 16:19:53 · 2232 阅读 · 0 评论 -
胜还是平? Pig vs Hive!!!
胜还是平? Pig vs Hive!!!这篇文章讨论了pig和hive的特性。开发者通常处于选择满足业务需求的技术体系。 在hadoop体系中,pig和hive很相似,并能给出几乎相同的结果,但是那种技术更适合特殊的业务场景了?这里列出了pig和hive的一些对比。PIG and Hive:流类型:Pig是过程式数据流语言。过程式语言通常按照一步一步的执行方式去编写翻译 2015-06-19 13:21:23 · 1213 阅读 · 0 评论 -
Tez安装
参考tez依赖于hadoop,需要针对具体版本hadoop进行编译,将根pom中hadoop.version变量更改为对应的版本,编译机器上需安装protobuf2.5,编译过程中tez.ui可能编译不过,可以在根pom中将tez-ui/tz-ui2注释掉mvn clean package -DskipTests=true -Dmaven.javadoc.skip=true编译完成后在tez/di原创 2016-07-13 15:25:20 · 5558 阅读 · 1 评论 -
Hive总结
Create TableCREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name -- (Note: TEMPORARY available in Hive 0.14.0 and later) [(col_name data_type [COMMENT col_comment], ... [constr原创 2018-02-01 17:59:16 · 505 阅读 · 0 评论 -
Hadoop-Yarn安装部署
Hadoop Yarn的安装部署于Hadoop类似,以下以CDH4.5为例说明安装步骤。三台机器,修改/etc/hosts及/etc/sysconfig/network中的HOSTNAME: 172.20.4.142 yarn-namenode 172.20.4.143 yarn-datanode1 172.20.4.147 yarn-datanode21、实现无密码nam...原创 2014-11-24 19:21:22 · 1812 阅读 · 0 评论 -
如何规划和配置YARN和MapReduce 2
来源:http://zh.hortonworks.com/blog/how-to-plan-and-configure-yarn-in-hdp-2-0/在HDP2.0 Beta中,Yarn作为MapReduce的资源管理器,并且可以被其他的编程模型所使用,这简化了MapReduce,让MapReduce做它最擅长的数据处理工作。使用Yarn,能够在Hadoop上运行多种类型的应用,这些应用共享资源...翻译 2015-03-28 23:38:57 · 1383 阅读 · 0 评论 -
HBase总结
基于HDFS,列存储的分布式数据库,可靠性高,吞吐量大,扩展性强,实时读写。DataMode一个表按行分区会成N个Region, 一个Region只会被一个RegionServer管理;在RS内部,一个Region又会按Column Family划分成多个Store, 一个Store包含一个内存MemStore和多个StroeFile,MemStroe达到阈值后会Flush到HDFS变...原创 2018-02-28 16:07:49 · 577 阅读 · 0 评论 -
Hadoop总结
HDFSNameNodeNode元数据管理, Node-Block映射关系BlocksMap, 由NN汇报 NameSpace管理, File-Block映射关系FSImage, 持久化到HDFS NN管理,网络拓扑结构,Rack-Node, NetworkTopology LeaseManager, 同步文件写操作, 一个Lease对应一个Client以及一个FSPath....原创 2018-01-23 14:24:07 · 463 阅读 · 0 评论 -
控制MapReduce输出文件个数及格式
控制MapReduce多文件输出默认情况下MapReduce任务结束后一个reduce产生一个输出文件,文件名类似part-xxxxx, 有时为了方便后续对这些文件的处理,比如根据文件名import到不通的hive分区,我们需要控制reduce输出产生的文件名,让相同的reduce key写入同一个文件,此时可继承MultipleOutputFormat重载generateFileNameFo...原创 2017-07-21 14:36:36 · 5930 阅读 · 0 评论 -
PPTV大数据基础平台升级总结
伴随着PPTV各项业务的快速发展,为了方便各业务部门洞察相关业务情况,我们于2011年底启动了内部大数据平台的建设。目前,我们已建成大数据分析基础平台和大数据应用平台。基础分析平台主要是基于Hadoop生态圈建立起从数据收集到业务自助分析报表的整个数据流通过程;应用平台则是在基础平台之上,建立起数据模型,为挖掘、推荐、推送、DMP等关键业务提供数据服务。 基于业务规模、系统兼容性...原创 2016-09-11 18:32:17 · 2354 阅读 · 0 评论 -
Hive Failed
Sample 1:select * from sm_play;FAILED: SemanticException [Error 10041]: No partition predicate found for Alias "sm_play" Table "sm_play"原因:没有指定分区值select * from sm_play where dt=140108;原创 2014-01-08 20:21:09 · 12410 阅读 · 0 评论