SOLID原则
介绍SOLID原则是指面向对象编程(OOP)中的五个设计原则,它们的首字母组合成了”SOLID”:单一职责原则(Single Responsibility Principle,SRP):一个类只应该有一个单一的功能,并且该功能应该由这个类完全封装在内。开闭原则(Open-Closed Principle,OCP):一个类应该对扩展开放,对修改关闭。也就是说,当需要改变一个程序的功能或者给这个程
root加到hadoop的hdfs用户组内
打开终端或命令行界面并以root用户身份登录 运行以下命令将root用户添加到hdfs用户组中 groups root 运行以下命令来验证root用户是否已成功添加到hdfs用户组中 groups root
大数据技术 - Zookeeper
介绍Zookeeper是一个分布式协调服务,它由Apache软件基金会开发和维护。它的目的是为分布式应用程序提供高效的协调服务,包括配置管理、分布式锁、分布式协调等。 主要特性数据发布/订阅机制:Zookeeper允许应用程序发布和订阅数据,以实现分布式状态同步和协调。分布式锁:Zookeeper提供了分布式锁,使应用程序能够协调访问共享资源。分布式协调:Zookeeper提供了各种协调机制
数据仓库 - 星座模型、星型模型和雪花模型的介绍
星座模型(Constellation Model)星座模型是一种数据建模方法,将系统分解成相互独立的模块,每个模块执行特定的功能。这些模块通过接口的交互,并组成一个整体系统。这个模型可以用于设计软件架构和组织大型代码库,以便于开发、维护和扩展。 星型模型(Star Model)星型模型是一种数据建模方法,用于数据仓库的设计。它通过将数据集分成事实表和维度表来组织数据。事实表包含数值数据和度量
CDH6.2 集群安装Kafka服务
推介方法https://blog.csdn.net/weixin_40040107/article/details/103242611
死锁是什么?如何预防和避免死锁?
概述死锁是指多个线程在运行过程中,因为竞争资源而互相等待,导致都无法继续执行的一种状态,从而造成程序的无限等待和停滞。简单来说,死锁是一种线程间的资源竞争问题,当多个线程都持有一些资源,并且等待其他线程释放它们持有的资源时,就可能出现死锁问题。 预防和避免避免嵌套锁:尽量避免在持有一个锁的时候去申请另一个锁,因为这样可能会导致死锁的发生。统一获取锁的顺序:如果多个线程需要获取多个锁,可以约定
Java 中 final 关键字有什么用
具体作用如下final修饰的类无法被继承,即该类是最终的、不可变的。这可以用于保护类的完整性和安全性,防止被恶意修改或扩展。final修饰的方法无法被子类重写,即该方法是最终的、不可改变的。这可以用于保证方法的正确性和一致性,避免被子类误修改或者改变其行为。final修饰的变量被称为常量,即该变量的值在定义之后不能被修改。这可以用于定义不可变的常量,避免在程序中被修改而引起错误。 注意点需要
常见的四种线程池
FixedThreadPool固定大小线程池(FixedThreadPool):固定大小线程池包含一个固定数量的线程,当一个任务被提交时,如果线程池中有空闲的线程,则会立即执行;否则,任务会被暂时放到一个队列中,等待有空闲的线程时再执行。这种线程池适合处理负载较重但任务量较少的情况。 ExecutorService executor = Executors.newFixedThreadPoo
Flink接入Kafka数据源实现精准一次(Exactly-once)的注意点
配置将 Kafka Producer 的 enable.idempotence 配置设置为 true。这个配置可以确保 Kafka Producer 发送的消息是幂等的,即相同的消息不会被发送多次。将 Kafka Consumer 的 isolation.level 配置设置为 read_committed。这个配置可以确保 Kafka Consumer 只读取已经提交的消息,避免读取到未提交
Flink的分区策略
介绍Apache Flink 是一个分布式数据处理框架,它支持多种数据源的实时和批量处理。在 Flink 中,数据源被分为若干个分区,每个分区由一个或多个数据块组成。分区是 Flink 进行并行处理的基本单元,Flink 内部的大部分算子都是在分区级别上进行操作。 常见的 Flink 分区策略:RoundRobinPartitionerRoundRobinPartitioner 策略将数据源
大数据技术 - Hbase
介绍HBase是一个分布式的、面向列的NoSQL数据库,它可以在廉价的硬件上运行,并提供高可靠性、高性能、高可扩展性和灵活性的特点。HBase的架构和设计灵感来自于Google的Bigtable和Apache的Hadoop分布式计算系统。HBase将数据存储在Hadoop分布式文件系统(HDFS)上,并利用Hadoop的MapReduce计算框架来实现分布式计算。它采用了类似于Google B
大数据技术 - Hive
介绍Hive是一个基于Hadoop的数据仓库工具,它提供了一种类SQL的查询语言HiveQL(HQL)来查询和分析存储在Hadoop分布式文件系统(HDFS)中的大规模数据。Hive将SQL语句转换为MapReduce任务,并使用Hadoop的分布式计算能力进行处理,以处理非常大的数据集。Hive最初由Facebook开发,后来成为Apache软件基金会的顶级项目。它旨在使非专业用户能够使用S
常见的三大数据湖技术 - Delta、Hudi、Iceberg
介绍Delta Lake:是由 Databricks 推出的一种基于 Apache Spark 和 Apache Parquet 的开源数据湖技术。Delta Lake 提供了 ACID 事务、数据版本控制、数据一致性、数据可靠性、数据质量等功能,使数据湖更加健壮和易于管理。Delta Lake 还支持 SQL 查询、Scala/Python/Java API、Spark Streaming、
Flink 的内存管理是如何做的?
内存模型 概述Flink 并不是将大量对象存在堆上,而是将对象都序列化到一个预分配的内存块上。此外,Flink 大量的使用了堆外内存。如果需要处理的数据超出了内存限制,则会将部分数据存储到硬盘上。 Flink 为了直接操作二进制数据实现了自己的序列化框架。 内存管理主要包括三个部分:Network Buffers(网络缓冲区):这部分内存是在 TaskManager 启动时分配的,用于缓存
Flink 是如何保证 Exactly-once 语义的?
解答一主要包括以下几个方面:Checkpoint 机制:Flink 的 Checkpoint 机制可以将作业的状态定期保存到持久化存储中,以便在发生故障时恢复状态。Checkpoint 机制可以保证在故障恢复时,任务能够从上一个成功的 Checkpoint 状态开始继续执行,从而避免重复计算和数据丢失。事务性写入:Flink 支持将数据以事务的方式写入外部系统,比如数据库或者消息队列。通过将数
Flink 的 Slot 和 parallelism 有什么区别?
概述Flink 的 Slot 和 Parallelism 都是用来控制 Flink 作业的并行度的参数,但是它们有着不同的作用和含义。 SlotSlot:Slot 可以看作是一个物理或者虚拟的任务执行单元,一个 Slot 可以执行一个并发任务。一个 Flink TaskManager 可以有多个 Slot,而一个 Slot 一般会被分配给一个 Task。在 Flink 中,Slot 是资源的
Java - 反射机制与单例设计模式
代码示例 class Singleton { private static Singleton instance = null; // 第一次使用时实例化 private Singleton() { System.out.println("【" + Thread.currentThread().g
Java - 反射机制与工厂设计模式
代码示例```javainterface IMessage { public void send(); // 消息发送} class CloudMessage implements IMessage { @Override public void send() { System.out.prin
Java 设置睡眠的方法
方法一使用 Thread 类中的 sleep 方法:```javatry { // 让当前线程休眠 5 秒钟 Thread.sleep(5000);} catch (InterruptedException e) { e.printStackTrace();} try { // 让当前线程休眠 5 秒钟和 5000 纳秒 Thread.sleep(5000, 5000);}
Flink中什么时候需要些returns()方法
概述在 Flink 中,DataStream API 和 DataSet API 中都支持 returns() 方法,该方法用于设置算子的返回值类型。一般来说,当算子的返回值类型无法通过 Flink 的类型推导自动推断出来时,就需要手动设置返回值类型。 举例1、当算子输入的类型和输出的类型不一致时,需要手动设置输出类型,否则可能会导致类型转换错误或异常。例如,如果使用 map() 算子将输入