HBase环境搭建
HBase集群架构
准备工作
新建四台虚拟机
master, slave1, slave2, slave3
分别设置固定IP
确认已经搭建好Hadoop集群,见如下文章
Hadoop环境搭建
配置完成后拓扑如下,
HBase需要依赖ZooKeeper集群进行数据管理,HBase数据库也需要分别在多个节点搭建,
故HBase配置完毕之后的拓扑结构如下,
ZooKeeper集群安装
简介
Apache ZooKeeper
ZooKeeper是一个分布式服务框架,主要用来解决分布式系统中经常遇到的数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项等等。
基本工作过程
上图描述的就是一个ZooKeeper的节点计算图。
由若干个Server和若干个Client所够成,其中所有Server之间只有一个特殊的节点叫Leader,其余Server节点叫做Follower
如当某个Client对Server1发起写请求时,
数据将会写入这个Server1
这个Server1将会变更后传递到Leader
Leader将变更同步到所有的Server,同步的 ...
Leetcode-396-旋转函数
题目
396. 旋转函数
给定一个长度为 n 的整数数组 nums。
假设 arrk是数组 nums顺时针旋转 k 个位置后的数组,我们定义 nums 的 旋转函数 F 为:
F(k) = 0 * arrk[0] + 1 * arrk[1] + ... + (n - 1) * arrk[n - 1]
返回 F(0), F(1), ..., F(n-1)中的最大值 。
生成的测试用例让答案符合** 32 位** 整数。
示例 1:
输入: nums = [4,3,2,6]
输出: 26
解释:
F(0) = (0 * 4) + (1 * 3) + (2 * 2) + (3 * 6) = 0 + 3 + 4 + 18 = 25
F(1) = (0 * 6) + (1 * 4) + (2 * 3) + (3 * 2) = 0 + 4 + 6 + 6 = 16
F(2) = (0 * 2) + (1 * 6) + (2 * 4) + (3 * 3) = 0 + 6 + 8 + 9 = 23
F(3) = (0 * 3) + (1 * 2) + (2 * 6) + (3 * 4) ...
MapReduce环境搭建
需求分析
使用MapReduce完成一个词频统计Word Count程序,
如下图,新建一个文本,保存在本机上的input.txt中。
12a a b b b c c c c d de f f
统计input.txt中的各单词出现的数目。
环境配置
进入Maven仓库搜索hadoop, 下载hadoop client
Maven Repository: org.apache.hadoop » hadoop-client (mvnrepository.com)
选择自己的hadoop版本,
将Maven的依赖定义复制下来。
打开idea新建一个maven项目
编辑pom.xml将复制的依赖定义粘贴进去
同步依赖完毕后,红色消失,
代码编写
MyMapper.java
1234567891011121314151617181920import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Mapper;import ja ...
HDFS基本操作
在HDFS上创建文件
启动HDFS
运行脚本start-dfs.sh
1234567[root@master ~]# start-dfs.shStarting namenodes on [master]Last login: Sat Apr 16 20:09:41 CST 2022 from 192.168.166.1 on pts/0Starting datanodesLast login: Sat Apr 16 20:13:05 CST 2022 on pts/0Starting secondary namenodes [master]Last login: Sat Apr 16 20:13:07 CST 2022 on pts/0
运行脚本start-yarn.sh
12345[root@master ~]# start-yarn.shStarting resourcemanagerLast login: Sat Apr 16 20:13:14 CST 2022 on pts/0Starting nodemanagersLast login: Sat Apr 16 20:32 ...
树莓派安装虚拟化平台VMware ESXi
准备工作
下载VMware ESXi
Download ESXi for ARM (vmware.com)
Github上下载最新树莓派固件
https://github.com/raspberrypi/firmware
Github Release上下载最新树莓派UEFI固件
Releases · pftf/RPi4 (github.com)
下载rufus软件用于烧录VMware ESXi镜像
Rufus - 轻松创建USB启动盘
制作UEFI启动TF卡
格式化TF卡
格式化TF卡为FAT32卷标设置为UEFI
写入fireware文件到tf卡
解压fireware-master.zip下的boot文件夹中的所有文件到tf卡中
删除所有的kernal*.img文件
覆盖UEFI固件文件
打开RPi4_UEFI_Firmware_*.zip文件,解压覆盖所有的文件到tf卡中。
制作VMware ESXi启动u盘
安装ESXi
树莓派插上制作好的tf卡,u盘,开机出现树莓派LOGO时候按ESC进入UEFI固件设置页面。
树莓派4的UEFI固件默认有一个使用3G ...
Hadoop环境搭建
配置虚拟机环境
建立四台虚拟机,配置Hadoop的分布式集群。并且配置静态ip地址如下,最终实现master能够直接与三个节点ssh无密码联通。
主机名
ip地址
master
192.168.166.100
node1
192.168.166.101
node2
192.168.166.102
node3
192.168.166.103
安装VMware虚拟机平台
略
新建虚拟机
略
安装CentOS-7系统
略
安装Java环境
略
克隆虚拟机
略
配置静态ip与hosts文件
略
配置ssh免密登陆
使用 ssh-keygen -t rsa 生成一对RSA公私钥,将公钥放在目标登录的服务器上,私钥放在本地。当ssh客户端发出请求,请求使用基于密钥的安全验证,服务器将先寻找公钥,并与传递过来的公钥做比较,若一致,则服务器使用公钥加密一个challenge并返回客户端,客户端通过私钥解密challenge并发送到服务器即可完成安全验证。
ssh-copy-id -i ~/.ssh/id_rsa.pub master
ssh-copy-i ...
软件测试过程
软件测试过程
软件测试是有阶段性的,软件测试过程与软件设计周期有相互对应的关系。从过程来看,软件测试可分为单元测试、集成测试、系统测试和验收测试等一系列不同的测试阶段。
概述
单元测试的目的是保证每个模块单独运行正确,多采用白盒技术,检查模块控制结构的某些特殊路径,期望覆盖尽可能多的出错点。
经单元测试后的模块,组装为软件包,对软件包进行集成测试,主要测试软件结构问题,因测试建立在模块间的接口上,所以多为黑盒测试,适当辅以白盒测试技术,以便能对主要控制路径进行测试。
系统测试主要是检验软件是否满足功能、行为和性能方面的要求,这一步完全采用黑盒测试技术。
验收测试是检验软件产品的最后一道工序,与前面各种测试过程的不同之处主要在于它突出了客户的作用,同时软件开发人员也要参与。
单元测试
单元测试是对软件设计的最小单元——模块进行正确性检验的测试工作,主要测试模块在语法、格式和逻辑上的错误。
单元测试应对模块内所有重要的控制路径进行测试,以便发现模块内部的错误。单元测试是检查软件源程序的第一次机会,通过孤立地测试每个单元,确保每个单元工作正常,这样比单元作为一个更大系统的一个部分更容易 ...
软件测试概述
软件测试概述
软件测试模型
V模型
V模型是最具有代表意义的测试模型 ,反映出了测试活动与分析设计活动的关系。
V模型指出如下要求,
单元和集成测试应检测程序的执行是否满足软件设计的要求;
系统测试应检测系统功能、性能的质量特性是否达到系统要求的指标;
验收测试确定软件的实现是否满足用户需要或合同的要求。
W模型
W模型由两个V字型模型组成,分别代表测试与开发过程。
W模型强调:
测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等同样要测试,也就是说,测试与开发是同步进行的。
H模型
H模型将测试活动完全独立出来,形成了一个完全独立的流程,将测试准备活动和测试执行活动清晰地体现出来。
H模型揭示了软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行。
其他模型
除上述几种常见模型外,还流传着其他几种模型,例如X模型、前置测试模型等。
X模型
X模型提出针对单独的程序片段进行相互分离的编码和测试,此后通过频繁的交接,通过集成最综合成为可执行的程序。
前置测试模型
前置测试模型体现了开发与测试的结合,要求对每一个交付内 ...
Leetcode-357-统计各位数字都不同的数字个数
题目
357. 统计各位数字都不同的数字个数
给你一个整数 n ,统计并返回各位数字都不同的数字 x 的个数,其中 0 <= x < 10n 。
示例 1:
输入:n = 2
输出:91
解释:答案应为除去 11、22、33、44、55、66、77、88、99 外,在 0 ≤ x < 100 范围内的所有数字。
示例 2:
输入:n = 0
输出:1
提示:
0 <= n <= 8
解题
题目分析
我们逐一考虑各种情况, 设函数d(t)d(t)d(t)的值为n=tn = tn=t时的结果, 设函数f(t)f(t)f(t)为仅含有t位数字的各位数字都不同的数字x的个数
当t = 0 时候, 0≤x<10\leq x < 10≤x<1, 此时x只能选择0, 即有1种选择
即d(0)=1d(0) = 1d(0)=1
当t = 1 时候, 0≤x<100\leq x < 100≤x<10, 此时x只能选择0~9, 即有10种选择
即d(1)=10d(1)=10d(1)=10
当t = 2 ...
Leetcode-310-最小高度树
题目
原文
原题链接
树是一个无向图,其中任何两个顶点只通过一条路径连接。 换句话说,一个任何没有简单环路的连通图都是一棵树。
给你一棵包含 n 个节点的树,标记为 0 到 n - 1 。给定数字 n 和一个有 n - 1 条无向边的 edges 列表(每一个边都是一对标签),其中 edges[i] = [ai, bi] 表示树中节点 ai 和 bi 之间存在一条无向边。
可选择树中任何一个节点作为根。当选择节点 x 作为根节点时,设结果树的高度为 h 。在所有可能的树中,具有最小高度的树(即,min(h))被称为 最小高度树 。
请你找到所有的 最小高度树 并按 任意顺序 返回它们的根节点标签列表。
树的 高度 是指根节点和叶子节点之间最长向下路径上边的数量。
样例输入: n = 4, edges = [[1,0],[1,2],[1,3]]
样例输出: [1]
示例 1:
输入:n = 4, edges = [[1,0],[1,2],[1,3]]
输出:[1]
解释:如图所示,当根是标签为 1 的节点时,树的高度是 1 ,这是唯一的最小高度树。
示例 2:
...