节点的多目录配置:
--------------------------------------
namenode:配置两个文件夹为工作目录(容错) //两文件夹数据相同
datanode:配置两个文件夹为工作目录(扩容) //两文件夹数据不同
namenode配置:hdfs-site.xml
<property>
<name>dfs.namenode.name.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/name,file://${hadoop.tmp.dir}/dfs/name2</value>
<description>以逗号分隔的路径列表,用于冗余(提供备份) </description>
</property>
datanode配置:hdfs-site.xml
<property>
<name>dfs.datanode.data.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/data,file://${hadoop.tmp.dir}/dfs/data2</value>
</property>
之后将/soft/hadoop/etc文件夹进行分发
格式化文件系统:
1、停止所有进程:stop-all.sh
2、删除/soft/hadoop/logs
3、删除~/hadoop
4、hdfs namenode -format
启动:start-dfs.sh
容错和容灾:
------------------------------------
容错:能够容忍故障的发生,正常对外提供服务
容灾:对火灾、断电等一切不可抗因素有恢复能力
配额:
-------------------------------------
目录配额:限定目录能存放的文件个数(限于整个目录树,包括当前目录)
hdfs dfsadmin -setQuota 3 data
hdfs dfsadmin -clrQuota data
空间配额:限定目录能够存放的文件总大小(计算块大小x副本数)
hdfs dfsadmin -setSpaceQuota <quota> <dirname>...<dirname>
hdfs dfsadmin -clrSpaceQuota <dirname>...<dirname>
查看hadoop命令帮助
hdfs dfs -help mkdir
hdfs dfsadmin -help setQuota
hdfs默认最小块大小是1m
配置文件:dfs.namenode.fs-limits.min-block-size
手动设置hdfs文件的块大小,副本数
FSDataOutputStream fos = fs.create(p,true,1024,(short)2,1048576);
快照:
对当前资源的一个快速备份(投影),快照不会发生改变
hdfs dfs -createSnapshot <snapshotDir> [<snapshotName>]
hdfs dfs -deleteSnapshot <snapshotDir> <snapshotName>
hdfs dfs -renameSnapshot <snapshotDir> <oldName> <newName>
hdfs dfsadmin -allowSnapshot <snapshotDir>
hdfs dfsadmin -disallowSnapshot <snapshotDir>
hdfs dfs -appendToFile 1.sh data/1.txt //将指定文件追加到hdfs文件末尾
1、快照会将当前状态的文件进行快速备份,元数据指向源文件
2、和Linux的硬链接类似,但是快照不会进行改变
3、快照存放的路径在被快照的文件夹路径下的.snapshot文件夹
4、不同文件夹创建的快照可以重名
5、无法删除快照或删除源文件夹
回收站:如果怕删除文件,需要启动回收站机制(core-site.xml)
<property>
<name>fs.trash.interval</name>
<value>1</value>
<description>
默认为0,即禁用回收站;配置文件说明垃圾回收的分钟数;
如果服务端禁用,则需要检查客户端是否启用回收站。
如果服务端启动,则客户端配置就可以忽略
</description>
</property>
<property>
<name>fs.trash.checkpoint.interval</name>
<value>0</value>
<description>
创建检查点间隔,需要小于等于fs.trash.interval
</description>
</property>
hdfs dfs -expunge //清空回收站过期文件
序列化:
将结构化的对象转化为字节流,以便在网络上进行传输或者进行永久存储的过程
序列化经常在两个领域出现:进程间通信,永久存储
hadoop中节点的进程间通信是通过RPC实现
RPC是一种协议,使用的是序列化技术
序列化技术特点:
紧凑:体积小,节省带宽
快速:序列化过程快速
可扩展:新的api完整兼容旧数据格式
支持互操作:跨语言
hadoop的序列化:writable
java writable
----------------------------------------
byte ByteWritable
short ShortWritable
int
long
float
double
char
boolean
String Text
IntWritable
Text
归档:启动yarn
archive
har文件 //hadoop归档文件
创建har文件:
hadoop archive -archiveName my.har -p /user/data data1 data2 /
查看归档文件:
hdfs dfs -lsr har:///my.har
hdfs性能:
不适合存储海量小文件:
namenode:在启动的时候将fsimage中的文件索引加载到内存。
平均一个文件,占用namenode内存150字节。
如果存储海量小文件,namenode内存占用量会特别大
小文件处理:
1、归档 //har
2、压缩 //
3、创建序列文件 //sequenceFile
hadoop的压缩:
压缩格式 压缩工具 算法 文件扩展名 是否可切割
DEFLATE N/A DEFLATE .deflate No
gzip gzip DEFLATE .gz No
bzip2 bzip2 bzip2 .bz2 Yes
LZO lzop LZO .lzo No
LZ4 N/A LZ4 .lz4 No
Snappy N/A Snappy .snappy No
压缩格式 压缩编解码器
DEFLATE org.apache.hadoop.io.compress.DefaultCodec √
gzip org.apache.hadoop.io.compress.GzipCodec √
bzip2 org.apache.hadoop.io.compress.BZip2Codec √
LZO com.hadoop.compression.lzo.LzopCodec
LZ4 org.apache.hadoop.io.compress.Lz4Codec √
Snappy org.apache.hadoop.io.compress.SnappyCodec √