02 2022 档案
摘要:order by 全局排序 sort by 区内排序 结合多个分区使用 distribute by 分区排序 默认分区规则 Hash cluster by 当distribute by和sorts by字段相同时,可以使用cluster by方式。
阅读全文
摘要:什么是Hive Hive:由Facebook开源用于解决海量结构化日志的数据统计。 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。 本质是:将HQL转化成MapReduce程序 1)Hive处理的数据存储在HDFS 2)Hive分析数据底层
阅读全文
摘要:Hadoop2.x新特性 集群间数据拷贝 采用distcp命令实现两个Hadoop集群之间的递归数据复制 小文件存档 回收站 Hadoop3.x新特性 多NN的HA架构:多个NameNode高可用 纠删码:能够在不到50%的数据冗余情况下提供和3副本相同的容错能力。
阅读全文
摘要:MapReduce程序效率的瓶颈在于两点: 1.计算机性能 CPU、内存、磁盘健康、网络。 2.I/O操作优化 ①数据倾斜 ②Map和Reduce数设置不合理 ③Map允许时间太长,导致Reduce等待太久 ④小文件过多 ⑤大量的不可切片的超大压缩文件 ⑥Spill次数过多 ⑦Merge次数过多 从
阅读全文
摘要:平凡的函数依赖: 如果关系上的一个约束对所有关系实例都成立,且与其他约束无关,则称其为平凡的。例如:A1 A2 ... An->B1 B2 ... Bm,其中{B1,B2,...,Bm}⊆{A1,A2,...,An},也就是说,平凡FD的右边是左边的子集。即整体可以决定部分。 A1 A2 ... A
阅读全文
摘要:循环结构 while语句 先判断条件在进入循环体。 for语句 先判断条件,再进入循环体,再执行增量表达式。 do while语句 先执行循环体,再判断条件。
阅读全文
摘要:属性集合的闭包 假设{A1,A2,...,An}是属性集合,S是FD的集合。则S集合下的属性集合{A1,A2,...,An}的闭包是满足下面条件的属性集合B,即使得每一个满足S中所有FD的关系,也同样满足A1 A2 ... An->B。也就是说A1 A2 .... An->B能由S中的FD推断出来。
阅读全文
摘要:上面的流程是整个MapReduce最全工作流程,但是Shuffle过程只是从第7步开始到第16步结束,具体Shuffle过程详解,如下: (1)MapTask收集map()方法输出的kv对,放到内存缓冲区中 (2)从内存缓冲区不断溢出本地磁盘文件,可能会溢出多个文件 (3)多个溢出文件会被合并成大的
阅读全文
摘要:1)DataNode可以配置成多个目录,每个目录存储的数据不一样。即:数据不是副本 2)具体配置如下 (1)在hdfs-site.xml文件中添加如下内容 <property> <name>dfs.datanode.data.dir</name> <value>file://${hadoop.tmp
阅读全文
摘要:当需要在原有集群基础上动态添加新的数据节点时,需要进行如下操作: 环境准备 (1)在hadoop主机上再克隆一台hadoop1主机(可以直接安装一个) (2)修改IP地址和主机名称 (3)删除原来HDFS文件系统留存的文件(/opt/module/hadoop-3.1.3/data和logs)(可以
阅读全文
摘要:(1)一个数据块在DataNode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。 (2)DataNode启动后向NameNode注册,通过后,周期性(1小时)的向NameNode上报所有的块信息。 (3)心跳是每3秒一次,心跳返回结
阅读全文
摘要:HDFS处于安全模式的情况: NameNode启动 NameNode启动时,首先将镜像文件(Fsimage)载入内存,并执行编辑日志(Edits)中的各项操作。一旦在内存中成功建立文件系统元数据的镜像,则创建一个空的编辑日志。此时,NameNode开始监听DataNode请求。这个过程期间,Name
阅读全文
摘要:NameNode故障后,可以采用如下两种方法恢复数据。 1)将SecondaryNameNode中数据拷贝到NameNode存储数据的目录: (1)kill -9 NameNode进程 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.3/data/tmp/dfs/
阅读全文
摘要:NN和2NN工作机制推演 首先要知道NameNode中的元数据是存储在哪里的? 倘若存储在NameNode节点的磁盘中,因为经常需要进行随机访问,还有响应客户请求,必然是效率过低。因此,元数据需要存放在内存中。但如果只存在内存中,一旦断电,元数据丢失,整个集群就无法工作了。因此产生在磁盘中备份元数据
阅读全文
摘要:HDFS读文件 (1)客户端通过DistributedFileSystem向NameNode请求下载文件,NameNode通过查询元数据,找到文件块所在的DataNode地址。 (2)挑选一台DataNode(就近原则,然后随机)服务器,请求读取数据。 (3)DataNode开始传输数据给客户端(从
阅读全文
摘要:1)时间服务器配置(必须root用户) 查看所有节点ntpd服务状态和开机自启动状态 sudo systemctl status ntpd sudo systemctl is-enabled ntpd 在所有节点关闭ntpd服务和自启动 sudo systemctl stop ntpd sudo s
阅读全文
摘要:免密登录原理图 生成公钥和私钥: ssh-keygen -t rsa #一直回车 #就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥) 将公钥拷贝到要免密登录的目标机器上 ssh-copy-id 主机名 #前提是配置了主机名和IP的映射关系,不然就要使用IP .ssh文件夹下(~/.
阅读全文
摘要:scp(secure copy)安全拷贝: 定义:可以实现服务器与服务器之间的数据拷贝。 scp -r fname host:fname 命令 递归 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称 rsync远程同步工具: rsync主要
阅读全文
摘要:一般情况下,使用虚拟机安装Linux系统,使用Centos7镜像。 安装完成后很多命令使用不了,需要安装插件。一般情况下,只需要在连网状态下输入两条命令安装一下插件即可。 yum install -y epel-release yum install -y psmisc nc net-tools r
阅读全文
摘要:1.只有传输层以上各层的通信才能称为端到端。 2.会话层管理不同主机之间进程的对话。 3.传输层实现应答、分组排序和流量控制功能。 4.表示层主要完成数据字符集的转换、数据格式化及文本压缩、数据加密和解密等工作。 5.TCP/IP参考模型中,网络层提供的是无连接不可靠的数据报服务。通常有连接、可靠的
阅读全文
摘要:typedef struct CSNode{ ElemType data; struct CSNode *firstchild, *nextsibling; }CSNode, *SCTree;
阅读全文
摘要:#define MaxVertexNum 100 typedef struct ArcNode( //边表节点 int adjvex; struct ArcNode *next; }ArcNode; typedef struct VNode{ //顶点表节点 VertexType data; Arc
阅读全文
摘要:数组定义 int *B; B = (int *) malloc(sizeof(int) * n); memset(B,0,sizeof(int)*n);
阅读全文
摘要:1.统计二叉树中度为1的节点个数 int NodeCount(BiTree bt){ if(bt == null) return 0; if(bt->lchild == null && bt->rchild != null || bt->lchild != null && bt->rchild ==
阅读全文
摘要:求矩阵乘积Q=MxN,采用行逻辑链接存储表示。 例:M=,N=。Q=MxN,Q=。 三元组 M.data N.data Q.data i j e i j e i j e 1 1 3 1 2 2 1 2 6 1 4 5 2 1 1 2 1 -1 2 2 -1 3 1 -2 2 1 -1 3 1 2 3
阅读全文
摘要:算法 时间复杂度 空间复杂度 稳定性 最好情况 一般情况 最坏情况 直接插入排序 O(n) O(n2) O(n2) O(1) 稳定 冒泡排序 O(n) O(n2) O(n2) O(1) 稳定 简单选择排序 O(n2) O(n2) O(n2) O(1) 不稳定 希尔排序 快速排序 O(nlog2n)
阅读全文
摘要:基数排序得到递减序列的过程如下: 初始化:设置r个空队列(基数),Qr-1, Qr-2, ..., Q0 按照各个关键字位权重递增的次序,个、十、百对d个关键字位分别做”分配“和”收集“ 分配:顺序扫描各个元素,若当前处理的关键字位=x,则将元素插入Qn队尾。 收集:把Qr-1, Qr-2, ...
阅读全文
摘要:”2路“归并,把两个已经有序的序列合并成一个。 核心操作:把数组内的两个有序序列归并成一个。 空间复杂度O(n) 时间复杂度O(nlog2n) //归并排序 int *B = (int *)malloc (n * sizeof(int)); //定义足够大的数组B void Merge(int A[
阅读全文
摘要:检查当前节点是否满足:根≥左,右。 若不满足,将当前节点与更大的一个孩子互换。 i的左孩子 2i i的右孩子 2i+1 i的父节点 i/2 时间复杂度O(nlog2n) 空间复杂度O(1) 若元素互换破坏了下一级的堆,则采用相同的方法继续往下调整。(小元素下坠) //建立大根堆 void Build
阅读全文
摘要:通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录交换。 空间复杂度O(1) 时间复杂度O(n2) 总共需要对比的关键字次数(n(n-1))/2 void SelectSort(int A[], int n){ for(int i=0; i<n-1; i++){ i
阅读全文
摘要:通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。 时间复杂度O(nlog2n) 空间复杂度O(log2n) 快速排序的算法优化思路:尽量选择可以把数据中分的枢纽。 //用第一个元素将待排序序列划分为
阅读全文
摘要:每趟排序都是把值最小的数移至前面,依次排序。 空间复杂度O(1) 最好情况下,初始序列为”正序“序列,只需一趟排序,n-1次比较,且不移动记录,时间复杂度为O(n)。 最坏情况下,初始序列为逆序,则需要进行n-1趟排序,需要进行(n(n-1))/2次比较,并做等数量的记录移动,时间复杂度O(n2)。
阅读全文
摘要:先将整个待记录排序分割成若干子序列分别进行直接插入排序,待整个序列中的记录”基本有序“时,再对全体记录进行一次直接插入排序。 又称”缩小增量排序“,是一种属于插入排序类的算法,但在时间效率上比较优秀。 时间复杂度:与增量序列d1、d2、...的选择有关,目前无法用数学手段确切表示。 最坏时间复杂度O
阅读全文
摘要:折半插入排序所需附加存储空间和直接插入排序相同,折半插入排序仅减少了关键字空间的比较次数,而记录的移动次数不变。 时间复杂度为O(n2) 空间复杂度为O(1) void InsertSort(int A[], int n){ int i,j,low,mid,high; for(i=2; i<=n;
阅读全文
摘要:直接插入排序是最简单的排序方法,它的基本操作是将一个记录插入到以排序好的有序表中,从而得到一个新的记录数增一的有序表。 * 空间复杂度O(1) * 时间复杂度O(n²) void InsertSort(int A[], int n){ int i,j,temp; //定义变量 for(i=1; i<
阅读全文
摘要:一、安装ifconfig *确认本机是否真实存在ifconfig* echo $PATH 查看环境变量路径 ls /usr/sbin/ 查看此路径下是否有ifconfig这个程序 find / -name "ifconfig"查找所有ifconfig名称的文件## 标题 以上都不好使,说明ifcon
阅读全文