它的一些操作命令:
- hdfs --help --获取详细的帮助信息
- dfsadmin --跑一个admin的客户端
- fsck --用于检查hdfs的一些文件和目录的健康状况
- hdfs namenode -format --格式化namenode
- hafs dfsadmin -safemode get --hdfs的安全模式(默认是off)
- hdfs dfs -rm -r --删除文件
注:a.如果安全模式为on,也就进入安全模式,有两种情况:
a1. 被动进入:说明hads集群有问题,相当于保护模式。
a2.主动进入:主要是维护,保证这段时间不会有新数据或者新文件的写入。
配置回收站:
--在core-site.xml中配置如下参数
<property>
<name>fs.trash.interval</name>
<value>10080</value> --设置保存时间为7天
</property>
HDFS的主从架构:
NameNode SecondaryNamenode DataNode
NN:名称字节
存储的内容包括:
- 文件的名称
- 文件的目录结构
- 文件的属性(权限,副本数,创建时间等)
可以用hdfs dfs -ls 管理文件系统的命名空间,其实就是维护文件系统树的文件和文件夹
点1:一个文件被对应切割哪些数据块(包括副本数的块)==>对应分布在哪些DataNode
点2:主要文件
镜像文件:fsimage
编辑日志文件:edits
SNN:第二名称节点
例如:edits_000000000000000000453-0000000000000000454和fsimage_000000000000451.md5
通过检查点(checkpoint)合并fsimage_00000000000034.md5推给NN
edits_000000000000000000453-0000000000000000454正在记录的写满或者到一定时间会放入edits_0000000000000000000000453-00000000000000000000000000454再新建edits_000000000000000000453-0000000000000000454
写满或者到一定时间会放入
dfs.namenode.checkpoint.period 3600 1个小时
dfs.namenode.checkpoint.txns 1000000 100万
为了解决NN单点问题,可能会发生单点故障,增加一个SNN,一小时做一次checkpoint
比如:
21:00 checkpoint NN和SNN是一样的
21:49 突然NN挂掉了,且无法恢复
即使拿SNN上的fsimage,也只能恢复到21:00
HA:Highly Available 高可靠
通过配置另一个实时的备份NN结点,随时等待active的NN挂掉,然后成为NN。
DN 数据结点
1.存储数据和数据块的元数据
主要文件:block
block:一个块默认最大128MB
2.每隔一段时间会发送blockreport(块报告)给到NN,在给NN发送blockreport时要检查自己
这两个参数一般设置为一样的。
HDFS的优缺点
优点:
1.处理海量数据
2.适合做离线数仓
移动计算而不是移动数据,会把数据位置暴露给计算框架
3.高容错
数据自动保存N个副本,增加副本数,提高容错
某一个副本丢失,HDFS内部机制是可以自动恢复
4.可以构建在廉价机器上
缺点:小文件问题,需要工程师去合并小文件。
不适合毫秒级(实时)
小作业:
1.了解“机架”
机架式服务器的外形看来不像计算机,而像交换机,路由器等。机架式服务器安装在标准的19英寸机柜里面。这种结构的多为功能型服务器。
DELL机架式服务器
对于信息服务企业(如ISP/ICP/ISV/IDC)而言,选择服务器时首先要考虑服务器的体积、功耗、发热量等物理参数,因为信息服务企业通常使用大型专用机房统一部署和管理大量的服务器资源,机房通常设有严密的保安措施、良好的冷却系统、多重备份的供电系统,其机房的造价相当昂贵。如何在有限的空间内部署更多的服务器直接关系到企业的服务成本,通常选用机械尺寸符合19英寸工业标准的机架式服务器。机架式服务器也有多种规格,例如1U(4.45cm高)、2U、4U、6U、8U等。通常1U的机架式服务器最节省空间,但性能和可扩展性较差,适合一些业务相对固定的使用领域。4U以上的产品性能较高,可扩展性好,一般支持4个以上的高性能处理器和大量的标准热插拔部件。管理也十分方便,厂商通常提供人相应的管理和监控工具,适合大访问量的关键应用,但体积较大,空间利用率不高。
2.sal数字向百位数取整,例如:6变为100,648变为700,1100变为1200:
select (trunc(sal/100)+1)*100 from emp
3.sal,sal+100,变化后的sal,求最大值,最小值:
select * from (select max(sal),min(sal) from
(select sal,sal+100 sal_100,(trunc(sal/100)+1)*100 from emp )) --sal求最大值,最小值
select max(sal+100),min(sal+100)
from (select sal,sal+100 sal_100,(trunc(sal/100)+1)*100 from emp) --sal+100求最大值,最小值
select max((trunc(sal/100)+1)*100),min((trunc(sal/100)+1)*100) from (select sal,sal+100 sal_100,(trunc(sal/100)+1)*100 from emp ) --求变化后的最大值,最小值
4.rows between的用法:
作用:控制窗口函数的大小;
rows between …… and ……
unbounded preceding 前面所有行
unbounded following 后面所有行
current row 当前行
n following 后面n行
n preceding 前面n行
5.emp表,入职日期(HIREDATE)是当年的第几天?当月的第几天?当周的第几天?
select t.hiredate,
to_char(t.hiredate, 'ddd') year_day, --当年的第几天
to_char(t.hiredate, 'dd') month_day, --当月的第几天
to_char(t.hiredate, 'd') week_day --当周的第几天
from emp t