Hadoop, Hive, Spark的关系详解
概念梳理参考Gemini:https://g.co/gemini/share/749bc1f75063
1. Hadoop
主要包含三部分:
1.1. HDFS即Hadoop Distributed FileSystem分布式文件系统,将大文件分割成小块并分发到集群的多个节点上。用户存取数据都是和单机一样的操作流程,但实际上这些数据都是在多台单机上存储的,即屏蔽了底层的分布式实现。
1.2. MapReduce单机之间的协同计算。Hadoop 早期主要的分布式计算模型,用于批处理任务。它将计算任务分解为 Map(映射)和 Reduce(规约)两个阶段。
MapReduce程序的代码比较复杂,需要自行编写,非常麻烦。因此出现了Hive和Pig等工具,而后续Hadoop的MapReduce部分就基本不用了,更多用的是它的HDFS文件系统。
1.3. YARN即ResourceManager,资源管理器。负责集群资源的调度和管理,包括 CPU、内存等。它使得不同的应用程序(如 MapReduce、Spark、Hive 等)可以共享同一个 Hadoop 集群的资源。
这个感觉不一定要划分为Ha ...
K8S部署主从复制MySQL和哨兵Redis
前置准备首先配置好K8S,并能保证节点之间的通信,可能需要配置网络插件,例如flannel,确保单机跑多副本的nginx是没问题的。
总共大约4步:
配置NFS
helm更换镜像
配置NFS123456> sudo apt update && sudo apt install nfs-kernel-server -y> sudo mkdir -p /mnt/nfs_share # 自定义你要共享的目录> sudo chown nobody:nogroup /mnt/nfs_share && sudo chmod 777 /mnt/nfs_share # 设置权限> vim /etc/exports # 编辑配置,添加在文件最后添加 /mnt/nfs_share *(rw,sync,no_subtree_check)> sudo exportfs -a # 导出配置> sudo systemctl restart nfs-kernel-server # 重启NFS服务
可以在另一台服务器上测试一下
1234567 ...
SQL调优
SQL浅复习增(Create)注意INTO和VALUES关键字
12345678-- 指定字段插入多条数据INSERT INTO `user` (username, age, email) VALUES ('李四', 30, 'lisi@example.com'),('王五', 28, 'wangwu@example.com');-- 不指定字段插入单条数据INSERT INTO `user` VALUES (NULL, '赵六', 22, 'zhaoliu@example.com', NULL);
删(Delete)注意FROM关键字
1DELETE FROM `user` WHERE username = '赵六';
改(Update)注意SET关键字
1UPDATE `user` SET age = 31, email = 'lisi_new@example.com' WHERE id = 2;
查(Read)查的方 ...
计算机网络学习笔记
本文是在阅读JavaGuide关于计算机网络相关内容时的个人整理;
请移步:https://javaguide.cn
OSI七层模型很清晰、理论完整,但是太复杂且不适用,所以更多使用tcp/ip协议
应用层:为用户提供了与网络进行交互的接口;
表示层:进行一些数据处理,例如加密解密、编码解码、压缩和解压缩
会话层:管理应用程序之间的会话
传输层:为会话之间的通信提供可靠的数据传输
网络层:IP数据包在传输时的路由和寻址
链路层:对数据帧进行编码、对传输的误差进行纠正
物理层:传输比特流数据
TCP/IP四层模型应用层应用层:以报文为数据单元,为用户应用程序提供网络服务接口
常见协议:
基于TCP:
HTTP协议(HTTPs):基于 TCP 协议,是一种用于传输超文本和多媒体内容的协议,为 Web 浏览器与 Web 服务器之间的通信而设计的
Websocket协议:客户端和服务端可以同时发送或接收,基于 TCP 连接的全双工通信,通过心跳机制来保持 WebSocket 连接的稳定性和活跃性
SMTP协议(简单邮件传输(发送)协议)、IMAP/ ...
MySQL学习笔记
本文是在阅读JavaGuide关于MySQL相关内容时的个人整理;
请移步:https://javaguide.cn
三大日志MySQL 里常说的“三大日志”是 redo log、binlog 和 undo log。把它们放到一次更新里看,会更容易理清关系:
先把旧值相关信息写入 undo log,为回滚做准备,此时 undo log的 redo log 会写入 redo log buffer;
再修改内存中的数据页,也就是 Buffer Pool 里的页,这时会产生脏页;
同时把这次物理修改写入 redo log buffer;
事务提交时,再把 binlog 写好,并完成 redo log 的提交流程;
脏页本身不一定在提交时立刻刷回数据文件,而是由后台线程择机刷盘。
所以可以把三者粗略理解成:
redo log:负责把“已经做过、但还没落到数据文件里的修改”补回来,核心对应持久性;
undo log:负责把“不该保留的修改”撤销掉,核心对应原子性;
binlog:负责记录逻辑变更,用于主从复制,也参与判断事务是否真正提交成功。
更新时的日志和数据页MySQL 查询数据 ...
Redis学习笔记
本文是在阅读 JavaGuide 关于 Redis 的内容后做的个人整理;
请移步:https://javaguide.cn
核心知识点可以看这篇文章的总结:https://juejin.cn/post/7525640395234230326#heading-4
基本数据类型8种基本的5种
String(字符串),使用SDS,即Redis自己构建的简单动态字符串来实现;
List(列表),用的是双向链表,支持反向查找,可以用于实现消息队列;
Hash(散列),键的值是键值对,可以用于存储对象,实现类似Java的HashMap;
Set(集合),无序结构且无重复,支持交并差集的运算,可用于共同关注、粉丝等功能;用整数集合或哈希表实现(元素为整数且数量较少时用Set)
Zset(有序集合),跳表实现,针对Set中每个元素增加一个权重参数score,根据这个参数有序排列;可以根据score范围获取元素列表,可以用于实现排行榜
特殊的3种
Bitmap (位图)
HyperLogLog(基数统计)
Geospatial (地理位置)
底层数据类型8种1. 简单动态字符串SDS1234 ...
Docker模拟分布式结点配置Hadoop
本学期选了分布式系统这门课,作业是搭建一个MapReduce的框架来实现WordCount这个简单Demo,因此需要进行Hadoop环境的配置;这个在我2年前上数据仓库的时候小组里也配置过,但当时不是我负责,这次重新把流程走通一遍;当时是使用Spark+Hive+Hadoop三件套用来对数据仓库进行SQL的查询,参考当时负责人的博客。
构建镜像123# docker安装不多赘述# 拉取ubuntudocker pull ubuntu:latest
去官网下载jdk1.8,即jdk-8u281-linux-x64.tar.gz,并在目录同级构建一个Dockerfile文件,内容如下
123456FROM ubuntu:latestMAINTAINER duanmuADD jdk-8u281-linux-x64.tar.gz /usr/local/ENV JAVA_HOME /usr/local/jdk1.8.0_281ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarENV PATH $PATH:$JAVA_HOME ...
MacOS在外接硬盘中安装docker
当macos空间不足,我们往往想把各种东西放在外接硬盘中,例如虚拟机、游戏等等,如果在系统中安装了docker,其镜像和容器往往也会占据较大的空间,因此将docker放置在外接硬盘中是一件非常nice的事情。采用的核心思想是找到文件系统中存储数据的目录,然后使用软链接的方式将其存放在外接硬盘之中。
首先需要安装docker,这里直接使用brew install docker,如果是安装docker desktop的话会包含“运行时”,但是此时是没有的,直接运行docker pull xxx会报错
12$ docker pull redisCannot connect to the Docker daemon at unix:///Users/xxx/.orbstack/run/docker.sock. Is the docker daemon running?
这里不使用docker desktop for mac,它的资源开销过大,我们使用OrbStack作为macos的运行环境,按照官方文档所述安装即可:brew install orbstack
直接打开OrbStack后 ...
春雨遂川润泽支教夏令营
写在前头感谢同济春雨社团,让我有机会前往江西省南昌市遂川县XX乡的一个小学,开展为期两周的支教夏令营,这是我第一次参加支教活动。非常感谢队伍里的每一个人,以及遇到的每个孩子,你们让这个暑假充满了意义。
流水账的记录8月3日下午到达XX小学,参观了学校整理了行李,这天是周六;周日策划了开营仪式、排了做饭表、课表、作息时间等等,也是这天晚上我生病了,吐了5 6回。我们将孩子们分成2个班级,分别是四年级和五年级,在开营仪式结束后分别召开了班会课,在班会课上进行了“谁是卧底”的破冰游戏,让同学们和老师互相认识。接着就是正式上课,第一节课我们敖老师上了趣味数学我陪课,不知道孩子们听得咋样,我听的津津有味hhh,不用做题的数学还有很有趣的。
这天最后一节课是我的羽毛球课,我的设想是先讲解羽毛球的规则,再教学基本的发球和高远球,然后让他们打打比赛;但是拍子数量非常少,球也没几个,并且孩子们的羽毛球基础实在有点太差,按规则根本打不起来,我反思是我的设想太过理想化了,其实上得不是很顺利。后面直接让他们自由活动打羽毛球了,看的出来他们非常喜欢自由活动,第二天好几个孩子问我什么时候再上体育课,和我小学 ...
新疆游记——北疆大环线
Abstract我们的行程安排参考了xhs上某一篇北疆大环线的地图:
针对该行程大纲,我们进行灵活的调整,最后计划表如下:
天数
安排
-2,-1
Z40次动车,39小时
0
乌鲁木齐休整,闲逛
1
乌鲁木齐 => 天山天池 => 阿勒泰
2
阿勒泰 => 禾木
3
禾木 => 喀纳斯
4
喀纳斯 => 乌尔禾
5
乌尔禾 => 魔鬼城 => 赛里木湖
6
赛里木湖 => 特克斯
7
特克斯 => 琼库什台
8
琼库什台 => 蜜蜂小镇
9
蜜蜂小镇 => 百里画廊 => 独库公路 => 乌鲁木齐
10
各回各家
Before Start
硬卧
第一次坐硬卧,Z40的硬卧还挺难抢;我睡中铺,底下有小孩买了硬座来睡大人的卧铺非常吵,我拿AirPods当耳塞的效果还不错。
租车
租了辆7座商务车(别克GL8),差点没放进6 ...












