- 博客(72)
- 收藏
- 关注
原创 Hive分区表添加字段
注意:如果是有多个分区字段且分区数量特别多的表,要谨慎使用cascade修改,可能造成元数据部分表锁表。此时历史分区的新增字段均会显示NULL(无论数据是否带有新字段数据),此时有两种解决方法。hive提供了为分区表添加字段的功能,新添加的字段会处于现有列的末尾。此时历史分区的旧数据会显示NULL,但新插入的带有新增字段的数据会正常显示。2.添加cascade会修改表和所有历史分区元数据。1.不添加cascade只会修改表元数据。
2025-01-03 15:22:50
812
原创 Kafka 幂等性与事务
Producer开始事务写入,先将本地事务状态更改为IN_TRANSACTION,然后发送消息之前,Producer会将topic-partition相关的信息发送给TransactionalCoordinator,由它完成持久化(更新__transaction_state)。Kafka 事务基于幂等性实现,通过事务机制,Kafka 可以实现对多个 Topic 、多个 Partition 的原子性的写入,即处于同一个事务内的所有消息,最终结果是要么全部写成功,要么全部写失败。Producer设置。
2024-12-30 15:21:07
1060
原创 Flink任务报错akka size oversized
Flink使用Akka进行组件之间的RPC(JobManager/TaskManager/ResourceManager)。Flink不使用Akka进行数据传输。jobmanager通过akka发送给taskmanager的message超过了默认的大小,可以临时先调大。实测删除checkpoint可以正常重启。
2024-10-22 15:29:29
722
原创 上传文件报错Failed to read expected SASL data transfer protection handshake from client
1.客户端conf.set dfs.data.transfer.protection=authentication。1.表象报错显示java客户端写block失败。服务端开启了加密传输,客户端未与该配置保持一致。2.客户端代码读取hdfs相关的配置文件。2.hdfs客户端可以上传成功。3.传输端口telnet可以通。
2024-05-06 16:11:13
524
2
原创 Kerberos认证报错java.net.SocketTimeoutException: Receive timed out
查看报错堆栈里关键的一行UDPClient.receive,所以本次请求使用的是udp连接。krb5中加入udp_preference_limit = 1 禁用udp服务。
2024-05-06 16:09:22
212
原创 Kafka可用与可靠机制
如果一个follower在设定的replica.lag.time.max.ms时间周期内时刻保持与leader的数据更新,则认为该follower是同步的,它将被leader保留在ISR列表中,反之将被从ISR中剔除。是否允许将新leader切换到数据不同步的follower(故障切换时,unclean.leader.election.enable)此时如果副本均在ISR中,但稍微落后leader时,会增加对应的写入延迟。默认false,不允许将leader切换到不同步的follower。
2024-03-11 09:12:25
1067
原创 kyuubi提交任务异常报错Unauthorized connection for super-user from IP
举例:B用户访问开启kerberos的hadoop集群,此时以B用户的名义去访问hadoop集群,仅仅认证信息会使用A用户的认证信息去完成认证。在kerberos环境下,如果用户需要用其他用户的kerberos凭证来完成认证,此时就需要配置proxy user。kyuubi正常会提交spark session 会到yarn上启动application。线上加载的配置为固定的主机,所以通过这几个主机之外的其他主机不能代理用户提交。hadoop.proxyuser.hive.hosts 为* 是没有问题的。
2024-03-08 09:26:33
880
原创 Kyuubi之Share Level
无法适应多租户场景。STS后端引擎仅仅启动一个application提供服务,提交用户和队列均为固定。服务健壮性问题。STS同时需要接受客户端的并发连接和调度task,在高负载下OOM风险大大增加,同时有性能瓶颈。无高可用和负载均衡。单点提供服务,无法满足生产SLA要求。
2024-03-04 11:17:10
606
原创 YARN之Opportunistic Containers
一种新的容器类型 Opportunistic Containers:用于改善集群的资源利用和提升吞吐
2023-10-25 10:08:18
247
原创 tez作业运行慢
后面对比了map task的输入文件,这个container接收的明显要多,导致map task长尾,拖慢整个作业的运行时长。但是通过监控查看当时集群仍有很多的可用资源,从后续的日志看,1分多钟后也获取到了正常的资源情况,但此时task数量已经计算完了并提交请求了。发现某个map task的运行时间是其他map task的三倍(这里00是map task、01是reduce task)对比这个作业两天运行的app日志,发现以下情况:分配的container数量,有问题的作业明显要少几十倍。
2023-10-13 09:16:49
573
原创 HDFS之Fair Call Queue优化
默认的,优先级越高的权重越多。比如,这里0优先级的权重是8,1是4,2是2,3是1。意味着,在至少15调用中,会将处理0优先级的8个请求、之后是1优先级的4次请求,依次往后。==FairCallQueue的思想则是 将用户的请求划分成不同的优先级,并放入不同的优先级的队列,提取时按照不同队列的权重来处理。Namenode作为集群的管理角色,是RPC请求的中心,会承载来自所有客户端的RPC请求。默认的队列实现是FIFO,在这种情况下,如果某个用户的请求数量过多,可能会造成整个系统中其他所有用户的阻塞。
2023-10-07 10:06:43
289
原创 beeline连接报错Required field ‘client_protocol‘ is unset
该问题由于beeline工具的版本与服务端不一致导致的,实际也就是beeline所用的hive-jdbc jar包版本不一致。客户端和服务端使用正确一致版本的jar包即可。使用beeline连接SparkThriftServer报错。
2023-09-20 09:31:41
622
1
原创 Docker Networking
自定义桥接在容器之间提供自动DNS解析:容器在默认桥接网络只能互访IP地址,除非使用–link选项。自定义桥接网络,容器可以互相解析容器名。自定义桥接网络会更安全:所有容器默认都会连接到默认的桥接网络,这是有隐患的。使用自定义网络会提供一个限定的范围。可以动态地从用户定义的网络中附加和分离容器:在容器的生命周期内,可以动态地将其与用户定义的网络连接起来或断开连接。要从默认桥接网络中删除容器,需要停止容器并使用不同的网络选项重新创建它。
2023-09-07 14:29:14
146
原创 Docker Storage
使用bind mounts,可以通过容器中运行的进程来更改主机文件系统,可能会影响到宿主机的其他进程,会有安全隐患。Volumes:被存储在docker管理的宿主机文件系统的一部分(/var/lib/docker/volumes/),非docker进程不应该能修改这部分目录。为了持久化文件,docker为容器在宿主机存储数据提供了两个选择,volumes和bind mounts。1.在多个运行的容器中分享数据。2.当宿主机不能保证给定的目录和文件结构,volumes将宿主机的配置与容器运行时解耦合。
2023-09-04 14:43:09
183
原创 YARN之FairScheduler
yarn.scheduler.fair.locality.threshold.node 对于请求特定节点的容器,延迟调度的阈值(放弃调度)。yarn.scheduler.fair.max.assign 多分配开启时,动态最大分配为false时,指定一次心跳分配的最大容器数量。yarn.scheduler.fair.locality.threshold.rack 同上,该参数针对的是请求特定机架的容器。yarn.scheduler.fair.allocation.file 配置文件路径。
2023-08-30 09:49:26
336
原创 Linux之systemctl添加服务
WantBy:单元被允许运行需要的弱依赖性单元,Wantby从Want列表获得依赖信息。Also:指出和单元一起安装或者被协助的单元。DefaultInstance:实例单元的限制,这个选项指定如果单元被允许运行默认的实例。将服务添加到systemctl管理,需要添加自定义的service文件到/usr/lib/systemd/system/下。RequiredBy:单元被允许运行需要的一系列依赖单元,RequiredBy列表从Require获得依赖信息。Alias:为单元提供一个空间分离的附加名字。
2023-08-25 14:50:42
2186
原创 Nginx缓存与动静分离
cache manager定期检查缓存的状态,如果缓存大小超过proxy_cache_path指令的max_size参数设置的限制,则缓存管理器将删除最近访问次数最少的数据。在两次缓存管理器激活之间的时间间隔内,缓存的数据量可能会暂时超过限制。默认情况下,响应将无限期地保留在缓存中。为了避免一次加载整个缓存可能会消耗足够的资源,可以设置如下参数来配置缓存的“慢加载”缓存机制可以缓存来自代理的web和应用服务器的静态和动态内容到磁盘上,以加快客户端的请求并减少服务器上的负载。将静态资源单独存放到某个目录下。
2023-08-18 14:58:56
79
原创 ceph之常用命令
处于down状态下的OSD不会从集群的CRUSH MAP中移除,此时还不会进行数据迁移,当执行out操作之后,会从CRUSH MAP删除这个OSD,此时就会进行数据迁移。此时只是对外停止服务,不会改变CRUSH MAP信息,所有上层的访问都会拒绝。获取当前用户已经消耗的配额量,配额的统计数据是异步更新的,可以带上 --sync-stats 参数来获取最新的数据。Bucket配额作用于用户的某一个bucket,通过uid指定用户。最大对象数和最大存储用量的值是负数则表示不启用指定的配额参数。
2023-08-15 13:46:11
1238
原创 YARN之Node Labels
给节点打label可以将集群划分成不同的分区 队列与标签做映射 实际只是指定可以使用该分区的资源(accessible-node-labels) 只有资源请求时指定了label 才能使用其分区的资源 不然默认如果不设置(default-node-label-expression) 作业都将运行到default分区。yarn.nodemanager.node-labels.provider.script.path 指定要运行的script的路径 "NODE_PARTITION:"之后的内容将视为标签。
2023-08-08 16:37:29
683
原创 HDFS之Router-based Federation
最简单的实现是在每个Namenode的机器上部署Router,但是为了高可用及灵活性,会使用多个Router监控同一个Namenode(State Store中冲突的信息由quorum解决),这样即使Router失败也不会导致有问题。对于监控的Namenode,如果Router联系不到了active的Namenode,它会首先尝试访问standby Namenode,再去访问联系不上的Namenode。它能够管理并维护集群namespace的状态,将请求转发到正确的子集群,并且支持跨子集群的数据均衡。
2023-08-02 10:47:07
1727
原创 Mysql问题(8)删除表数据,表文件大小未变
mysql5.6之后引入online DDL。好处是在重建表的过程中,允许对表A做增删改操作。增删改查都会造成数据空洞:delete命令其只是把记录的位置,或者数据页标记为了“可复用”。
2023-07-31 17:10:51
120
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人